Как я устанавливаю ttyUSB значения по умолчанию времени начальной загрузки?

Когда мой последовательный USB аппаратный ключ инициализирует, он придумывает утверждаемую строку РТС. Я получаю то же поведение, если оно включается во время начальной загрузки или если я включаю аппаратный ключ после начальной загрузки.

Это для моего hamshack компьютера, где последовательный порт подключен к моему приемопередатчику. Строка РТС помещает буровую установку в режим передачи, который я не имел бы как значение по умолчанию. Конечно, после того как я выполняю fldigi или wsjtx, строка РТС ведет себя.

Существует ли место для установки того значения по умолчанию? Я ввел по абсолютному адресу вокруг немного в / и т.д., но я не нашел init или файла конфигурации, где значение по умолчанию могло бы быть. Это могло быть столь же просто как помещение '-crtscts' stty-F/dev/ttyusb0 где-нибудь, но где?

Этот компьютер не имеет встроенного последовательного порта, таким образом, аппаратный ключ является единственной опцией здесь.

Выполнение 16.04 выпусков LTS.

1
задан 11 February 2017 в 17:36

2 ответа

В конце после некоторого исследования я преуспел в том, чтобы ответить на Ваш вопрос.

Предположите, что Ваш аппаратный ключ 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"
.
.

затем это атрибуты для уважения в правиле.

Затем, создайте правило udev в /etc/udev/rules.d для этого устройства:

$ 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.conf читать udev_log="debug"; иначе Вы будете только видеть сообщения об ошибках. Перезапустите udevсервис (sudo 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 можно использовать в программах без отношений к dynanmically созданным устройствам.

Существует намного больше возможностей; это должно только произвести некоторое впечатление о том, как продолжить двигаться.

2
ответ дан 7 December 2019 в 13:36

В приведенном выше ответе есть небольшая опечатка. Это должно быть SUBSYSTEMS == "usb" (двойное равенство)

ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="FTHL8XKY", RUN+="/bin/stty -F /dev/%k -crtscts"
0
ответ дан 10 February 2020 в 11:29

Другие вопросы по тегам:

Похожие вопросы: