USB-пристрій, який слід завжди виявляти в "тій же" / точці розробки?


3

У Linux (насправді я з CentOS v6.5) , коли я вперше підключаю USB Terminal/Character Device (якийсь USB адаптер) (після завантаження), він виявляється на:

/dev/ttyUSB0

Але кожного разу, коли я знову підключаю його до ВІН та IN, він знову виявляється на:

/dev/ttyUSB1

Один і той самий пристрій.

Це створює проблеми з деякими конфігураціями в моїх програмах.

  • Це означає, що коли-небудь я (мені потрібно) підключити IN і OUT під час виконання .

Як зробити такий пристрій USB (який вперше виявлений) , щоб бути завжди виявляється в /dev/ttyUSB0(В « Нуль » або будь-який інший завжди в той же число.)


3
Чи не було б кращим підходом спробувати знайти пристрій за його ідентифікатором та отримати /devзапис із цього?
Антон

Чи можете ви надати USB-накопичувач мітку та встановити її через fstab при запуску?
mahatmanich

1
Отже, це не привід? Не могли б ви показати нам вихід, lsusbколи адаптер підключений? Навіщо тобі /devім’я? Чого саме ви намагаєтесь досягти?
terdon

@Anthon чи не могли б ви порадити, як це зробити?
夏 期 劇場

1
@ 夏 期 劇場 Кожен пристрій має ідентифікаційний номер залежно від виробника та функції (наприклад, lsusbможе показати його). Або змініть свої програми для тестування, /dev/ttyUSB*поки він не знайде ідентифікатор, або створіть сценарій, який створює посилання на фіксованій позиції до ttyUSBзнайденого, і програма почне використовувати це посилання.
Антон

Відповіді:


1

У мене була подібна проблема з USB-пристроєм, що використовує драйвер pl2303. Раз і раз / dev / ttyUSB0 буде зникати, і / dev / ttyUSB1 з'явиться на його місці.

Я вирішив це, запускаючи кронштейн кожні 15 хвилин, що робив наступне:

if [ ! -c /dev/ttyUSB0 ]
then
  echo `date` Device missing
  echo `date` Stopping zmconcopy `/usr/sbin/rczmconcopy stop 2>&1`
  sleep 2
  echo `date` Unloading drivers `/sbin/modprobe -r pl2303 2>&1`
  sleep 2
  echo `date` Reloading drivers `/sbin/modprobe pl2303 2>&1`
  sleep 2
  echo `date` Starting zmconcopy `/usr/sbin/rczmconcopy start 2>&1`
  echo `date` Finished
fi

Важливо, щоб будь-яка програма, яка використовує / dev / ttyUSB0, була зупинена перед завантаженням драйвера пристрою.

Можливо, ви використовуєте інший драйвер, ніж pl2303, тому змініть це на будь-який ваш драйвер.



0

Ви також можете спробувати використовувати пристрій за USB-адресою (тобто контролером / концентратором та номером пристрою), наприклад:

ls -l /dev/bus/usb/0??/0??

Ви можете дізнатися номер пристрою, скориставшись lsusbкомандою (спробуйте використовувати його як корінь, якщо ви не отримаєте всієї необхідної інформації, хоча це, як правило, зазвичай дає вам багато інформації) або скористайтеся

udevadm info --name=/dev/ttyUSB0 --attribute-walk

Ось відповідна інформація, якщо ви хочете копати трохи далі: https://askubuntu.com/questions/184526/how-to-get-bus-and-device-relationship-for-a-dev-ttyusb

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.