使用调制解调器管理器和ttyACM

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

hlo*_*dal 6

问题在于,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)

归功于以上链接的答案作者