CCR Calibration
This article is a refresher for certified CCR divers. This does not replace manufacturer recommendations, formal training, or time with an instructor. If you’re confused about any of these aspects, contact your instructor and schedule a refresher. This article is specific to the O2tima CM unit. Other units are different.
When you dive a rebreather, you rely on accurate oxygen readings. Your scrubber removes carbon dioxide, and the solenoid adds oxygen based on what the computer thinks is happening in the loop. But the computer only knows what your oxygen sensors tell it—and that is exactly why calibration is so important.
What is calibra
tion
To understand calibration, we must first understand oxygen sensors and our CCR electronics. We’ll keep it simple here. In the presence of oxygen, our galvanic cell emits a small voltage. This is measured by our electronics system and displayed as mV. As the oxygen level rises, there is an expected linear increase in the voltage produced. Specifically, when the Partial Pressure of Oxygen (PO2) increases, more voltage is expected. We see these voltages on our display. Cells are unique individuals, and they change over time. We may have 1 cell that has a voltage of 10.2mV in air and another that has 10.5mV in air. It’s ok for them to be different. However, we need a way to normalize that difference since those two different voltages represent the same amount of oxygen. That’s the point of calibration. When we calibrate, we’re telling the controller “XmV for this cell=XPO2”. This is a baseline. The controller then knows that a higher mV reading correlates to a higher PO2. The computer assumes this relationship to be linear. If we double the mV, the displayed Po2 will be doubled.
In the O2ptima CM, the controller is not the Petrel or the NERD. It’s a common misnomer to call the NERD/petrel a controller when it’s more of an interface. (True, the inputs the Petrel are controlling the controller – which is why I find it pedantic to correct myself or others when they call the Petrel a “controller”). The battery pack, which I like to call the nunchuck, is where the calibration occurs and is stored. We could, although it’d be odd, calibrate with a petrel and then swap to a different petrel for the dive. That won’t make a difference. We could also swap our green and blue cables and calibrate the HUD side with the petrel and the petrel side with the HUD. Other than an exercise in conceptual understanding, this would be very weird.
How to calibrate
- Have an analyzed and labeled cylinder of O2
- Connect calibration caps, HUD, and Petrel
- Turn on electronics, record mVs in air
- Let oxygen flow slowly into the scrubber
- Select calibrate on the Petrel, go to MENU, and column 2 on the HUD. Now both electronics are prepped for calibration.
- Turn the oxygen cylinder off.
- Press Calibrate on the Petrel and HUD.
- Record mVs in oxygen.
Number 6 is important to expand on. Since cells read PO2, if we flow enough O2 into the scrubber, we can overpressurize, giving a high reading and improperly calibrating the system.
The basic idea of calibration is:
- Cells are exposed to oxygen, and mV readings are steady.
- Total pressure is 1 ATM.
- Calibrate electronics.
How to do a linearity test

When you calibrate your rebreather, you’re setting the baseline for how your oxygen sensors interpret known oxygen partial pressures (PO₂). A linearity check is a way to confirm that your sensors respond proportionally across their working range
To do a linearity check, you first take a millivolt reading in ambient air, which is a known gas at a PO₂ of about 0.21. Next, you increase the PO₂ to around 0.98 using an analyzed cylinder of gas. This is often done by flushing the loop with oxygen until your display shows the target PO₂. You then record the mV reading at 0.98.
Using your mV reading from air, you can calculate what the mV should be at 0.98 if the cell’s output is perfectly linear. The math is straightforward:

For example, if your sensor reads 12 mV in air:

If your actual reading at 0.98 is 54 mV, the difference from the expected value is:

That’s within a reasonable range. While you don’t expect perfect 100% linearity, a difference of more than about 5–10% should raise concerns about that sensor’s reliability.
You should perform a linearity check on all your cells routinely, especially if you notice drift or inconsistency during dives. This is a simple, quick way to catch sensors that may still calibrate “correctly” at one PO₂ but behave unpredictably elsewhere in their range.
The manufacturer’s checklist has a space for recording mVs during the unit build. One of the purposes of that checklist is to give you the data needed to perform a linearity check. Linearity checks aren’t about lab-grade accuracy. If your oxygen sensors read incorrectly at higher PO₂ values, you could be unknowingly breathing a higher or lower oxygen level than planned. That can throw off your decompression schedule and even push you toward oxygen toxicity risk. By confirming that your cells respond predictably across the working range, you’re making sure your bailout planning, setpoint control, and deco stops are based on reality, not faulty, numbers.
How to check mVs on cell #4

Cell #4, aka 3H, is not displayed on the Petrel, and mV readings are not seen on the HUD To check the mV on the 3H, just swap connectors so the Petrel is plugged into the HUD battery pack. The petrel is now reading cell 3H in the #3 position.
Problems with calibration
If we do not calibrate our controller and we go diving for a week or even a month, the Petrel will still give us PO2 readings. We cannot tell if the PO2 readings it is giving us are correct. Further, if we take a cylinder of assumed but not analyzed oxygen and calibrate with it, our baseline could be incorrect. While our controller would be giving us readings throughout the dive, we have no clue if they’re actually what we’re breathing.
The first rule of CCR diving is “Know your PO2”. If we do not calibrate the controller in our rebreather, we can not follow that rule.
What if you lose your calibration caps?
You can calibrate by doing a field calibration.
- Pull a negative on the loop. Close the DSV.
- Fill the unit with O2 using the MAV until the OPV hisses.
- Pull a negative on the loop. Close the DSV.
- Fill the unit with O2 using the MAV until the OPV hisses.
- Burp the DSV to deflate the unit to atmospheric pressure (so the unit isn’t overpressurized).
- Calibrate the electronics.
The 3 flush calibration wastes more O2 but still provides an effective calibration.
Why oxygen and why 0.98?
You can read more about this here: https://shearwater.com/blogs/community/why-do-you-calibrate-a-ccr-with-pure-oxygen
The TLDR is
- Higher mVs give us less margin for error in signal-to-noise ratio.
- 0.98 is to account for humidity in the loop.
Can we calibrate with a different cylinder than you’re diving?
Calibration needs to happen with an analyzed and labeled oxygen cylinder. A 40, the unit’s 13, an 80 – it doesn’t matter. We’re calibrating the electronics to a known gas of oxygen. It has nothing to do with the gas we’re taking on the dive. It is a common and bizarre misconception that you are calibrating to the gas you’re diving with. That’s not the case.
How often do you need to calibrate?
You should calibrate as part of every build. Historically, it was said that you should not calibrate routinely because you’re unable to see the drift and changes of your cells over time. Cells degrade over time. That is expected. The entire point of routine calibrations is to account for this degradation. We track degradation by using build checklists, recording mVs, and doing linearity checks. We should also do cell validations and current limit checks underwater. If we do not calibrate and let our cells produce lower and lower mVs (to watch them degrade), we’re going to have false low PO2 readings during our dive, misrepresenting the actual loop PO2.
Can I skip calibration if po2 is reading .21 in air.
Absolutely not. The accuracy of the reading in air does not provide positive confirmation that the unit is properly calibrated. This doesn’t account for linearity problems.