Activity 5.4: Inspect CAN Devices
🎯 Goal
By the end of this activity you will have:
- Connected to your robot with Phoenix Tuner X (and REV Hardware Client if applicable)
- Discovered and listed every CAN device on the robot
- Verified that each device’s CAN ID matches the code in Constants.java
- Documented the firmware version and status of each device
- Identified any devices that need attention (firmware updates, faults, missing devices)
Step 1: Connect to the Robot
- Power on the robot
- Connect your laptop to the roboRIO via USB cable
- Open Phoenix Tuner X
- Click “Connect” or select the roboRIO from the device list
- Wait for Tuner X to scan the CAN bus
You should see a list of all CTRE devices on the CAN bus. If you also have REV devices, open the REV Hardware Client and connect via USB as well.
Step 2: Inventory All CAN Devices
Fill in this table with every device Phoenix Tuner X discovers. Compare each CAN ID to the values in your team’s Constants.java:
CTRE Devices (Phoenix Tuner X)
| CAN ID | Device Type | Name in Code | Subsystem | Firmware Version | Status |
|---|---|---|---|---|---|
| 21 | TalonFX | Shooter Left | ShooterSubsystem | ✅ / ⚠️ / ❌ | |
| 22 | TalonFX | Shooter Right | ShooterSubsystem | ✅ / ⚠️ / ❌ | |
| 23 | TalonFX | Turret | TurretSubsystem | ✅ / ⚠️ / ❌ | |
| 24 | TalonFX | Feeder | ShooterSubsystem | ✅ / ⚠️ / ❌ | |
| 25 | TalonFX | Spinner | ShooterSubsystem | ✅ / ⚠️ / ❌ | |
| 31 | TalonFX | Intake Left | IntakeSubsystem | ✅ / ⚠️ / ❌ | |
| 32 | TalonFX | Intake Right | IntakeSubsystem | ✅ / ⚠️ / ❌ | |
| 33 | TalonFXS | Deploy Left | IntakeSubsystem | ✅ / ⚠️ / ❌ | |
| 34 | TalonFXS | Deploy Right | IntakeSubsystem | ✅ / ⚠️ / ❌ | |
| 41 | TalonFX | Climb Left | ClimberSubsystem | ✅ / ⚠️ / ❌ | |
| 42 | TalonFX | Climb Right | ClimberSubsystem | ✅ / ⚠️ / ❌ | |
| 43 | TalonFX | Elevator | ClimberSubsystem | ✅ / ⚠️ / ❌ |
Status key: ✅ = Found and healthy, ⚠️ = Found but needs attention (firmware update, fault), ❌ = Not found
Additional Devices
Your robot also has devices not in the motor CAN ID list — Pigeon 2 gyro, CANcoders for swerve modules, and possibly a CANdle. List any additional devices you find:
| CAN ID | Device Type | Purpose | Firmware Version | Status |
|---|---|---|---|---|
Step 3: Run Self-Tests
For each device, run a self-test in Phoenix Tuner X:
- Select the device in the device list
- Click “Self-Test” (or the diagnostic button)
- Read the results — look for any faults or warnings
Document any issues found:
| Device (CAN ID) | Self-Test Result | Issue Found | Action Needed |
|---|---|---|---|
- Under-voltage fault: Battery was low when the device was last powered. Usually clears on its own with a charged battery.
- Hardware fault: A persistent hardware issue. May need device replacement.
- Firmware out of date: Orange warning. Update through Phoenix Tuner X.
- Boot during enable: The device rebooted while the robot was enabled. Could indicate a wiring issue causing power interruption.
- No faults: Everything is healthy.
Step 4: Test a Motor
Pick one motor and test it directly from Phoenix Tuner X (without robot code):
- Select the motor controller in the device list
- Go to the “Control” tab
- Set a small output value (e.g., 10% or 0.1)
- Click “Enable” and observe the motor
⚠️ Safety: Make sure the mechanism is safe to move before testing. Keep hands clear and ensure the robot is secured.
| Test | Result |
|---|---|
| Motor selected | CAN ID: ___ |
| Output commanded | ___% |
| Motor responded? | Yes / No |
| Direction correct? | Yes / No / N/A |
| Any unusual sounds? |
Step 5: Check CAN Bus Health
In Phoenix Tuner X, check the overall CAN bus health:
- Look for the CAN utilization percentage
- Check if any devices show intermittent communication (blinking status)
- Note the total device count — does it match what you expect?
| Metric | Value | Healthy Range |
|---|---|---|
| CAN utilization | ___% | Below 70% |
| Total devices found | ___ | Should match your device count |
| Devices with warnings | ___ | Should be 0 |
| Devices with faults | ___ | Should be 0 |
Step 6: Create a CAN Bus Map
Draw or document the physical CAN bus chain on your robot. This is invaluable for debugging at competition:
- Start at the roboRIO
- Follow the CAN wires (green CAN H and yellow CAN L) from device to device
- Note the order of devices in the chain
- Mark where the chain ends (should have a 120Ω termination resistor)
roboRIO → [Device ___] → [Device ___] → [Device ___] → ... → [Last Device]This map tells you exactly where to look when a device goes missing — if device 5 in the chain disappears, check the wiring between device 4 and device 5.
Good answers include specific numbers and observations from your actual robot inspection. For example:
-
“Found 16 devices total (12 motor controllers + Pigeon 2 + 3 CANcoders). This matches our Constants.java.”
-
“All devices found. Two TalonFX controllers showed firmware update warnings — we should update them before competition.”
-
“CAN utilization is at 45%, well within the healthy range.”
-
“Based on my CAN bus map, the swerve module CANcoders are at the end of the chain. If they go missing, I’d check the CAN connection at the last motor controller before the CANcoders.”
Bonus: Save Your Documentation
Save your CAN device inventory and bus map somewhere your whole team can access:
- Team Google Drive or Notion
- Engineering notebook
- Printed copy taped inside the robot’s electronics board
Having this documentation at competition saves critical debugging time.
What’s Next?
You’ve inspected every CAN device on your robot and documented the bus layout. In Lesson 5.11: Swerve Drive Concepts, you’ll dive into how your team’s swerve drivetrain works — module states, field-relative control, odometry, kinematics, and the role of the gyro.