Skip to content

Building

Lu-Fi edited this page Oct 6, 2026 · 1 revision

Building

Inside thingino (recommended)

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

Related BR2 options

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-isp is a kernel-module package. It builds driver/<soc> out of tree against the thingino kernel and installs tx-isp-<soc>.ko. It builds after ingenic-sdk, so it replaces the vendor module while the SDK sensor, audio and AVPU modules stay.
  • openimp runs build-for-device.sh <SOC> with the thingino toolchain and installs libimp.so into staging and the target. A finalize hook re-installs it last so nothing overwrites it. It also installs openimp-tuningd with 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 aperto of the opensensor repositories and are pinned to a full commit SHA in package/openimp/openimp.mk and package/open-tx-isp/open-tx-isp.mk; update both together. See Release Scheme.

Standalone

OpenIMP

./build-for-device.sh T31      # T20 T21 T23 T30 T31 T40 T41
# or
make t31

The 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.

open-tx-isp

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.ko

Environment: 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.

Size

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.

Clone this wiki locally