Ubuntu 20.04 + ROS Noetic on Beaglebone Blue

I am in the progress of enabling ROS Noetic on Ubuntu 20.04 and went through many pitfalls already:

  • Installed Robot Control Library (needed to load older Kernel)
  • Installed ROS
  • Ported the bbblue_drivers

Now I am stuck on:

ubuntu@ubuntu:~/catkin_ws$ rosrun bbblue_drivers imu_pub_node
[ INFO] [1654446545.826307375]: FrameID: imu_link
ERROR opening gpiochip: Permission denied
ERROR: in rc_mpu_initialize_dmp, failed to initialize GPIO
probably insufficient privileges
[ INFO] [1654446545.858926005]: rc_mpu_initialize_failed

It looks like the GPIO3_21 (MPU interrupt) is not available in the device tree at all:

ubuntu@ubuntu:~/catkin_ws$ config-pin -q p3_21
ERROR: open() for /sys/devices/platform/ocp/ocp:P3_21_pinmux/state failed, No such file or director

I am using bone-ubuntu-20.04.4-console-armhf-2022-05-22-4gb.img from Index of /ubuntu

Any idea?
@RobertCNelson ?


(BTW, as there is some interest in this project - I will publish all the steps later when I’ll have it fully working)

1 Like

It actually runs under root user, which means it’s a permission problem.

Any idea how to allow running it under “ubuntu” user?

1 Like

Hello @mirots ,

Seth here. This is awesome! Nice and nice all over again.

I am glad you are showing interest in this process. I slacked off years ago when people were producing the images for ROS.

Maybe some udev rules will help: customizations/etc/udev/rules.d at master · beagleboard/customizations · GitHub


P.S. Also, I think there are a couple of commands to set the debian:debian user for accessing specific libs. but in your case ubuntu:ubuntu.


If that does not give enough info, please view this too:


Hi @silver2row ,

I am very well aware on how permissions in Linux work on files, yet this is a GPIO device.

Usually it is something like:

sudo echo "21" > /sys/class/gpio/export'

where 21 is the GPIO pin.
Yet it is not working for me

Any idea?

@mirots ,

i.e. GPIO2_24 is 32*2+24 , making it GPIO_88. If this pin were to be referenced anywhere in software, the user would use the number 88, not 24 !

I found that idea here: Setting Up the BeagleBone Black's GPIO Pins

If you are not using udev rules, try them in /etc/udev/rules.d/ .

There should be some already set up. You may need additional udev rules set up.