Hardware & Open Items¶
This page consolidates everything that is not fully captured in the software repository β physical hardware details, external configuration, and features that are stubbed or planned. Each item is also flagged inline on its feature page. These are documented as gaps to fill, not guessed at.
How to read this page
- π§ Physical / hardware β a real-world detail (wiring, part, mounting) the code can't know. Confirm against the kart and the Mainboard repo.
- π‘ External config β set on a device outside the repo (the R/C transmitter, the FarDriver app).
- π§ Not implemented β planned or stubbed in software; no working feature today.
- β Doc discrepancy β the repo's own docs disagree; confirm which is right.
Remote control (CRSF)¶
- π‘ Transmitter & receiver models. The specific radio and receiver used on the current kart are not confirmed in the repo (older notes mention a BetaFPV transmitter and a SuperX/ELRS receiver). β Which TX and RX are actually on the kart?
- π‘ Binding procedure. The physical steps to pair the transmitter and receiver are not documented. β What is the bind procedure?
- π‘ Transmitter mixer / channel map. How each physical control (left stick, SA, SD, SE, SF) is assigned to CH1βCH16 is configured on the radio. The firmware defaults (ELRS AETR) are confirmed working, but the radio-side setup steps are not recorded. β Document the mixer/channel assignment on the radio.
- π§ Receiver wiring. Beyond "receiver TX β Teensy pin 15 (Serial3), plus 5 V and ground," the connector/harness is not documented. β Confirm the receiver wiring to the mainboard Transceiver connector.
- π‘ Receiver failsafe = "No Pulses". Required for the dead-man to work (a hold-last-value failsafe defeats it). β Confirm the receiver is set to No Pulses.
Steering hardware¶
- β Pot pin β GPIO36 vs GPIO32. The firmware and current bring-up notes use GPIO36; some older docs say GPIO32. β Confirm the physical pot-wiper pin.
- β Talon PWM pin β GPIO15 vs GPIO25. The firmware uses GPIO15; the plan and CAN notes say GPIO25. β Confirm the physical PWM pin (GPIO15 per code).
- π§ Gearbox / motor / pot mechanicals. The gearbox ratio (documented 50:1), the CIM motor, and the pot's mounting and total mechanical travel are physical facts not otherwise verifiable. β Confirm gearbox ratio, motor, pot mounting/travel.
- π§ Talon SRX mode. Must be in PWM mode with no CAN/RoboRIO owner (FRC-unlock if previously used on a RoboRIO). β Confirm the Talon is PWM-configured.
- π§ CAN termination. 120 Ξ© at exactly the two bus ends. β Confirm termination.
See Steering.
Traction / power¶
- π§ Precharge & contactor hardware. The precharge resistor's value/wattage, the
main contactor part, and whether a bus-voltage sense line is wired (the code
supports one but assumes
has_bus_sense = false) are physical. The firmware's timings (4 s precharge, 5 s cap, 10 s cooldown) protect the resistor but assume a matching part. β Confirm the resistor, contactor, and any bus-sense line. - π§ Hardware e-stop. Its wiring, what exactly it interrupts, and its placement are physical and independent of software. β Document the e-stop.
- π‘ FarDriver ESC app configuration. Motor direction, the Low/Med/High
speed-profile definitions, the regen brake level, and the SPD-pulse settings
(2β6 pulses, "isolated pulse") are set in the FarDriver app, not the repo. The
full parameter snapshot is now recorded in the
FarDriver ESC Settings reference (accessed via
Paras β Open Proin the app; that page includes a screen recording of the unlock procedure). Its "Settings needing attention" section still lists items to resolve on the kart β the current limits vs. BMS burst limit, the wrong wheel dimensions, and whether Park is inert as configured.
See Arming Β· Precharge Β· Contactor and Gearshifting.
Speedometer¶
- π§ Road calibration.
HALL_MPH_PER_HZ(β0.057) is a provisional geometry estimate; whether "6 speed pulses" is per motor-rev / electrical-cycle / wheel-rev is unconfirmed and changes the factor significantly. The dial tracks speed proportionally but the magnitude is provisional until calibrated by driving a measured distance. β Calibrate and setHALL_MPH_PER_HZ. - π§ SPD β pin 22 wiring. The mainboard pin map does not assign the ESC SPD line (pin 13) to a Teensy pin; SPD β pin 22 appears to be a direct bench wire. β Confirm the physical SPD wiring.
See Speedometer.
Dashboard data with no live source¶
- π§ Battery volts / amps, ESC RPM, temperatures. The firmware sends zeros/unknown for these; there is no ESC-serial telemetry parser or BMS reader. The dashboard's battery dial and RPM readout show real values only in Sim mode. β Implement the FarDriver ESC-serial telemetry parser and/or the BMS reader to make these live.
- π§ BMS (JKBMS). Planned over RS485; a
bms_probe.pyand integration do not exist yet. - π§ IMU (MPU6050). A
pi/imu_probe.pyexists, but the IMU is not folded into the live telemetry or shown on the dashboard.
See Telemetry Pipeline.
Camera¶
- π§ Camera tab is a placeholder. No camera software exists (no dashboard component, no video pipeline, no firmware handling). The board provides an FPV camera UART port on Teensy Serial8 (pins 34/35), but nothing drives it. β Specify the camera hardware, the video transport to the web dashboard, and whether Serial8 is used for camera control.
See Camera Tab.
Map & connectivity¶
- π§ OpenStreetMap tiles need internet. The map's base imagery loads from
tile.openstreetmap.org; on an isolated kart network the tiles won't load (marker/trail still work). β Provide internet or a local tile cache if map imagery is needed on the kart. - π§ GPS antenna / mounting. NEO-M9N fix quality depends on antenna placement and sky view (physical).
- π§ Pi network access. Hostname/IP/credentials for reaching the Pi depend on the deployment network and are not fixed in the repo.
See Map Tab and Pi Kiosk Deployment.
Canonical hardware reference¶
- π§ Mainboard revision & pin map. The authoritative board source is the separate KiCad repo PHS-SMCS/SMCSKart-Mainboard. The pin-map mirror here is for software convenience; if the board and the mirror disagree, the board wins.