Skip to content

Lab Streaming Layer

Lab Streaming Layer (LSL) is an open-source framework that connects, manages, and synchronizes data streams from multiple sources, such as EEG, GSK, and motion capture systems. Check out the LSL documentation for a full overview of supported devices.

The Neon Companion app has built-in support for LSL, streaming Neon’s real-time generated data over the LSL network. This allows you to easily synchronize Neon with other LSL-supported devices.

Usage

LSL streaming can be initiated in the Companion App by enabling the "Stream over LSL" setting.

When enabled, data will be streamed over the LSL network, and subsequently, to any connected LSL inlet (such as the LSL LabRecorder App, or another third-party system with inlet functionality) which is listening. Like the Real-Time API, it is not necessary for the Companion App to be actively recording, but simultaneously streaming LSL data while making a recording is supported.

Note that you'll need to ensure the Neon Companion app is connected to the same network as the other devices streaming via LSL.

LSL Outlets

When LSL streaming is enabled, two outlets will be created. One streams gaze data and eye-state data (if enabled), while the other streams event data. The streams will be named as:

  • [Device Name]_Neon Gaze
  • [Device Name]_Neon Events

Where [Device Name] is the name of the device as configured in the Companion App settings. When synchronizing data from two or more Neon devices using LSL, a unique device name can be assigned to each Companion App so that their streams can be distinguished.

Gaze Data Outlet

The gaze and eye-state stream follows the recommendations of the xdf Gaze Meta Data format. Two channels labeled x and y carry the gaze coordinate in scene-camera space. With eye-state estimation enabled, additional channels for each eye will be available with the following labels:

  • PupilDiameter: the diameter of the pupil in mm
  • EyeballCenterX: the x-position of the center of the eyeball from the scene camera
  • EyeballCenterY: the y-position of the center of the eyeball from the scene camera
  • EyeballCenterZ: the z-position of the center of the eyeball from the scene camera

Event Data Outlet

The event stream contains the name of each generated event as a string.

Connection problems?

If your devices are on the same network but you have trouble connecting, it is likely due to a firewall or other network configuration issue. LSL requires the following network connections:

  • UDP broadcasts to port 16571 and/or
  • UDP multicast to port 16571 at
    • FF02:113D:6FDD:2C17:A643:FFE2:1BD1:3CD2
    • FF05:113D:6FDD:2C17:A643:FFE2:1BD1:3CD2
    • FF08113D:6FDD:2C17:A643:FFE2:1BD1:3CD2
    • FF0E:113D:6FDD:2C17:A643:FFE2:1BD1:3CD2
    • 224.0.0.1, 224.0.0.183, 239.255.172.215
  • TCP and UDP connections to the ports 16572-16604

More troubleshooting tips can be found in the Network Troubleshooting page in LSL’s documentation.