Skip to content
No description, website, or topics provided.
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information. README: Add section about time synchronization Mar 29, 2019 stream nan for diameter_3d when in 2d mode. Apr 3, 2019

Pupil LSL Relay Plugin

Plugin for Pupil Capture that publishes realtime gaze data using the lab streaming layer framework.


user plugin directory

  1. Install pylsl
  2. Copy or symlink pylsl with all its content to the plugin directory.
  3. Copy to the plugin directory.


  1. Start Pupil Capture.
  2. Open the Pupil LSL Relay plugin.
  3. Now the LSL outlet is ready to provide data to other inlets in the network.

LSL Outlet

The plugin opens a single outlet named pupil_capture that follows the Gaze Meta Data format.

See our pupil-helpers for examples on how to record and visualize the published data.

The published LSL data is simply a flattened version (see extract_*() functions in of the original Pupil gaze data stream. The stream's channels will be filled with best effort, i.e. if there is a monocular gaze datum the values for the opposite eye will be set to NaN. The actual pairing of pupil data to binocular gaze data happens in Capture and is not a LSL specific behaviour. Therefore, it is prossible to apply the same flattening code to offline calibrated gaze data and reproduce the stream published by the LSL outlet.

LSL Clock Synchronization

The Pupil LSL Relay plugin adjusts Capture's timebase to synchronize Capture's own clock with the pylsl.local_clock(). This allows the recording of native Capture timestamps and removes the necessity of manually synchronize timestamps after the effect.

Warning: The time synchronization will potentially break if other time alternating actors (e.g. the Time Sync plugin or hmd-eyes) are active.

You can’t perform that action at this time.