- modeld standby: skip inference at standstill (model stays loaded in GPU), ModelStandby param + ModelStandbyTs heartbeat for race-free suppression - controlsd: suppress commIssue/modeldLagging when ModelStandbyTs < 2s old, ignore telemetryd/dashcamd in process_not_running check - Fan controller: standstill below 74°C clamps to 0-10% (near silent), standstill above 74°C allows 0-100%, thermald reads carState.standstill - Deleter: enforce 4GB quota on /data/log2 session logs, oldest-first cleanup - Diagnostic logging: steerTempUnavailable and controlsdLagging log to stderr with full context (steering angle, torque, speed, remaining time) - CLAUDE.md: document memory params method name difference (C++ camelCase vs Python snake_case) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
loggerd
openpilot records routes in one minute chunks called segments. A route starts on the rising edge of ignition and ends on the falling edge.
Check out our python library for reading openpilot logs. Also checkout our tools to replay and view your data. These are the same tools we use to debug and develop openpilot.
log types
For each segment, openpilot records the following log types:
rlog.bz2
rlogs contain all the messages passed amongst openpilot's processes. See cereal/services.py for a list of all the logged services. They're a bzip2 archive of the serialized capnproto messages.
{f,e,d}camera.hevc
Each camera stream is H.265 encoded and written to its respective file.
- fcamera.hevc is the road camera
- ecamera.hevc is the wide road camera
- dcamera.hevc is the driver camera
qlog.bz2 & qcamera.ts
qlogs are a decimated subset of the rlogs. Check out cereal/services.py for the decimation.
qcameras are H.264 encoded, lower res versions of the fcamera.hevc. The video shown in comma connect is from the qcameras.
qlogs and qcameras are designed to be small enough to upload instantly on slow internet and store forever, yet useful enough for most analysis and debugging.