Как установить для устройства /dev/ttyUSB определенный постоянный номер устройства?

Я запускаю авторизованный портал Wi-Fi на аппаратном обеспечении Asus 2008 года с аналогичными характеристиками, с 2 ГБ SSD и 1 ГБ RAM, Fast Ethernet и Atheros Wifi abgn + USB-накопитель Ralink Wifi 5 ГГц. Раньше использовал его как WiFi-роутер дома. Это работает довольно хорошо для сервера небольшого форм-фактора с FreeBSD.

Использовал FreeBSD 11, но еще не последнюю версию FreeBSD 12 из-за лени обновлять ее. (Я уже протестировал его, он поддерживается ).

Среди поддерживаемых в настоящее время версий BSD Unix вы также можете найти NetBSD 8.0/i386 и OpenBSD /i386 6.4.

В качестве альтернативы на стороне Linux Antix Linux — это вариант Debian без systemd, поддерживающий 32 -бита. (Я не тестировал поддержку 32-битной системы, так как использую ее на машине i7 ).

The new release is based on Debian 9.2. Like Devuan Linux, antiX is one of the systemd-free Linux distributions. AntiX-17 supports both 32-bit and 64-bit processors which is not surprising because it focuses on supporting older hardware. It can support Pentium III computers with a minimum 256 MB RAM requirement.

1
16.07.2020, 12:52
2 ответа

Вероятно, это невозможно. Но вы можете сделать так, чтобы udev создавал для вас символические ссылки при появлении устройства. Вы больше не будете подключаться к /dev/ttyUSB0, а, например, к. /dev/ttyUSB-A.

1
18.03.2021, 23:19

В этом случае могут помочь 2 решения:

  1. Отредактируйте правило udev, чтобы создать символическую ссылку для вашего устройства, такую ​​как /dev/ttyClientA и /dev/ttyClientB, тогда вам больше не нужно беспокоиться о номере постфикса после ttyUSB:
  • Проверьте устройства, установленные в вашей системе:

      # lsusb
      Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
      Bus 001 Device 006: ID 04d8:0205 Microchip Technology, Inc. innodisk USB Dual CAN
      Bus 001 Device 005: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter 
      Bus 001 Device 004: ID 0483:5740 STMicroelectronics Virtual COM Port
      Bus 001 Device 002: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC
      Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    
  • Получите идентификатор поставщика, идентификатор продукта и серийный номер. Убедитесь, что они совпадают с тем, что вы хотите при использовании lsusb. Например,Я хочу использовать ttyUSB1

      # TTYDEVICE="ttyUSB1" ; sudo echo -e "$(udevadm info -a -n /dev/${TTYDEVICE} | grep ATTRS{idVendor}) \n$(udevadm info -a -n /dev/${TTYDEVICE} | grep ATTRS{idProduct}) \n$(udevadm info -a -n /dev/${TTYDEVICE} | grep ATTRS{serial}) \n"
      ATTRS{idVendor}=="1a86"
      ATTRS{idVendor}=="1d6b"
      ATTRS{idProduct}=="7523"
      ATTRS{idProduct}=="0002"
      ATTRS{serial}=="0000:00:14.0"
    
  • 1d6b :0002 — это USB-концентратор в системе, который мы не используем, мы используем атрибуты для создания правила udev. Добавьте следующую строку в файл /etc/udev/rules.d/99 -usb -serial.rules:

      SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", ATTRS{serial}=="0000:00:14.0", SYMLINK+="ttyClientA"
    
  • перезагрузите udev, после этого шага ваше устройство должно быть /dev/ttyClientA:

      # sudo udevadm control --reload-rules && sudo udevadm trigger
    
  1. Если вариант 1 не работает, можно использовать это решение. Сканируйте все устройства ttyUSBx с помощью команд в опции 1, чтобы получить идентификатор поставщика, идентификатор продукта и серийный номер, и проверьте, совпадают ли они с тем, что вы хотите, после чего вы используете это устройство в своем приложении.
1
17.10.2021, 01:46

Теги

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