I have setup new RockPi 4cplus board with Ubuntu 20.02 and try to setup GPIOs according to this wiki
“https://wiki.radxa.com/Rockpi4/hardware/gpio”. I have also installed libmraa. When I define a GPIO
according to the wiki,i.e. GPIO131, under /sys/class/gpio I see gpio131, so everything looks just
fine. However, when I use command mraa-gpio list I get response “NO PINS”. So obviously, GPIOs
do not work according to the above Wiki.
Is there a solution to successfully define GPIOs?
Helmut
Pi4cplus GPIO not working
I have the same issue with the latest Ubuntu release (20.04) on 4C+. Using the latest Debian, “mraa-gpio list” returns all GPIOs so we can confirm that it’s not a problem with any HW or SW, sounds like a configuration issue.
I could see that the MRAA library reported Unknown Platform in the POE service, maybe this can help us find the issue.
I tested to switch from Focal Release to Focal Testing for the repository and tried to reinstall libmraa with no sucess. Also tried building MRAA from source with no success.
@bnsearle
I have used all mraa commands as root and it is not working as it should…
When I set the GPIOs manually, direction and value are correct. However I need to make
an electrical measurement to verify that the pin has really +3,3 V when his value has been set to
1 (high), which is still not clear yet…
The GPIO pins are 3.0V, and some have 4K7 resistor pull-ups - see the data sheet. But when calling from a C program the method I used works, provided you initialise with two system gpio reads per pin:
// 'manually' initialise the pins !
system("mraa-gpio get 27");
system("mraa-gpio get 29");
system("mraa-gpio get 31");
system("mraa-gpio get 33");
system("mraa-gpio get 27");
system("mraa-gpio get 29");
system("mraa-gpio get 31");
system("mraa-gpio get 33")
If you don’t do this it will fail! I use these pins for push-buttons as they have the required pull-ups. It’s a ‘kluge’ - a bit flaky really…
I did more intensive testing with GPIOs on Rock Pi4c+ with help of an external board connected
to the GPIO-.header which offers 4 12V-output-ports to power external devices which are toggled
on/off by help of pins 12, 32, 33, 37 (pin-numbers, not GPIO#), that means toggle pin 12 to high
(+3,3V) and the external board powers 12Vpower-port#1 to ON, toggle pin 32 to high turns the
next 12Vpower-port to ON, toggle pins to low switches 12Vpower-ports to off. This mechanism
works flawlessly on a standard RaspberryPi4-board.
Now testing with RockPi4c plus, no GPIOs have been set initially:
sudo mraa-gpio get 12 --> 12=1 already high, however corresponding 12Vpower-port is OFF
sudo mraa-gpio set 32 1 --> corresponding 12Vpower-port is ON,
however sudo mraa-gpio get 32 --> 32=0 --> 12Vpower-port is OFF !!!
Obviously, reading the pin-state toggles the pin from High to LOW, which is bizarre if not a serious bug.
Pins 33 and 37 also can be set to High (1) and corresponding 12Vpower-ports turn ON, but when
reading states of pins 33 and 37 with mraa-gpio get # the pins fall back to low as with pin# 32…
Pin# 12 never gets into a state where the corresponding 12Vpower-port reacts with status ON…
When I setup a systemd service to set pins 12,32,33,37 to high at bootup I get the following message:
Service mraa-gpio set 12 1 started, libmraa version v2.1.0-25-gf854463 intialized by user root with
EUID 0
gpio: platform doesn’t support chardev, falling back to sysfs
libmraa initialized for platform ‘Rock Pi 4’ of type 20.
I need only to set all 12Vpower-ports of my external board connected to the GPIO-header to ON once,
so the only thing missing is pin#12 which never turns the power-port on although it reports being in
the state “1”.
Has anybody an idea where to look to get pin#12 working?
Any help is appreciated,
Helmut