Сайт | Скачать | Видео | Wiki

Автор Тема: Пишем udev.rules для autorun3Gmodem  (Прочитано 16991 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Пишем udev.rules для autorun3Gmodem
« : 17 Январь 2013, 10:12:08 »
 Пакет autorun3Gmodem содержит скрипт запуска модема /lib/udev/wvdial.sh (вариант не окончательный, нужна доработка), скрипт /usr/bin/balanceGUI (графическая оболочка для формирования USSD-запроса), бинарник /usr/bin/ussd (отправляет запрос и расшифровывает ответ) и правила udev для модемов /lib/udev/rules.d/10-Huawei-Datacard.rules, /lib/udev/rules.d/10-ZTE-Datacard.rules.
 Для использования других модемов нужно написать соответствующие правила. Пример для ZTE MF100:
Код
#ZTE MF100
SUBSYSTEMS=="usb", ATTRS{modalias}=="usb:v19D2p0031*", KERNEL=="ttyUSB*", ATTRS{bInterfaceNumber}=="00", ATTRS{bInterfaceProtocol}=="ff", SYMLINK="ttyUSB_utps_diag"
SUBSYSTEMS=="usb", ATTRS{modalias}=="usb:v19D2p0031*", KERNEL=="ttyUSB*", ATTRS{bInterfaceNumber}=="01", ATTRS{bInterfaceProtocol}=="ff", SYMLINK="ttyUSB_utps_pcui"
SUBSYSTEMS=="usb", ATTRS{modalias}=="usb:v19D2p0031*", KERNEL=="ttyUSB*", ATTRS{bInterfaceNumber}=="02", ATTRS{bInterfaceProtocol}=="ff", SYMLINK="ttyUSB_utps_modem", SYMLINK+="modem", RUN+="wvdial.sh"
Здесь ATTRS{modalias} содержит v19D2 и p0031 (vendor и product, можно посмотреть lsusb)
ATTRS{bInterfaceNumber} - номер интерфейса, например ttyUSB0
SYMLINK - для совместимости с MobilePartner и для определения управляющего порта в balanceGUI..
RUN+ добавляется к строке порта модема (для ZTE ttyUSB2)
 Подробную информацию можне получить командой
Код
udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSB0) 
Так же опрашиваются USB1, USB2 ....
Для других модемов поребуется так же доработать balanceGUI, добавить названия модемов, выводимые командой ATI.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн rodin.s

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1179
  • Репутация: +96/-0
Re:Пишем udev.rules для autorun3Gmodem
« Ответ #1 : 17 Январь 2013, 12:41:24 »
Не хотелось бы вмешиваться в разработку PuppyRus и давать какие-то рекомендации, но я пробовал несколько абсолютно разных 3G-модемов на сборках от Wary-5.1.2 до Precise-5.4.3 и все модемы, кроме одного, определились и работали. Я не знаю механизмов определения модемов в Puppy, но не думаю, что там есть правила udev для всех этих модемов. Я пробовал MF100, E1550, Cricket A600, какой-то Verizone, забыл модель - CDMA и UMTS+EDGE+GPRS в одном и какой-то Spirit-CDMA, также не знаю модели. Тот, который не сработал - белый квадратный ZTE, который подключался к USB через кабель, но я пробовал его на Wary-5.1.2, возможно на последних сборках он бы и сработал. Проблема Линукс в том, что здесь драйвера и приложения разделены. Драйвера пишут одни люди, а пользовательские приложения - другие. В Windows всё идёт одним комплектом от разработчика. Например, мне нужно было принудительно загнать этот Verizone в GPRS-EDGE-режим. Мне пришлось идти в Windows, устанавливать программу и там есть окошко, которое это переключает. После этого в Puppy он прекрасно работает, а вот найти команду для Линукс, чтобы это сделать я не смог.
Мне кажется, писать отдельное правило для каждого модема на этой планете - не очень хорошая идея, ведь уже есть usb-modeswitch, в котором уже есть список модемов.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re:Пишем udev.rules для autorun3Gmodem
« Ответ #2 : 17 Январь 2013, 21:05:30 »
Мне кажется, писать отдельное правило для каждого модема на этой планете - не очень хорошая идея, ведь уже есть usb-modeswitch, в котором уже есть список модемов.
Если бы всё было так просто. Во первых модем определяется не как одно устройство, а как несколько (в windows кстати тоже) и требуется определить именно модем, а не вход для AT-команд (кстати wvdialconf неправильно определяет модем ZTE путая именно этот вход с модемом, он USB1 а модем USB2, помогает линк /dev/modem). Во вторых, модем может быть переключен в режим "только модем", тогда usb_modeswich не нужен, да и определяется модем в таком случае по другому (product другой и количество устройств модет отличаться) Разрулить это всё может только udev (ИМХО). Поэтому придётся писать и проверять. Написать правила "чисто теоретически" на основе usb_modeswich можно, но где гарантия их работоспособности?
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн rodin.s

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1179
  • Репутация: +96/-0
