Skip to content

Track Operations

The short version of everything you need standing next to the car, whether you're in the pits or debugging with no debugger attached.

What this board does

The Telemetry Node is a passive listener on the vehicle CAN bus. It cannot actuate anything: its only bus outputs are the GPS speed/heading re-broadcast (0x0F0) and lap-count frames. It is not part of the shutdown circuit and is powered from the LV system. Turning it off changes nothing about how the car drives: you only lose logging and live data.

Quick check

  1. Power on → the PCB LED gives 3 quick blinks (CAN app init), then settles into a 2 Hz heartbeat.
  2. CAN → frame 0x0F0 appears on the bus at 20 Hz (CANdapter / ECUBus Pro).
  3. UDP → on the receiving server: nc -ul 9000 shows CSV lines prefixed 1, (20 Hz) and 2, (5 Hz).
  4. SD → after a session, the card has a new <date>_<runid>.csv file that grows while the node runs.

LED signatures

The board has no console in normal builds: the LED is the only diagnostic.

LEDMeaning
3 quick blinks at power-onCAN app initializing (normal boot)
Steady 2 Hz blinkScheduler alive, node running
Odd blip out of rhythmCAN bus-off occurred; the driver recovers automatically
Frozen (on or off)Error_Handler() (interrupts disabled, board halted). Power cycle.

Failure modes

SymptomCauseWhat still worksRecovery
LED frozen right after bootSD card missing/corrupt (FileX open/create failures halt the node)NothingInsert a good FAT-formatted card, power cycle
Runs, but no UDP at the pitNo DHCP lease (the node has no static IP), no Ethernet link, wrong server IP, or firewall on port 9000SD logging, CANMake sure a DHCP server (router) is on the network; check link/cabling; verify UDP_SERVER_ADDRESS
GPS fields all zeroNo fix yet (or no antenna)Everything elseWait for fix / check antenna; lap tracking needs a fix
time_unix looks wrongRTC not yet synced (it syncs on the first GPS fix)EverythingIgnore early timestamps or wait for fix

A bad SD card halts the whole node

FileX errors call Error_Handler(), so a failed card doesn't just kill logging: it stops UDP and CAN too. Carry a spare formatted card.

Retrieving the logs

One file per boot: <rtc-date>_<runid>.csv (the run counter lives in RUN.ID on the card). The first row is the CSV header; parse columns positionally against it (see Data Format).

Before an event

These are hardcoded in sys_conf.h and must be re-pointed per venue, then re-flashed:

  • UDP_SERVER_ADDRESS / UDP_SERVER_PORT: where the stream goes.
  • NTRIP_CASTER_IP_ADDRESS, NTRIP_MOUNTPOINT, credentials: the venue's RTK caster (defaults are placeholders).

Flashing is via ST-Link with the firmware binary from the matching v* GitHub release (the CAN bootloader path is currently stubbed).

Released under the MIT License.