** Description changed: + [Impact] + + * The libgpiod2 library and gpiod tools shipped in Jammy don't work. + + * These tools are meant to replace the old sysfs interface and be + a better and more efficient way to manipulate GPIOs from userspace. + Unfortunately the latest release is still using v1 of the character + device kernel API which is not enabled in Ubuntu kernels. + + * This is Kent Gibsons reply on the linux-gpio mailing list: + + On Tue, Jul 12, 2022 at 09:48:45AM +0200, Alexandre Ghiti wrote: + > Hi, + > + > Ubuntu kernels do not enable GPIO_CDEV_V1 as it is deprecated, but the + > libgpiod package that we ship is still based on the latest version + > 1.6.3 which does not implement the API v2. So I'd like to update + > libgpiod, do you have any recommendations about what branch/sha1 I + > should use? Do you plan to make a release that implements the API v2? + > + + Firstly, libgpiod is Bart's library so he is the authority, but this + is my understanding... + + TLDR: You should keep GPIO_CDEV_V1 enabled. + + v1 is deprecated from a development perspective, so all new feature + development will occur on v2, and new applications should target v2. + Existing apps targetting v1, be that directly or via libgpiod v1.6.3, + will require GPIO_CDEV_V1 until they migrate to v2. + The mainline kernel will continue to support v1 while userspace + transitions. + + libgpiod v2 is in active development, and should reach its first release + shortly. + Note that it is NOT a plugin replacement for v1. It has a different API, + for similar reasons to why we had to switch in the kernel, so apps will + need to be actively migrated. + + I wouldn't suggest making any effort to package libgpiod v2 until Bart + makes an official release. + + Cheers, + Kent. + + [Test Plan] + + * Run gpioinfo on a machine with exposed GPIOs and check that it lists + the GPIOs and doesn't error with + + gpioinfo: error creating line iterator: Invalid argument + + [Where problems could occur] + + * There may be code and scripts that hasn't been tested with a working + libgpiod2/gpiod tools and uncover latent bugs. + + [Other Info] + + Original bug text: + The current versions of gpiod, libgpiod-dev and libgpiod2 (1.6.2-1) use version 1 of the GPIO character device API. However, they cannot work because the interface is disabled in the default kernel (tested with 5.13.19). After rebuilding the kernel with the option CONFIG_GPIO_CDEV_V1=y, the gpiod tools work as expected. Thanks to Marek Szuba, who reported the same bug for Gentoo (https://bugs.gentoo.org/807334), pointing me in the right direction. What I expect to happen: $ gpiodetect gpiochip0 [0-003c] (8 lines) $ gpioinfo gpiochip0 - 8 lines: line 0: unnamed unused output active-high line 1: unnamed unused output active-high line 2: unnamed unused output active-high line 3: unnamed unused output active-high line 4: unnamed unused output active-high line 5: unnamed unused output active-high line 6: unnamed unused input active-high line 7: unnamed unused input active-high $ gpioget gpiochip0 0 1 What actually happens: $ gpiodetect gpiochip0 [0-003c] (8 lines) $ gpioinfo gpioinfo: error creating line iterator: Invalid argument $ gpioget gpiochip0 0 gpioget: error reading GPIO values: Invalid argument $ cat /proc/version_signature Ubuntu 5.13.0-22.22-lowlatency 5.13.19 $ apt-cache policy libgpiod2 libgpiod2: Installed: 1.6.2-1 Candidate: 1.6.2-1 Version table: *** 1.6.2-1 500 500 http://de.archive.ubuntu.com/ubuntu impish/universe amd64 Packages 100 /var/lib/dpkg/status I am testing with the onboard PCA9554A on a Fujitsu D3641-S motherboard. $ lspci | grep -i smb 00:1f.4 SMBus: Intel Corporation Cannon Lake PCH SMBus Controller (rev 10) $ lspci -s 1f.4 -vvv 00:1f.4 SMBus: Intel Corporation Cannon Lake PCH SMBus Controller (rev 10) DeviceName: Onboard - Other Subsystem: Fujitsu Technology Solutions Cannon Lake PCH SMBus Controller Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Interrupt: pin A routed to IRQ 16 Region 0: Memory at 6013106000 (64-bit, non-prefetchable) [size=256] Region 4: I/O ports at efa0 [size=32] Kernel driver in use: i801_smbus Kernel modules: i2c_i801 --- ProblemType: Bug ApportVersion: 2.20.11-0ubuntu71 Architecture: amd64 AudioDevicesInUse: USER PID ACCESS COMMAND /dev/snd/controlC0: dkfz 4589 F.... pulseaudio /dev/snd/controlC1: dkfz 4589 F.... pulseaudio CasperMD5CheckResult: unknown CurrentDesktop: ubuntu:GNOME DistroRelease: Ubuntu 21.10 InstallationDate: Installed on 2018-11-12 (1122 days ago) InstallationMedia: Ubuntu 18.04.1 LTS "Bionic Beaver" - Release amd64 (20180725) Lsusb: Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 003: ID 7392:a812 Edimax Technology Co., Ltd Edimax AC600 USB Bus 001 Device 002: ID 256f:c650 3Dconnexion CadMouse Bus 001 Device 004: ID 046d:c336 Logitech, Inc. Gaming Keyboard G213 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub NonfreeKernelModules: nvidia_modeset nvidia Package: linux (not installed) ProcFB: 0 i915drmfb ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-5.13.19 root=UUID=75550043-7044-41bf-a01e-bf41b267f7d0 ro ProcVersionSignature: Ubuntu 5.13.0-22.22-lowlatency 5.13.19 RelatedPackageVersions: linux-restricted-modules-5.13.19 N/A linux-backports-modules-5.13.19 N/A linux-firmware 1.201.1 RfKill: 0: phy0: Wireless LAN Soft blocked: no Hard blocked: no Tags: impish Uname: Linux 5.13.19 x86_64 UpgradeStatus: Upgraded to impish on 2021-10-19 (49 days ago) UserGroups: sudo WifiSyslog: _MarkForUpload: True dmi.bios.date: 02/18/2021 dmi.bios.release: 1.12 dmi.bios.vendor: FUJITSU // American Megatrends Inc. dmi.bios.version: V5.0.0.13 R1.12.0 for D3641-S1x dmi.board.name: D3641-S1 dmi.board.vendor: FUJITSU dmi.board.version: S26361-D3641-S1 dmi.chassis.type: 3 dmi.chassis.vendor: FUJITSU dmi.modalias: dmi:bvnFUJITSU//AmericanMegatrendsInc.:bvrV5.0.0.13R1.12.0forD3641-S1x:bd02/18/2021:br1.12:svnFUJITSU:pn:pvr:rvnFUJITSU:rnD3641-S1:rvrS26361-D3641-S1:cvnFUJITSU:ct3:cvr:sku: dmi.product.family: ESPRIMO-FTS dmi.sys.vendor: FUJITSU
-- You received this bug notification because you are a member of Kernel Packages, which is subscribed to linux in Ubuntu. https://bugs.launchpad.net/bugs/1953613 Title: GPIO character device API not enabled in kernel Status in linux package in Ubuntu: Confirmed Bug description: [Impact] * The libgpiod2 library and gpiod tools shipped in Jammy don't work. * These tools are meant to replace the old sysfs interface and be a better and more efficient way to manipulate GPIOs from userspace. Unfortunately the latest release is still using v1 of the character device kernel API which is not enabled in Ubuntu kernels. * This is Kent Gibsons reply on the linux-gpio mailing list: On Tue, Jul 12, 2022 at 09:48:45AM +0200, Alexandre Ghiti wrote: > Hi, > > Ubuntu kernels do not enable GPIO_CDEV_V1 as it is deprecated, but the > libgpiod package that we ship is still based on the latest version > 1.6.3 which does not implement the API v2. So I'd like to update > libgpiod, do you have any recommendations about what branch/sha1 I > should use? Do you plan to make a release that implements the API v2? > Firstly, libgpiod is Bart's library so he is the authority, but this is my understanding... TLDR: You should keep GPIO_CDEV_V1 enabled. v1 is deprecated from a development perspective, so all new feature development will occur on v2, and new applications should target v2. Existing apps targetting v1, be that directly or via libgpiod v1.6.3, will require GPIO_CDEV_V1 until they migrate to v2. The mainline kernel will continue to support v1 while userspace transitions. libgpiod v2 is in active development, and should reach its first release shortly. Note that it is NOT a plugin replacement for v1. It has a different API, for similar reasons to why we had to switch in the kernel, so apps will need to be actively migrated. I wouldn't suggest making any effort to package libgpiod v2 until Bart makes an official release. Cheers, Kent. [Test Plan] * Run gpioinfo on a machine with exposed GPIOs and check that it lists the GPIOs and doesn't error with gpioinfo: error creating line iterator: Invalid argument [Where problems could occur] * There may be code and scripts that hasn't been tested with a working libgpiod2/gpiod tools and uncover latent bugs. [Other Info] Original bug text: The current versions of gpiod, libgpiod-dev and libgpiod2 (1.6.2-1) use version 1 of the GPIO character device API. However, they cannot work because the interface is disabled in the default kernel (tested with 5.13.19). After rebuilding the kernel with the option CONFIG_GPIO_CDEV_V1=y, the gpiod tools work as expected. Thanks to Marek Szuba, who reported the same bug for Gentoo (https://bugs.gentoo.org/807334), pointing me in the right direction. What I expect to happen: $ gpiodetect gpiochip0 [0-003c] (8 lines) $ gpioinfo gpiochip0 - 8 lines: line 0: unnamed unused output active-high line 1: unnamed unused output active-high line 2: unnamed unused output active-high line 3: unnamed unused output active-high line 4: unnamed unused output active-high line 5: unnamed unused output active-high line 6: unnamed unused input active-high line 7: unnamed unused input active-high $ gpioget gpiochip0 0 1 What actually happens: $ gpiodetect gpiochip0 [0-003c] (8 lines) $ gpioinfo gpioinfo: error creating line iterator: Invalid argument $ gpioget gpiochip0 0 gpioget: error reading GPIO values: Invalid argument $ cat /proc/version_signature Ubuntu 5.13.0-22.22-lowlatency 5.13.19 $ apt-cache policy libgpiod2 libgpiod2: Installed: 1.6.2-1 Candidate: 1.6.2-1 Version table: *** 1.6.2-1 500 500 http://de.archive.ubuntu.com/ubuntu impish/universe amd64 Packages 100 /var/lib/dpkg/status I am testing with the onboard PCA9554A on a Fujitsu D3641-S motherboard. $ lspci | grep -i smb 00:1f.4 SMBus: Intel Corporation Cannon Lake PCH SMBus Controller (rev 10) $ lspci -s 1f.4 -vvv 00:1f.4 SMBus: Intel Corporation Cannon Lake PCH SMBus Controller (rev 10) DeviceName: Onboard - Other Subsystem: Fujitsu Technology Solutions Cannon Lake PCH SMBus Controller Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Interrupt: pin A routed to IRQ 16 Region 0: Memory at 6013106000 (64-bit, non-prefetchable) [size=256] Region 4: I/O ports at efa0 [size=32] Kernel driver in use: i801_smbus Kernel modules: i2c_i801 --- ProblemType: Bug ApportVersion: 2.20.11-0ubuntu71 Architecture: amd64 AudioDevicesInUse: USER PID ACCESS COMMAND /dev/snd/controlC0: dkfz 4589 F.... pulseaudio /dev/snd/controlC1: dkfz 4589 F.... pulseaudio CasperMD5CheckResult: unknown CurrentDesktop: ubuntu:GNOME DistroRelease: Ubuntu 21.10 InstallationDate: Installed on 2018-11-12 (1122 days ago) InstallationMedia: Ubuntu 18.04.1 LTS "Bionic Beaver" - Release amd64 (20180725) Lsusb: Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 003: ID 7392:a812 Edimax Technology Co., Ltd Edimax AC600 USB Bus 001 Device 002: ID 256f:c650 3Dconnexion CadMouse Bus 001 Device 004: ID 046d:c336 Logitech, Inc. Gaming Keyboard G213 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub NonfreeKernelModules: nvidia_modeset nvidia Package: linux (not installed) ProcFB: 0 i915drmfb ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-5.13.19 root=UUID=75550043-7044-41bf-a01e-bf41b267f7d0 ro ProcVersionSignature: Ubuntu 5.13.0-22.22-lowlatency 5.13.19 RelatedPackageVersions: linux-restricted-modules-5.13.19 N/A linux-backports-modules-5.13.19 N/A linux-firmware 1.201.1 RfKill: 0: phy0: Wireless LAN Soft blocked: no Hard blocked: no Tags: impish Uname: Linux 5.13.19 x86_64 UpgradeStatus: Upgraded to impish on 2021-10-19 (49 days ago) UserGroups: sudo WifiSyslog: _MarkForUpload: True dmi.bios.date: 02/18/2021 dmi.bios.release: 1.12 dmi.bios.vendor: FUJITSU // American Megatrends Inc. dmi.bios.version: V5.0.0.13 R1.12.0 for D3641-S1x dmi.board.name: D3641-S1 dmi.board.vendor: FUJITSU dmi.board.version: S26361-D3641-S1 dmi.chassis.type: 3 dmi.chassis.vendor: FUJITSU dmi.modalias: dmi:bvnFUJITSU//AmericanMegatrendsInc.:bvrV5.0.0.13R1.12.0forD3641-S1x:bd02/18/2021:br1.12:svnFUJITSU:pn:pvr:rvnFUJITSU:rnD3641-S1:rvrS26361-D3641-S1:cvnFUJITSU:ct3:cvr:sku: dmi.product.family: ESPRIMO-FTS dmi.sys.vendor: FUJITSU To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1953613/+subscriptions -- Mailing list: https://launchpad.net/~kernel-packages Post to : kernel-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp