** Description changed: A recent update to Ubuntu 24.04 seems to have broken gpiozero on Raspberry Pi 5. This seems to be due to a change in the gpiochip number (from 4 to 0) as outlined in the issue here: https://github.com/gpiozero/gpiozero/issues/1166 According to the above this seems to have been fixed in a post release for gpiozero v2.0.1. Can this fix be merged into this package? My issue is the similar to the one in the link above. I'm not sure which update/kernel version started this behavior, but I am currently on Ubuntu 24.04.5 LTS with kernel version Linux 6.8.0-1065-raspi. gpiozero version 2.0.1-0ubuntu1. gpiozero code previously worked fine prior to updating the system. + EDIT: I have implemented the environment variable workaround suggested in the linked issue as a temporary fix. Namely, adding + export GPIOZERO_PIN_FACTORY=lgpio + export RPI_LGPIO_CHIP=0 + to my .bashrc and adding my user to the dialout group. + This is my first bug report, so I apologize if I missed anything. - Example: + Example of issue: $ python3 Python 3.12.3 (main, Aug 31 2026, 10:18:26) [GCC 13.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import gpiozero >>> b = gpiozero.Button(3) /usr/lib/python3/dist-packages/gpiozero/devices.py:300: PinFactoryFallback: Falling back from lgpio: 'can not open gpiochip' - warnings.warn( + warnings.warn( /usr/lib/python3/dist-packages/gpiozero/devices.py:300: PinFactoryFallback: Falling back from rpigpio: No module named 'RPi' - warnings.warn( + warnings.warn( /usr/lib/python3/dist-packages/gpiozero/devices.py:300: PinFactoryFallback: Falling back from pigpio: No module named 'pigpio' - warnings.warn( + warnings.warn( /usr/lib/python3/dist-packages/gpiozero/devices.py:300: PinFactoryFallback: Falling back from native: unable to open /dev/gpiomem or /dev/mem; upgrade your kernel or run as root - warnings.warn( + warnings.warn( Traceback (most recent call last): - File "<stdin>", line 1, in <module> - File "/usr/lib/python3/dist-packages/gpiozero/devices.py", line 108, in __call__ - self = super().__call__(*args, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 412, in __init__ - super().__init__( - File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 417, in __init__ - super().__init__(*args, **kwargs) - File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 162, in __init__ - super().__init__( - File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 243, in __init__ - super().__init__(*args, **kwargs) - File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 79, in __init__ - super().__init__(pin, pin_factory=pin_factory) - File "/usr/lib/python3/dist-packages/gpiozero/devices.py", line 544, in __init__ - super().__init__(pin_factory=pin_factory) - File "/usr/lib/python3/dist-packages/gpiozero/devices.py", line 245, in __init__ - Device.ensure_pin_factory() - File "/usr/lib/python3/dist-packages/gpiozero/devices.py", line 270, in ensure_pin_factory - Device.pin_factory = Device._default_pin_factory() - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/lib/python3/dist-packages/gpiozero/devices.py", line 302, in _default_pin_factory - raise BadPinFactory('Unable to load any default pin factory!') + File "<stdin>", line 1, in <module> + File "/usr/lib/python3/dist-packages/gpiozero/devices.py", line 108, in __call__ + self = super().__call__(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 412, in __init__ + super().__init__( + File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 417, in __init__ + super().__init__(*args, **kwargs) + File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 162, in __init__ + super().__init__( + File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 243, in __init__ + super().__init__(*args, **kwargs) + File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 79, in __init__ + super().__init__(pin, pin_factory=pin_factory) + File "/usr/lib/python3/dist-packages/gpiozero/devices.py", line 544, in __init__ + super().__init__(pin_factory=pin_factory) + File "/usr/lib/python3/dist-packages/gpiozero/devices.py", line 245, in __init__ + Device.ensure_pin_factory() + File "/usr/lib/python3/dist-packages/gpiozero/devices.py", line 270, in ensure_pin_factory + Device.pin_factory = Device._default_pin_factory() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gpiozero/devices.py", line 302, in _default_pin_factory + raise BadPinFactory('Unable to load any default pin factory!') gpiozero.exc.BadPinFactory: Unable to load any default pin factory!
-- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2172270 Title: Kernel update breaks pin factory To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/gpiozero/+bug/2172270/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
