Skip to content

Module Parameters

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

Module parameters (open-tx-isp)

Parameters are set on the module load line (thingino: /etc/modules.d/*, for example tx-isp-t31 isp_clk=100000000) or read at runtime from /sys/module/<module>/parameters/ where the permission allows. Permission 0444 means read-only after load. Names and defaults below were checked against the driver sources at branch next; defaults are the initial values in the source, a thingino load line can override them. Permission 0 means the parameter is not visible in sysfs and can only be given on the load line.

Many diagnostic parameters exist per SoC (T23 regtrace source_*/direct_*, T40 enable_*, T41 t41_* telemetry). Only the ones that matter to users are listed; the rest are bring-up switches and read-only statistics. Do not change them in production.

Common to all SoCs

Parameter Type / perm Default Meaning
isp_clk int, 0444 on T31, otherwise not in sysfs (perm 0) T20: 90000000 (T10 builds from the T20 SDK sources); T21: 100000000; T23: 153000000; T30: 90000000; T31: 200000000; T40: 200000000; T41: 285000000 ISP core clock in Hz. Leave at default unless a sensor mode needs more.
print_level int, 0444 on T31, otherwise perm 0 1 (T21, T23, T30, T40, T41); ISP_WARN_LEVEL = 1 (T31) ISP driver log verbosity.
qbuf_guard bool, 0644 1 Reject frame-channel QBUF buffers that lie outside the rmem window from the kernel command line. Protects against stray DMA. 0 disables the check (debug only). T20, T21, T23, T31, T41.
isp_memopt int, read-only 1 on T41, 0 on T23, T31, T40 ISP memory optimisation. T23, T31, T40, T41.
direct_mode int, perm 0 0 ISP direct mode. T23, T41.

T10 / T20 (shared firmware generation)

Parameter Default Meaning
isp_mmap_pool_kb 0 Size of the optional V4L2-MMAP frame pool (T10/T20) in KiB. OpenIMP uses USERPTR buffers from rmem and never needs it, so it is off; a V4L2 MMAP client gets -ENOMEM and one log line with the size to set (e.g. set isp_mmap_pool_kb=8104). Before 2026-10-04 the default was 8192 and cost 8 MB of lowmem.
t20_simple_ae 1 Bounded histogram AE instead of the recovered OEM AE state graph.
t20_simple_awb 1 Bounded metering-feedback AWB instead of the OEM AWB state graph.
t20_simple_awb_static_only 0 Hold the four static WB gains of the active IQ file (AWB diagnostics).
t20_simple_nr 1 Gain-driven ISP denoise from the active IQ tables.
t20_simple_sharpen 0 Always apply gain-driven sharpening from the compact AE.
t20_trace, t20_trace_events, t20_*_allow_mask, t20_frame_end_stage, t20_park_fw_after_first_pass various Firmware event tracing and IRQ/event gating (bring-up).
t20_ae_last_*, t20_awb_last_*, t20_iridix_* (0444) - Read-only controller telemetry (last mean, target, exposure, gains, colour temperature). Useful to watch AE/AWB convergence from the shell.

T21

Parameter Default Meaning
ae_step_shift, ae_hold_pct - No-ops since the stock AE runs; kept for load-line compatibility.
adr_bypass 0 Diagnostic: force the ADR bit in the top bypass register off.
awb_lux_hyst 10 (percent) AWB lux/low-light threshold hysteresis band; 0 = vendor behaviour.
awb_ir_freeze 1 Freeze AWB at night and restore the day gains on return to day; 0 = vendor behaviour.
ct_event_thresh 50 Colour-temperature change (K) required before a CT event; reduces register writes.
irqoff_stat, irqoff_max_us 0 Debug: measure the longest IRQs-off time of the ISP event thread.
free_watch (0444) - Debug watch of freed buffers.

T23

Parameter Default Meaning
source_ae_oem 1 1 = run the AE algorithm lifted from the OEM module (emulator-identical, supports backlight compensation and highlight depress). 0 = the substitute AE (needs module reload). 0444. In earlier test images the default was 0 because a constant-1x gain report kept the streamer from switching to night; that is fixed.
ae_oem_debug 0 Log exposure and gain changes of the lifted AE (0644).
source_adr_oem 1 Same idea for the ADR block (lifted vendor ADR, 0444).
isp_clka, isp_clk 416000000, 153000000 ISP AXI clock and core clock in Hz (T41: isp_clka 600000000).
clka_name, clk_name charp Clock names.
isp_day_night_switch_drop_frame_num, isp_ch1_dequeue_delay_time, isp_ch0_pre_dequeue_* int Frame pacing around day/night switch and channel dequeue.
ivdc_threshold_line, ivdc_mem_line int IVDC (direct mode) line thresholds.
text_watch, enable_irqs_on_streamon, log_framechan_payloads, direct_*, source_* bool/uint Register-trace and bring-up switches.

T30

isp_clk, print_level, isp_m1_bufs, isp_m2_bufs (number of buffers on channels 1 and 2), simple_3a, simple_awb, and geometry overrides (ispw, isph, ispleft, isptop, ispcrop*, ispscaler*).

T31

Parameter Default Meaning
isp_ae_log 0 AE logging.
ae_freeze 0 Freeze AE (debug).
isp_bypass_all, isp_bypass_override, force_bypass_{adr,defog,dpc,gib,lsc,mdns} 0 Bypass pipeline blocks for image-quality bisection.
force_identity_ccm, force_ccm_* 0 Force an identity or custom colour matrix.
sensor_expo_catchups - Sensor exposure catch-up behaviour.
csi_dump_enable, csi_dump_interval_ms, t31_runtime_trace 0 CSI and runtime tracing.

T41

Mostly read-only telemetry t41_* (AE/AWB/CCM/LSC/gamma states and error counters) plus bring-up switches (t41_defer_*, t41_late_start_mask, t41_checkpoint_*). Notable:

Parameter Default Meaning
t41_native_awb 1 (0444) Use the privately owned, frame-driven calibrated AWB.
t41_ae_flicker_frequency_hz, t41_ae_flicker_*_lines - Anti-flicker frequency and exposure line limits.
t41_adr_bypass - Bypass ADR (diagnostic).
isp_clk, isp_clka, isp_clks - ISP, AXI and scaler clocks.

T40

Many enable_*, ae_soft_*, awb_*, bcsh_*, ccm_* parameters used while the userspace-driven AE/AWB is tuned; treat them as bring-up controls.

Reading values on the camera

ls /sys/module/ | grep tx_isp
cat /sys/module/tx_isp_t20/parameters/isp_mmap_pool_kb

The module directory name uses underscores (tx_isp_<soc>); verify the exact name with ls /sys/module.

Clone this wiki locally