Xtof
September 22, 2023, 3:29am
1
Hello,
I am trying to toggle GPIO outputs with my BB-AI64. I have the latest install from ARM64 - Debian 11.x (Bullseye) - Monthly Snapshots - 2023-09-02 and got a wifi module up and running (AX210).
With no mods to the system, apart from the wpa_supplicant for the wifi, I am trying to do a basic GPIO output control. So far, when observing the line on the scope (probe into P8), all I get is 750mV, so High-Z on the line. I tried multiple pins on P8 and P9 and always get the same result.
In the following two attempts , I probe pin 7 of connector P8 and never see any activity, always 750mV.
Method 1: from the documentation at:
https://docs.beagleboard.io/latest/boards/beaglebone/ai-64/ch07.html
debian@BeagleBone-AI64:~$ gpioinfo | grep P8_07
line 15: "P8_07" unused input active-high
debian@BeagleBone-AI64:~$ gpiodetect
gpiochip0 [42110000.gpio] (84 lines)
gpiochip1 [600000.gpio] (128 lines)
gpiochip2 [601000.gpio] (36 lines)
debian@BeagleBone-AI64:~$ gpiofind P8_07
gpiochip1 15
debian@BeagleBone-AI64:~$ gpioset 1 15=1
debian@BeagleBone-AI64:~$ gpioset --mode=wait 1 15=1
^C
debian@BeagleBone-AI64:~$
->> scope trace for P8 pin 7 always stays Hi-Z
debian@BeagleBone-AI64:~$ gpioinfo | grep P8_07
line 15: "P8_07" unused output active-high
debian@BeagleBone-AI64:~$
Method 2: from the post AI-64 - GPIO sysfs
debian@BeagleBone-AI64:~$ gpiodetect
gpiochip0 [42110000.gpio] (84 lines)
gpiochip1 [600000.gpio] (128 lines)
gpiochip2 [601000.gpio] (36 lines)
debian@BeagleBone-AI64:~$ gpiofind P8_07
gpiochip1 15
debian@BeagleBone-AI64:~$ ls -ltr /sys/class/gpio/gpiochip*
lrwxrwxrwx 1 root root 0 Jan 1 1970 /sys/class/gpio/gpiochip428 -> ../../devices/platform/bus@100000/bus@100000:bus@28380000/42110000.gpio/gpio/gpiochip428
lrwxrwxrwx 1 root root 0 Jan 1 1970 /sys/class/gpio/gpiochip300 -> ../../devices/platform/bus@100000/600000.gpio/gpio/gpiochip300
lrwxrwxrwx 1 root root 0 Jan 1 1970 /sys/class/gpio/gpiochip264 -> ../../devices/platform/bus@100000/601000.gpio/gpio/gpiochip264
debian@BeagleBone-AI64:~$ echo 315 > /sys/class/gpio/export
debian@BeagleBone-AI64:~$ ls /sys/class/gpio/
export gpio315 gpiochip264 gpiochip300 gpiochip428 unexport
debian@BeagleBone-AI64:~$ echo out > /sys/class/gpio/gpio315/direction
debian@BeagleBone-AI64:~$ echo 1 > /sys/class/gpio/gpio315/value
debian@BeagleBone-AI64:~$
->> scope trace for P8 pin 7 always stays Hi-Z
I’m thinking I am missing a step to enable the outputs? Any suggestion or pointer to the right documentation would be appreciated!
Thank you
Hi Xtof,
I am able to toggle the pin voltage of P8_07.
Can you able to do below steps and check again like installing libgpiod library.
git clone GitHub - brgl/libgpiod: NOTE - this project is now hosted at kernel.org and the development happens on the linux-gpio mailing list.
gpioset 1 15=1 ---->3.3v
gpioset 1 15=0 ---->0.0V
Regards
Manan Jarsania
Xtof
September 24, 2023, 6:39pm
3
Thanks, Manan, for trying it out and getting back to me! I thought it should work… strange.
I had libgpiod installed but I still re-built it from the git repo and same thing: the commands execute but the scope trace stays around 600mV to 700mV like it’s a floating input. But as shown in my post above, gpioinfo returns “output” for that pin after gpioset is run.
Here’s a picture of my simple “Hello world” setup:
Any suggestion would be great!
Thanks.
Hi xtof,
Actually I have 2 AI-64 board. In 1 board I have checked and replied.
But when I checked on another board. Same issue I faced.
I don’t know what to do.
At least we can comment on the discord channel as well.
please make a login and comment there. I will also ask same thing.
BeagleBoard.org .
Regards
Manan
1 Like
Xtof
September 26, 2023, 2:25pm
5
Well, I somewhat feel better that it’s not just me! I want to try a few things first, maybe someone will have ideas by then, but if not, that’s a good idea, we can take it over to Discord then.
Thanks!
GPIO is not working with the newer firmware. I found that bbai64-emmc-flasher-debian-11.6-minimal-arm64-2023-04-06-4gb.img.xz
was the latest to still have working GPIO. You can grab it at Index of /rootfs/bb.org/testing/2023-04-06/bullseye-minimal-arm64 .
Burn that image to a microSD using rufus or something. Plug that microSD in, power on your bbai64 while holding down the boot button. Keep holding that button down until the LEDs start going crazy, will take about 10 seconds. Next you’ll have to wait about 5 - 10 minutes. After the LEDs stop going crazy unplug the board, remove the microSD, and then start the board back up.
opened 07:09PM - 05 Oct 23 UTC
**GPIO does not work on the BeagleBoneAI64 with firmware versions after April 20… 23. It neither works from Linux, or from an R5 core.**
With some no not so thorough testing, I have found that with the images before `bbai64-emmc-flasher-debian-11.6-minimal-arm64-2023-04-06-4gb.img.xz` inclusive, I am still able to control GPIO. With the images after `bbai64-emmc-flasher-debian-11.6-minimal-arm64-2023-04-06-4gb.img.xz` I can not control GPIO.
- Here's a GPIO toggle program for testing GPIO from an R5 https://github.com/FredEckert/bbai64_cortex-r5_example/tree/r5_toggle.
- GPIO test stuff for Linux [gpiod.zip](https://github.com/beagleboard/Latest-Images/files/12822102/gpiod.zip). Make sure to run the C program, some of the scripts did not work for whatever reason.
I initially hit this bug after I updated my BBAI64 and ran the eMMC firmware update scripts.
Take a look at the #beaglebone-ai-64 channel in Discord to see discussion.
Somewhere along the line, the GPIO stuff in the devicetree went missing and the GPIOs stopped working.
/* Dummy driver to request setup for cape header pins */
cape_header: pinmux_dummy {
compatible = "gpio-leds";
pinctrl-names = "default";
pinctrl-0 = <
&P8_03_default_pin
&P8_04_default_pin
&P8_05_default_pin
&P8_06_default_pin
&P8_07_default_pin
&P8_08_default_pin
&P8_09_default_pin
&P8_10_default_pin
&P8_11_default_pin
&P8_12_default_pin
&P8_13_default_pin
&P8_14_default_pin
&P8_15_default_pin
&P8_16_default_pin
&P8_17_default_pin
&P8_18_default_pin
&P8_19_default_pin
&P8_20_default_pin
&P8_21_default_pin
&P8_22_default_pin
&P8_23_default_pin
&P8_24_default_pin
&P8_25_default_pin
&P8_26_default_pin
&P8_27_default_pin
&P8_28_default_pin
&P8_29_default_pin
&P8_30_default_pin
&P8_31_default_pin
&P8_32_default_pin
&P8_33_default_pin
&P8_34_default_pin
&P8_35_default_pin
&P8_36_default_pin
&P8_37_default_pin
&P8_38_default_pin
&P8_39_default_pin
&P8_40_default_pin
&P8_41_default_pin
&P8_42_default_pin
&P8_43_default_pin
&P8_44_default_pin
&P8_45_default_pin
&P8_46_default_pin
&P9_11_default_pin
&P9_12_default_pin
&P9_13_default_pin
&P9_14_default_pin
&P9_15_default_pin
&P9_16_default_pin
&P9_17_default_pin
&P9_18_default_pin
&P9_19_default_pin
&P9_20_default_pin
&P9_21_default_pin
&P9_22_default_pin
&P9_23_default_pin
&P9_24_default_pin
&P9_25_default_pin
&P9_26_default_pin
&P9_27_default_pin
&P9_28_default_pin
&P9_29_default_pin
&P9_30_default_pin
&P9_31_default_pin
&P9_33_default_pin
&P9_35_default_pin
&P9_36_default_pin
&P9_37_default_pin
&P9_38_default_pin
&P9_39_default_pin
&P9_40_default_pin
&P9_41_default_pin
&P9_42_default_pin
>;
};
The contents of the k3-j721e-beagleboneai64-bone-buses.dtsi file were different between the previous and current versions.
When I applied the above code to the dtsi and created the dtb file, the GPIOs worked fine.
3 Likes