Quick Start Guide
This guide will get you streaming EEG data from your MW75 Neuro headphones in minutes.
Prerequisites
MW75 Neuro headphones paired with your Mac
Python 3.9+ installed
uv package manager installed (see uv installation guide)
Package installed with dependencies:
# Install uv if needed:
curl -LsSf https://astral.sh/uv/install.sh | sh
# or: brew install uv
# Install MW75 streamer:
uv pip install "mw75-streamer[all]"
Basic Usage
Note
All commands below use uv run
which automatically manages the virtual environment and dependencies. This ensures you’re using the correct Python environment without manually activating it.
Stream to CSV File
The simplest way to start collecting EEG data:
uv run -m mw75_streamer --csv my_eeg_data.csv
This creates two files:
- my_eeg_data.csv
- EEG channel data (expected ~500Hz)
- my_eeg_data_events.csv
- Other device events
Real-time WebSocket Streaming
For real-time applications:
# Start the test server (in one terminal)
uv run -m mw75_streamer.testing --advanced
# Start streaming (in another terminal)
uv run -m mw75_streamer --ws ws://localhost:8080
Press ‘b’ + Enter in the test server terminal to open a browser visualization.
Lab Streaming Layer (LSL)
For integration with LSL applications:
uv run -m mw75_streamer --lsl MW75_EEG
This creates an LSL stream named “MW75_EEG” that other applications can consume.
Combined Output
You can stream to multiple destinations simultaneously:
uv run -m mw75_streamer --csv data.csv --ws ws://localhost:8080 --lsl MW75_EEG
WebSocket Server (Remote Control)
For applications that need to remotely control the device:
# Start WebSocket server
uv run -m mw75_streamer.server --port 8080
# Client connects and sends commands to control device
# See :doc:`server` for complete documentation
This mode allows external applications to connect and control when to start/stop device connections.
Command Line Options
Core Options
uv run -m mw75_streamer [OPTIONS]
Output Options:
--csv PATH
- Save EEG data to CSV file--ws URL
- Stream to WebSocket URL--lsl NAME
- Create LSL stream with given nameDefault behavior (no CSV file) prints data to console
Control Options:
--verbose
- Enable detailed logging--browser
- Start built-in web server and open browser--help
- Show help message
Examples
# Verbose logging with CSV output
uv run -m mw75_streamer --verbose --csv detailed_session.csv
# Multiple WebSocket destinations
uv run -m mw75_streamer --ws ws://localhost:8080 --ws ws://remote-server:9090
# Quick browser visualization
uv run -m mw75_streamer --browser
Understanding the Data
EEG Data Format
The streamer outputs EEG data at a target rate of ~500Hz with the following channels:
EEG Channels (12 total):
- Raw ADC values converted to microvolts (µV)
- Sentinel value 8388607
indicates electrode disconnection
Reference Channels:
- REF
- Reference electrode (µV)
- DRL
- Driven Right Leg electrode (µV)
CSV Format:
Each row contains: timestamp,counter,REF,DRL,CH1,CH2,...,CH12,feature_status
WebSocket Format:
JSON messages with type
, timestamp
, counter
, and data
fields.
Connection Process
The streamer follows this sequence:
BLE Discovery - Scan for MW75 device
BLE Activation - Send activation commands with 300ms delays
RFCOMM Connection - Connect to data streaming channel
Data Processing - Validate packets and convert to microvolts
Testing Setup
Browser Visualization
The easiest way to test your setup:
# Start advanced test server
uv run -m mw75_streamer.testing --advanced
# In another terminal, start streaming
uv run -m mw75_streamer --ws ws://localhost:8080
# In the server terminal, press 'b' + Enter to open browser
This opens a real-time EEG visualization in your web browser.
Validation Checklist
Data Rate - Monitor packet arrival rate (target ~500Hz) Sequential Counters - Counter should increment by 1 each packet Realistic Values - EEG channels should show µV values (not raw ADC) Minimal Drops - Should have very few missing packets
Common Issues
For detailed troubleshooting information, see the Troubleshooting Guide guide.
Device Not Found
If the MW75 device isn’t found:
Check Bluetooth pairing in System Preferences
Ensure headphones are powered on and connected
Try re-pairing the device
Connection Failed
If BLE activation fails:
Restart the headphones
Clear Bluetooth cache (re-pair device)
Check for Bluetooth interference
Poor Data Quality
If you see many disconnected electrodes:
Clean the electrode contacts
Adjust headphone positioning
Check for hair or skin contact issues
Next Steps
Read the API Reference documentation for programmatic usage
See Protocol Documentation for technical details
Check Troubleshooting Guide for common issues