Skip to main content

Common questions

Pioreactor operation

Why does the onboard blue LED keep flashing?

There may be a problem. You can diagnose the problem by counting the number of flashes observed.

What does the onboard button do?

The button on the Pioreactor HAT sends a signal to the web UI to display a "hello" message. This is useful to know which Pioreactor in a cluster you are interacting with.

Optical density and LEDs

How does optical density work on the Pioreactor?

The Pioreactor uses the concept of scattering to measure optical density (other systems, like spectrophotometers, use attenuation). The system will shine infrared light into the culture, and measure the amount of light that is scattered off cells. The scattering has a good linear range (see below for more), and higher saturation point than attenuation for cultures of 20ml volume. If you have an instrument that measures OD600 or some other measurement of optical density, and you wish to calibrate to that, the Pioreactor has a routine to perform a calibration and record in the instruments units. See docs here.

What are the units of Pioreactor's optical density

The uncalibrated optical densities reported the UI and recorded in the database are have an arbitrary unit, and are per Pioreactor (so they can't be compared to each other). However, the normalized optical density, generated after starting the activity Growth rate in the UI, is comparable, which is why we suggest using it for inferences (especially if you haven't calibrated to some OD600 machine). Read more about our optical density measurements here.

Why does the intensity for LED A turn on & off during an experiment?

You may have noticed that the LED labelled A turns on & off every 5 seconds or so. This is (normally) the channel for the infrared (IR) LED, which is used in the optical density measurements. Since we only take reading every 5 seconds (normally, this can be changed), we don't need the IR LED on all the time. The Pioreactor will only turn on LED when needed. This preserves the strength of the LED over longer periods of time. For more advanced use cases, it also allows other optical measurements to take place without the IR LED interfering with them.

Why does my optical density flatten, or even decrease? What is a saturation point?

For some experiments, especially when using a scatter angle of 135°, you may notice that the optical density starts to flatten, and even decrease, when you know the culture should still be growing. This is not a property of the culture, but occurs because the culture is getting too dense, and light is now being interrupted before it reaches the photodiodes. Prior to this point, called the saturation point, the relationship between culture density and optical density is nearly linear. But after this point, there is a flattening, even negative, relationship between culture density and optical density. For all analysis, we recommend only studying when the culture is in the linear regime. You can mitigate the problem by choosing a smaller scatter angle (like 90° or 45°), diluting the culture using an automation like the turbidostat, or using a lower concentration of nutrient(s) in the media. Read more about Pioreactor's optical system here.

What does the effect of the scatter angle have on optical density?

