We have upgraded the community system as part of the upgrade a password reset is required for all users before login in.

Resource busy when trying to run pyGpio example program



  • I am trying to run the GPIO example programs as well as doing my own GPIO code and keep running into the same errors. I always get a Errno 16 Resource busy at some point or other.

    I have tried ˋecho 14 > /sys/class/gpio/unexportˋ to reset the gpio pin, but that didn't help either.

    Any ideas what might be wrong?

    0_1506794807364_3A550EE9-8792-446E-A9E7-CCE3377BD34F.jpeg



  • Ok, so here is code derived from the official GPIO example code (which did not work either):

    import onionGpio
    import time
    import os
    
    print '> Instantiating gpio object'
    
    gpio5 = onionGpio.OnionGpio(5)
    gpio11 = onionGpio.OnionGpio(11)
    print ''
    
    print '> Set direction to output... '
    ret     = gpio5.setOutputDirection()
    print '    returned %d'%ret
    ret     = gpio11.setOutputDirection()
    print '    returned %d'%ret
    
    print '> Set gpio 5 value to 0... '
    ret             = gpio5.setValue(0)
    print '    returned %d'%ret
    time.sleep(0.1)
    
    print '> Set gpio 11 value to 0... '
    ret             = gpio11.setValue(0)
    print '    returned %d'%ret
    time.sleep(0.1)
    
    print '> Set gpio 11 value to 1... '
    ret             = gpio11.setValue(1)
    print '    returned %d'%ret
    time.sleep(0.1)
    
    print ''
    

    I hooked up GPIO11 to my Si470x's RST pin, and the GPIO5 (SDA) to the Si470x board's respective i2c SDA pin.

    I cross checked with my Pi that exactly this wiring works (it does, using a small i2cinit tool and the C based RdsPi Si470 software).

    When running the above software to try and put the Si470x in two wire mode, I still get the resource busy error:

    root@Omega-FF87:~# echo 11 > /sys/class/gpio/unexport 
    -ash: write error: Invalid argument
    root@Omega-FF87:~# echo 5 > /sys/class/gpio/unexport 
    -ash: write error: Invalid argument
    root@Omega-FF87:~# python onion-si470x.py > Instantiating gpio object
    
    > Set direction to output... 
    Traceback (most recent call last):
      File "onion-si470x.py", line 12, in <module>
        ret         = gpio5.setOutputDirection()
      File "/usr/lib/python2.7/onionGpio.py", line 168, in setOutputDirection
    ret         = self._setDirection(argument)
      File "/usr/lib/python2.7/onionGpio.py", line 147, in _setDirection
    self.setValue(0)
      File "/usr/lib/python2.7/onionGpio.py", line 85, in setValue
    status      = self._initGpio()
      File "/usr/lib/python2.7/onionGpio.py", line 46, in _initGpio
    fd.close()
    IOError: [Errno 16] Resource busy
    

    I have the feeling that the GPIO libraries on the Omega are totally broken. The only thing I got working was using the gpioctl command line program.

    The same stuff seems so much easier on the Pi and much more reliable.



  • I had the same issue running the sample, I found a bug in the python onionGpio.py library

    In the _setDirection function I moved :
    # set default for output direction
    if direction == _GPIO_OUTPUT_DIRECTION:
    self.setValue(0)

    so that it followed the :

    status = self._freeGpio()

    because the setValue call has a __initGpio call in it's code which was being called before the resource had been freed.



  • I've tried your fix and i'm still getting the same issue. Can you elaborate on the exact syntax you used to fix this issue?



  • I'm getting the same issue. How to fix?



  • I have the same issue with GPIO 11 and GPIO 3. any special caution that's needed for these two GPIO pins when controlling by Python?

    GPIO 11 is marked as a GPIO on the pin layout diagram (1.2) but not possible to control via the GPIO App (Omega2+ view) that comes pre installed. Is there anything special with GPIO 11?

    For GPIO 3, it's in GPIO mode as it is when booted.



  • Confirming,
    Same error issue when setOutputDirection().
    Omega2+ with latest 0.2.0 b190 firmware.

    • gpioObj = onionGpio.OnionGpio(gpioNum)

    gpioNum
    6

    status = gpioObj.setOutputDirection()
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    File "/usr/lib/python2.7/onionGpio.py", line 168, in setOutputDirection
    ret = self._setDirection(argument)
    File "/usr/lib/python2.7/onionGpio.py", line 134, in _setDirection
    status = self._initGpio()
    File "/usr/lib/python2.7/onionGpio.py", line 46, in _initGpio
    fd.close()
    IOError: [Errno 16] Resource busy



  • @administrators @Lazar-Demin Please help, when this bug with GPIO will be fixed? I have same problems on latest firmware:
    File "/root/onionGpio.py", line 168, in setOutputDirection
    ret = self._setDirection(argument)
    File "/root/onionGpio.py", line 134, in _setDirection
    status = self._initGpio()
    File "/root/onionGpio.py", line 46, in _initGpio
    fd.close()
    IOError: [Errno 16] Resource busy


Log in to reply
 

Looks like your connection to Community was lost, please wait while we try to reconnect.