Changelog#
Release notes for CineMate. For downloads, see the releases page.
Version 3.4.2#
Raspberry Pi 4 / CM4
- Pi 4-family cameras now launch with the vc4 tuning file for their sensor. Before, they got no tuning file at all and read the Pi 5 white-balance curve.
- tuning_file_override now works on Pi 4 too. A tuning file made for the other ISP is rejected with an error line, in both directions.
Settings editor - The tuning-file picker shows which platform each file was made for, and marks the ones this Pi cannot load. - Tuning-file upload checks the file against the Pi it is running on, instead of always against the Pi 5.
Version 3.4.1#
Sensors and modes
-
New aspect ratios for imx283 and imx585: 1:1, 16:9, 17:9, 1.85:1, 1.90:1, 2.00:1, 2.20:1, 2.22:1, 2.35:1, 2.39:1, 2.50:1, 2.55:1.
-
Added vmax cropping for imx283 and imx585, changing the actual sensor readout. Reduces write speed needed to disk so some of the modes also works with normal SSD at 25 fps.
-
We also have cropped-in modes, which use a smaller part of the sensor. Useful when using lenses with smaller image circles.
-
Aspect ratio selection in Web UI settings-pane, and enabling of individual modes for fast selection on the camera build. User can activate for example only 1x1 binning modes.
imx283 - Removed black bands on the left and right edges of sensor readout.
Settings editor - Tuning-file upload fixed
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.