Skip to content
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

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

Gadgetoid
Copy link
Member

@Gadgetoid Gadgetoid commented Nov 17, 2023

TODO

  • - Can we make Python-based soft PWM work for pumps and piezos, or do we need to do something else?
  • - Update tests

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:

git clone https://github.com/pimoroni/grow-python -b gpiod
cd grow-python
./install.sh --unstable

The ./install.sh script will create a pimoroni 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:

@Gadgetoid Gadgetoid mentioned this pull request Jan 12, 2024
@Gadgetoid Gadgetoid changed the title Port to gpiod/gpiodevice. Bookworm/Pi5 Compatibility: Upgrade to latest boilerplate, port to gpiod Feb 15, 2024
@bsimmo
Copy link

bsimmo commented Apr 7, 2024

How is this going.

Wondering if I should try this, or just use the RPI.GPIO 'shim'.

@Gadgetoid
Copy link
Member Author

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants