Skip to main content

Hardware Selection

Supported Boards

BoardCAN InterfaceLibraryStatus
Adafruit Feather RP2040 CANMCP2515 over SPImcp2515.h (autowp)Tested
Adafruit Feather M4 CAN Express (ATSAME51)Native MCAN peripheralAdafruit_CAN (CANSAME5x)Tested
ESP32 with CAN transceiver (e.g. ESP32-DevKitC + SN65HVD230)Native TWAI peripheralESP-IDF driver/twai.hTested
M5Stack Atomic CAN BaseCA-IS3050G over ESP32 TWAIESP32 TWAITested
Adafruit ESP32 Feather V2 + CAN Bus FeatherwingMCP2515 over SPImcp2515.h (autowp)Tested

Supported Vehicle Variants

Select your vehicle hardware variant via the #define directive in sketch_config.h.

DefineTargetListens on CAN IDsNotes
LEGACYHW3 Retrofit1006, 69Sets FSD enable bit and speed profile control via follow distance
HW3HW3 vehicles1016, 1021Same functionality as legacy
HW4HW4 vehicles1016, 1021Extended speed-profile range (5 levels)
note

HW4 vehicles on firmware 2026.2.9.X are on FSD v14. However, versions on the 2026.8.X branch are still on FSD v13. If your vehicle is running FSD v13 (including the 2026.8.X branch or anything older than 2026.2.9), compile with HW3 even if your vehicle has HW4 hardware.

How to Determine Your Hardware Variant

  • Legacy — Your vehicle has a portrait-oriented center screen and HW3. This applies to older (pre Palladium) Model S and Model X vehicles that originally came with or were retrofitted with HW3.
  • HW3 — Your vehicle has a landscape-oriented center screen and HW3. You can check your hardware version under Controls > Software > Additional Vehicle Information on the vehicle's touchscreen.
  • HW4 — Same as above, but the Additional Vehicle Information screen shows HW4.

Hardware Requirements

  • One of the supported boards listed above
  • CAN bus connection to the vehicle (500 kbit/s)
important

Cut the onboard 120 Ohm termination resistor on the Feather CAN board (jumper labeled TERM on RP2040, Trm on M4). If using an ESP32 with an external transceiver that has a termination resistor, remove or disable it as well. The vehicle's CAN bus already has its own termination, and adding a second resistor will cause communication errors.

Which Board Should I Choose?

  • Feather RP2040 CAN — Most popular choice, well-documented, 3D printable case available
  • Feather M4 CAN Express — Native CAN controller (no SPI overhead), slightly faster
  • ESP32 + CAN transceiver — Cheapest option if you already have an ESP32, requires external transceiver module
  • M5Stack Atomic CAN Base — Most compact form factor
  • Feather V2 + FeatherWing — WiFi-capable ESP32 with MCP2515 CAN controller, good balance of features and cost