On Fri, Jan 28, 2022 at 10:12:13PM +0800, Gasai Maple wrote: > I posted a question on stackoverflow, it's basically about me having > problems operating gpio with libgpiod, and a user advised me to drop a > message, the link is here > https://stackoverflow.com/questions/70863283/libgpiod-tests-fails-on-pcduino3-nano It would be helpful to restate your question rather than providing the link. But anyway... My best guess is that your kernel is built with only v2 of the GPIO CDEV ABI. libgpiod support for v2 is a WIP, and 1.6.3 only supports ABI v1. The CHIP_INFO ioctl is common to both, so will still work. But all the line request ioctls changed so they wont. So libgpiod is probably making ioctl calls that your kernel doesn't support. For compatibility with libgpiod v1.6.3, ensure your kernel is built with these options: CONFIG_GPIO_CDEV=y CONFIG_GPIO_CDEV_V1=y And the libgpiod tests require that gpio-mockup is available as a loadable module, so CONFIG_GPIO_MOCKUP=m If building a new kernel isn't an option for you then you might want to try the development branch of libgpiod[1]. Or you could try my Go[2] or Rust[3] libraries that both support both versions of the ABI and provide tools equivalent to libgpiod. If you still have issues, try using strace to display the ioctl calls and we can debug that. Cheers, Kent. [1] https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/log/?h=next/libgpiod-2.0 [2] https://github.com/warthog618/gpiod [3] https://github.com/warthog618/gpiod-rs