URGENT: Pneumatics Hub not working

Hey everyone,

We are having some issues with our Pneumatic Hub, and we have load-in to our first comp tomorrow. It is plugged in and powered on, and when we look at the REV Hardware Client, the entire CAN bus is intact and all devices are showing up. However, when we connect to the driverstation, it says “CAN: Message not found” for Pneumatics Hub. When we expand the issue, it says that issue is at “edu.wpi.first.hal.REVPHJNI.getVersion(Native Method)”.

Also, when we unplug the compressor and wire it straight to a battery, it works. We have tried to put the PH into Compressor Test Mode but it didn’t work and updating the hub through recovery mode doesn’t work either. Our PH is currently running firmware 23.0.1

We have attached our code below.

package frc.robot.subsystems;
import com.revrobotics.AbsoluteEncoder;
import com.revrobotics.CANSparkMax;
import com.revrobotics.CANSparkMaxLowLevel.MotorType;
import edu.wpi.first.math.MathUtil;
import edu.wpi.first.math.controller.PIDController;
import edu.wpi.first.math.controller.SimpleMotorFeedforward;
import frc.robot.Constants;
import edu.wpi.first.wpilibj2.command.PIDSubsystem;
import edu.wpi.first.wpilibj2.command.SubsystemBase;
import edu.wpi.first.wpilibj.*;
import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;
import static edu.wpi.first.wpilibj.DoubleSolenoid.Value.*;
public class Hand extends PIDSubsystem {
static private final CANSparkMax m_handleftMotor = new CANSparkMax(Constants.HANDLEFT_MOTOR_SPARKMAX_ID,MotorType.kBrushless);
static private final CANSparkMax m_handrightMotor = new CANSparkMax(Constants.HANDRIGHT_MOTOR_SPARKMAX_ID,MotorType.kBrushless);
static private final CANSparkMax m_wristMotor = new CANSparkMax(Constants.WRIST_MOTOR, MotorType.kBrushless);
private Compressor phCompressor = new Compressor(10,PneumaticsModuleType.REVPH);
DoubleSolenoid doublePH = new DoubleSolenoid(PneumaticsModuleType.REVPH, 1, 2);
private final SimpleMotorFeedforward m_feedforward =new SimpleMotorFeedforward(Constants.ksVolts, Constants.kvVoltSecondsPerMeter);
//static private DigitalInput topLimitSwitch = new DigitalInput(0);
//static private DigitalInput bottomLimitSwitch = new DigitalInput(0);
public Hand(PIDController controller) {
public void solenoidToggle(){
public void handPull(double speed) {
m_handleftMotor.set(MathUtil.applyDeadband(speed, 0.04));
m_handrightMotor.set(MathUtil.applyDeadband(speed, 0.04));
// 1 = forward, -1 = backwards (probably i have no clue)
public void moveWrist(double speed){
m_wristMotor.set(MathUtil.applyDeadband(speed, 0.05));
public void viewPressure (){
SmartDashboard.putNumber(“Pressure”, phCompressor.getPressure());
protected void useOutput(double output, double setpoint) {
// TODO Auto-generated method stub
protected double getMeasurement() {
// TODO Auto-generated method stub
return 0;

How can we fix this?

We had a similar issue: We couldn’t get our compressor or solenoids to work, even after checking our connections and the code. We eventually swapped out the PH for the old PCM and it worked fine. It looks like a defect that a lot of teams are experiencing with the new PH, so probably expect a recall soon.

In the constructor of Solenoid, if you don’t pass in the port as the first parameter it assumes that port of the pneumatic hub is 1. We fixed it by adding the CANid of the pneumatics hub.


Unless you and others actually let Rev know, they won’t be able to document, investigate, and do something about it. Please make sure you let them know!


Please reach out to us at [email protected].

You can rule out most issues with the PH hardware by disconnecting it from the CAN bus, connecting over USB, and running the Hardware Client to test solenoids.

The compressor test mode will only work if the PH gets a valid enable signal, either from an enabled robot through the CAN bus, or from the Hardware Client over USB.

Remember, if the PH sees a roboRIO on the bus, it will lock to roboRIO control only, and must be fully power cycled (including USB power) to unlock.

What you describe sounds like a code, configuration, or wiring issue, but I still recommend going through the steps to rule things out systematically.

We haven’t seen reports of widespread PH issues, but as @Akash_Rastogi said, we can’t track potential issues if they aren’t reported to our support team.

1 Like

Did you set it to some other canid other than the default of I believe 1. If you did you have to create and object assigning that canid

We also had this happen with our PH. We tried updating to the newest firmware version because we thought maybe that was the issue, and the update actually failed. We had to put the PH into recovery mode, and after re-flashing the newest firmware version it worked just fine.

Hope this helps.

Thank you guys so much for your help! Unfortunately we had some other issues, so we weren’t able to test out those solutions, but we will check them out tomorrow and let you know! Appreciate it a lot

If you don’t get the issue solved by load in find a CSA as soon as possible

Besides all of the great suggestions already mentioned; check the status lights to make sure you don’t have sticky faults as this also causes the PH to not function properly.

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.