GPIO character device v1 API not enabled in kernel
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux (Ubuntu) |
Fix Released
|
Medium
|
Unassigned | ||
Jammy |
Fix Released
|
Medium
|
Unassigned | ||
linux-allwinner-5.17 (Ubuntu) |
Invalid
|
Undecided
|
Unassigned | ||
Jammy |
Fix Released
|
Undecided
|
Unassigned | ||
linux-hwe-5.17 (Ubuntu) |
Invalid
|
Undecided
|
Unassigned | ||
Jammy |
Fix Committed
|
Undecided
|
Unassigned | ||
linux-starfive-5.17 (Ubuntu) |
Invalid
|
Undecided
|
Unassigned | ||
Jammy |
Fix Released
|
Undecided
|
Unassigned |
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_
Thanks to Marek Szuba, who reported the same bug for Gentoo (https:/
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_
Ubuntu 5.13.0-
$ apt-cache policy libgpiod2
libgpiod2:
Installed: 1.6.2-1
Candidate: 1.6.2-1
Version table:
*** 1.6.2-1 500
500 http://
100 /var/lib/
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/
/dev/snd/
CasperMD5CheckR
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
NonfreeKernelMo
Package: linux (not installed)
ProcFB: 0 i915drmfb
ProcKernelCmdLine: BOOT_IMAGE=
ProcVersionSign
RelatedPackageV
linux-
linux-
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/
dmi.product.family: ESPRIMO-FTS
dmi.sys.vendor: FUJITSU
CVE References
description: | updated |
summary: |
- GPIO character device API not enabled in kernel + GPIO character device v1 API not enabled in kernel |
Changed in linux (Ubuntu Jammy): | |
importance: | Undecided → Medium |
status: | New → Fix Committed |
Changed in linux (Ubuntu): | |
status: | Confirmed → Fix Committed |
importance: | Undecided → Medium |
Changed in linux-hwe-5.17 (Ubuntu): | |
status: | New → Invalid |
Changed in linux-hwe-5.17 (Ubuntu Jammy): | |
status: | New → In Progress |
Changed in linux-allwinner-5.17 (Ubuntu): | |
status: | New → Invalid |
Changed in linux-allwinner-5.17 (Ubuntu Jammy): | |
status: | New → In Progress |
Changed in linux-starfive-5.17 (Ubuntu): | |
status: | New → Invalid |
Changed in linux-starfive-5.17 (Ubuntu Jammy): | |
status: | New → In Progress |
Changed in linux-starfive-5.17 (Ubuntu Jammy): | |
status: | In Progress → Fix Committed |
Changed in linux-hwe-5.17 (Ubuntu Jammy): | |
status: | In Progress → Fix Committed |
Changed in linux-allwinner-5.17 (Ubuntu Jammy): | |
status: | In Progress → Fix Committed |
This bug is missing log files that will aid in diagnosing the problem. While running an Ubuntu kernel (not a mainline or third-party kernel) please enter the following command in a terminal window:
apport-collect 1953613
and then change the status of the bug to 'Confirmed'.
If, due to the nature of the issue you have encountered, you are unable to run this command, please add a comment stating that fact and change the bug status to 'Confirmed'.
This change has been made by an automated script, maintained by the Ubuntu Kernel Team.