Building Neuro Studio from Source
The Neuro Studio repository, its dependencies, build commands, source layout and known limitations.
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
| Dependency | Purpose |
|---|---|
| Flutter with Dart SDK 3.10 or later | The application framework |
| libusb-1.0 | USB 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_soloud | Playback of the microphone PCM stream |
flutter_libserialport | The CDC serial port used by the bootloader tool |
file_selector | File dialogs for snapshots, recordings and firmware images |
flutter_svg | The logos |
Inter and JetBrains Mono are bundled under the SIL Open Font License so that typography is identical on every system.
Build
flutter pub get
flutter run
flutter build windows
flutter build macos
flutter build linuxflutter analyze is clean and is kept so.
Source layout
| Path | Content |
|---|---|
lib/main.dart | Entry point |
lib/pages/n6_studio.dart | The main screen, sidebar and several panels |
lib/widgets/mjpeg_serial_worker.dart | The transport worker isolate: libusb and TCP, the framed stream parser, and the downlink packet builders |
lib/widgets/mjpeg_overlay.dart | TLV decoding, overlay painting and the shared notifiers panels observe |
lib/widgets/*_panel.dart | Individual panels: audio, camera controls, events, tuning, vision |
lib/widgets/thermal_probes.dart | Temperature probes on the thermal view |
lib/dfu/ | The bootloader protocol, session and USB identities |
lib/theme/app_theme.dart | Palettes, typography and chrome |
DeviceMain.c | A device-side reference for the wire format |
NEXT_STEPS.md | Development 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.