Redis key reference#

This page lists the Redis keys used by CineMate and CinePi-raw. Values are simple strings, so you can inspect them with redis-cli.

Each entry explains which component normally writes the key and whether it makes sense to change it manually.

Key Written by Description Safe to change manually?
anamorphic_factor CineMate Preview squeeze factor for anamorphic lenses Yes (publish key to apply)
iso CineMate -> CinePi-raw Sensor gain in ISO Yes
shutter_a CineMate -> CinePi-raw Active shutter angle in degrees Yes
shutter_angle_nom CineMate Nominal shutter angle before sync/free-stepping adjustments Yes
shutter_a_sync_mode CineMate Keep exposure constant when changing FPS Yes
shutter_angle_actual CineMate Calculated shutter angle actually applied after clamping/sync No
shutter_angle_transient CineMate Temporary value used during ramps No
exposure_time CineMate Current exposure time in seconds No
fps CineMate -> CinePi-raw Target frames per second Yes
fps_user CineMate User-selected FPS value stored by the UI/controller No
fps_actual CineMate (RedisListener) Measured frame rate: the mean of the last 100 inter-frame intervals CinePi-raw reports on cp_stats. Reports cam0 on dual-sensor rigs No
user_changing_fps CineMate (RedisListener) 1 while an fps change is debouncing; cleared once fps has been stable for a while No
fps_last CineMate FPS at the previous shutdown, restored as the startup FPS No
fps_max CineMate startup Maximum FPS supported by the current sensor mode No
fps_phase_lock CineMate startup Runtime enable for CinePi-raw's closed-loop frame-rate phase lock, from sensors.<cam>.phase_lock in settings.jsonc (default on); read once at CinePi-raw startup, not live No
sensor_mode CineMate -> CinePi-raw startup Active sensor resolution/mode index Yes (causes pipeline restart)
bit_depth CineMate startup Sensor bit depth (10, 12 or 16) for the selected mode No
width / height CineMate startup Active sensor resolution No
mode CineMate startup Composite width:height:bit_depth:packing string for the active sensor mode No
packing CineMate startup Sensor packing token for the active mode/platform: P (packed) or U (unpacked) No
lores_width / lores_height CineMate startup Preview stream resolution passed to CinePi-raw No

Resolution switching#

Whether triggered manually (set resolution) or automatically by dynamic resolution, a resolution change publishes a target/in-flight state so the GUI can show a "switching" transition instead of a stale value.

