Reefpi Update (Raspberry Pi OS (Trixie)

epicfatigue

New member
Hey guys đź‘‹

Over the last few months I’ve been quietly working on getting reef-pi running properly on the latest Raspberry Pi hardware and Raspberry Pi OS (Trixie).

What started as “just a port” turned into fixing a bunch of long-standing annoyances and adding some instrumentation features I’ve wanted for a while.

What’s in it so far
Raspberry Pi 5
Raspberry Pi OS (Trixie) compatibility
Multi-repo local build setup (reef-pi + drivers + hal + rpi)

New Drivers & Hardware Support

TDS Driver

Supports up to 4 TDS modules via ADS1115
Designed for smarter RODI system control

Salinity Driver (Robo-Tank isolated conductivity circuit)

Improved temperature compensation modeling
Improved calibration handling
Long-term drift tracking experiments

GPIO Expander Driver (PCF8575)

Adds 16 additional I/O per module
Up to 8 modules supported
Up to 128 additional I/O available

Other Improvements
Fixed calibration issues
General backend clean-up
Fixes for some long-standing quirks that have annoyed me for years

Why the Salinity Work Matters

This is where it gets interesting.

The system can continuously monitor salinity and automatically switch your ATO between fresh RODI and saltwater depending on drift.

Instead of blindly topping off with freshwater, the controller can actively correct salinity in either direction — opening the door to much tighter control.

The TDS driver is aimed at making RODI systems smarter and more efficient. That part is still evolving.

⚠️ If You Want to Test

Please run this on a clean SD card, not your production controller.

That way, if anything doesn’t behave, you can simply power down and reinsert your original SD card and you’re instantly back to normal.

Currently tested on:
Raspberry Pi 5
Raspberry Pi 4

This is a personal fork and totally experimental at this stage.

I’m not affiliated with the official reef-pi project — this is just something I’ve been building and refining.

If upstream ever wants to adopt parts of it, that would be great — but for now this is community testing territory.

Installation
Quick Install (Raspberry Pi OS – Debian Trixie)
On a fresh Raspberry Pi OS system, run:

Bash:
curl -fsSL https://raw.githubusercontent.com/epicfatigue/reef-pi/main/install.sh | sudo bash

What the Installer Does
The automated installer will:

Update the operating system
Install required dependencies (Go, Node.js, yarn, git, build tools)
Create a dedicated reefpi system user
⚠️ Reserved for the service — do not create or modify manually
Create required directories under /opt and /var/lib
Clone all required repositories (reef-pi, drivers, hal, rpi)
Wire local Go module replacements
Build the frontend (if enabled)
Compile and install the backend binary
Create and enable a systemd service
Start reef-pi automatically on boot

After installation, access reef-pi at:

Bash:
http://<your-pi-ip>:8080
 
Hey guys đź‘‹

Over the last few months I’ve been quietly working on getting reef-pi running properly on the latest Raspberry Pi hardware and Raspberry Pi OS (Trixie).

What started as “just a port” turned into fixing a bunch of long-standing annoyances and adding some instrumentation features I’ve wanted for a while.

What’s in it so far
Raspberry Pi 5
Raspberry Pi OS (Trixie) compatibility
Multi-repo local build setup (reef-pi + drivers + hal + rpi)

New Drivers & Hardware Support

TDS Driver

Supports up to 4 TDS modules via ADS1115
Designed for smarter RODI system control

Salinity Driver (Robo-Tank isolated conductivity circuit)

Improved temperature compensation modeling
Improved calibration handling
Long-term drift tracking experiments

GPIO Expander Driver (PCF8575)

Adds 16 additional I/O per module
Up to 8 modules supported
Up to 128 additional I/O available

Other Improvements
Fixed calibration issues
General backend clean-up
Fixes for some long-standing quirks that have annoyed me for years

Why the Salinity Work Matters

This is where it gets interesting.

The system can continuously monitor salinity and automatically switch your ATO between fresh RODI and saltwater depending on drift.

Instead of blindly topping off with freshwater, the controller can actively correct salinity in either direction — opening the door to much tighter control.

The TDS driver is aimed at making RODI systems smarter and more efficient. That part is still evolving.

⚠️ If You Want to Test

Please run this on a clean SD card, not your production controller.

That way, if anything doesn’t behave, you can simply power down and reinsert your original SD card and you’re instantly back to normal.

Currently tested on:
Raspberry Pi 5
Raspberry Pi 4

This is a personal fork and totally experimental at this stage.

I’m not affiliated with the official reef-pi project — this is just something I’ve been building and refining.

If upstream ever wants to adopt parts of it, that would be great — but for now this is community testing territory.

Installation
Quick Install (Raspberry Pi OS – Debian Trixie)
On a fresh Raspberry Pi OS system, run:

Bash:
curl -fsSL https://raw.githubusercontent.com/epicfatigue/reef-pi/main/install.sh | sudo bash

What the Installer Does
The automated installer will:

Update the operating system
Install required dependencies (Go, Node.js, yarn, git, build tools)
Create a dedicated reefpi system user
⚠️ Reserved for the service — do not create or modify manually
Create required directories under /opt and /var/lib
Clone all required repositories (reef-pi, drivers, hal, rpi)
Wire local Go module replacements
Build the frontend (if enabled)
Compile and install the backend binary
Create and enable a systemd service
Start reef-pi automatically on boot

After installation, access reef-pi at:

Bash:
http://<your-pi-ip>:8080
Nice job @epicfatigue I really appreciate you adding the EC circuit.

I just ran a fresh install on Pi 3B+ Trixie 32-bit. Here's my results.

The install went perfect and reef-pi loaded but I noticed it said Errors(1). The error was no i2c enabled. I ran raspi-config to enable it and then installed i2ctools so i2cdetect -y 1 would run. After that it worked without a reboot.

Feb 27 15:14:43 Failed to initialize i2c. Error:eek:pen /dev/i2c-1: no such file or directory

Then I added a few ports for a power bar and it controls the GPIO's no issue.

Then I went to add the EC driver but an unrelated issue occurred. Of course I had to enable "Chemistry" tab, when I did this it said it saved but after a page refresh the tab never appeared and Chemistry was always unticked, same happened with Dosers, Lighting, etc. So I tried rebooting the Pi and then it took. So database did update correctly but UI needed a Pi reboot. After that EC went smooth.

Then I added the pH driver/connector with no issues.

Back to EC, there does seem to be an issue, I'm not receiving the raw value from the circuit, I'm expecting 20,000 us/cm as I'm using a 50ohm BNC however it's outputting 43604. I played with the numbers when you setup the driver but the change was small. It seems like you are running calculations on the circuit output.

The EC firmware has 3 modes, salt, fresh and RODI, these go together with the jumpers on the circuit PCB. This was done for better accuracy across the board. If you look in the mini app I sent you you'll notice when the user selects water type setting it sends an I2C command to the circuit so it gets updated. That's all you should need for the drivers option, user selects the water type which updates the circuit accordingly.

Anyways great job, a lot of people will be happy with this.
 
Hi.

@Rob F : was your raspberry connected with your controller?

@epicfatigue: I will try to install trixie x64 on a raspberry 3b+ connected to the first Rob controller.

I have a freshwater aquarium and my configuration is very simple: I just need 2 temperature sensors and 1 pH sensor working.

I will let you know.

Thank you all.
 
Last edited:
Hi.

@Rob F : was your raspberry connected with your controller?

@epicfatigue: I will try to install trixie x64 on a raspberry 3b+ connected to the first Rob controller.

I have a freshwater aquarium and my configuration is very simple: I just need 2 temperature sensors and 1 pH sensor working.

I will let you know.

Thank you all.
Hi @Freccialata yeah I had the Pi plugged in, I tested a power bar and it worked so I expect everything else will be ok.
 
Rob,
@Rob F : in your post, I see you added the pH sensor.
I added it too... but it seems not to be a pH sensor.
The system doesn' give a value and it's not possible calibrate it.
In reef-pi instead of "Chemistry" there is pH.
 
Rob,
@Rob F : in your post, I see you added the pH sensor.
I added it too... but it seems not to be a pH sensor.
The system doesn' give a value and it's not possible calibrate it.
In reef-pi instead of "Chemistry" there is pH.
It sounds like you didn't get this version installed, for me it definitely said "Chemistry" instead of "pH". Maybe try pressing CTRL + SHIFT + R to do a hard browser refresh so new files update in browser that might not be.
 
Maybe there is a misunderstanding:
- in reef-pi (bullseye version) I see the word"pH" in the "Configuration" menu. I can set and calibrate the sensor and the system gets a value;
- in reef-pi (Trixie version) I see "Chemistry", I'm abble to create and see the pH sensor, but it seems I can't set and calibrate it. The system doesn't get a value.
 
Nice job @epicfatigue I really appreciate you adding the EC circuit.

I just ran a fresh install on Pi 3B+ Trixie 32-bit. Here's my results.

The install went perfect and reef-pi loaded but I noticed it said Errors(1). The error was no i2c enabled. I ran raspi-config to enable it and then installed i2ctools so i2cdetect -y 1 would run. After that it worked without a reboot.

Feb 27 15:14:43 Failed to initialize i2c. Error:eek:pen /dev/i2c-1: no such file or directory

Then I added a few ports for a power bar and it controls the GPIO's no issue.

Then I went to add the EC driver but an unrelated issue occurred. Of course I had to enable "Chemistry" tab, when I did this it said it saved but after a page refresh the tab never appeared and Chemistry was always unticked, same happened with Dosers, Lighting, etc. So I tried rebooting the Pi and then it took. So database did update correctly but UI needed a Pi reboot. After that EC went smooth.

Then I added the pH driver/connector with no issues.

Back to EC, there does seem to be an issue, I'm not receiving the raw value from the circuit, I'm expecting 20,000 us/cm as I'm using a 50ohm BNC however it's outputting 43604. I played with the numbers when you setup the driver but the change was small. It seems like you are running calculations on the circuit output.

The EC firmware has 3 modes, salt, fresh and RODI, these go together with the jumpers on the circuit PCB. This was done for better accuracy across the board. If you look in the mini app I sent you you'll notice when the user selects water type setting it sends an I2C command to the circuit so it gets updated. That's all you should need for the drivers option, user selects the water type which updates the circuit accordingly.

Anyways great job, a lot of people will be happy with this.
Hey Mate wish i had of come here sooner i wasnt monitoring the forum, all communications has been in

IS it possible you could send me an email with some validation eg the resistor and the app again i didn't get it ?
Ill have a play and rewrite the driver.


Rob,
@Rob F : in your post, I see you added the pH sensor.
I added it too... but it seems not to be a pH sensor.
The system doesn' give a value and it's not possible calibrate it.
In reef-pi instead of "Chemistry" there is pH.
If you go to https://www.reef2reef.com/threads/reefpi-update-raspberry-pi-os-trixie-64bit.1142965/
there is information on how to calibrate. the process is very different now. Historically they just had a ph section and it didn't store calibration values correctly. Now it is called chemistry and it has PH probes, Salinity Probes TDS probes etc.

I have since rewritten the installer and permissions so it should be alot smoother. please remember when updating a driver in reefpi you must always reload. you can run a reboot to be sure.



It sounds like you didn't get this version installed, for me it definitely said "Chemistry" instead of "pH". Maybe try pressing CTRL + SHIFT + R to do a hard browser refresh so new files update in browser that might not be.

As Rob states here this is very important, if you have ran a version before or had a UI change chrome and other browsers do not update from their original pull, CTRL + SHIFT + R will force a refresh or run in incognito/private mode to confirm.

Maybe there is a misunderstanding:
- in reef-pi (bullseye version) I see the word"pH" in the "Configuration" menu. I can set and calibrate the sensor and the system gets a value;
- in reef-pi (Trixie version) I see "Chemistry", I'm abble to create and see the pH sensor, but it seems I can't set and calibrate it. The system doesn't get a value.
What Driver are you running ? please send some screen shots also make sure you are running the latest version was updated again 2 days ago.
 
I'm following your thread on reef2reef.
In the next weeks I will install the new version of your software and I will give you a feedback.
As Rob, I have a Raspberry pi 3B+.
It boots from a USB pen drive (no sd card).
I have the first version of Rob's controller.
To test your fork I always do a clean Trixie installation and a fresh installation of your software.
I use only temperature and pH sensors to check data and reef-pi sends values to Home Assistant.

Thank you very much for your work.
 
I hate to ask this question here, but I am completely new to the reefing hobby and want to start with what @epicfatigue has been creating. I would love to buy a pre-built robo-tank system, but it seems I need a Raspberry pi 5. I see that only the 4 is supported by Robo-tank so far. What is the best way to do this? I can create a post in another forum if this is the wrong place3.
 
I hate to ask this question here, but I am completely new to the reefing hobby and want to start with what @epicfatigue has been creating. I would love to buy a pre-built robo-tank system, but it seems I need a Raspberry pi 5. I see that only the 4 is supported by Robo-tank so far. What is the best way to do this? I can create a post in another forum if this is the wrong place3.
Hi @BadDadto6kids, you wouldn't need a Pi 5, the issue was the Pi 5 will only run the latest Bookworm/Trixie OS but reef-pi wasn't compatible with those OS versions. With this update it now works on Trixie allow users to use the Pi 5. This will still load on Pi3/4, I tested it on a Pi3. If you haven't seen @epicfatigue also has a thread on R2R forum, here's a link, it has more details about it.


With that said you can also still run the original reef-pi as long as you run the Bullseye OS on the Pi.
 
Hi @epicfatigue, am trying your build with rasp 3B+, all running nice it seems but I can't load file-analogue data as before (reef-pi on bullseye) through pH or now Chemistry. Get the following errors regardless what ID I put in:
chemistry tempcomp: pin=2 type=*file.analog does not implement TemperatureSetter
chemistry sub-system: Probe: Room T Reading: 0
even though there is data in the file which I am grasping via .py (dht adafruit,on Robo-tank dht_device = adafruit_dht.DHT22(board.D17, use_pulseio=False)
cat sensors/dht22/temperature.txt
21.4.
Any ideas? this is for room temp and humidity reading. thanks for your help.
 
Back
Top