Licensing
The licences covering the core, its vendored components and bundled models, and the obligations that apply to products built with them.
Ohm Lab code in the core is released under the MIT licence. The repository also contains third-party components under their own terms, each recorded in extras/THIRD-PARTY.md with its upstream, version, licence and any local modification. Bundled neural networks are covered in models/README.md.
Summary
| Licence | Components |
|---|---|
| MIT | Ohm Lab code, TinyUSB, FreeRTOS |
| BSD-3-Clause | STM32 HAL and LL drivers, CMSIS device headers, ST BSP sensor drivers, lwIP, Hantro video encoder, ST audio preprocessing |
| Apache-2.0 | CMSIS Core |
| ST SLA0044 | ST Edge AI runtime, ST vision post-processing, VD66GY ISP middleware, ST generated network code |
| LGPL-2.1 | ArduinoCore-API, ArduinoBLE |
| GPL-3.0 | MMC5603NJ library |
| ISC | quirc |
| BSD-2-Clause | AprilTag tag36h11 code table |
| NXP proprietary | IW610 WiFi and Bluetooth driver and firmware |
Copyleft components
Two components impose obligations beyond MIT on any firmware that links them.
MMC5603NJ is GPL-3.0, by jmgiacalone for eMAKER Ltd. A sketch that includes this library produces a combined work distributable only under GPL-3.0. It is bundled for convenience and is not covered by the root LICENSE. A product whose firmware is to be distributed under other terms should not link it without legal advice.
ArduinoCore-API (in cores/NeuroN6/api) and ArduinoBLE are LGPL-2.1. Statically linking LGPL code into a single firmware image carries a relinking obligation: recipients must be able to substitute a modified version of the LGPL part. In practice this is met by offering the object files or full source on request. ArduinoCore-API is linked by every sketch.
Proprietary components
The NXP WiFi driver and the IW610 firmware are distributed under NXP's licence agreement, included in the MayaW476 library. The OV5640 autofocus coprocessor firmware is an OmniVision binary whose redistribution terms have not been confirmed in writing.
Models
| File | Origin | Licence |
|---|---|---|
nia_1_int8.onnx | Ohm Lab, trained in house | MIT with the core |
yolov8n_256_quant_pc_ii_seg_coco-st.tflite | ST model zoo, YOLOv8 derived | Under confirmation |
yolov8n_256_quant_pc_uf_pose_coco-st.tflite | ST model zoo, YOLOv8 derived | Under confirmation |
aed_yamnet_int8.onnx | ST audio event detection | ST SLA0044 |
centerface-hwc.tflite | CenterFace, input rewritten | Permissive upstream, checkpoint not recorded |
face4-int8.onnx | MobileFaceNet, quantised in house | Permissive upstream, checkpoint not recorded |
033_palm_detection_full_quant_pc_uf_od.tflite | Google MediaPipe via ST | Apache-2.0, provenance under confirmation |
033_hand_landmark_full_quant_pc_uf_handl.tflite | Google MediaPipe via ST | Apache-2.0, provenance under confirmation |
Upstream YOLOv8 from Ultralytics is AGPL-3.0. ST redistributes converted YOLOv8 networks under its own terms, and which terms attach to these two files is being confirmed. If redistribution inside an MIT core is not permitted, the files will be removed and fetched from ST at build time.
Open items
extras/THIRD-PARTY.md lists three unresolved notes: the ArduinoBLE snapshot's version does not match any upstream release; the OmniVision autofocus firmware's terms are unconfirmed; and SLA0044 has been applied to the PostProcess and Models libraries on the basis that ST uses it for model zoo output, pending confirmation from ST.
Security policy
Vulnerabilities are reported to security@ohmlab.co.uk. SECURITY.md records two design limitations: over-the-air updates are integrity checked but not signed, and the third-party licences above apply. Bootloader issues belong to the Neuro-N6-Bootloader repository.