Skip to main content

Running a self-test

To get the best results and confirm your Pioreactor is working as expected, it's advisable to run a self-test on your Pioreactor after setting it up initially. The self-test routine can catch common errors that may compromise your data collection.

How to run the self-test routine

Start on the Pioreactors page:

Insert a closed vial with water and stir bar into the Pioreactor, and click "Start". The Pioreactor will start running tests against expected output and report back to you success and failures of those tests.

Depending on the results of each test, you'll see success and failures:


The self-test routine is optional. Even with test failures, the Pioreactor is still operational (perhaps not where the test failed though!). We highly recommend a self-test at least after your initial setup.

Explanation of each test

Pioreactor HAT is detected checks if the Pioreactor HAT is correctly placed on top of the Raspberry Pi. A non-trivial failure here suggests a problem connection between the HAT and the RPi, a failure with the i2c channel, or a failure with the RP2040 chip on the HAT. If Heating PCB is detected also fails, try disconnecting the Heater PCB flat-flex cable from the HAT (unlock and pull straight out), and trying the test again.

Photodiodes are responsive to IR LED checks to ensure that the IR photodiode(s) have a linear relationship with the IR LED's output. The linear relationship is important. Common reasons why this test fails include:

  • Not enough light is entering the PD position (see below for resolutions)
  • The IR LED connected to the the wrong LED output. Make sure that the IR LED is identified correctly in the config.ini
  • A loose (or absent) connection to the Pioreactor HAT, either in the photodiode(s) or the IR LED.

The test will also report any valid IR LED & photodiode relationships in the dialog box. For example, IR ⇝ REF means that the REF photodiode has a linear relationship with the IR LED. Similarly, IR ⇝ 45 means the the photodiode in the 45° pocket has a linear relationship with the IR LED. The absence of a relationship here can tell you about what might be wrong.


  • Try running this test again.
  • Add a slight amount of turbid liquid (milk, culture, tea) to slightly increase the turbidity of the liquid inside. This increases the scatter of the liquid, and will help this test.

If it continues to fail, contact us.

No ambient IR light detected checks that the photodiodes are detecting a near-0 signal when the IR LED is completely off. This test may fail if a powerful IR signal is shining into or onto the Pioreactor's body (aka the Sun - don't put the Pioreactor in direct sunlight and avoid windows). Also make sure that the caps are on all the Pioreactor's LED pockets.

Reference photodiode is the correct magnitude checks, if using the reference photodiode (REF), that the REF signal is less than 0.256 volts when the IR LED is at the level specified in the config.ini's [od_config].[ir_led_intensity] section. If this test fails,

  • confirm that in your config.ini that REF is present for one of the channels under [od_config.photodiode_channel].
  • check the positioning of the REF photodiode (should be adjacent the the IR LED, snugly inserted, and with a cap).
  • If still failing, try reducing the value in [od_config].[ir_led_intensity].

Reference photodiode is in the correct position checks, if using the reference photodiode (REF), that the REF cable is inserted into the correct photodiode position (channel 1 or 2). The correct position is provided in the config.ini's [od_config.photodiode_channel] section. Note: this is a flakey test, and can fail even when positioned correctly. The test compares the variances of the two signals (from photodiode channels 1 and 2), and the lower variance one is usually the REF. If this test fails,

  • Is your vial in the Pioreactor? Does your vial have water and a stirbar in it?
  • Confirm that in your config.ini that REF is present for one of the channels under [od_config.photodiode_channel].

Photodiode measures near zero signal for clear water checks that a non turbid liquid, like water, doesn't produce a signal (since there is no scatter). This is a new test, and may fail even if everything is okay. Check the following: confirm that your vial contains water (or any very clear liquid) and that your signal photodiode is positioned in 45°, 90°, or 135°. This test won't work for 180°.

Heating PCB is detected checks that the heating PCB is correctly attached to the Pioreactor HAT. A non-trivial failure here suggests a problem when the i2c channel, a loose connection, or damage to the heating PCB. See notes for Pioreactor HAT is detected, too.

Heating is responsive checks for a linear relationship between the temperature sensor and the PWM heating system.

Stirring RPM is responsive checks for a linear relationship between PWM stirring system and the Hall sensor that measure's RPM. If this fails, check that the stirring power is connected correctly (and in the location specified in config.ini's [PWM] section). Another reason for failure is that the magnets are too far away from the base of the vial. See stirring troubleshooting.

AUX power supply is appropriate value checks that the AUX power voltage is between 0V and 18V. If no AUX power is connected to the Pioreactor, the default voltage is 5V.