我有一个 D-LINK DWM-157 USB 3G 记忆棒,带有可工作的纯短信运营商计划 SIM 卡且没有 PIN 码。
由于某种原因,gammu、gsmsendsms 和 gsmctl 都无法连接到设备。他们都报告超时。
但是 wvdial 发现设备正常,并且能够与它交谈并创建 /etc/wvdial.conf 条目:
[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CFUN=1,0
Modem Type = Analog Modem
; Phone = <Target Phone Number>
ISDN = 0
; Password = <Your Password>
New PPPD = yes
; Username = <Your Login Name>
Modem = /dev/ttyUSB0
Baud = 9600
我还可以手动执行所有 AT 命令并通过 echo > /dev/ttyUSB0 向自己发送一条短信
#cat < /dev/ttyUSB0 &
# echo "ATZ" > /dev/ttyUSB0
OK
# echo "ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0" > /dev/ttyUSB0
OK
# echo "AT+CMGS=\"+myphonewithcountrycode\",145" > /dev/ttyUSB0
>
# echo "foobar^Z" > /dev/ttyUSB0
foobar
+CMGS: 2
OK
#
如果我执行 acat < /dev/ttyUSB0 &
然后尝试 gammu 或 gsmctl,我可以看到它们都发送 AT 命令,并且调制解调器回复 OK,但 gammu/gsm 表现得好像它们没有收到 OK。
有一些非常奇怪的错误。可能是什么问题呢?
原来还有一个(未使用的)管理调制解调器的软件:ModemManager。
根据这个答案https://unix.stackexchange.com/questions/97242/how-to-send-at-commands-to-a-modem-in-linux我禁用了 ModemManager。
在
systemctl disable ModemManager
gammu 现在可以识别我的调制解调器之后:似乎有很多(有时显然是相互竞争的)服务试图在最新的 Ubuntu 中为相同的设备提供服务。我的 DNS 设置遇到了同样的问题,它被 NetworkManger 覆盖,然后 systemd 解决了,并且都忽略了我在 netplan 中的内容。