![gammu 和设备权限](https://linux22.com/image/1039744/gammu%20%E5%92%8C%E8%AE%BE%E5%A4%87%E6%9D%83%E9%99%90.png)
我有 Ubuntu Server 12.04 LTS,并在其上安装了 gammu。我用它来控制我的“诺基亚 5310 Xpress 音乐”手机。
现在,当我运行“gammu --identify”时,它不起作用,说我没有正确的设备权限,但它可以与sudo gammu --identify
现在我的诺基亚设备在我的 /dev/ 目录中被列为 ttyACM0...它的权限是 root 和 dialout 的 rw...我试图更改这些权限,以便我可以将此设备与 gammu 一起使用sudo
...我这样做了sudo chmod 777 /dev/ttyACM0
,它改变了权限,但它仍然不起作用......
我甚至在 /etc/udev/rules.d/ 中添加了一个名为 40-41-descriptive-name.rules 的文件,其中包含以下行:
SUBSYSTEM=="usb", ATTR{idVendor}=="0421", ATTR{idProduct}=="006b", MODE="0600", OWNER="MyUserName"
然后重新启动了 udev 但仍然没有运气......
我甚至这样做了,sudo chown myusername /dev/ttyACM0
并赋予了自己该设备的所有权,但我仍然需要使用 sudo 来完成工作......
顺便说一句,如果我这样做,lsusb
我会得到以下信息:
BUS 002 Device 003: ID 0421:006b Nokia Mobile Phones
我尝试了所有这些方法来改变设备权限,以便我可以使用“gammu --identify”,但sudo gammu --identify
没有成功。
我怎样才能解决这个困境?
答案1
在同事的帮助下,我找到了解决问题的方法......
在我的 gammu 配置文件中,我将端口更改为 /dev/phone
然后我进入 /etc/udev/rules/ 目录并在其中创建了一个名为 99-phone.rules 的文件名,然后在该文件中写入以下行:
SUBSYSTEM=="usb", ATTRS{idVendor}=="0421", ATTRS{idProduct}=="006b", MODE="0666" , SYMLINK+="phone"
然后我重新启动了系统,当我连接诺基亚手机时,我就可以无需使用 sudo 在其上运行命令!
谢谢大家,特别是@firusvg!!
答案2
为了避免在后续连接/重新连接周期中手机被识别为 /dev/ttyACM0、/dev/ttyACM1、... 或 /dev/ttyUSB0、/dev/ttyUSB1、... 等情况下出现潜在问题,请为手机创建如下符号链接/dev/phone
- 使用以下命令创建99-phone.rules
udev 规则:
KERNEL=="ttyUSB*", ATTRS{idVendor}=="0421", ATTRS{idProduct}=="006b", NAME="phone", MODE="0666"
KERNEL=="ttyACM*", ATTRS{idVendor}=="0421", ATTRS{idProduct}=="006b", NAME="phone", MODE="0666"
并将 .gammurc 中的端口更改为port=/dev/phone
。现在,您无需 sudo 即可发出 gammu 命令。
当然,删除你之前的规则40-41-descriptive-name.rules
请注意,其中的两行99-phone.rules
仅用于确保涵盖初始电话识别的所有可能情况(另请注意MODE="0666"
- 这将为所有用户/组提供 rw)。
这是我用于自己的 SMS 网关的方法(使用三部手机并基于 gammu-smsd),到目前为止,效果很好。
答案3
还应该检查 Gammu 守护进程gammu-smsd而且它配置文件。守护进程本身将以 root 身份运行,但只要假脱机目录可写,gammu-smsd-inject 命令将允许在没有 root 权限的情况下发送短信。此外,守护进程还会定期接收消息,这是件好事。