Files
mikkeli 1f678fe87f Add recorder: raw CAN and GNSS sessions with failsafes and a storage bound
Reads SocketCAN and gpsd directly. Sessions start on the first frame or on
'ctl start', end after 15 s of bus idle or on 'ctl stop'; blips under 3 s are
discarded. candump -L chunks fdatasync'd every second and zstd'd once closed;
oldest sessions deleted to stay under 50 GB / above 20 GB free. Kernel and
queue drops, link changes and clock steps are recorded as events.

Bench-tested on vcan with the first car capture (byte-identical) and installed
on the car Orin as yukart-recorder.service.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DDwfd6Ki8UfG4hK6W5YpJz
2026-10-09 20:15:13 +09:00

1.9 KiB

type, date
type date
report 2026-10-09

Recorder bench test

Replaying the first in-car capture (z27ag-20261009-163736-ign.log, 10 s, 8925 frames) onto a vcan0 with its original timing, against a fake gpsd on the workstation and the real gpsd on the car Orin.

Scenarios

# Scenario Result
1 Full replay, mark at t≈3 s auto session; 8925 frames; ID#DATA sequence byte-identical to the source; 3 chunks at --chunk-secs 4, all compressed
2 1 s replay discarded at close (under --min-secs, no marks) — after fixing the span to first→last frame; the first version counted the idle wait too and kept it
3 ctl start bench-test, no CAN, mark, stop manual session with label, mark and GNSS; no CAN chunk left behind
4 vcan0 deleted mid-session, recreated 1 s later one session; Network is down → No such device → socket open recorded as can_link events
5 SIGTERM mid-session session closed, reason shutdown, exit 0
6 SIGKILL mid-session (3 s replay), restart all 2676 frames on disk; marked truncated and compressed at restart
7 --cap-gb 0 every older closed session deleted, the active one kept; sequence numbers continue from .last-seq

On the car Orin (aarch64 cross-build, highest GLIBC_2.34 against its 2.35): the same full replay recorded 8925 frames and 55 KB of zstd; real gpsd reports (no fix indoors) recorded with the last TPV before start stamped before_start. Resident memory at idle: 5 MB.

Not tested

  • Real PCAN-USB hot-plug in the car (the vcan deletion stands in for it).
  • Sustained throughput beyond 890 frames/s, and the queue-overflow path.
  • A clock step during a session (the detection is in place; nothing stepped).

Installed

yukart-recorder.service on mikkeli-orin-nano, enabled, running as mikkeli, waiting for can_pcan. Recordings: /var/lib/yukart/recordings/.