-
Notifications
You must be signed in to change notification settings - Fork 45
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bookworm/Pi5 Compatibility: Upgrade to latest boilerplate, port to gpiod #36
base: main
Are you sure you want to change the base?
Conversation
How is this going. Wondering if I should try this, or just use the RPI.GPIO 'shim'. |
As far as I'm aware the RPi.GPIO shim has the same limitations that are currently preventing any progress here- lack of pulse counting and PWM. Feel free to test but, uh, run your pumps dry! The biggest blocker right now is arbitrary PWM support on pins- I need to wait for the people writing/testing/approving the kernel module. I have a janky software solution that I could roll out, but I'm apprehensive to half bake anything involving water. |
By way of a progress report, I have now migrated Moisture to gpiod. It's not too bad an approach but does need a thread to babysit the edge detection, lest the event buffer completely fills up. I've opted to sleep for 1s (blocking on |
TODO
PWM
Since Grow assumes we can PWM any pin- because RPi.GPIO had a software kludge to let us do so - we're in a bit of a predicament porting this to Bookworm / gpiod. I've experimented with pure Python PWM and it works, but it's thoroughly irredeemably terrible. When dealing with pumps that involve water- I don't want to invite the risk of a software failure causing a flood.
There's a patch floating about for software PWM at the kernel level, so we should be switching to standard PWM interfaces (see: https://lore.kernel.org/linux-pwm/[email protected]/) with the hope that the Pi 5 will eventually get PIO PWM support on arbitrary pins.
Until the PWM issue is resolved, then Pi 5 support for Grow is blocked.
UPDATE: GPIO PWM is now merged into mainline Linux, Kernel 6.11, we're now waiting for it to make it into a Raspberry Pi OS release: torvalds/linux@7f61257
Testing
If you're a Bookworm / Pi 5 user running into virtual environment issues, you can try this library like so:
The
./install.sh
script will create apimoroni
virtual environment that's shared between our products. (or use your existing venv if you've already activated one.)For the reasons behind these changes and other information, see: