如何在 raspberry pi 上找到 USB 调制解调器的 tty?
How to find tty of USB modem on raspberry pi?
我想向连接到 raspberry pi 的 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
returns 对我来说:
bsg <
sda <
sg0
我试过用cu工具连接调制解调器:
sudo cu -l sda
sudo cu -l sg0
但两者都是 returns:
cu: open (/dev/sg0): Permission denied
cu: sg0: Line in use
所以我也尝试使用 minicom 并将串行通信配置为 /dev/sg0 或 /dev/sda 但它也不起作用。
所以我想我需要找到调制解调器使用的正确 tty 设备才能与其通信。但是怎么找呢?
您可以查找 /sys/class/tty/*/device
条目并忽略所有指向 serial8250 的链接,因为它们不是 USB 设备。
使用 shell 脚本:
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/@'
产生
/dev/ttyACM0
/dev/ttyACM1
/dev/ttyS0
与我的 phone 连接。你可能得到的不仅仅是 usb 设备(例如 ttyS0),但至少这应该给你内核知道的所有 usb 串行设备(如果设备没有填充 /sys/class/tty/ 它几乎肯定不是串行设备).
这是基于libserialport library中的list_ports
功能逻辑。
我想向连接到 raspberry pi 的 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
returns 对我来说:
bsg <
sda <
sg0
我试过用cu工具连接调制解调器:
sudo cu -l sda
sudo cu -l sg0
但两者都是 returns:
cu: open (/dev/sg0): Permission denied
cu: sg0: Line in use
所以我也尝试使用 minicom 并将串行通信配置为 /dev/sg0 或 /dev/sda 但它也不起作用。
所以我想我需要找到调制解调器使用的正确 tty 设备才能与其通信。但是怎么找呢?
您可以查找 /sys/class/tty/*/device
条目并忽略所有指向 serial8250 的链接,因为它们不是 USB 设备。
使用 shell 脚本:
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/@'
产生
/dev/ttyACM0
/dev/ttyACM1
/dev/ttyS0
与我的 phone 连接。你可能得到的不仅仅是 usb 设备(例如 ttyS0),但至少这应该给你内核知道的所有 usb 串行设备(如果设备没有填充 /sys/class/tty/ 它几乎肯定不是串行设备).
这是基于libserialport library中的list_ports
功能逻辑。