Optical density, calibrations, troubleshooting

Hello everyone.

I am having problems using the pioreactor for experiments after doing the calibration for the OD600 measurements. So the calibration went fine ( i used puTTy to access the Rasberry pi and everything worked out well with a nice calibration curve in the end from OD600 = 0.1 to OD600 = 1.0) but when i start my new experiment and I want to start the OD measurements it doesn’t work, it doesn’t even give me an error response. It just tries to connect and fails so i cannot run my experiments.

Do you have any idea how to solve this problem?
this is what is says in the config.ini file:

#use the most recent calibration file, if available

I called my calibration 1.
If i switch it back to use_calibration=0 it works out but i would like to use my calibration file.

Hi @LeoKleym! Welcome to the forum!

Let’s see. Does OD Reading work if use_calibration=0? Or does OD Reading just never start, regardless?

One thing to try: use PuTTY to access the specific Raspberry Pi again, and run the following:

pio run od_reading

This should provide more information about if it fails, and how it fails.

Hey @CamDavidsonPilon !

Thanks for the fast reply. It does work if i am not using my calibration file, so if i use calibration=0.

Any ideas why it won’t use my calibration file?

It could be a schema-mismatch. We did change the schema in the last update (but this should have been automatically fixed for you). Can you try the suggestion of setting use_calibration=1 in the config and running pio run od_reading on the command line?

i changed the line in the confic to use_calibration=1 and then i run the
pio run od_reading the following comes up:

pioreactor@pioreactor1:~ $ sudo pio run od_reading
2023-07-12T08:49:51+0100 DEBUG [ir_led_ref] Using PD channel 1 as IR LED reference.
2023-07-12T08:49:52+0100 DEBUG [calibration_transformer] Using calibration calibration1 for channel 2
2023-07-12T08:49:52+0100 DEBUG [od_reading] Init.
2023-07-12T08:49:52+0100 DEBUG [od_reading] Starting od_reading with PD channels {‘2’: ‘90’}, with IR LED intensity 50.0% from channel A.
2023-07-12T08:49:53+0100 DEBUG [adc_reader] Using ADC class Pico_ADC.
2023-07-12T08:49:53+0100 DEBUG [adc_reader] ADC ready to read from PD channels 2, 1, with gain 1.
2023-07-12T08:49:54+0100 DEBUG [adc_reader] AC hz estimate: 50.0
2023-07-12T08:49:54+0100 DEBUG [adc_reader] ADC offsets: {‘2’: 1252, ‘1’: 1247}, and in voltage: {‘2’: 0.06305860805860806, ‘1’: 0.06280677655677655}
2023-07-12T08:49:54+0100 INFO [od_reading] Ready.
2023-07-12T08:49:54+0100 DEBUG [od_reading] od_reading is blocking until disconnected.

So here it seems like its working! I will run another experiment tomorrow and check if it works…But i can still not turn it on over the surface UI, any ideas why it works via puTTY but not over the UI? Everything else is working out fine.

thanks a lot for your help!

Oh, that’s unexpected. Do other jobs start correctly from the UI, like stirring for example? (I guess the answer is yes)

Let me investigate this some more. For now, to make sure the job doesn’t disconnect if putty disconnects, you can use something like:

pio run od_reading >/dev/null 2>&1 & disown

One thing that would help me to debug is the following. Have use_calbration=1, and attempt to start the OD job from the UI. Probably it will not start.

Next, use Putty to access the Raspberry Pi, and type:

pio logs

This is a stream of recent logs. I am wondering if you see a line like:

 [monitor] DEBUG Running `nohup pio run od_reading >/dev/null 2>&1 &` from Monitor job.

Using this command
pio run od_reading >/dev/null 2>&1 & disown
helped for the OD reading not to disconnect when puTTY disconnects.
If i want to start any other job from the UI it works, just the OD reading won’t start. Stopping it over the UI works though…

in the pio logs follwing lina came up:

2023-07-13T10:40:54+0100 [monitor] DEBUG Running nohup pio run od_reading >/dev /null 2>&1 & from Monitor job.

Weird! I’m a bit stumped.

Here’s how it should work:

  1. You click the Start button in the UI. This sends a request to the web UI’s backend
  2. The backend sends a message to the Pioreactor’s monitor job. This job will perform essentially a “headless” version of you writing pio run od_reading >/dev/null 2>&1 & disown on the command line. This is the log output you observed.
  3. The job starts, and the UI flips to “Stop” button.

So for some reason, the job is failing to start at step 3.

Can you post your Pioreactor’s version output?

pio version -v


here it is:

Pioreactor software: 23.6.27
Pioreactor HAT: 1.2
Pioreactor firmware: 0.2
HAT serial number: ec265e18-ea3c-4a58-a3a9-01b6c024c8bb
Operating system: Linux-6.1.21-v7±armv7l-with-glibc2.31
Raspberry Pi: Raspberry Pi 3 Model A Plus Rev 1.0
Image version: ad3ac2e012668dba2280c00cdf288b7ac66cbfca
Pioreactor UI: 23.6.26

1 Like

So I don’t really have a solution yet, but I added some error handling around this workflow to the develop branch. More error logs (if any) should appear in pio logs when you try to start the job from the UI.

To upgrade to try this branch, on the Pioreactor:

pio update app -b develop

And then, if you want to switch back to the latest stable version:

pio update app -v 23.6.27