• Posts

  • Joined

  • Last visited

Posts posted by Srini

  1. On 9/26/2018 at 10:06 PM, sgjava said:

    @Srini gpio.h should be in the downloaded kernel headers. You can sudo find / -name gpio.h to see where it is. is where the kernel header logic is. I tested this with the latest stable release for NanoPi Duo and it worked fine. It also worked on the FriendlyElec image, but I had to manually install the headers.

    @sgjava , Thank you so much, but even after I find the gpio.h from kernel source path and installed manually in /usr/src/linux-header-$(uname -r)/ , the configure script could not able to find the path of  "linux/gpio.h" but finally I could solve the compilation by exporting the C_INCLUDE_PATH in the shelling using "export C_INCLUDE_PATH=/usr/src/linux-headers-4.14.72-v7+/include/:/usr/include/" , it's working now.. I could build the libgpiod on the Raspberry CM3.

    once again thank you so much.   




  2. On 1/24/2018 at 12:03 PM, sgjava said:

    OK, I got it to build finally! I'm working on a how-to and will post that once I verify the steps and that it actually works, thanks!


    @sgjava, could you please post how you manage to get the "linux/gpio.h" file, I am running into the same problem where the autoconfig say it could not find the 'linux/gpio.h' file, Please help with your findings. Thanks. Srin.

  3. On 1/24/2018 at 1:35 PM, sgjava said:


    This has been replaced by: User Space IO get more details on this thread.




    Well, it's time to say goodbye to sysfs and hello to libgpiod! @zador.blood.stained pointed me in the right direction, but you need to do one little hack I'll explain below involving compiler_types.h. I tested this on a NanoPi Duo, but it should work on any mainline Armbian release (and other distros as well) as long as the kernel is >= 4.8. Try ls /dev/gpiochip* and see if anything is listed. If so, then proceed.


    I'm continuing work on my Github site, so please report any issues there. There is an Armbian install script that automates the steps below :) I generated the Python wrapper, but there's a lot of functions to test, so I'm not sure of the quality. I'm working on some simple Python tests.

    • sudo armbian-config, Software, Headers
    • sudo apt-get install libtool pkg-config
    • git clone
    • cd libgpiod
    • mkdir -p include/linux
    • cp /usr/src/linux-headers-$(uname -r)/include/linux/compiler_types.h include/linux/.
    • ./ --enable-tools=yes --prefix=/usr/local CFLAGS="-I/usr/src/linux-headers-$(uname -r)/include/uapi -Iinclude"
    • make
    • sudo make install
    • sudo ldconfig

    Let's try some commands:


    sudo gpiodetect


    gpiochip0 [1c20800.pinctrl] (224 lines)
    gpiochip1 [1f02c00.pinctrl] (32 lines)


    sudo gpioinfo | grep "\[used\]"


        line  10:      unnamed "nanopi:blue:status" output active-high [used]
        line 166:      unnamed         "cd"   input  active-high [used]
        line 202:      unnamed  "interrupt"   input  active-high [used]
        line 205:      unnamed      "reset"  output   active-low [used]
        line   6:      unnamed          "?"  output  active-high [used]
        line   7:      unnamed   "vcc-wifi"  output  active-high [used]
        line  10:      unnamed "nanopi:green:pwr" output active-high [used]


    Notice how it found the Duo's built in LEDs :)


    Now let's test the Duo's built in button (press and release 3 times):


    sudo gpiomon --num-events=3 --rising-edge gpiochip1 3


    event:  RISING EDGE offset: 3 timestamp: [1516774143.944174870]
    event:  RISING EDGE offset: 3 timestamp: [1516774145.123474395]
    event:  RISING EDGE offset: 3 timestamp: [1516774145.987531088]


    Wire up LED (the normal way) and use Duo's IOG11 then to turn on and off:


    sudo gpioset gpiochip0 203=0

    sudo gpioset gpiochip0 203=1


    Python code

    import time
    from libgpiod.libgpiod import *
    chip = gpiod_chip_open("/dev/gpiochip0")
    line = gpiod_chip_get_line(chip, 203)
    # The will set line for output and set initial value (LED on)
    if gpiod_line_request_output(line, "test", 0) == 0:
        # LED off
        gpiod_line_set_value(line, 1)

    More reading at and Maybe @Larry Bank will work on ArmbianIO II :) It looks like in the old Github site there was a milestone to create Python and C++ wrappers Once I learn more about libgpiod I may just generate them like I did for ArmbianIO.

    @sgjava, could you describe how to install Linux headers for the raspberry-CM3 target, I am running the latest kernel, built and install, I cloned the kernel from "git clone --depth=1 " which falls to be a kernel version 4.4.21-v7+ , I have even tried installing the header from the kernel build directory using the command "make headers_install" but still it is not installing all the required include file like "linux/gpio.h" for building the libgpiod. I noticed you were successfull in building the libgpiod on raspberry. please give some tips I am literally blocked. Appreciate your help.                                                                                                                                                              regards,Srini