The scatter angle is the angle between the IR LED and a photodiode. This angle can be 45°, 90°, or 135° (although 180° is possible, we don't consider it here). What is there to consider when choosing an angle. In general, the trend is shorter angles => less sensitive at low densities, but higher saturation point. By default, we suggest 45° as a good trade off between sensitivity and saturation. You can mix angles, and the Pioreactor's internal algorithm will still combine them into a single growth rate. Read more about Pioreactor's optical system here.

Can I use my own 5mm LEDs and photodiodes for optical density?

Of course! The only two requirements are that the spectrum of the LED overlaps with the spectrum of the photodiode, and that the LED light won't be absorbed by media/culture, nor damage the media/culture. Thus, the often-used 600nm light source works in the Pioreactor. None of our internal algorithms or analytics are dependent on the wavelength of light chosen.

When you are using additional LEDs outside of the optical density LED & photodiode pair, you may worry that your additional LEDs will interfere with the optical density measurement. This won't happen, as we turn off all non-optical density LEDs before taking an optical density measurement.

Heating and Temperature control

Why does the Pioreactor only provide a temperature reading every 4 minutes?

We made a design choice early on to make preparation as error-free as possible. This involved thinking about sensors being in situ (in place), versus the sensors being on the outside of the vial. The temperature sensor in the Pioreactor is outside the vial, which means less chance of contamination, but there's a tradeoff (as you could guess): we have to rely on an estimation algorithm that requires 4 minutes to gather data on. We think this is a fair trade-off, as high frequency temperature readings are not that important in an experiment that lasts 12 hours or more.

Why does the Pioreactor's heating keep shutting off?

If you find that the Pioreactor's heating is shutting off, typically with an accompanying error and flashing blue light, then likely the temperature is becoming too high for safe handling. We restrict the onboard PCB's temperature to be no higher than 63℃. Temperature's higher than this can deform the plastic, and possibly cause burns. If the Pioreactor detects a temperature near or above this value, the software will shut off the heating, and possible the entire Raspberry Pi in extreme cases.

To avoid this occurring, we suggest not setting the target temperature too high - not more than 20℃ above ambient temperature. Also, reducing the Kd parameter in [temperature_automation.stable] section in the config.ini would help.

How does heating work on the Pioreactor?

The Pioreactor has an onboard PCB, called the heating PCB, that sits below the glass vial. On the PCB are resistors that convert current from PWM outputs into heat. By varying the duty cycle of the PWM, we vary the amount of heat converted.

Mixing and stirring in the Pioreactor

How is mixing / stirring performed in the Pioreactor?

Stirring is performed with a 15mm stir bar inside the vial, controlled by a pair of magnets spinning below the vial. The rotation speed, RPM, of the stir bar can be controlled using the Pioreactor software. This stirring is also how aeration is done.

Can I use my own stir bar?

Of course! The maximum length of a stir bar is 20mm. Keep the height low as to not interfere with the optics. (The provided stir bar is 3mm high). Try using other stir bar shapes / designs!

The magnets rubs against the plastic screws above them, causing the stirring performance to be degraded / stop. How do I fix this?

Dis-attach the top faceplate. Under the faceplate, slightly unscrew each of the four metal screws. This will add more space between the magnets and the plastic screws.

How can I increase the strength of the magnetic force applied to the stirbar?

Try to reduce the distance between the stirring magnets and the stir bar by carefully raising the stirring fan a small amount. Going even further, you can remove the 4mm screws in the bottom of the vial holder (but find another way to secure the PCB), thereby be able to bring the magnets even closer.

How can I improve mixing and aeration?

If the standard mixing and aeration with the stir bar is not enough for your application, you can do a few things, (in increasing order of complication, not necessarily effectiveness):

  1. If the tubes in the cap are submerged during operation, this is reduce the transfer of air. Pull them up from the top of the cap to keep them out of the liquid.
  2. Increase the RPM of the stirring. This will increase the surface area exposed to the air. Be warned though: too high of an RPM will cause either a large enough vortex to interfere with the optical systems, or will causing the stir bar to fall out of sync.
  3. Add a baffle to the vial cap. A simple cylinder that rests into the liquid causes disturbance in the rotating liquid that both mixing and aeration are significantly improved. A tube can be removed from the cap, and a autoclavable rod can be inserted such that it enters the media, but won't interfere with the optics.
  4. Adding external aeration to your Pioreactor. In the simplest case, using an air pump.

Raspberry Pi Hardware

What Raspberry Pi hardware can I use? I see Raspberry Pi 1, 2, 3, 4, A, B, +, Zero - it's confusing!

We've designed the hardware and software to be compatible with any Raspberry Pi that has onboard Wifi and a 40 pin header. That includes (at the time of writing):

  • Raspberry Pi 3
  • Raspberry Pi 3 B+
  • Raspberry Pi 3 Model A+
  • Raspberry Pi 4 B
  • Raspberry Pi Zero W (with header) ¹
  • Raspberry Pi Zero 2 W
  • Raspberry Pi 400

Although you can use any above, we like the Raspberry Pi 3 Model A+, and Raspberry Pi Zero 2 W because of their low power consumption, slim build, and low price. Both have the necessary CPU power and memory for the Pioreactor workload, and are generally the cheapest on the list above (but see note on Zero W below).

¹ Raspberry Pi Zero W is on the list above, and is very low cost compared to the others. They can absolutely be used for Pioreactors as workers - we don't recommend them to be your leader (note sure what these terms mean? Here's an introduction to leader and workers). As workers, Raspberry Pi Zero W perform just fine, but will respond slower to commands. Note that this does not include the Raspberry Pi Zero 2 W model, which is fine for all jobs.

² The RPi 400 has its 40 pin header exposed in a different orientation, so your Pioreactor won't be able to sit on top like for other RPi versions.

Do I need any cooling for the Raspberry Pi?

Nope, you shouldn't, unless you are connecting an external monitor. However, extra heat sinks are never a bad idea!

Could a Raspberry Pi-compatible board work, like Rock Pi 4?

Probably. We haven't tested them, but so long as i) the GPIO pins are identical, and ii) Raspberry Pi OS can be installed, it should work.

Why are the Raspberry Pi LEDs/USB/Ethernet/etc. turned off?

We turn off the "activity" LED (usually the green one) to save some power for the Pioreactor's peripherals. We do the same for USB and Ethernet. You can turn these back on by editing the /boot/config.txt file on the RPi.

