Ekh*_*khi 3 ubuntu modem at-command
我有一个脚本可以从外部爱立信F3507gw调制解调器获取信号强度,该调制解调器连接到:
ttyACM0: mobile broadband data modem
ttyACM1: mobile broadband modem
ttyACM2: GPS port
cdc-wdm0: Device management
cdc-wdm1: USIM port
Run Code Online (Sandbox Code Playgroud)
cu -l /dev/ttyACM2发送AT命令正常工作。当我不运行Ubuntu的调制解调器管理器(禁用移动宽带)时,我可以运行我的脚本而没有任何问题。但是,当使用调制解调器管理器连接Ubuntu时,有时会得到:
cu -l /dev/ttyACM2
cu: /dev/ttyACM2: Line in use
我还没有弄清楚什么时候,但是我想修复它。我的用户在拨号组中,所以没有权限问题。任何想法如何在不终止调制解调器管理器的情况下运行我的脚本?
该脚本仅使用发送AT命令echo。
问题在于,ModemManager将创建任何/dev/ttyACM*设备视为“哦,发生了新的调制解调器。我是调制解调器管理器,必须立即打开它才能声明对其具有独占访问权限”。因此,如果要避免针对特定的调制解调器,可以通过udev进行操作。我/etc/udev/rules.d/99-ttyacms.rules文件的内容:
# http://linux-tips.org/t/prevent-modem-manager-to-capture-usb-serial-devices/284/2.
#$ lsusb | grep Sony
#Bus 007 Device 006: ID 0fce:d0d9 Sony Ericsson Mobile Communications AB
#$
#udevadm control --reload-rules
ATTRS{idVendor}=="0fce" ATTRS{idProduct}=="d0d9", ENV{ID_MM_DEVICE_IGNORE}="1"
Run Code Online (Sandbox Code Playgroud)
归功于以上链接的答案作者。