我想向连接到树莓派的 USB 调制解调器发送 AT 命令。我发现一些帮助提到 USB 调制解调器通常连接为 ttyACM 或 ttyUSB 设备,但我没有 ttyACM 或 ttyUSB 设备。我有从 tty1 到 tty63 的设备,但我不知道如何识别调制解调器使用的是哪一个。
我尝试通过在调制解调器未连接的情况下存储设备列表然后在插入调制解调器后比较设备列表来查找设备:
ls /dev/ > dev_list_1.txt
(plug the modem in)
ls /dev/ | diff --suppress-common-lines -y - dev_list_.txt
回到我身边:
bsg <
sda <
sg0
我已尝试使用 cu 工具连接调制解调器:
sudo cu -l sda
sudo cu -l sg0
但两者都返回:
cu: open (/dev/sg0): Permission denied
cu: sg0: Line in use
所以我也尝试使用 minicom 并将串行通信配置为 /dev/sg0 或 /dev/sda 但它也不起作用。
所以我想我需要找到调制解调器使用的正确 tty 设备才能与之通信。但是怎么找到呢?
答案 0 :(得分:0)
您可以查找 [anar_adm.csv]
Format=Delimited(;)
条目并忽略所有指向 serial8250 的链接,因为它们不是 USB 设备。
使用 shell 脚本:
/sys/class/tty/*/device
产生
for device in /sys/class/tty/*/device
do
case $(readlink $device) in
*serial8250) # e.g. ../../../serial8250
;;
*) # e.g. ../../../1-3:3.1
echo $device | rev | cut -d/ -f2 | rev
;;
esac;
done | sed 's@^@/dev/@'
我的手机已连接。您可能获得的不仅仅是 USB 设备(例如 ttyS0),但至少这应该为您提供内核知道的所有 USB 串行设备(如果该设备没有填充 /sys/class/tty/ 它几乎可以肯定不是串行设备)设备)。
这是基于 libserialport library 中的 /dev/ttyACM0
/dev/ttyACM1
/dev/ttyS0
函数逻辑。