我正在尝试做什么
作为使用 ubuntu 设置机器人的一部分,我调用来访问 spi 的库称为 spidev。当我执行以下几行时,出现以下错误:
>>> import spidev
>>> spi = spidev.SpiDev()
>>> spi.open(0,1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
PermissionError: [Errno 13] Permission denied
>>>
当我进一步检查时,我发现了以下情况:
[onboard:mr2]~/catkin_ws$ ls -la /dev/spi*
crw------- 1 root root 153, 0 Apr 1 2020 /dev/spidev0.0
crw------- 1 root root 153, 1 Apr 1 2020 /dev/spidev0.1
这意味着它们似乎只有 root 才能访问。我相信这是一个真是个坏主意更改 /dev 文件的文件权限。所以我的问题是:
如何在 Raspberry Pi 上的 Ubuntu 20.04 上启用 /dev/spi*?
似乎常见的建议是运行 raspi-config。但是,据我所知,raspi-config 在 Ubuntu 上不可用或无法运行,仅在 Raspian 上可用。
另一个更有希望的建议是修改各种配置文件之一。但是对于 Pi 的 Ubuntu 20.04 服务器,我找不到相应的文件。
一个解决方法是如果我以 root 身份登录。所以这证明这是一个文件权限问题。但我不知道是哪个文件,而且,再次强调,破坏系统设置的权限似乎不是一个好主意。
所以我想我是选错了方向,但我不知道还能尝试什么。
答案1
创建/etc/udev/rules.d/90-gpio-spi.rules
方式:
KERNEL=="spidev0.0", OWNER="root", GROUP="spi"
KERNEL=="spidev0.1", OWNER="root", GROUP="spi"
创建组本身并将其分配给现有用户“ubuntu”:
sudo groupadd -f --system spi
sudo usermod -a -G spi ubuntu
重新开始
sudo shutdown -r now
然后再试一次。