Bookworm/Pi5 Compatibility: Upgrade to latest boilerplate, port to gpiod #36
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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: