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?
-
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
6status = 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