Skip to main content

Compatibility

Neat spans two environments: the host SDK (a container where you cross-compile) and the Modalix DevKit (aarch64, where the framework actually runs). Keep them separate — a requirement on one side rarely applies to the other.

On-device — Modalix DevKit

ComponentRequirement
Boardany Modalix DevKit (the "3.0" in the product name is not a version gate — any Modalix DevKit runs Neat)
Architectureaarch64
Platform software2.0.0
glibc2.34
OpenCV4.6
GStreamer1.0
C++ standardC++20

Host development — Neat SDK (container)

The SDK runs in Docker on the host and cross-compiles to the DevKit.

ComponentSupported
Host OS
  • Ubuntu 22.04 / 24.04
  • Windows 11 (WSL2 + Docker Engine inside WSL)
  • macOS (Colima + Docker)
SDK version2.0.0
eLxr version2.0.0
Cross toolchainaarch64-linux-gnu-g++ 12.2.0
Sysroot/opt/toolchain/aarch64/modalix

pyneat (Python bindings — run on the DevKit)

pyneat is built by the SDK and runs on the DevKit, not on the host.

PropertyValue
Prebuilt wheelCPython 3.11 (cp311) · linux_aarch64
NumPy>=1.24,<2
PyTorch>=2.3.0 (optional) (DLPack interop)
From sourcePython ≥ 3.9

There is no x86 / non-aarch64 pyneat — it exists only for the DevKit. The host SDK cross-builds it and installs it on the paired DevKit (venv at /media/nvme/pyneat if there's writable NVMe, otherwise $HOME/pyneat, always reachable as ~/pyneat).

Tools

Use the latest sima-cli — there is no pinned floor.

The version-matched set (firmware ↔ runtime)

The on-device packages — neat-runtime, neat-gst-plugins, neat-appcomplex, neat-ev74-firmware — are built together from one internals commit and share that commit's hash in their version string (e.g. 2.0.0-<branch>-<hash>). Install the matched set (same hash) together. neat-internals-dev is the umbrella that pulls the matched stack.

A partial update — a new neat-runtime against an older neat-ev74-firmware — leaves the runtime asking the EV74 for a kernel the firmware doesn't have, which surfaces as No channel available at run time. The coupling key (the internals hash) is recorded on the device in /usr/share/sima-neat/buildinfo.json.

Known-incompatible / not supported

SituationWhy
NumPy ≥ 2 with pyneatpin is >=1.24,<2
Mismatched runtime ↔ firmware hashnot a matched set → No channel available
CPython other than 3.11 for the prebuilt wheelwheel is cp311 only (build from source for other 3.x ≥ 3.9)
Non-aarch64 targetno x86 / ARMv7 pyneat or runtime exists
Host glibc < 2.34 on the DevKitneat-runtime requires libc6 ≥ 2.34
CUDA / GPU accelerationN/A — the host is build-only; inference runs on the Modalix MLA/EV74

Verify your install

# SDK / eLxr version (host container)
cat /etc/sdk-release

# Neat version + the internals coupling hash (on the DevKit)
cat /usr/share/sima-neat/buildinfo.json

# pyneat version (on the DevKit)
~/pyneat/bin/python3 -c "import pyneat; print(pyneat.__version__)"

If you hit No channel available or undefined symbol …submitPrepared, check that neat-runtime and neat-ev74-firmware report the same hash — that's the most common compatibility failure. See Troubleshooting.

Pending — needs an owner

These belong on this page but require a product/release-eng decision and are not yet documented:

  • Support lifecycle / EOL — how long each Neat release + its firmware is supported.
  • Deprecation policy — notice period and forward-looking requirement changes.
  • Model-archive portability — whether a compiled .tar.gz is tied to a runtime/format version or board revision, and the compiler ↔ runtime compatibility rule.