Repository navigation
Module Parameters
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.
| 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. |
| 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. |
| 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. |
| 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. |
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*).
| 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. |
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. |
Many enable_*, ae_soft_*, awb_*, bcsh_*, ccm_* parameters used while the userspace-driven AE/AWB is tuned; treat them as bring-up controls.
ls /sys/module/ | grep tx_isp
cat /sys/module/tx_isp_t20/parameters/isp_mmap_pool_kbThe module directory name uses underscores (tx_isp_<soc>); verify the exact name with ls /sys/module.