我有一台华为 E353 调制解调器,与 Raspberry Pi 一起使用。
当我插入它时,我得到三个 TTY - ttyUSB0、ttyUSB1 和 ttyUSB2。
但有时调制解调器接口(您可以在此发出 Hayes 类型的 AT 命令)位于 ttyUSB0 上,有时位于 ttyUSB1 上。
我找不到造成差异的任何共同因素。我也不确定,但它似乎总是在同一个 Pi 上做同样的事情(或者可能是同一个加密狗 - 我有几个,但我还没有机会尝试太多不同的组合)。
有人能指出什么影响了 tty 编号吗?
答案1
您遇到的问题并非华为设备所独有(因此,如果您从标题中删除该问题,可能会得到更好的答复)。
问题与设备检测以及系统认为已安装的内容有关。解决方案是制定适当的 UDEV 规则,以确保设备始终被识别为特定硬件并分配相同的接口。
具体细节会因发行版而略有不同,但通常意味着使用 lsusb 查找设备的唯一属性,然后在 udev 配置文件中编写一行代码来匹配这些属性。Google 是您的好朋友 - 谷歌搜索 udev try rules [distribution] 应该会为您提供所需的具体信息。
答案2
全部设备编号(硬盘、tty 等等)必须被视为不可靠且不一致的访问启动,因为它可能以随机顺序发生。
查看lsusb
并dmesg
找出 tty 创建方式的详细信息,然后编写适当的udev
规则来创建具有可依赖的常量名称的符号链接。
编辑:
是的,我完全理解这是由单个驱动程序处理的一个设备,它会产生三个 tty。您无法在 的输出中区分它们lsusb
(但您可以看到供应商/设备 ID,您需要用它来识别 中正在发生的事情dmesg
),但我很确定您可以找到区分 udev 属性。
dmesg
如果(不太可能)中没有任何内容,请使用
udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSB0)
浏览设备路径并查看属性,然后
udevadm monitor --udev --property
了解udev
当你插入设备时它在做什么。