Re:Пишем udev.rules для autorun3Gmodem
« Ответ #3 : 17 Январь 2013, 22:31:48 »
Сейчас быстро просмотрел udev-rules для Precise. Несколько я понял, здесь правила написаны для трёх модемов: двух из них нет в списке usb-modeswitch, а третий - это модем Барри. Моих модемов (Huawei E1550 и Cricket A600) в правилах нет, но ведь они определяются. Е1550 в режиме "только модем" (правда давно его так не использовал) вообще не запускает механизм usb-modeswitch, просто определяется ядром (в dmesg) без всяких особых правил, а pupdial потом находит нужное устройство для дозвона.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re:Пишем udev.rules для autorun3Gmodem
« Ответ #4 : 18 Январь 2013, 11:02:09 »
а pupdial потом находит нужное устройство для дозвона.
Бегло просмотрел скрипт pupdial и сопутствующиe ему modemtest. и modemprobe. И вы считаете что это изящнее правил udev? К тому же udev подключает модем прописанный в правилах автоматически без предварительной настройки, чего я собственно и добиваюсь ради удобства "блондинов и блондинок".
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн shelezyaka

  • Ветеран
  • *****
  • Сообщений: 814
  • Репутация: +39/-0
Re:Пишем udev.rules для autorun3Gmodem
« Ответ #5 : 18 Январь 2013, 16:57:38 »
К тому же udev подключает модем прописанный в правилах автоматически без предварительной настройки, чего я собственно и добиваюсь ради удобства "блондинов и блондинок".
DdShurick , вот на Украине два оператора Интертелеком и Пиплнет (в моей местности их преимущественно используют,конечно есть и другие ) используют одно и то же оборудование, т.е. модемы.
Номер дозвона один и тот же  "  #777 " , а вот строки пароля и логина у них разные.Причём модемы безкарточные,и в прошивках нигде не записаны эти данные ,их нужно вводить ручками.
И как в таком случае получить автоматизацию подключения , предварительно не настроенного модема ?
Стоит ли заморачиваться.
Intel(R) Xeon(R) CPU E5-2630 v2 , GeForce GTX 560  ,  16Gb DDR3 ,  HDD - 160 Gb  SSD  250 Gb
Acer Aspire One D270-26Сkk Intel Atom N2800 1.86GHz 2Gb DDR3  HDD - 720 Gb

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re:Пишем udev.rules для autorun3Gmodem
« Ответ #6 : 18 Январь 2013, 20:26:13 »
Стоит ли заморачиваться.
Моё дело - предложить, ваше - отказаться. У меня работает.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн rodin.s

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1179
  • Репутация: +96/-0
Re:Пишем udev.rules для autorun3Gmodem
« Ответ #7 : 18 Январь 2013, 20:33:41 »
Проблема в том, что если операционная система будет поддерживать только те модемы, которые прописаны в правилах, то это ограничивает её применение, а pupdial Puppy у меня работает и модемы определяет и кого волнует изящность.
Сделайте какой-нибудь udevRulesMaker, который бы создавал такое правило для конкретного модема пользователя, если пользователь захочет автоматического подключения к сети при подключении модема. 
« Последнее редактирование: 18 Январь 2013, 20:50:19 от rodin.s »

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re:Пишем udev.rules для autorun3Gmodem
« Ответ #8 : 21 Январь 2013, 01:07:13 »
Номер дозвона один и тот же  "  #777 " , а вот строки пароля и логина у них разные.
Разные для каждого пользователя или провайдера?
Причём модемы безкарточные,и в прошивках нигде не записаны эти данные ,их нужно вводить ручками.
Что говорит "modem-stats -c AT+COPS?" ?
И как в таком случае получить автоматизацию подключения , предварительно не настроенного модема ?
Зависит от ответа на первый вопрос.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн shelezyaka

  • Ветеран
  • *****
  • Сообщений: 814
  • Репутация: +39/-0
