Нет. Прошивки от Vampika пересобирать не буду. Это чисто его творчество.
Если хотите можно взять мою с заменённым option.
Printable View
ну маки то я уж потер ;) ибо ща RTN тестю гыыы.... восстановим не велика беда :)....
PS "Маршрутизатор Dlink DIR-320 и 3G интернет, продолжение..... сделать интернет в загородном доме" вот это и привело меня к тому что ща опять мучаю коробочки :). ибо как качество связи упало в "загородном доме", так и полезли проблемы..... требующие решения
простите за офтоп.
Да, началась рабочая неделя вот и пропал.
Вчера вечером попробовал собрать прошивку с драйвером на замену option.o (от dlukanidin). Попутно пытаюсь разобраться в архитектуре usb-стека. Т.к. я совсем не системный программист, идет туго (если не сказать, что совсем не идет)...
Чтобы не править make конфиги, я просто скопировал modem.c -> option.c, в таблицу девайсов добавил новый идентификатор модем и собрал прошивку. Никаких изменений не обнаружил :( Все также стартуют option(подменный) и usbserial, символьное устройство не поднимается.
Вопрос 1. По коду modem.c я не понял, каким образом он зависит от usbserial? Все что делает, драйвер - это регистрирует таблицу девайсов в юсб-стеке? Каким образом "подтягивается" usbserial?
Вопрос 2. Все-таки непонятен алгоритм загрузки роутера. Когда грузятся драйвера модема, когда и как формируется файл для pppd и т.п. Понятно, что универсальный ответ - смотри исходники, но для этого нужно обладать довольно высокой квалификацией. К тому же, наверняка это информация вполне известна в узком кругу. Может как-нибудь ей поделиться? Есть же Wiki по проекту. Ну или, если это обсуждалось на форуме, ссылочку можно.
Вопрос 3. Из чтения прошлых обсуждений я так и не понял, почему отказались от режима загрузки только usbserial с параметрами (если они заданы) для конфигураций с одним модемом. Ведь не всем нужна поддержка двух модемов одновременно, а драйвер option, как видно, не всегда корректно работает. Кстати, он бэкпортирован из 2.6 чьими силами?
P.S.
Были сомнения, что мои изменения не попадают в прошивку, но я изменял строки с описанием драйверов - они в прошивке изменились.
Второе сомнение - пытался собрать прошивку в дебаг-режиме (в gateway/rc и gateway/shared в make-конфигах раскомментировал дебаг-строки), но почему-то дебаг режима не наблюдаю.
Отсылки на правильные ресурсы по изучению этих моментов также приветствуются.
# для компилирования отладочной прошивки
# Расскомментировать в shared/Makefile строку CFLAGS += -g -DDEBUG_TO_SYSLOG
# Расскомментировать в rc/Makefile строку CFLAGS += -g -DDEBUG -DDEBUG_TO_SYSLOG
Выложите пожалуйста полные логи (как написано в WIKI) на отладочной прошивке.
P.S. 3. usbserial с параметрами позволяет использовать только 1 модем. Поскольку медленно идём в сторону multiwan , то сделали возможной работу одновременно нескольких модемов через option. Поскольку действительно option портирован с ядра 2.6 и ВОЗМОЖНО не всегда корректно работает, а разбираться с ним непросто, я сделал его простейшую замену, которая ИМХО эквивалентна запуску usbserial с параметрами для нескольких модемов.
P.P.S. Проверьте мэйк файлы с отладочными изменениями после сборки, они у Вас случаем не перезаписываются ?
P.P.P.S. Положите также пожалуйста Вашу/мою исправленную версию option (гляну, а вдруг чего увижу).
такс, докладываю по тестам ветки RTN:
прошивка rtn-r2968M
модем ZTE-MF180
вариант 1 (с включенным CD) :(
1. usb_modeswitch вроде отработал (светик с красного переключился в зеленый), но! завис к чертям, и при вынимании модема так и висит в памяти, ребута USB не произошло, как следствие в устройствах только
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: ZTE Model: USB SCSI CD-ROM Rev: 2.31
Type: CD-ROM ANSI SCSI revision: 02
вариант 2. (с отключенным CD)
. AT+ZCDRUN=E удаляет файл NODOWNLOAD.FLG
. AT+ZCDRUN=8 удаляет файл autorun.flg
1. на одно serial устройство стало меньше:eek:
(если с CD)
0.ZTE Diagnostics Interface
1.ZTE NMEA Device
2.ZTE VoUSB Device
3.ZTE Proprietary USB Modem
(с отключенным CD)
0.ZTE Diagnostics Interface
1.ZTE NMEA Device
2.ZTE Proprietary USB Modem
2. модем прошивкой подхватился идеально
3. автовыбор "Data port" и "User interface port" отработал корректно
4. инет поднялся, и самое главное глюков с отвалом серийных портов не замечено!!! все работает.
логи прилагаю...
ЗЫ осталось потестить прошивку dlukanidin (но это уж позже, сил больше нет....), и не забыть добавить в вики все что по модему узнал. :)
RSS, спасибо за поддержку и понимание.
У меня DIR-320, на нем и буду ставить опыты.
Если возможно, пересоберите прошивку под него с учетом опыта А005,
и тезисно по пунктам, где смотреть мне дальше.
Т.е. ZeroCD побороли, ZTE MF 192 - модем определился системой и прописан в /dev, дальше идет скрипт dial, в котором происходит сбой.
Сегодня попробую поковырять руками еще раз, о результатах доложу.
DIR-320:перепробовал разные прошивки,не хочет работать с модемом ZTE MF-192.Взял у приятеля Huawey 1550-все работает,но его нужно отдать.Пожалуйста,помогите!
http://narod.ru/disk/12816585001/WL5...debug.trx.html
Естественно, Device initial script надо очистить.
В usb-стек вообще-то совершенно незачем влезать.
hotplug/storage -> rc -> usbmodem.c -> usb_modeswitch
hotplug/modem -> rc -> usbmodem.c -> drivers -> dial script
Некому было описать процесс.
бэкпортирован lly, о чём в файле и написано. С прямым присоединением по vid/pid были проблемы. Точнее может рассказать dlukanidin.
Включаемый в rc/Makefile режим отладочного вывода никоим образом не влияет на вывод отладочных сообщений драйверов или скриптов. Это только вывод dprintf в /rc
Еще раз собрал прошивку, модифицированные файлы и логи прикладываю.
Логи с момента подключения модема на загруженную систему.
Зарегистрироваться на wiki, прочитать первую страницу о правилах редактирования и предварительного просмотра, после чего самостоятельно поправить.
http://wiki.vectormm.net/
Давайте попробуем пойти по другому пути: http://comdor.livejournal.com/8333.html
Тогда надо отключить usb_modeswitch и прописать в Device initial script вызов eject с соответствующими параметрами.
Просьба предоставить Diagnostic info.
Пересобранный вариант с вырезанной командой переключения и включенным busybox eject: WL500gpv2-1.9.2.7-d-r2967-bb_ej-debug.trx
Уважаемый RSS, спасибо большое за сборку, которую Вы сделали и выложили, для ZTE MF 192. Сутки мучал девайсы, решение нашел. Правда, оно "кривое" - это не програмное решение, а "заплатка", однако, все работает в автономном режиме, а это мне и надо было.
Ваша версия прошивки определяет автоматом модем, и в веб-морде правильно прописаны параметры в секции 3G/CDMA Modem однако, чтобы в системе появилось /dev/usb/tts/0, надо вручную набрать из консоли:
rmmod option
rmmod usbserial
insmod usbserial vendor=0x19d2 product=0x1217
insmod option
после этого, система создает /dev/usb/tts/0
Далее, надо прописать это дело в /tmp/ppp/peers/wan0_pppd, потому, что там пустая строка стоит, ничего не вписано.
При этом, вот кусок лога pppd:Code:debug
/dev/usb/tts/0 <<<<==== этого нет !!!
921600
crtscts
noipdefault
ipcp-accept-local
lcp-echo-interval 60
lcp-echo-failure 6
mtu 1492
mru 1492
usepeerdns
noauth
holdoff 5
maxfail 0
nodetach
persist
unit 0
novj nobsdcomp novjccomp nopcomp noaccomp
user 'mts'
password 'mts'
connect "/tmp/ppp/peers/wan0_chat.sh"
после чего, если прописать порт ручками, через vi, все работает и pppd поднимается автоматом.Code:pppd: no device specified and stdin is not a tty
wan0_pppd exit code: 2, try to reconnect .
Я решил, что можно использовать ошибку при первом запуске для того, чтобы запустить свой скрипт, сделает все указанные выше действия автоматом. И это работает, вот что сделал:
1. в Веб-морде в секции 3G/CDMA modem указал имя скрипта, которое надо запустить при ошибке, поле Failure event script name:
/tmp/local/sbin/post-boot
2. заходим телнетом в консоль, далее все ручками делаем.
3. создаем подменный файл для wan0_pppd, вот такой путь
/usr/local/wan0_back, там будет жестко прописан порт /dev/usb/tts/0
создаем файл
touch /usr/local/wan0_back
Используем редактор vi, чтобы внести в него текст: vi /usr/local/wan0_back
4. создаем сам скрипт, который при ошибке сделает все манипуляции:Code:debug
/dev/usb/tts/0
921600
crtscts
noipdefault
ipcp-accept-local
lcp-echo-interval 60
lcp-echo-failure 6
mtu 1492
mru 1492
usepeerdns
noauth
holdoff 5
maxfail 0
nodetach
persist
unit 0
novj nobsdcomp novjccomp nopcomp noaccomp
user 'mts'
password 'mts'
connect "/tmp/ppp/peers/wan0_chat.sh"
mkdir -p /usr/local/sbin/
touch /usr/local/sbin/post-boot
chmod +x /usr/local/sbin/*
echo "#!/bin/sh" >> /usr/local/sbin/post-boot
echo "rmmod option" >> /usr/local/sbin/post-boot
echo "rmmod usbserial" >> /usr/local/sbin/post-boot
echo "insmod usbserial vendor=0x19d2 product=0x1217" >> /usr/local/sbin/post-boot
echo "insmod option" >> /usr/local/sbin/post-boot
echo "sleep 5" >> /usr/local/sbin/post-boot
echo "cp /usr/local/wan0_back /tmp/ppp/peers/wan0_pppd" >> /usr/local/sbin/post-boot
5. далее сохраняем изменения и перезагружаемся:
flashfs save && flashfs commit && flashfs enable && reboot
Таким образом, при возникновении ошибки связи, будет вызван скрипт post-boot который сделает видимым /dev/usb/tts/0, и скопирует наш файл для pppd, в котором прописан этот порт.
При перезагрузке роутера, он сам поднимает связь по модему, что и требовалось сделать. Прошу прощения, что решение такое топорное, однако, на моем уровне понимания - это то, что я смог сделать. И оно работает.
syslog полной работы с момента запуска - прилагаю.
00:28 - момент, когда запущен скрипт post-boot
Не то. Проблема со скриптом дозвона заключается в том, что модем в системе есть, а связи с портом ttyS нет. Она появляется, когда подцепляется драйвер.
Обходной вариант - прописать в post-boot задержку до момента определения модема (секунд 30. плохо, но в качестве отладки сойдёт), отключение WAN, переподключение драйверов, затем включение WAN, и тогда уже скрипт дозвона получит реальный порт модема.
См. http://wiki.vectormm.net/index.php/У...дключением_WAN
Но всё это полумеры. Надо разобраться в первопричинах, почему стандартные для модемов драйверы с этим устройством не работают.
rss, mk-echo
а может проблема имеет общие корни, с тем с чем я бился на днях?
у меня связь с портом пропадала наглухо, при повторном обращении к нему!. при первом обращении все работало.
кстати еще одно наблюдение:
пропадал именно прием с устройства!, роутер умудрялся сделать "дозвон", поднять соединение.... модем честно мигал светиком показывая что поднято соединение с инет.... но скрипт кричал ошибка 0х3 (нет ответа).
mk-echo попробуй прошивку RTN, и (или) очень древнюю из -d ветки.
ЗЫ у меня сейчас работают только
-d-r1897M и ниже (может и выше но не сильно новая!)
и
-rtn-r2968M
Огромное спасибо всем участникам обсуждения!
Решил проблему с подключением MF192 от МТС - с помощью прошивки от RSS и методом научного тыка. Насколько понимаю, по сути это тот же метод, что и у mk-echo в посте 682, но (по крайней мере для меня) проще получилось сделать иначе.
Алгоритм получился такой:
1. Залил прошивку:
2. В веб-морде в настройках 3G-модема указал:
- "Set as WAN Connection Type by default" - нет
- "Zero CD Configuration" - нет
- "Modem type" - "user defined
Цель указанных опций - пресечь попытки подключения штатными средствами прошивки. Остальные настройки, как я понимаю, роли не играют, т.к. прописаны в содержимом /ppp/ заливаемого на шаге 3 файла.
3. Залил файл flashfs. Содержимое файла собрал по результатам осмысления этой и соседних веток. Добавлен скрипт post-boot и скрипт подключения.
4. Перегружаю модем, модем подцепляется и соединяется с интернетом без дополнительных телодвижений. Сейчас пишу с него. :)
Буду благодарен, если гуру причешут решение, придав ему человеческий вид. Хотя и в таком виде оно легко воспроизводимо для неподготовленного человека (типа меня).
RTN-2968.
http://wl500g.info/showpost.php?p=231378&postcount=82
D-
http://vampik.ru/proshivka-dlya-d-link-dir-320/
PS
-D
тестил обе, результат схож. :(.
DIR320-1.9.2.7-d-r2889M.trx
DIR320-1.9.2.7-d-r2624M.trx
Попробовать можно. Однако, надо иметь ввиду, что этот способ был успешен на ядре 2.6, где используется драйвер cdc_acm. Я его, кстати, пробовал в самом начале пути на убунте 10.10, отличия от использования usb_modeswitch в том, что устройство обнаруживается с другим pid=1218 (такого устройства в драйверах windows даже не прописано, поэтому я решил, что это не академично :) ).
Пока же я продолжил двигаться в том же направлении. Т.е. я все-таки предлагаю вернуться к варианту, по которому в настройках можно было бы выбрать какие драйвера для модема грузить - usbserial или usbserial && option. Как вариант, если стоит галочка "автоопределение модема", то пусть грузится драйвер option, если явно заданы vid && pid, то пусть грузится 'usbserial vedrod=vid product=pid'. Тут надо подумать как это все стыкуется с "мультимодемностью" и есть ли еще другие причины грузить option.
Сейчас я проделал следующие изменения в прошивке - с модемом ZTE MF192 работает:
/usr/ppp/dial - возможность загрузки только usbserial (возможно, этот код никогда не работает, т.к. драйвера загружаются в usbmodem.c; возможно, условие загрузки драйвера выбрано неверно)
/usr/ppp/dial - функция check_usb_config неправильно заполняет $usbdev, пришлось закоментировать код, используемый в мультимодемных конфигурацияхCode:load_drivers(){
if [ "$(lsmod | grep $acm_module)" = "" ]; then
if [ "$kernel" = "2.4" ]; then
insmod $acm_module $maxpacket_size
else
insmod $acm_module
fi
fi
if [ "$(lsmod | grep 'usbserial')" = "" ]; then
if [ "$(nvram get wan_modem_vid)" = "" -o "$(nvram get wan_modem_pid)" = "" ]; then
insmod usbserial
insmod option
else
insmod usbserial vendor=$(nvram get wan_modem_vid) product=$(nvram get wan_modem_pid) $maxpacket
fi
usbmodem.c - возможность загрузки только usbserial с параметрами, если не выбрана автоконфигурация модема(ов). Возможно, стоит придумать другой флаг, по которому выбирается какие драйвера грузить.Code:check_usb_config(){
...
usbdev="${tts_port_path}0"
# for i in $(seq $number_of_modems); do
# name=modem_$i
# eval modem=\$$name
# loc=$(echo -n $modem | cut -d: -f7)
# vid=$(echo -n $modem | cut -d: -f2)
# pid=$(echo -n $modem | cut -d: -f3)
# if [ "0x$vid" == "$nv_vid" ] && [ "0x$pid" == "$nv_pid" ]; then
# if [ "$loc" == "$nv_loc" ] || [ "$auto" == "1" ]; then
# loc="${nv_loc}.${dataport}"
# usbdev=$(grep ": $loc :" "$devpath_name" | awk -F':' '{print $1}')
# loc="${nv_loc}.${uiport}"
# uidev=$(grep ": $loc :" "$devpath_name" | awk -F':' '{print $1}')
# nvram set "${set_pref}port_ui=$uidev"
# break;
# fi
# fi
# done
Если данный подход будет признан приемлемым, то, как я понимаю, надо отлаживать функцию check_usb_config().Code:if( ret && found_dev ){
nvram_set(strcat_r(prefix, "usb_device_name", tmp), found_dev->prod );
//todo: choose proper flag for use option.o or don't
if(autodetect == 0) {
sprintf(stored_product,"vendor=0x%04x product=0x%04x",found_dev->vid,found_dev->pid);
dprintf("found custom modem %s, use 'insmod usbserial %s'",found_dev->prod, stored_product);
eval("insmod", "usbserial %s",stored_product);
} else {
dprintf("found autodetect modem %s, use 'insmod usbserial && insmod option'",found_dev->prod);
eval("insmod", "usbserial");
eval("insmod", "option");
}
#ifndef LINUX26
eval("insmod", "acm");
#else
eval("insmod", "cdc-acm");
#endif
}
free_dev_list(list);
dprintf("done. ret %d", ret);
return ret;
По логу наблюдаю повторение одних и тех же действий несколько раз, хотелось бы понять почему?
Измененные файлы и кусочек лога прикладываю.
Уважаемые,
Я тоже пробовал запустить MF 192 на ядре 2.6 (прошивка rtn, номер 2196М, взято из http://wiki.vectormm.net/index.php/Airplus_MCD-800) - подтверждаю, что ручными манипуляциями с usb_modeswitch мне удалось добиться появления модема в веб-морде, три устройства ACM,
однако с такими параметрами, Vid = 0x19d2 , Pid = 0x1218 (что отличается от рабочего значения модема в винде = 0x1217). Поэтому, на ядре 2.6 дальше пробовать я не стал.
Сам удивляюсь, почему при выполнении этого кода переменная usbdev получается пустая (при закомментировании, в моем случае все работает, как задумано "по-умолчанию" usbdev="${tts_port_path}0"). Отлаживать sh-скрипты не умею, поэтому для начала просто закомментировал.
Code:#lsmodem
0:19d2:1217:W:0:8:1:ZTE:MF192
Code:#cat /proc/bus/usb/devpath
Device : Location : Info
/dev/usb/tts/0 : 1.1 : Manufacturer="ZTE" : Product="MF192"
Code:# cat /proc/bus/usb/devices
T: Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 4
B: Alloc= 0/800 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS= 8 #Cfgs= 1
P: Vendor=0000 ProdID=0000 Rev= 2.04
S: Manufacturer=Linux 2.4.37.11 ehci_hcd
S: Product=PCI device 1106:3104
S: SerialNumber=01:03.2
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=256ms
T: Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 3 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=ef(unk. ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=19d2 ProdID=1217 Rev= 0.01
S: Manufacturer=ZTE
S: Product=MF192
S: SerialNumber=032670C9DD6E9D43AAAB715FD979998857D5C33D
C:* #Ifs=11 Cfg#= 1 Atr=a0 MxPwr=500mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=(none)
E: Ad=81(I) Atr=03(Int.) MxPS= 64 Ivl=2ms
I: If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=serial
E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I: If#= 2 Alt= 0 #EPs= 0 Cls=02(comm.) Sub=0b Prot=00 Driver=(none)
I: If#= 3 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=(none)
I: If#= 3 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=(none)
E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I: If#= 4 Alt= 0 #EPs= 0 Cls=02(comm.) Sub=0b Prot=00 Driver=(none)
I: If#= 5 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=(none)
I: If#= 5 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=(none)
E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I: If#= 6 Alt= 0 #EPs= 0 Cls=02(comm.) Sub=0b Prot=00 Driver=(none)
I: If#= 7 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=(none)
I: If#= 7 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=(none)
E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I: If#= 8 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=(none)
E: Ad=86(I) Atr=03(Int.) MxPS= 64 Ivl=2ms
I: If#= 9 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=(none)
I: If#= 9 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=(none)
E: Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I: If#=10 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E: Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2
B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 1.00 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0000 ProdID=0000 Rev= 0.00
S: Product=USB UHCI Root Hub
S: SerialNumber=120
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=255ms
T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2
B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 1.00 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0000 ProdID=0000 Rev= 0.00
S: Product=USB UHCI Root Hub
S: SerialNumber=100
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=255ms
Тут дело не в ядре, в комане переключения, которая посылается в модем.
Их есть несколько разных видов, одна из которых
эквивалента "eject" приводит к появлению устройства 0х1218,Code:5553424312345678000000000000061b000000020000000000000000000000
другая
которую, надеюсь, я правильно "заснифил" приводит к появлению устройства 0х1217, такого же как в виндовс.Code:5553424308EB1D8400000000000010FF000000000000000000000000000000
Обе команды работают одинаково на обоих ядрах. И кажется, к дальнейшим проблемам с модемом особого отношения не имеют.Поправка: при переключении на устройство 0х1218 поднимается драйвер acm и устройства /dev/usb/acm/0...3, при переключении на устроство 0х1217 поднимается драйвер usbserial (только с явным указанием параметров) и одно устройство /dev/usb/tts/0.
Чтобы правильно работал скрипт надо изменить дата порт на 1, лучше всего добавив устройство 19d2:1217 в базу модемов.
Но вообще то это устройство acm и должно подниматься драйвером acm. Может попробовать его подредактировать ? Сделал бы сам, но без устройства на руках - бессмысленно.
Кстати ui порт в такой конфигурации отсутствует.
Что имеется ввиду? Что среди интерфейсов usb-устройства нет ни одного, похожего на ui-порт? Или "нужный" интерфейс не связан ни с одним драйвером?
По ошибке скрипта dial, как я понял, devpath сообщает, что модем находится на usb 1.1 (т.е на 1-м порту, что так и есть), а loc="${nv_loc}.${dataport}", говорит о 1.0 (т.е. на 0-м порту).
$dataport берется из nvram, куда информация, видимо, попадает по результатам работы lsmodem.
Хотелось бы, чтобы lsmodem работал правильно, даже если устройство отсутствует в базе модемов. Поэтому, я бы пока воздержался добавлять MF192 в базу модемов. Может lsmodem как-то должен информацию брать из devpath, чтобы они друг-другу не противоречили?
Порт можно указать в морде. И вообще большая часть того, что есть в nvram задаётся именно в морде, которая для этого собственно и предназначена.
Пока нет алгоритма правильного определения портов (одни догадки, которые уже реализованы) и возможно, что его и нельзя создать. Именно для этого и предназначена база lsmodem.
lsmodem не может брать инфо из devpath, т.к. последняя формируется после поднятия драйвером портов, в процедуре которая использует функции lsmodem. Информация из этих источников не противоречива, просто lsmodem предназначен для получения именно списка модемов. А как в этих модемах назначены порты определяет по большому счёту производитель модема. Известные нам определения занесены в базу.
Добавлять в базу может и вправду рано, пока не разобрались с acm.
По поводу ui - я имел в виду, что при ИМХО некорректном поднятии порта через usbserial, поднимается только один дата порт. Его конечно можно использовать для получения инфо о модеме, но только пока не установлена связь с провайдером, что конечно не очень удобно.
Имеется 500gpV2 с прошивкой 1.9.2.7-rtn-r2968
В верхний USB воткнут модем, а в модем Micro-SD flash. Во второй USB подключена веб-камера.
Плюс, установлен скрипт "Для Чайников..." с минимальным набором программ (мне нужен только джентельменски набор mc, ipkg)
Странность заключается вот в чем. После включения роутера в сеть не стартуют все сервисы, которые ожидаются, см. первый лог после старта.
Но после перезагрузки роутера через панель все замечательно стартует, см. второй лог после рестарта роутера.
Есть предположение, что не монтируется micro-SD. Рассчитываю на Вашу помощь в борьбе с этой или другой бедой.
Может быть дело в прошивке? Я готов сменить. Мне важна работа веб-камеры и USB-модема. Воткнул в розетку и порядок, все сервисы поднялись.
Скорее всего дело в том, что при включении питания модему-составному устройству нужно значительно больше времени на инициализацию.
Совет не совсем корректный, зато правильный - поставьте активный хаб и воткните отдельную флэшку для софта. И работать всё будет и блок питания роутера не перенапрягается и непонятных зависаний скорее всего не будет.
Заметил также, что при включении питания у Вас option грузится раньше, чем usbserial, что совсем странно. Проверяйте подробно все скрипты.
у меня на rtn-r2968M такая-же фигня..... а при включении питания бывает что вообще usbserial не стартует, как следствие все в логе чисто, USB устройство есть, а портов нет :(. reboot на горячую иногда помогает, передернуть модем на трогая роутер- помогает всегда.... такое ощущение что прошивка загружается быстрее чем модем успеет инициализироваться. иль чего с хотплугом не то :(.
вот лог: (по включению питания модем не проинициализировался..... передернул модем не выключая роутер все подхватывается)
ЗЫ вручную вроде все подымается, осталось дозвон запустить....
вот так после включения питания и подьема usbserial вручную. :(
и лог:Code:[admin@(none) root]$ lsmod
Module Size Used by Tainted: P
usb_storage 87904 0
sd_mod 24544 0
scsi_mod 97536 2 usb_storage,sd_mod
ohci_hcd 21136 0
ehci_hcd 41808 0
usbcore 145344 4 usb_storage,ohci_hcd,ehci_hcd
nf_nat_ftp 2368 0
nf_conntrack_ftp 7616 1 nf_nat_ftp
wl 2009664 0
et 57824 0
igs 17584 1 wl
emf 21440 2 wl,igs
[admin@(none) root]$ cat /proc/bus/usb/devices
.....
T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=19d2 ProdID=0016 Rev= 0.00
S: Manufacturer=ZTE,Incorporated
S: Product=ZTE WCDMA Technologies MSM
C:* #Ifs= 3 Cfg#= 1 Atr=e0 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E: Ad=83(I) Atr=03(Int.) MxPS= 64 Ivl=2ms
E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
[admin@(none) root]$ insmod usbserial vendor=0x19d2 product=0x0016
[admin@(none) root]$ insmod option
[admin@(none) root]$ lsmod
Module Size Used by Tainted: P
option 20240 0
usbserial 32672 1 option
usb_storage 87904 0
sd_mod 24544 0
scsi_mod 97536 2 usb_storage,sd_mod
ohci_hcd 21136 0
ehci_hcd 41808 0
usbcore 145344 6 option,usbserial,usb_storage,ohci_hcd,ehci_hcd
nf_nat_ftp 2368 0
nf_conntrack_ftp 7616 1 nf_nat_ftp
wl 2009664 0
et 57824 0
igs 17584 1 wl
emf 21440 2 wl,igs
[admin@(none) root]$ ls /tmp/ppp/peers/
[admin@(none) root]$
(кнопка connect не срабатывает в морде :(.) //уже морально готовлю себя что придется скрипт костыль в автозагрузку писать для ручного подьема соединения :(., ибо основное требование: ppp должен быть поднят всегда независимо от сбоев питания и магнитных бурь на марсе
ЗЫ после загрузки на холодную, когда порты не подняты, если ручками запустить /usr/ppp/dial wan0_ то вся мягко и пушисто :) и даже в правильной последовательности грузятся usbserial и option.