Skip to content
Lu-Fi edited this page Oct 13, 2026 · 6 revisions

open-tx-isp

Open reimplementation of Ingenic's closed TX-ISP kernel driver (tx-isp-<soc>.ko) for T10, T20, T21, T23, T30, T31, T40 and T41: same ioctl and libimp ABI and register sequencing as the vendor driver, with checked inputs, clean unload/reload and smaller modules. It works with the vendor libimp.so and with OpenIMP; open stack = open-tx-isp + OpenIMP.

The documentation for the whole stack lives in the OpenIMP wiki; this wiki is the driver entry point.

Status: RC1 (v2026.10.11-rc1, 2026-10-11)

Release candidate 1: open-tx-isp 6e464ac7 (tag commit 191be6c5, driver plus RC1 documentation), paired with OpenIMP agg-35 687a68e4. Release page: v2026.10.11-rc1.

Soak evidence: the agg-35 pair ran on 10 cameras from 2026-10-10 18:04 to 2026-10-11 08:00 (about 14 h) with 0 kernel oopses, 0 unexplained reboots and 0 application restarts.

SoC RC1 status of the driver
T10 Release. Fully open; day/night, reload and boot guard verified. isp-m0 reports the gain step the AE really reaches (142 instead of 144 on the tested sensor). Front-crop window kept until a downscaled channel opens.
T20 Release. Fully open; 10x stop/start and module reload without an oops, rmmod during streaming refused. isp-m0 reports the reachable analog gain cap (day/night needs it). Same front-crop behaviour as T10.
T21 Release. Fully open; AE/ADR/defog/AWB lifted from the vendor module; brightness acts and sepia works (beyond vendor).
T23 Release. Fully open (native Helix encoder in OpenIMP). Front-crop hang fixed, AF statistics on by default, MSCA scratch buffer, vendor AE default; rare Helix errno 5 provisionally closed (0 errors in 6 days). No real WDR.
T30 Experimental. Builds against a real T30 kernel; no T30 camera in the lab (host/build evidence only).
T31 Release, reference SoC. Front crop effective and guarded; WDR statistics ring fix.
T40 Experimental. First device run on 2026-10-10 (vendor kernel driver side by side with OpenIMP); see the OpenIMP wiki.
T41 Experimental. Fully open from a flashed image; driver controls frame drop, sensor register, WDR enable and AF weight device-tested; MSCA channel-1 latch is opt-in.

What RC1 changes in the driver

  • Front crop (IMP_ISP_Tuning_SetFrontCrop): T31 refuses a window smaller than a running channel's scaler output with -EINVAL (the MSCA cannot upscale; such a window used to stall every output and reboot the camera), drops a crop that a larger main stream cannot fit, and the crop is now effective on both streams (device-tested in daylight). T23: crop off restores the full sensor window and the pipeline no longer hangs after a crop change. T20/T10: a window is kept while no downscaled channel is open and applied at stream on. The window is released with the ISP session. Module parameter fcrop_upscale_pct (T23, T31, default 0); its existence under /sys/module/tx_isp_t23|t31/parameters/ tells an application that the safe path is present.
  • T31 WDR statistics ring: persistent across STREAMOFF, its DMA engine is disabled before the free and the IRQ window is closed (100 stop/start cycles and 20 module reloads without anomaly).
  • T20/T10 gain cap: /proc/jz/isp/isp-m0 "MAX SENSOR analog gain" reports the value the AE reaches (smaller of sensor maximum and the SetMaxAgain ceiling, rounded to the sensor's gain step), so a day/night rule that waits for the cap works.
  • T41 opt-ins (experimental): t41_msca_cfg_update=2 together with t41_msca_stop_disable=1 latches the MSCA output geometry correctly for a channel 1 up to 768x432; larger sub-streams started mid-stream can hang the SoC, so they stay opt-in and off. See Module Parameters.
  • Robustness: reload/stop cycles without an oops on all release SoCs, checked inputs, sensor module pinned while the ISP is open, QBUF buffers outside the rmem window rejected.

After RC1 (next, not released)

next has moved past RC1 (agg-36 to agg-38): AWB statistics with a freshness check (T23/T31/T41), T41 ISP tuning controls and reload fixes, a crop-upscale cap for T23/T31, smaller modules and quieter kernel logs. Build and host tests only, no soak yet; device results are marked in the Changelog. In progress and not in next: the open T40 driver on the T40XP/sc830ai board (real frames, not released).

Known issues (RC1)

  • T41 channel 1 (sub-stream) colour at night differs from channel 0; T41 stays experimental.
  • T31: one black picture of about 80 s seen once during a day/night probe; not understood yet.
  • T23: day/night flapping at dusk; the day/night decision is made by the application, the driver reports sensor values. The same holds for day/night in a poorly lit location.
  • T40: CBR delivers only about 20 % of the target rate and H.265 is not supported yet (OpenIMP side).

Links

Report driver problems at https://github.com/Lu-Fi/open-tx-isp/issues (what to include: Troubleshooting).

Open Ingenic camera stack: open-tx-isp

Clone this wiki locally