Skip to content

Environment Variables

Lu-Fi edited this page Oct 11, 2026 · 3 revisions

Environment variables of OpenIMP

OpenIMP reads many OPENIMP_* variables; this page lists the ones documented for RC1 (v2026.10.11-rc1) (checked against src/ and docs/OPENIMP_BEYOND_VENDOR.md at the tag). Switches that exist only in later work (agg-36) are not listed. They are read by libimp.so inside the application process, so set them in the application's init script or environment, not in your login shell.

Class: user-facing means safe to set in production. debug-only means diagnostics or A/B rollback; do not set in production.

Behaviour switches

Variable Purpose Default Class
OPENIMP_REF_SHARE 0 disables the T21/T23 reference ring on user-facing
OPENIMP_T31_HW_JPEG 0 selects the software JPEG encoder on T31 on user-facing
OPENIMP_T31_OSD 0 disables the IPU OSD backend on T31 on user-facing
OPENIMP_T20_RC 0 disables the T20 OEM rate controller (CBR/VBR; needs the kernel patch for the NVPU statistics registers) and falls back to the GOP controller on user-facing
OPENIMP_T10_RC 0 disables the T10 OEM-style rate controller (CBR/VBR) on user-facing
OPENIMP_T10_RC_SUPERFRM 0 restores vendor-exact T10 VBR (only inside the OEM controller) on user-facing
OPENIMP_T20_RC_IAWARE 0 vendor P budget, 1 also for VBR/SMART (inside the OEM controller) on for CBR user-facing
OPENIMP_T31_RC_CORE legacy restores the pre-Allegro rate-control core allegro user-facing
OPENIMP_T21_EPRC T21: 0 restores the old GOP controller (vendor-identical eprc is the default) on user-facing
OPENIMP_T23_EPRC T23: 1 runs eprc for CBR/VBR too, 0 never; unset = eprc for SMART only SMART only user-facing
OPENIMP_T20_MBRC 1 enables the macroblock-level rate control inside the T20 OEM controller off user-facing (opt-in)
OPENIMP_EPRC_MBRC 1 enables the macroblock-level RC on T21/T23 off user-facing (opt-in)
OPENIMP_EPRC_QP_DOWN1 1/2 limits how fast QP may fall (T21/T23) off user-facing (opt-in)
OPENIMP_T31_ROI 0 refuses IMP_Encoder_SetChnRoiAttr on T31 (encoder ROI, beyond vendor) on user-facing
OPENIMP_T21_ROI 0 switches the T21 encoder ROI programming off on user-facing
OPENIMP_T23_ROI 0 switches the T23 encoder ROI (native Helix encoder) off; probe the symbol OpenIMP_Cap_T23HelixRoi to detect the feature on user-facing
OPENIMP_T41_ROI 1 enables the experimental T41 ROI table (not device-tested; the call returns -1 while off) off debug-only
OPENIMP_VBM_PARK 0 frees the frame-source pool of a disabled channel at once instead of parking it for the next pool (T23 default is parking, as on T21) on debug-only
OPENIMP_MOTION_V2 motion v2 (bounding boxes, strength, false-alarm suppression): unset, 1/on/all = all features; 0/off/vendor = vendor algorithm; shadow = all but override; a number = feature mask. Fine tuning: OPENIMP_MOTION_V2_BG/_SUPPRESS/_BLOBS/_OVERRIDE (0/1) and parameters _LEARN, _K, _MIN_DELTA, _SUPPRESS_MS, _JUMP_PCT, _MIN_CELLS, _MIN_FRAMES, _MIN_MOVE. See Beyond the Vendor on (since 2026-10-04) user-facing
OPENIMP_LOG_SYSLOG 1 also logs to syslog off user-facing

Note on OPENIMP_T10_RC / OPENIMP_T20_RC: the OEM-style controller is the default on T10/T20 in RC1 (device-tested on cam-C and cam-E); it only runs for CBR and VBR, other modes use the GOP controller. Older notes that call it opt-in are outdated. Read the "effective rate control" log line at channel creation to see what actually runs.

Memory

Variable Purpose Class
OPENIMP_RMEM_BASE, OPENIMP_RMEM_SIZE Override the rmem window (both required, page aligned); rejected with a log line if invalid debug-only
OPENIMP_DISABLE_RMEM 1 skips /dev/rmem (T31 workaround) debug-only
OPENIMP_RMEM_NO_REUSE 1 restores the old behaviour without reuse debug-only
OPENIMP_RMEM_MAP also logs every live allocation debug-only
OPENIMP_RMEM_TRACE rmem allocation tracing debug-only
OPENIMP_REF_SHARE_GAP, OPENIMP_REF_SHARE_DEBUG reference sharing tuning/debug debug-only

Diagnostics and A/B rollbacks

Variable Purpose Class
OPENIMP_PROFILE, OPENIMP_PROFILE_INTERVAL periodic profile report; interval in completed frames debug-only
OPENIMP_DEBUG_TRACE, OPENIMP_STARTUP_TRACE very verbose tracing debug-only
OPENIMP_MOTION_V2_LOG 1 = one stderr line per change of the vendor or v2 motion decision debug-only
OPENIMP_T23_HELIX_BSF 1 hard bitstream limit on T23; needs a patched kernel, device test open debug-only (opt-in)
OPENIMP_T31_DUMP_SOURCE_DIR dump source frames to a directory debug-only
OPENIMP_T31_VBR_LOOP 0 forces open-loop VBR on T31 debug-only
OPENIMP_T31_AVC_LEGACY 1 restores the pre-fix T31 H.264 recovery path debug-only
OPENIMP_T31_COMPANION_STAGE 0 skips the AVPU JPEG companion core per H.264 frame debug-only
OPENIMP_T31_HW_JPEG_SRC_COHERENT 1 puts the JPEG source in coherent memory debug-only
OPENIMP_T41_STREAM_COPY_MODE, OPENIMP_T41_RATE_CONTROL_COUPLING, OPENIMP_T41_UNCACHED_COMMAND_RING, OPENIMP_T41_UNCACHED_EP3_RING =0 rolls back T41 behaviour debug-only
OPENIMP_T31_IVS_STATS, OPENIMP_AEC_STATS, OPENIMP_SOURCE_STATS, OPENIMP_T31_FULL_FRAME_STATS, OPENIMP_T23_RC_STATS, OPENIMP_T20_RC_STATS periodic statistics output debug-only
OPENIMP_HELIX_SOC t10/t20 overrides the SoC probe of the combined T10/T20 build debug-only
OPENIMP_T30_HELIX_TIMEOUT_MS, OPENIMP_T23_HELIX_TIMEOUT_MS shorter Helix wait than the OEM 20 s (100..20000), for testing the failure limit debug-only
OPENIMP_T23_*, OPENIMP_HELIX_*, OPENIMP_P1_*, OPENIMP_P2_* internal bring-up/trace switches, not documented internal

Further variables exist in the source; treat everything not listed here as internal. Variables are read once, usually at channel or interface creation, so a restart of the application is needed.

Clone this wiki locally