Key Written by Description Safe to change manually?
dynamic_resolution_enabled CineMate Toggle for automatic FPS-driven resolution downgrade/upgrade (set dynamic resolution); persisted and read back at startup. When unset, the startup value comes from image_capture.dynamic_resolution in settings.jsonc (on by default) Yes
dynamic_resolution_active CineMate 1 while a lower resolution mode is currently substituted in to sustain the requested FPS No
dynamic_resolution_desired_mode CineMate The sensor mode the user actually asked for; dynamic resolution switches away from and back to this mode as FPS allows No
dynamic_resolution_priority CineMate Which axis of quality the substitution gives up first once the desired mode's own class runs out: mode (hold bit depth + ClearHDR, drop resolution), resolution (hold frame size, drop class), none (never leave the class). Set with set dynamic resolution priority; persisted and read back at startup. When unset, the startup value comes from image_capture.dynamic_resolution_priority in settings.jsonc (mode by default) Yes
resolution_switching CineMate 1 while a resolution change (manual or dynamic) is in flight; cleared when CinePi-raw's raw-stream-ready log line reports the new stream at the target size, or after a 2.5 s hold timer No
resolution_target_mode CineMate Sensor mode index CinePi-raw is being switched to No
resolution_target_width / resolution_target_height CineMate Target resolution CinePi-raw's raw-stream-ready log line is matched against to clear resolution_switching No
resolution_target_bit_depth CineMate Target bit depth for the in-flight resolution switch No
wb CineMate -> CinePi-raw White-balance temperature in Kelvin Yes
wb_user CineMate Kelvin value stored before conversion to cg_rb No
cg_rb CineMate -> CinePi-raw White-balance gain pair 1/R,1/B Yes (advanced)
zoom CineMate Digital zoom factor for preview streams Yes
hdmi_preview_source CineMate -> CinePi-raw Dual-sensor HDMI preview source: both, cam0, cam1, pip_cam0, or pip_cam1. Read live by the compositor; no restart Yes
ir_filter CineMate -> CinePi-raw Toggle IR-cut filter (IMX585 only) Yes
hdr CineMate -> CinePi-raw startup ClearHDR state (imx585): 1 makes CinePi-raw launch with --hdr sensor. Set automatically when a ClearHDR sensor mode is selected; changing it requires a camera restart No (select an HDR mode via set resolution)
hdr_threshold_low CineMate -> CinePi-raw ClearHDR data-selection threshold, low side (0–4095). Applied live to the sensor (as a pair with hdr_threshold_high), and re-applied at every CinePi-raw start Yes (publish key to apply)
hdr_threshold_high CineMate -> CinePi-raw ClearHDR data-selection threshold, high side (0–4095). Applied live to the sensor (as a pair with hdr_threshold_low), and re-applied at every CinePi-raw start Yes (publish key to apply)
hdr_blend CineMate -> CinePi-raw ClearHDR HG/LG blending mode, driver menu 0–8 (0 = HG 1/2 + LG 1/2). Applied live Yes (publish key to apply)
hdr_gain_adder CineMate -> CinePi-raw ClearHDR low-gain path gain adder, driver menu 0–5 (2 = +12 dB). Applied live Yes (publish key to apply)
thumbnail CineMate -> CinePi-raw Embedded DNG thumbnail mode: 0 off, 1 mono, 2 colour. Applied live (no camera restart), written per frame into new takes only Yes (publish key to apply)
thumbnail_size CineMate -> CinePi-raw Right-shift downscale of the thumbnail plane; 0 is the full lores size. Changing it restarts the camera. Seeded at launch only — no CLI verb or settings-editor field yet No (seeded to avoid a stale pre-Phase-0 resident value collapsing the thumbnail; change by hand only if you understand the restart)
log_encode_request CineMate CineMate Log request, shared across every launched camera like hdr: 0 off, 1 on (use the live mode's default target), 10 / 12 force that target. Set by set log; each camera resolves it independently against its own sensor at the next restart No (use set log)
log_encode_cam0 / log_encode_cam1 CinePi-raw (per camera) startup The target that camera was actually launched with: 0 = off/not applied, else 10 or 12. Drives the Simple GUI LOG10/LOG12 badge — deliberately not the same as log_encode_request, so the badge never shows a target that isn't running yet No
is_recording CineMate -> CinePi-raw Requested record state. Edge-triggered: 0 -> 1 starts, 1 -> 0 stops Yes
record_cams CineMate -> CinePi-raw Dual-sensor record gate: which sensor(s) capture this take (cam0+cam1, cam0, or cam1). Published before is_recording flips; each cinepi-raw records only if its --cam-port is selected. Absent/empty = both No
rec CineMate (RedisListener) Derived runtime record flag based on framecount rising/going flat No
framecount CinePi-raw -> CineMate Total frames counted for the active take No
buffer CinePi-raw -> CineMate Raw frames currently buffered in RAM No
buffer_size CinePi-raw -> CineMate Total RAM buffer capacity in frames No
is_buffering CinePi-raw -> CineMate 1 while the RAM buffer is pre-filling No
is_writing CinePi-raw -> CineMate 1 while at least one camera is actively writing frames to disk No
is_writing_buf CineMate 1 while buffered frames are still flushing after stop No
storage_preroll_active CineMate (StoragePreroll) 1 during a storage warm-up clip No
drop_frame CineMate (RedisListener) Live pulse while a TC-gap event is active (advisory — frame may still be on disk) No
drop_frame_count CineMate (RedisListener) TC hole count in the current/last take (alias of tc_hole_count; kept for backward compatibility) No
drop_frame_relay CineMate (RedisListener) Short pulse used to mute REC tone for one frame on drop-frame events No
drop_frame_during_last_take CineMate (RedisListener) 1 only if the previous non-preroll take had frames genuinely absent from disk (missing_frame_count > 0) No
tc_hole_count CineMate (RedisListener) Number of TC gap events this take — frames that arrived late enough to create a timecode hole (inter-frame gap ≥ 1.5× frame period); file may still be present No
missing_frame_count CineMate (RedisListener) Frames confirmed absent from disk: max(0, expected − recorded) at end of take; authoritative signal for genuine data loss No
frames_in_sync CineMate (RedisListener) 1 if live/final expected vs recorded frame counts are within configured sync tolerance; defaults are +/- 2 frames live and +/- 1 frame after buffered writes flush No
recording_time CineMate (RedisController timer) Elapsed record time in seconds No
recording_tc_rec CineMate (RedisController timer) Elapsed record timecode No
recording_time_tod CineMate (RedisController timer) Time-of-day timecode updated during recording No
tc_cam0 / tc_cam1 CineMate (RedisListener) SMPTE timecode per camera derived from timestamp* stats fields No
last_dng_cam0 / last_dng_cam1 CineMate (cinepi_multi log watcher) Full path to the most recently written DNG for each camera No
is_mounted CineMate (SSD monitor) 1 when storage is mounted No
storage_type CineMate (SSD monitor) Drive type such as NVME, USB, or SD No
storage_filesystem CineMate (SSD monitor) Current filesystem type such as ext4, exfat, or ntfs No
storage_mount_options CineMate (SSD monitor) Actual mount options reported by the kernel for /media/RAW No
storage_recorder_profile CineMate (SSD monitor) Recorder worker profile selected from the current filesystem No
space_left CineMate (SSD monitor) Remaining free space in GB No
write_speed_to_drive CineMate (SSD monitor) Current write speed in MB/s No
FSCK_STATUS CineMate (SSD monitor) Result of the periodic filesystem check run after mount, e.g. OK ... / FAIL ...; cinemate-internal, cinepi-raw never reads it No
file_size CineMate Bytes per frame for the current mode No
memory_alert CineMate RAM percentage at which the watchdog auto-stopped recording (integer, set at the 80 % trip point); 0 when clear No
cam_init CinePi-raw Internal startup flag No
cameras CineMate startup JSON list of detected cameras and port assignments No
audio_capture_gain_db CineMate startup Capture gain in dB applied to the active USB mic, from audio_capture in settings.jsonc (per-mic-type block, e.g. 16bit.capture_gain_db); read back by the USB hotswap monitor on mic reconnect No
trigger_mode -- Defined in ParameterKey but not currently written or read anywhere in CineMate or CinePi-raw --
gui_layout CineMate Path to the active GUI layout preset No
pi_model CineMate startup Platform family, not the full board name: pi5 (Pi 5 / 500 / CM5), pi4 (Pi 4 / 400 / CM4), other, or unknown No
sensor CineMate startup Active camera model key No