Changelog#
Release notes for CineMate. For downloads, see the releases page.
Version 3.4.0#
imx585 driver#
- Default branch moves to
cinemate-7modes.
| CineMate mode | Type | Resolution | Bit depth | Readout | Max fps (normal) | Max fps (overclocked) | Notes |
|---|---|---|---|---|---|---|---|
| 0 | SDR | 3840×2160 | 10-bit | all-pixel | 44.98 | 68.66 | RAW10, up to 90 fps |
| 1 | SDR | 1920×1080 | 12-bit | binned | 69.92 | 69.92 | |
| 2 | SDR | 3840×2160 | 12-bit | all-pixel | 43.98 | 67.13 | |
| 3 | ClearHDR | 1920×1080 | 12-bit | binned | 30.00 | 30.00 | ClearHDR+CCMP |
| 4 | ClearHDR | 3840×2160 | 12-bit | all-pixel | 21.99 | 30.00 | ClearHDR+CCMP |
| 5 | ClearHDR | 1920×1100 | 16-bit | binned | 30.00 | 30.00 | ClearHDR linear |
| 6 | ClearHDR | 3840×2200 | 16-bit | all-pixel | 21.99 | 30.00 | ClearHDR linear |
Max fps figures are measured at the sensor's highest supported link frequency, 1039.5 MHz (2079 Mbps/lane, 39% over the RP1 D-PHY spec ceiling) — "normal" is the RP1 stock pixel-rate ceiling (--max-pixel-rate 380), "overclocked" is with the rp1-overclock dtoverlay's pixel-rate ceiling (--max-pixel-rate 580). See Overclocking the Pi.
- 12/16-bit ClearHDR recording — See ClearHDR.
RP1 overclock#
- Pixel-rate ceiling is now computed, not hardcoded — CineMate derives it from the RP1 overclock toggle's state and passes it to cinepi-raw as
--max-pixel-rate. See Overclocking the Pi. - Automated overlay — the installer compiles the
rp1-overclockoverlay, ships it disabled by default; the settings editor's Boot config pane toggles it for higher ClearHDR frame rates on Pi 5 / CM5. - libcamera tuning fix —
minPixelProcessingTimeadjusted so the overclock toggle actually raises the achievable frame rate.
CineMate Log#
- New, opt-in log-companded DNG recording on IMX585 and IMX283 — log-compands the linear sensor signal to a smaller code depth and writes a DNG
LinearizationTableso any DNG app decodes it back to linear automatically. No LUT is needed or should be applied. Shrinks 16-bit ClearHDR frames 17–37% and 12-bit SDR frames ~17%. See CineMate Log. - Per-camera
log_encodesetting (false/true/10/12) and the liveset logcommand, both resolved against each camera's own live sensor mode — never a standing choice that can silently drift out of sync with a resolution or ClearHDR switch. LOG10/LOG12badge on the Simple GUI, per camera, reflecting what's actually running rather than what was requested.
CineMate#
Dual sensors#
- Automatic dual-camera — two connected sensors are each detected and driven by their own
cinepi-rawprocess, with frame capture synchronised by libcamera (cam0 server, cam1 client). - HDMI preview switching — new command
set previewcycles side-by-side → cam0 → cam1 → pip_cam0 → pip_cam1 (picture-in-picture). - Per-sensor recording — record both sensors or just the previewed one (
sensors.record_policycan be set in settings.jsonc), or target sensors withrec cam0/rec cam1/rec both. Each sensor writes its own..._cam0/..._cam1clip folder.
Dynamic resolution#
- Substitution can now cross the SDR/ClearHDR and bit-depth boundary — when the requested frame rate outruns everything in the selected mode's own class, the ladder continues into the next class down instead of stopping. On an imx585 with 12-bit ClearHDR hidden, 16-bit ClearHDR 4K now reaches 87fps by walking down to HD SDR, where it used to cap at 40.
- New
image_capture.dynamic_resolution_priority—mode(default) holds bit depth and ClearHDR and drops resolution first;resolutionholds the frame size and drops the class first;noneis the previous behaviour, never leaving the class. Live viaset dynamic resolution priority mode|resolution|none(bare cycles), from the settings page, or from the live drawer's DYN RES select.modeanswers identically tononefor every frame ratenonecould serve, so the default only adds reach. A substitute is never larger or richer than the mode you selected under any policy. - Mid-take the class is held — bit depth and
--hdr sensorare launch arguments, so crossing a class relaunches cinepi-raw, which would end a running take. For the length of a take the ladder and the fps ceiling are pinned to the class actually running; a held-back change is applied the moment the take ends.
Web GUI#
- Settings editor config.txt write fix,
cinepi.localmDNS — savingconfig.txtused to fail silently (EACCES, runs aspi); now goes through a scoped helper (cinemate-apply-config-txt) that preserves owner/mode. Installer also enables mDNS forcinepi.localand fixes a stale/etc/hostsentry. - Settings editor — browser page at
cinepi.local:5000/settings-editor: editsettings.jsonc, stageconfig.txt, watch the live feed, review a take, manage the RAW drive.config.txtsaves write and reboot immediately with no confirm/revert net — use the recovery console for that. See Settings editor. - Playback — new tab plays a take back in-browser at its conform rate, using the DNG thumbnails. See Playback.
- Recovery console — independent
cinemate-recovery.serviceon:8080: diagnose, editsettings.jsonc/config.txt, and restart CineMate from a phone on the hotspot, nocinemate-autostart.servicedependency. Hotspot Wi-Fi now self-heals a brokensettings.jsoncvia the last-known-good SSID. See Recovery console. - Storage — new
hw_write_failurescounter warns live on slow storage; NTFS flagged supported but not recommended (can drop frames under sustained 4K writes).
CineMate start also without attached camera#
- Web UI and settings editor stay reachable so user settings can be changed also with no camera attached. CineMate re-probes for the sensor on every start.
Web API#
- New wireless control API over the Wi-Fi hotspot — ESP32, Pico W, other Pis and phones can now send the same commands as the CLI/serial over HTTP (
POST /api/v1/cmd), read live status (/api/v1/get/<key>,/api/v1/status), and receive push updates via a UDP status broadcast (8888/udp) or SSE (/api/v1/events). One dispatcher (CommandExecutor.handle_received_data) now serves the CLI, serial and web paths identically.allow_destructivedefaults tofalse, soreboot/shutdown/erase/formatare blocked out of the box on a stock unit. See Web API and Building control units.
Raspberry Pi / Bookworm#
- Installer — no longer creates a Python virtualenv; packages install straight into system Python (
cinemate-autostart.servicenow launchespython3directly), fixing several install blockers that only appeared in the venv path.
Version 3.3.2#
libcamera#
- CineMate now uses its own fork of libcamera.
imx283 driver#
- CineMate now uses its own fork of imx283 driver.
- 2 additional modes: 3840 x 2160 (4K UHD, native crop) and 2736 x 1538 (2.7K 16:9, binned)
imx585 driver#
- CineMate now uses its own fork of imx283 driver.
CinePi-RAW recorder#
- Frame-rate phase lock — closed-loop control (sigma-delta VBLANK dither) keeps long takes locked to the Pi's wall clock and pre-converges during preview. On by default.
- More reliable audio sync on 4K / exFAT — the capture path was reworked (protected helper, dedicated writer thread, wall-clock reconciliation, real-time scheduling) for more reliable WAV sync on demanding modes.
- Wall clock embedded timecode — timecode is anchored to the first frame's wall-clock time and follows the Pi's real-time clock.
- Correct Pi 4 RAW — CSI2-packed frames decode correctly on Pi 4-family boards; raw packing (P/U) is chosen per Pi model automatically.
- Camera model — set the camera model manually for each attached sensor.
CineMate#
- Storage / media — multi-drive RAW hot-swap with a standby drive and automatic promotion. Default format is exFAT.
Raspberry Pi / Bookworm**#
- Boot / install — faster boot-to-preview on Pi 4/5 (about 10-15 seconds)
Version 3.3.1#
CinePi-RAW recorder#
- New CineMate fork, reducing CPU load and temperature dramatically and reducing dropped frames.
- Resolution can now be changed without restarting the recorder process, enabling faster mode changes and dynamic resolution switching.
- Better USB microphone sync.
CineMate workflow#
- exFAT support and filesystem-aware storage profiles for efficient media writes, including IMX585 25 fps at 4K to SSD without frame drops.
- Dynamic resolution switching to match the observed sustainable frame rate for the attached sensor and storage media — for example, IMX585 automatically switches to HD above 25 fps when an SSD is used.
- Hot-swapping between 16-bit and 24-bit USB microphones.
- 4K-class recording modes are visible by default.
- Automatic storage pre-roll can be disabled in
settings.jsonc.