Warning

The CANdle Phoenix 5 API is deprecated and will be removed in 2027. Additionally, Talon FX, CANcoder, and Pigeon 2 now require Phoenix 6. Users are encouraged to migrate to the Phoenix 6 library for deprecated devices.

# Primer: What is Phoenix v5 Software

Phoenix is a package that targets LabVIEW, C++, and Java for the FRC Robotics Controller platform, i.e. the NI roboRIO robot controller.

It includes the Application Programming Interface (API), which are the functions you call to manipulate Phoenix devices on the CAN bus.

Note

PCM and PDP API are built into the core WPI distribution.

The C++ and Java APIs are very similar, typically only differing on the function name case (configAllSettings in Java versus ConfigAllSettings in C++). Because Java is more widely used in FRC than C++, this document will reference the Java routine names. C++ users should take note that the leading character of every function is UPPERCASE in C++.

Additionally, Phoenix shared libraries are also targeted for C++ on Linux (amd64, armhf, aarch64) and typically available on our maven repository. The example support libraries use socket-can for CANBus access, however custom drivers can be provided by the end user for alternative CANBus solutions (NVIDIA TX2 native CAN bus for example).

Phoenix also includes a NETMF (C#) class library for the non-FRC HERO Robot Controller. This can replace the roboRIO in use cases that don’t require the full features of the FRC control system, and are not in use during competition.

Note

With Phoenix framework, teams can control/leverage Phoenix devices outside of the roboRIO (e.g. Rasp-Pi or Jetson TX2), and use the roboRIO/DriverStation to safely enable/disable the actuators.

Note

Leveraging CTRE CAN devices from third-party CAN hardware was officially made FRC legal for the 2019 season.

There are tons of examples in all languages at CTRE’s GitHub account:

- https://github.com/CrossTheRoadElec/Phoenix-Examples-Languages

- https://github.com/CrossTheRoadElec/Phoenix-Examples-LabVIEW

Entire GitHub organization: https://github.com/CrossTheRoadElec/

Phoenix-Examples-Languages and Phoenix-Examples-LabVIEW are specifically tested on the FRC RoboRIO control system.

Phoenix-Linux-SocketCAN-Example demonstrates control of Talons from a Raspberry Pi. https://github.com/CrossTheRoadElec/Phoenix-Linux-SocketCAN-Example

## What is Phoenix Tuner?

Phoenix-Tuner v1 is the graphical interface that allows for configuration of Phoenix CAN bus devices.

Warning

Phoenix Tuner v1 is no longer maintained. There is a modernized version called Tuner X that is available for Windows, Android, macOS, and iOS devices (works with Phoenix 5 and Phoenix 6).

It provides a variety of functionality to support all Phoenix CAN Bus devices. The feature set includes:

- Update device firmware (including PDP/PCM)

- Change CAN IDs

- Configure direction and offsets

- Self-test Snapshot devices

- Change configuration settings

- Factory default configuration settings

- Test motors

- Check plots

- Temperature Calibrate Pigeon-IMU

- Confirm proper CAN bus wiring without writing any software.

Now you can drive your motors and collect data without writing any software.

Configuration values can be checked, modified, and defaulted with the new config view. Config values can also be imported/exported as an easy-to-follow JSON formatted file.

The following sections of documentation will cover how to use Phoenix Tuner and the other components of Phoenix.

Tip

Have a feature request? Send to us at support@ctr-electronics.com or report it on GitHub.