Troubleshooting Guide
This guide helps resolve common issues when using the MW75 EEG Streamer.
For basic setup information, see the Installation Guide and Quick Start Guide guides. For technical details, refer to the Protocol Documentation documentation.
Installation Issues
PyObjC Installation Fails
Symptoms:
- Error during pip install
or uv pip install
- “Failed building wheel for pyobjc-\*” messages
Solutions:
Update build tools:
pip install --upgrade pip setuptools wheel uv pip install "mw75-streamer[all]"
Use uv instead of pip:
brew install uv uv pip install "mw75-streamer[all]"
Install Xcode command line tools:
xcode-select --install
LSL Library Not Found
Symptoms:
- ImportError: No module named 'pylsl'
- OSError: Could not find liblsl
Solutions:
Install LSL system library:
brew install labstreaminglayer/tap/lsl export DYLD_LIBRARY_PATH="/opt/homebrew/lib:$DYLD_LIBRARY_PATH"
Add to shell profile permanently:
echo 'export DYLD_LIBRARY_PATH="/opt/homebrew/lib:$DYLD_LIBRARY_PATH"' >> ~/.zshrc source ~/.zshrc
Connection Issues
MW75 Device Not Found
Symptoms: - “No MW75 device found” - BLE scan timeout
Diagnostic Steps:
Check Bluetooth pairing:
Open System Preferences → Bluetooth
Verify MW75 Neuro appears in device list
Status should show “Connected”
Verify headphone power:
Ensure headphones are powered on
Check battery level is sufficient (>20%)
Try power cycling the headphones
Test Bluetooth connectivity:
# Check if device is visible to system system_profiler SPBluetoothDataType | grep -i "mw75\|neuro"
Solutions:
Re-pair the device:
Remove MW75 from Bluetooth devices
Power cycle headphones
Re-pair using standard macOS Bluetooth settings
Check permissions:
System Preferences → Security & Privacy → Privacy → Bluetooth
Ensure Terminal/Python has Bluetooth access
Reset Bluetooth module:
# Reset Bluetooth (requires restart) sudo pkill bluetoothd
BLE Activation Fails
Symptoms: - “BLE activation timeout” - “Failed to enable EEG mode”
Solutions:
Check connection stability:
Ensure headphones are within 1 meter
Reduce 2.4GHz interference (WiFi, other Bluetooth devices)
Retry activation:
BLE activation includes automatic retry logic
Try running with
--verbose
to see detailed timing
Manual device reset:
Power off headphones for 10 seconds
Power on and wait 30 seconds before connecting
RFCOMM Connection Lost
Symptoms: - “RFCOMM connection failed” - Data stops flowing mid-session
Solutions:
Check interference:
Move closer to headphones
Disable other Bluetooth devices temporarily
Switch to 5GHz WiFi if available
Monitor connection quality:
# Run with verbose logging python -m mw75_streamer --verbose --csv test.csv
Automatic reconnection:
The streamer includes auto-reconnect logic
Data gaps will be logged but streaming continues
Data Quality Issues
High Packet Loss
Symptoms: - Many missing counter values - “Packet loss detected” warnings - Irregular packet timing
Diagnostic:
# Monitor packet loss with verbose logging (prints to console by default)
uv run -m mw75_streamer --verbose
Solutions:
Reduce interference:
Move away from WiFi routers
Disable other 2.4GHz devices
Use USB-wired peripherals instead of wireless
Optimize system resources:
Close unnecessary applications
Ensure adequate CPU/memory available
Run with higher process priority if needed (just run with sudo)
Many Disconnected Electrodes
Symptoms:
- EEG channels showing value 8388607
- Poor signal quality in visualization
Solutions:
Improve electrode contact:
Adjust headphone positioning
Ensure good skin contact (move hair if needed)
Check headphone condition:
Inspect electrodes for damage or corrosion
Ensure electrodes are not loose
Environmental factors:
Avoid excessive movement during recording
Output Issues
CSV Files Not Created
Symptoms: - No CSV files appear - Permission errors during file creation
Solutions:
Check file permissions:
# Test write access in current directory touch test_file.csv && rm test_file.csv
Use absolute paths:
python -m mw75_streamer --csv /full/path/to/output.csv
Check disk space:
df -h .
WebSocket Connection Failed
Symptoms: - “WebSocket connection failed” - Cannot connect to specified URL
Solutions:
Test WebSocket server:
# Start test server first python -m mw75_streamer.testing --advanced
Check firewall settings:
Ensure port is not blocked
Try localhost connection first:
ws://localhost:8080
Verify WebSocket URL format:
Use
ws://
for unencrypted connectionsUse
wss://
for encrypted connections
LSL Stream Not Visible
Symptoms: - LSL applications don’t see the MW75 stream - “No LSL streams found”
Solutions:
Check LSL installation:
python -c "import pylsl; print(pylsl.version_info())"
Test with LSL tools:
# Install LSL apps for testing brew install labstreaminglayer/tap/lsl-apps # View available streams lsl_resolve_byprop type EEG
Verify stream name:
Use exact stream name specified with
--lsl
Stream names are case-sensitive
Performance Issues
High CPU Usage
Symptoms: - CPU usage >50% for streaming - System becomes unresponsive
Solutions:
Reduce output formats:
Use single output instead of multiple
CSV is most efficient, WebSocket least efficient
Optimize Python environment:
# Use optimized Python build brew install python@3.11
Check for memory leaks:
# Monitor memory usage python -m mw75_streamer --verbose --csv test.csv & top -pid $!
High Memory Usage
Symptoms: - Memory usage grows over time - System runs out of memory during long sessions
Solutions:
Restart for long sessions:
Stop and restart streamer every few hours
Monitor memory usage with Activity Monitor
Use appropriate buffer sizes:
Default settings should work for most cases
Avoid unnecessary data retention
Getting Help
Enable Verbose Logging
For any issue, start with verbose logging:
python -m mw75_streamer --verbose [your normal options]
This provides detailed information about: - BLE activation steps - RFCOMM connection status - Packet validation results - Timing information
Collect System Information
When reporting issues, include:
# Python and package versions
python --version
pip show mw75-streamer
# System information
sw_vers
system_profiler SPBluetoothDataType
# Bluetooth device status
system_profiler SPBluetoothDataType | grep -A 10 -i "mw75\|neuro"
Report Issues
If problems persist:
Check existing issues: https://github.com/arctop/mw75-streamer/issues
Create new issue: Include verbose logs and system information
Community support: Discuss on project GitHub page
The development team actively monitors issues and provides support for users.