Re:Пишем udev.rules для autorun3Gmodem
« Ответ #9 : 21 Январь 2013, 02:55:02 »
Номер дозвона один и тот же  "  #777 " , а вот строки пароля и логина у них разные.
Разные для каждого пользователя или провайдера?
Для любых номеров Интертелекома  - логин  - IT   , пароль  - IT .
Для Пиплнета , логин  -   92хххххххх@people.net.ua (где 92ххххххх - номер телефона) , пароль по умолчанию изначально - 000000 , далее меняется и держится у них на сервере.
Cтандарт связи CDMA 2000 , ussd запросы не поддерживаются.
Причём модемы безкарточные,и в прошивках нигде не записаны эти данные ,их нужно вводить ручками.
Что говорит "modem-stats -c AT+COPS?" ?
Пустая строка....
P.S. Но на это ориентироваться нечего , у меня модем особый.
Модемная часть USB0,а управление USB2.
По USB2 выдаёт -  "+ZCONV :7  RSSI :90,75  "
rodin.s посмотри пожалуйста  у себя как отзывается , у тебя модем "нормальный"
« Последнее редактирование: 21 Январь 2013, 03:07:20 от shelezyaka »
Intel(R) Xeon(R) CPU E5-2630 v2 , GeForce GTX 560  ,  16Gb DDR3 ,  HDD - 160 Gb  SSD  250 Gb
Acer Aspire One D270-26Сkk Intel Atom N2800 1.86GHz 2Gb DDR3  HDD - 720 Gb

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re:Пишем udev.rules для autorun3Gmodem
« Ответ #10 : 21 Январь 2013, 10:26:02 »
Для Пиплнета , логин  -   92хххххххх@people.net.ua (где 92ххххххх - номер телефона) , пароль по умолчанию изначально - 000000 , далее меняется и держится у них на сервере.
Да, вот это без предварительной настройки никак не получится.
Cтандарт связи CDMA 2000 , ussd запросы не поддерживаются.
ussd не поддерживается это плохо
Но на это ориентироваться нечего , у меня модем особый.
Модемная часть USB0,а управление USB2.
У меня Huawei 150 определяется точно так же, так что никакой не особенный. Из-за этого и пришлось использовать udev, не получается отличить модем от управления.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн rodin.s

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1179
  • Репутация: +96/-0
Re:Пишем udev.rules для autorun3Gmodem
« Ответ #11 : 21 Январь 2013, 13:07:06 »
Код
modem-stats -c AT+COPS? /dev/ttyACM0
на CDMA-модеме выдаёт ошибку.
Скорее всего - это GSM-команда и на CDMA не работает. Вообще, какие-то команды работают, а какие-то - нет. Например, можно посмотреть уровень сигнала при помощи AT+CSQ.

Оффлайн shelezyaka

  • Ветеран
  • *****
  • Сообщений: 814
  • Репутация: +39/-0
Re:Пишем udev.rules для autorun3Gmodem
« Ответ #12 : 22 Январь 2013, 01:21:36 »
Например, можно посмотреть уровень сигнала при помощи AT+CSQ.
Как обычно , делаем одно а получается другое. :D
Кто использует conky , добавьте в скрипт строку :
Код
Уровень сигнала  ${color1} ${exec (expr $(expr $(echo $(modem-stats -c AT+CSQ /dev/ttyUSB2) | grep -o '[0-9]*' | head -n 1) \* 2) \- 113)}$color  Db
и получите уровень сигнала в децибелах.Вместо /dev/ttyUSB2 укажите свой порт управления.
Intel(R) Xeon(R) CPU E5-2630 v2 , GeForce GTX 560  ,  16Gb DDR3 ,  HDD - 160 Gb  SSD  250 Gb
Acer Aspire One D270-26Сkk Intel Atom N2800 1.86GHz 2Gb DDR3  HDD - 720 Gb

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re:Пишем udev.rules для autorun3Gmodem
« Ответ #13 : 27 Январь 2013, 19:39:17 »
 Просьба дать вывод следующей команды:
Код
udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSBx) | grep '{bNumEndpoints}' 
где x=0, 1, 2 и если есть 3.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн shelezyaka

  • Ветеран
  • *****
  • Сообщений: 814
  • Репутация: +39/-0
Re:Пишем udev.rules для autorun3Gmodem
« Ответ #14 : 28 Январь 2013, 20:32:39 »
Ответ на команду
ATTRS{bNumEndpoints}=="02"
Intel(R) Xeon(R) CPU E5-2630 v2 , GeForce GTX 560  ,  16Gb DDR3 ,  HDD - 160 Gb  SSD  250 Gb
Acer Aspire One D270-26Сkk Intel Atom N2800 1.86GHz 2Gb DDR3  HDD - 720 Gb