New Pioreactor release: 23.11.18

23.11.18

  • No more waiting around for growth-rate-calculating to get to “Ready” state
  • The “Label” step in the New Experiment flow is skipped if there is only 1 active Pioreactor in the cluster.
  • Silenced the “LED is locked” warning - now it’s a DEBUG level message.
  • Fixed bug that wasn’t passing lists correctly in TopicToParserToTable
  • Faster boot times.
  • Faster UI load times by gzip-ing assets.
  • Fixed a bug where a plugin would not be loaded if it’s name collided with a module in the stdlib. For example, putting test.py in .pioreactor/plugins would not be loaded, since when we tried to import test, it would load the stdlib’s test, not the local plugin. This has been fixed.
  • Simplify some UI elements.
  • Security improvements.
  • Reduce the default LED intensity in light_dark_cycle from 50% to 5%. This is more appropriate for sparse cultures.
  • Fixed a race condition when starting a hotspot with boot config.ini.
  • changed how is_HAT_present determine is the HAT is on the Pi. Previously, it used the i2c bus to check if the RP2040’s firmware was active. This would fail if the HAT was present, but the firmware or i2c wasn’t working. Now we check the EEPROM, which is a much more robust test.

How to update?

Update guides are available here

Looks like there was an error in this release when exporting data from the UI. This will be fixed in 23.11.29!

Quick fix: SSH into your leader, and enter:

mkdir /var/www/pioreactorui/static/exports

and try exporting again

Hello, with your recent update, you determine the existence of a HAT (Hardware Attached on Top) by checking the EEPROM. What data is written in the EEPROM, and how can I read and rewrite the data in the EEPROM?

The data we store in the EEPROM is pretty minimal:

  • product metadata, like version, name, company,
  • a GPIO dtoverlay, which helps the Pi boot with the pins in the correct state,
  • a unique serial number per HAT,

I believe that is all.

You can read the data in the filesystem (via a device-tree overlay), ex:

cat /proc/device-tree/hat/

will contain the product metadata. I don’t know how one can read the raw data from the EEPROM.


Writing data to the EEPROM is complicated, and we don’t advise it unless it’s a unique circumstance. However, you can see our pipeline here: GitHub - Pioreactor/hardware

Oh, when I run “cat /proc/device-tree/hat/”, I get some errors:

It tells me

“cat: /proc/device-tree/hat/: No such file or directory”

Then, I followed the steps from GitHub - Pioreactor/hardware, but it didn’t work because I couldn’t find a file named setup_HAT.py.

Setting up a new HAT

  1. Attach the HAT to the RPi.
  2. Run sudo bash setup_HAT.py
  3. Record the serial number/UUID
  4. After a sudo reboot, try pio version -v to confirm that HATs version.