Установка и настройка USB-модемов
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Установка и настройка USB-модемов
OFF TOPIC
По материалам этой темы уже можно было бы написать интереснейший обзор по USB модемам, начиная от стандартов и протоколов, которые используются разными модемами, и заканчивая приёмами "оживления" их в Linux.
По-крайней мере, я нигде в Интернет не встречал описания даже такой полноты, при том всём, что некоторые детали ещё бы требовали экспериментальной проверки.
По материалам этой темы уже можно было бы написать интереснейший обзор по USB модемам, начиная от стандартов и протоколов, которые используются разными модемами, и заканчивая приёмами "оживления" их в Linux.
По-крайней мере, я нигде в Интернет не встречал описания даже такой полноты, при том всём, что некоторые детали ещё бы требовали экспериментальной проверки.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Установка и настройка USB-модемов
Понимаете ... вообще то логика обслуживание USB-модемов стандартным способом в Linux (всех многих сотен уже, наверное, моделей) тоже очень проста.dmitriev писал(а):Увы! Это не работает. Было бы слишком просто, чтобы никто не допер.
Просто я нигде не встречал, чтобы кто-то это внятно и простыми словами обозначил.
... и тогда (когда нет внятно) каждый пользователь, индивидуально, купивши какой-попало модем (а их модели постоянно обновляются) начинает уродоваться сам, ... и если ему повезёт, начинает описывать в Интернет "как подключить модем ХХХ".
А выглядит это в общем виде примерно так:
1. USB-модемы стали строить как многофункциональные USB устройства (ZeroCD + модем), первоначально устройство видится с VID:PID как инсталляционный CD, для использования его в качестве модема нужно переключить (переинициализировать) его на другие VID:PID, одновременно и тот и другой набор VID:PID не может присутствовать;
2. Эта картина совершенно одинаковая что в Windows, что в Linux, что в любой другой ОС. Это очень важно, потому, что если производитель конкретного USB-модема "затачивает" его исключительно под Windows, то даже и в этом случае он делает переключение к модему, посылая определённую байтовую последовательность на определённую USB end-point устройства;
(Про написание модулей-драйверов под USB я уже затевал здесь тему модуль/драйвер USB устройства, но руки не дошли пока развить её до нормального описания... Но там есть ссылка на статью Разработка драйверов для USB-устройств под Linux, где хорошо и просто, "на пальцах" рассказана логика обмена USB, и что такое есть end-point:
Приведенного там описания "на пальцах" достаточно для понимания того, что происходит в модемах).Спецификация USB определеят endpoint (EP), как источник или приемник данных. Устройство может иметь до 32 EP: 16 на прием и 16 на передачу. Обращение к тому или иному endpoint'у происходит по его адресу.
3. Раз аппаратное переключение устройства одинаково в любой ОС, то и вид байтовой последовательности, и EP куда её нужно засылать - всё это можно вытянуть из реализации Windows поддержки устройства, даже если производитель и не думал ни о каких других ОС. Как я понимаю, команда проекта usb_modeswitch именно так это и делает (совершенно невозможно представить каким бы другим способом это они могли делать). А раз так, то, в принципе, это может сделать каждый и сам.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Установка и настройка USB-модемов
4. (продолжение)Olej писал(а): А выглядит это в общем виде примерно так:
После этого нужно найти модуль ядра, который поддерживает данный модем.
Я видел модемы, поддерживаемые только 3-мя модулями:
- option - это наиболее часто, в большинстве случаев (создаёт только устройства /dev/ttyUSB*);
- cdc-acm - это, как я предполагаю, для самых старых моделей, и последние изменения в код модуля датированы 2011г. (создаёт только устройства /dev/ttyACM*);
- qcaux - а это, похоже, поддержка из самых новых моделей (?) (создаёт и устройства /dev/ttyUSB* и /dev/ttyACM* одновременно);
P.S. в man usb_modeswitch упоминается модуль поддержки: usbserial.
Обычно, после переключения устройства в режим модем, модуль должен подгрузиться автоматически (подсистемой udev)...
5. Конечно, можно напороться на совершенно новое или экзотическое устройство, для которого нет поддержки модулем вообще.
Но это относительно редкая вещь. Чаще у народа (как описывают) случай, когда модуль не находится:
Код: Выделить всё
bash-4.2$ modprobe -c | grep -i <VID> | grep <PID>
Код: Выделить всё
bash-4.2$ cd /lib/modules/`uname -r`
bash-4.2$ cat modules.alias
...
alias usb:v04D8p000Bd*dc*dsc*dp*ic*isc*ip* cdc_acm
alias usb:v0694pFF00d*dc*dsc*dp*ic*isc*ip* cdc_acm
alias usb:v03EBp0030d*dc*dsc*dp*ic*isc*ip* cdc_acm
alias usb:v04E7p6651d*dc*dsc*dp*ic02isc02ipFF* cdc_acm
alias usb:v0421p03CDd*dc*dsc*dp*ic02isc02ipFF* cdc_acm
alias usb:v0421p0335d*dc*dsc*dp*ic02isc02ipFF* cdc_acm
...
Тогда можно попытаться подгрузить модуль вручкую:
Код: Выделить всё
# modprobe option
7. К этому моменту возникают устройства /dev/ttyUSB* или/и /dev/ttyACM*
Теперь в большинстве случаев можно настроить подключение такого модема к провайдеру с помощью NetworkManager - множество примеров с картинками показывалось в этой теме раньше.
8. А что делать, если в настройках NetworkManager нет подходящей страны, провайдера в этой стране, нет каких-то дополнительных параметров? (в подавляющем большинстве случаев, если уж установка USB-модема произошла успешно, соединение с провайдером удаётся выполнить с помощью NetworkManager, но сообщается о моделях модемов, для которых так не получается сделать, см: viewtopic.php?f=5&t=1798&start=0#p4802).
В этом случае можно замечательно настроить соединение, используя классику - ручную настройку PPP: Подключение модемов напрямую через PPP при помощи скриптов.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Установка и настройка USB-модемов
Вот это место меня занимает:
Или:
А когда конструктора конкретного USB-модема для переключения закладывают другой EP, то тогда и появляется в конфигах (или в опциях см. выше):
Но это нужно бы проверить.
Из того же описания:Olej писал(а): 2. Эта картина совершенно одинаковая что в Windows, что в Linux, что в любой другой ОС. Это очень важно, потому, что если производитель конкретного USB-модема "затачивает" его исключительно под Windows, то даже и в этом случае он делает переключение к модему, посылая определённую байтовую последовательность на определённую USB end-point устройства;
(Про написание модулей-драйверов под USB я уже затевал здесь тему модуль/драйвер USB устройства, но руки не дошли пока развить её до нормального описания... Но там есть ссылка на статью Разработка драйверов для USB-устройств под Linux, где хорошо и просто, "на пальцах" рассказана логика обмена USB, и что такое есть end-point:
Могу предположить, что именно на EP0 и направляется то переключающее сообщение, которое определяется в конфигурационных файлах (или опциях):Endpoint No.0
EP0 имеет особое значение для USB. Это Control EP. Он должен быть в
каждом USB-устройстве. Этот EP использует token "setup", чтобы
сигнализировать, что данные, отправляемые после него, предназначены
для управления устройством.
Используя этот EP0, хост может передавать setup-пакет длиной 8 байт и
данные, которые следуют за этим пакетом. Во многих случаях может
хватать передачи только setup-пакета. Однако устройство может
использовать и передачу данных по EP0, например для смены прошивок
компонентов устройства, или получения расширенной информации об
устройстве.
Код: Выделить всё
MessageContent="5553424312345678000000000000061b000000020000000000000000000000"
Код: Выделить всё
bash-4.2$ usb_modeswitch -h
...
-m, --message-endpoint NUM direct the message transfer there (optional)
-M, --message-content <msg> message to send (hex number as string)
...
Код: Выделить всё
MessageEndPoint = "0x01"
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Установка и настройка USB-модемов
Это не совсем так:Olej писал(а):Но это нужно бы проверить.
Код: Выделить всё
bash-4.2$ man usb_modeswitch
...
-m --message-endpoint NUM
A specific endpoint to use for data transfers. Only for testing purposes; usually endpoints are determined from
the device attributes
-M --message-content STRING
A bulk message to send as a switching command. Provided as a hexadecimal string
...
Хотя понятно, что по типу передачи эта EP должна быть: bulk transfer.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Установка и настройка USB-модемов
Вот ещё публикация относительно переключения из моды ZeroCD в модем командой eject - Запуск GSM модема ZTE MF180 (под брендом "Kcell Connect") в среде Debian Linux Squeezedmitriev писал(а):Увы! Это не работает. Было бы слишком просто, чтобы никто не допер.
В модемах этой серии применяется технология "ZeroCD", суть которой заключается в том, что при подключении устройство сперва представляется как виртуальный "CD-диск", на котором находятся драйвера и сопутствующее программное обеспечение, а функционал модема становится доступен на втором этапе, когда виртуальному "CD-диску" отдаётся команда "извлечения" - контроллер устройства воспринимает это как сигнал для инициализации второго, основного, уровня функциональности, модема как такового.
В моём случае не понадобилось применения "usb_modeswitch" - оборудование отлично отработало "изъятие" виртуального "CD-диска" с помощью утилиты "eject", произвело смену режима с вещанием новых идентификаторов, которые корректно опозналось системой.
Ну, а после "извлечения" он рисует правила для udev, что достаточно понятно, и мы сами умеем это делать...Итак, "извлекаем" виртуальный "CD-диск", пока в ручном режиме:
# eject /dev/sr1
ZTE MF180 - это достаточно капризная модель, которая часто упоминается.
Т.е. использование eject - это не так редко используемая практика, которая срабатывает...
Интересно, для как многих моделей модемов она срабатывает?
И ещё интересно (для проверок и эксперимнтов): а какая бы команда могла быть обратной eject, чтобы переключить обратно в режим ZeroCD?
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Установка и настройка USB-модемов
dmitriev писал(а):Чтобы CD eject, его сперва нужно umount!
Код: Выделить всё
bash-4.2$ man eject
...
There are four different methods of ejecting, depending on whether the
device is a CD-ROM, SCSI device, removable floppy, or tape. By default
eject tries all four methods in order until it succeeds.
If the device is currently mounted, it is unmounted before ejecting.
Re: Установка и настройка USB-модемов
Немного не в тему. А с WiFi-свистками нет инфы про "потроха" их настройки в Линукс?
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Установка и настройка USB-модемов
1. делайте новую отдельную тему ... разберёмсяtundra37 писал(а):Немного не в тему. А с WiFi-свистками нет инфы про "потроха" их настройки в Линукс?
2. ... начиная с указания (URL) описания конкретных устройств, которые подключаете
3. ... и далее - проблемы, в чём там сложность?
Re: Установка и настройка USB-модемов
Доброго времени всем! Подскажите пож-та сталкивался ли кто с подключением USB модема связной (оператор Мегафон) на MEEGO? А то купил нетбук для инета, а подключить модем никак не могу.
P.S. Если возможно поподробнее, а то я с этой системой первый раз общаюсь.
P.S. Если возможно поподробнее, а то я с этой системой первый раз общаюсь.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 19 гостей