Перейти к содержимому

USB 3G Модемы и нумерация tty

2

У меня есть модем Huawei E353, который я использую с Raspberry Pi.

Когда я подключаю его, я получаю три TTY - ttyUSB0, ttyUSB1 и ttyUSB2.

Но иногда интерфейс модема (где вы можете выдавать AT-команды типа Хейса) находится на ttyUSB0, а иногда на ttyUSB1.

Я не могу определить какой-либо общий фактор, который имеет значение. И я не уверен, но кажется, что он всегда делает одно и то же на одном и том же Пи (или, может быть, на одном и том же ключе - у меня их по несколько, и у меня не было возможности слишком много попробовать разные комбинации) ,

Кто-нибудь может подсказать, что влияет на нумерацию tty?

913 просмотров
Tom спросил 9 лет назад
T 225

2 ответа

1

ВсеНумерация устройств (harddisk, tty и т. Д.) Должна считаться ненадежной и непоследовательной, так как это может происходить в случайном порядке.

Посмотрите lsusbи dmesgвыясните детали того, как создается tty, затем напишите соответствующие udevправила для создания символических ссылок с постоянными именами, на которые можно положиться.

Редактировать :

Да, я прекрасно понимал, что это одно устройство, управляемое одним драйвером, которое выдает три tty. Вы не можете различить их в выводе lsusb(но вы можете увидеть идентификатор производителя / устройства, который вам понадобится, чтобы определить, что происходит dmesg), но я почти уверен, что вы можете найти отличительные атрибуты udev.

Если ничего нет dmesg(вряд ли), используйте

udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSB0) 

пройтись по пути устройства и увидеть атрибуты, и

udevadm monitor --udev --property 

чтобы понять, что udevон думает, когда вы подключаете устройство.

Это может быть неправильно в зависимости от вашего распространения.

davidgo · 9 лет назад · 0

@davidgo: Мне все еще нужно увидеть не древний дистрибутив, где он некорректен. Хотите разработать? По крайней мере, для любого дистрибутива, использующего udev, это не так.

dirkt · 9 лет назад · 0

Сожалею. Первая строка вашего поста меня оттолкнула - потому что довольно немногие устройства кодируются современными ОС для получения фиксированных адресов (на основе udev) во время выполнения - для начала на ум приходит Ethernet, но также и диски, адресованные uuid или именем раздела и многие другие. Ваше решение для создания правил Udev, тем не менее, на месте.

davidgo · 9 лет назад · 0

@davidgo: И обратите внимание, что даже имена сетевых интерфейсов нового стиля не всегда работают надежно - есть несколько вопросов по поводу обмена стеками, связанными с этим. Так что просто не полагайтесь на них, если вам по какой-то причине необходимо идентифицировать конкретное устройство.

dirkt · 9 лет назад · 0

Что касается другого ответа, вы, кажется, упустили суть. Это не отдельные устройства, а одно USB-устройство, обрабатываемое одним драйвером (huawei_cdc_ncm), который представляет три ttys. Я не уверен, как отличить ttys в выходных данных lsusb - тем более, что кажется, что устройство не имеет стандартного интерфейса usbserial (все интерфейсы являются либо классом USB Mass Storage, либо классом 255 - Vendor Specific).

Tom · 9 лет назад · 0
dirkt ответил 9 лет назад
D 8 608
1

Проблема, с которой вы столкнулись, не является уникальной для устройств Huawei (так что вы можете получить лучший ответ, если уберете ее из названия).

Проблема связана с обнаружением устройства и тем, что система считает уже установленным. Решение состоит в том, чтобы создать соответствующие правила UDEV, чтобы гарантировать, что устройство всегда распознается как определенная часть оборудования и ему назначается один и тот же интерфейс.

Специфика будет немного отличаться в зависимости от дистрибутива, но это обычно означает использование lsusb для поиска уникальных атрибутов для устройства, а затем кодирование строки для соответствия этим атрибутам в файлах конфигурации udev. Google - ваш друг здесь: поиск в google udev try rules [distribution] должен дать вам конкретную информацию, которая вам нужна.

Я думаю, что вы упустили момент здесь. Я знаю, что при подключении к USB-устройству нумерация будет ненадежной. Но суть в том, что это * три * ttys для * того же * USB-устройства. lsusb не показывает их как отдельные устройства с разными идентификаторами. Я не совсем уверен, как отличить их через Udev.

Tom · 9 лет назад · 0
davidgo ответил 9 лет назад
D 41 512