Skip to content
Electrical & Wiring·Lesson 24 of 34

Mini-Project 5: CAN Device Bring-Up with Tuner X and the Hardware Client

Bring a brand-new CAN device onto the bus, assign its ID, update firmware, and confirm it talks to the roboRIO.

Sign in to track progress, earn XP, and save lessons.

Every new motor controller, encoder, or sensor needs the same bring-up ritual before it works in code: power it, see it on the bus, give it a unique ID, update firmware, and verify. Doing this one device at a time on a bench saves hours of robot-side debugging.

Bench setup for bring-up: CTRE recommends a minimal terminated loop, for example roboRIO <-> device <-> PDP, or CANivore <-> device <-> 120 ohm resistor. Both physical ends of the bus must be terminated by a 120 ohm resistor. The roboRIO and CTRE PDP have these built in (the PDP ships with its termination jumper ON). Keep additional CAN nodes between the roboRIO and the PDP so the bus is terminated at both ends.

CTRE devices (Talon FX/SRX, Kraken, CANcoder, Pigeon 2) -- Phoenix Tuner X:

  1. Connect the roboRIO over USB or join the robot radio network and open Phoenix Tuner X. The roboRIO may take ~30 seconds to boot before it appears.
  2. The device list shows every CAN device. If two devices share an ID you must connect them one at a time to separate them.
  3. Select the device, set a unique Device ID in the valid range 0-62, apply, and run Blink to confirm you are configuring the physical device you think you are.
  4. Update firmware from Tuner X so the device firmware matches your Phoenix 6 vendordep version (mismatches are a common cause of 'device not licensed/responding' errors). Tuner X auto-downloads and caches the latest firmware.

REV devices (SPARK MAX/Flex, PDH) -- REV Hardware Client:

  1. Connect the SPARK MAX over USB-C (or the whole bus via the PDH/roboRIO) and open the REV Hardware Client.
  2. Assign a unique CAN ID to each controller; a new SPARK MAX's default ID must be changed so two controllers do not collide.
  3. Update firmware to the version matching your installed REVLib 2025, then save/burn settings.

Verify it from code:

TalonFX fx = new TalonFX(1); // ID must match what Tuner X shows
var voltage = fx.getSupplyVoltage().getValueAsDouble();
System.out.println("FX supply voltage: " + voltage); // ~12V = alive

Healthy LED reference during bring-up:

  • A CTRE Talon FX/Kraken blinks orange when powered, on the bus, and not being commanded; green/red when driven forward/reverse.
  • The REV PDH status LED is solid green when it has CAN comms with the roboRIO, solid blue when powered but not communicating, and orange/red in fail-safe.
  • Any momentary red blink on a CAN device while you flick or jostle the harness is a sign of a loose CAN connection at that segment.

Finish bring-up by writing the assigned IDs onto a label or your CAN map document. Undocumented IDs are how teams end up with two devices fighting over the same ID at 11pm before a competition.

Key takeaways

  • Bring devices up one at a time on a terminated loop so both physical ends have a 120 ohm resistor (built into the roboRIO and CTRE PDP).
  • Use Phoenix Tuner X (CTRE) or the REV Hardware Client (REV) to set a unique CAN ID (0-62 for CTRE) and match firmware to your installed vendordep.
  • Confirm with the Blink function and the device's healthy LED pattern, then document every CAN ID.

Lesson quiz

Required

Answer all 3 questions correctly to complete this lesson.

1.When two CAN devices accidentally share the same ID, what Tuner X / REV Hardware Client feature helps you physically identify which device is which?

2.What is the valid range of CAN device IDs you can assign to a CTRE device during bring-up in Tuner X?

3.What typically happens to a SPARK MAX/Flex's configured CAN ID when you update its firmware through the REV Hardware Client?

Answer every question to submit.