如何设置 ttyUSB 启动时间默认值?

如何设置 ttyUSB 启动时间默认值?

当我的 USB 串行加密狗初始化时,它会断言 RTS 线。无论是在启动期间插入加密狗,还是在启动后插入加密狗,我都会得到相同的行为。

这是我的 hamshack 电脑,其中串行端口连接到我的收发器。RTS 线路将设备置于传输模式,我宁愿不将其作为默认模式。当然,一旦我运行 fldigi 或 wsjtx,RTS 线路就会正常工作。

有地方可以设置该默认值吗?我在 /etc 中搜索了一下,但没有找到任何可以设置默认值的初始化或配置文件。它可能很简单,只需将“stty -F /dev/ttyUSB0 -crtscts”放在某处,但在哪里呢?

这台计算机没有内置串行端口,因此加密狗是唯一的选择。

运行 16.04 LTS 版本。

答案1

最后经过一番研究,我成功回答了你的问题。

假设您的 USB 转串口适配器已连接并可用/dev/USB0。那么您首先必须找出一些配置信息udev.rules

udevadm info -n ttyUSB0 -a将引导您完成信息树。例如,如果您希望创建的规则仅匹配特定加密狗,您可以参考供应商、产品和序列号:

$ udevadm info -n ttyUSB0 -a
.
.
   SUBSYSTEMS=="usb"
.
   ATTRS{idProduct}=="6001"
   ATTRS{idVendor}=="0403"
.
   ATTRS{serial}=="FTHL8XKY"
.
.

那么这些就是您在制定规则时需要尊重的属性。

/etc/udev/rules.d接下来,为该设备创建一个 udev 规则:

$ sudo vi /etc/udev/rules.d/99-ttyUSB.rules

ACTION=="add", SUBSYSTEMS="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="FTHL8XKY", RUN+="/bin/stty -F /dev/%k -crtscts"

(输入您设备 rsp 的值)。该行内容为:

仅当添加了加密狗(ACTION="add"),并且供应商、产品和序列号与给定的值匹配时,才会运行按您需要定义的操作,其中“%k”是kernel name设备的ttyUSB0(但下次可能会有所不同)。

规则文件的名称是任意的,但您应该遵守 udev 使用的命名约定。要查看将要执行的操作,您可以通过以下方式进行测试udevadm test -a add /devices/pci0000:00/0000:00:13.2/usb2/2-4/2-4.1/2-4.1:1.0/ttyUSB0/tty/ttyUSB0(设备路径显示在 udev 信息的第一行中)。

要查看这是否有效,您可以在插入加密狗时查看 /var/log/syslog。首先通过修改为读取来配置udev不仅显示错误消息;否则您将只看到错误消息。重新启动服务(),然后: /etc/udev/udev.confudev_log="debug"udevsudo systemctl restart udev

$ tail -f  /var/log/syslog | grep udev
.
.
Feb 13 14:47:42 desk systemd-udevd[16013]: starting '/bin/stty -F /dev/ttyUSB0 -crtscts'
Feb 13 14:47:42 desk systemd-udevd[15995]: Process '/bin/stty -F /dev/ttyUSB0 -crtscts' succeeded.
.
.

如果不成功,这也应该显示错误。udev尝试在不同阶段不同时间运行命令,因此会出现一些错误,但最终它应该会成功。

如果您希望每次插入加密狗时都创建固定的设备符号链接,这也是可以的。只需将操作添加到您的规则中:

ACTION=="add", SUBSYSTEMS="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="FTHL8XKY", SYMLINK+="mynewserial", RUN+="/bin/stty -F /dev/%k -crtscts"

这将创建一个/dev/mynewserial您可以在程序中使用的符号链接,而无需考虑动态创建的设备。

还有更多的可能性;这只是给如何进行提供一些印象。

答案2

上面的答案中有一个小错误。应该是SUBSYSTEMS=="usb"(双等号)

ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="FTHL8XKY", RUN+="/bin/stty -F /dev/%k -crtscts"

相关内容