What is the username/password for the Raspberry Pi?

When setting up your Raspberry Pi with the Pioreactor software, you would have chosen a password. Try the recommended username: pioreactor, and password: raspberry.


Why does the Media card in the UI not update when I run a dosing command?

The Media card will only update when an Dosing Automation is active (even the Silent automation). Why is it done this way? Often, you don't want volumes to be recorded there: during cleaning, during testing, etc. Often you only want volumes associated with the experiment to be there.


All dosing events ares recorded to the database however, and with a record of when the event occurred, and source of action. This data is available in the "Export data" web page, under Dosing event log.

Data storage, access and recovery

💡 For any important project, we suggest manually exporting or backing up critical data multiple different places. This doesn't just apply to using the Pioreactor, but is good advice in general.

Where are logs stored?

For the logs that you see in the Log Table in the Experiment Overview page, these can be download on the Download experiment data page in the Pioreactor web interface. Other logs are also available, including dosing event and algorithm change-logs.

More granular logs per Pioreactor are available in /var/log/pioreactor.log on the Raspberry Pis.

How do I access raw experiment data?

  1. The Download experiment data page in the Pioreactor web interface provides CSV exports of common datasets from a pre-selected experiment.
  2. All data eventually lands in a SQLite3 database on the leader Pioreactor, by default located in /home/pioreactor/.pioreactor/storage/pioreactor.sqlite. This can be download using a tool like scp.
  3. To access the SQLite3 database from the command line, try pio db.

My microSD card is corrupted - what can I do?

Unfortunately, the microSD card becoming corrupted or damaged is an infrequent but possible risk with using Raspberry Pis.

  • If the microSD card was inside a non-leader Pioreactor, it's best to try to reformat the microSD card and start fresh (i.e. reinstall the Pioreactor software and reintroduce it to the cluster). This is usually okay as no critical data is stored locally in workers, only log files and hardware calibrations will be lost.

  • If the microSD was inside the leader Raspberry Pi, this is a bigger problem. Likely any running experiment will have to be restarted. Fortunately, if you have more than one Pioreactor in your cluster, then the leader's SQLite database has been periodically backing itself up to other Pioreactors in the cluster every few days. Using the command line, check other Pioreactors' /home/pioreactor/.pioreactor/storage directory for the latest backup named pioreactor.sqlite.backup (should be from within the past few days hours). You can use this database to restart a new leader.

Pioreactor UI

I'm not able to access http://pioreactor.local

  • In your browser's address bar, add the http:// infront of the url, like so: http://pioreactor.local.
  • The UI is hosted on http, not https. Check if you are accessing http ://pioreactor.local, and not https ://pioreactor.local.
  • Try accessing using the url http://<the permanent name of your Pioreactor aka hostname>.local
  • If you know your Raspberry Pi's IP, try http://<IP address of your Raspberry Pi>
  • When pressing the button on the HAT, does the blue LED show up? If not, installation may have failed. Try installing the image again, and double check the settings.
  • In your Raspberry Pi Imager settings, confirm that you clicked "Set username and password", and used the username pioreactor. If not, try reinstalling the image.
  • Are you on an older Windows machine? You may need to install a DNS service, but also see workarounds here.

Also, see question below.

When I click an action in the UI, I don't see any response

  • If you also had trouble accessing the UI (see question above), in your configuration, change the leader_address field to whatever worked above, an IP for example.
  • Another possibility is that the experiment has changed - try refreshing the page.


Can I use Ethernet cable connections instead of WIFI connections?

Yes, so long as the Raspberry Pi's are connected to the same network and discoverable, this should work. Even mixing Ethernet and WIFI is fine.

I'm using a local access point, but I'd like to install plugins, update software, etc.

To install a plugin

On a computer that is connected to the internet, download the .whl file from the plugins webpage on PyPI. Then, connect that computer to your Pioreactor's local access point's network. To each Pioreactor you wish to install the plugin on, transfer the .whl file to the Pioreactor (using SFTP or FTP). Then, run pio install-plugin <plugin-name> <path/to/local/.whl>

To upgrade the core Pioreactor software

On a computer that is connected to the internet, download the .whl file from the under "Assets" from the latest release on Github. Then, connect that computer to your Pioreactor's local access point's network. To each Pioreactor you wish to update software on, transfer the .whl file to the Pioreactor (using SFTP or FTP). Then, run pio update --app --source <path/to/local/.whl>