Software/Neuro Studio

Building Neuro Studio from Source

The Neuro Studio repository, its dependencies, build commands, source layout and known limitations.

advanced2 min read

Neuro Studio is a Flutter desktop application. Its source is in the NeuroStudio repository, and it builds for Windows, macOS and Linux from one code base.

Dependencies

DependencyPurpose
Flutter with Dart SDK 3.10 or laterThe application framework
libusb-1.0USB access to the vendor interface through Dart FFI. Bundled on Windows; installed with brew install libusb on macOS and from the package manager on Linux
flutter_soloudPlayback of the microphone PCM stream
flutter_libserialportThe CDC serial port used by the bootloader tool
file_selectorFile dialogs for snapshots, recordings and firmware images
flutter_svgThe logos

Inter and JetBrains Mono are bundled under the SIL Open Font License so that typography is identical on every system.

Build

bash
flutter pub get
flutter run
flutter build windows
flutter build macos
flutter build linux

flutter analyze is clean and is kept so.

Source layout

PathContent
lib/main.dartEntry point
lib/pages/n6_studio.dartThe main screen, sidebar and several panels
lib/widgets/mjpeg_serial_worker.dartThe transport worker isolate: libusb and TCP, the framed stream parser, and the downlink packet builders
lib/widgets/mjpeg_overlay.dartTLV decoding, overlay painting and the shared notifiers panels observe
lib/widgets/*_panel.dartIndividual panels: audio, camera controls, events, tuning, vision
lib/widgets/thermal_probes.dartTemperature probes on the thermal view
lib/dfu/The bootloader protocol, session and USB identities
lib/theme/app_theme.dartPalettes, typography and chrome
DeviceMain.cA device-side reference for the wire format
NEXT_STEPS.mdDevelopment notes

Architecture

The transport runs in a worker isolate so that parsing never blocks the user interface. The parser copies incoming bytes into a flat buffer, scans in place for the frame magic, and hands complete frames to the UI thread. The implementation sustains the board's full frame rate. A watchdog resets the USB connection when the stream stalls, and the connection state is inferred from data flow.

Decoding is defensive: every TLV walk checks lengths and never throws, so a malformed record from experimental firmware produces an empty overlay rather than a crash.

Platform notes

On Windows the board binds to WinUSB automatically through its Microsoft OS 2.0 descriptors. On macOS libusb is installed separately. On Linux a udev rule may be required for unprivileged access.

Limitations

User settings and window geometry are not persisted between runs. The TCP target for the access point transport is a fixed address. Device configuration packets are not acknowledged by the board. Recordings are written as concatenated JPEG frames rather than in a container format.

Licence notes

libusb is LGPL and the bundled fonts are under the SIL Open Font License.