Repository navigation
Building
The open stack is selected through the "ISP stack" choice:
Thingino Firmware -> System Packages -> ISP stack -> Open ISP stack (experimental)
or in a scoped local.fragment / defconfig:
BR2_PACKAGE_THINGINO_ISP_OPEN=y
| Option | Meaning |
|---|---|
BR2_PACKAGE_THINGINO_ISP_PROPRIETARY |
Vendor driver and libimp (default on SoCs the open stack does not cover) |
BR2_PACKAGE_THINGINO_ISP_OPEN |
open-tx-isp plus OpenIMP where supported (default in thingino's aperto branch on supported SoCs; menu text "Open ISP stack (experimental)") |
BR2_PACKAGE_THINGINO_ISP_OPEN_VENDOR_LIBIMP |
Open kernel driver with the vendor libimp.so (to tell kernel problems from OpenIMP problems; keeps IMP_AENC/ADEC for streamers that need them) |
BR2_PACKAGE_OPEN_TX_ISP, BR2_PACKAGE_OPENIMP
|
selected automatically by the choice above |
BR2_PACKAGE_THINGINO_ISP_GUARD |
optional boot guard, see Installing and Switching |
BR2_PACKAGE_THINGINO_STREAMER_TIMPS |
timps streamer; USE_OPENIMP=1 is derived from BR2_PACKAGE_OPENIMP
|
How the packages build:
-
open-tx-ispis a kernel-module package. It buildsdriver/<soc>out of tree against the thingino kernel and installstx-isp-<soc>.ko. It builds afteringenic-sdk, so it replaces the vendor module while the SDK sensor, audio and AVPU modules stay. -
openimprunsbuild-for-device.sh <SOC>with the thingino toolchain and installslibimp.sointo staging and the target. A finalize hook re-installs it last so nothing overwrites it. It also installsopenimp-tuningdwith an init script and a config file. - Kernel 3.10.14 trees: T10, T20, T21, T23, T30, T31. Kernel 4.4.94 trees: T40, T41.
- The packages fetch
apertoof the opensensor repositories and are pinned to a full commit SHA inpackage/openimp/openimp.mkandpackage/open-tx-isp/open-tx-isp.mk; update both together. See Release Scheme.
./build-for-device.sh T31 # T20 T21 T23 T30 T31 T40 T41
# or
make t31The script needs a MIPS cross toolchain (TOOLCHAIN_PREFIX, typically from a thingino build). T40/T41 additionally need the vendor SDK headers (T40_HEADERS, T41_HEADERS). The result is build/<soc>/libimp.so.
Note: BUILD.md in the repository is older than the build scripts; trust build-for-device.sh and the Makefile targets.
build_local.sh builds a compile baseline out of tree against a thingino build output (kernel tree and toolchain):
SOC=t31 ./build_local.sh # builds driver/t31 -> tx-isp-t31.koEnvironment: TH (thingino checkout), ROOT (a build output directory), KDIR, CROSS (default mipsel-linux-), ARCH (default mips), SOC. The result is a compile baseline, not necessarily loadable on every camera. For real images, build through thingino.
The modules and libraries are stripped and use gc-sections. Typical stripped module sizes (2026-10): T10 731 KB, T20 736 KB, T21 452 KB (vendor 616 KB), T23 622 KB (vendor 857 KB), T31 711 KB (vendor 829 KB), T41 731,488 B (vendor size not measured). libimp is about 0.47-0.73 MB depending on the SoC (T41 465,728 B, T23 726 KB; vendor 1.0-1.3 MB); see the feature matrix for the per-SoC figures.