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
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
(BTW, as there is some interest in this project - I will publish all the steps later when I’ll have it fully working)
It actually runs under root user, which means it’s a permission problem.
Any idea how to allow running it under “ubuntu” user?
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
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
There should be some already set up. You may need additional udev rules set up.