r2985 - добавлена поддержка прямого подключения usbserial. Попутно нашёл и устранил причины, почему отсутствовало указание устройства в wan0_pppd.
Ждём окончательных результатов по конфигурации для usb_modeswitch.
Printable View
Имеется 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.
dlukanidin, благодарю за совет. Были предположения, когда ставил все это дело на отдельную флушку (не модемную). И камера работала и все было ок!
Virtuals, что-то подобное и у меня было на DIR-320 c энтузиастской прошивкой. Модем не когда поднимется, когда не поднимется вовсе. Connect ни чем не помогал. Стал откатываться на предыдущие версии помятую что какая-то версия была вполне стабильная. И о чудо на одной из не очень старых версий все стабильно! Даже более чем.
Если это похоже на Вашу ситуацию подскажу, свою спасительную версию.
Попробовал из роутера вытащить камеру, что бы не блага на себя лишнее питание, хотя она все равно еще не работала, т.к. не светились даже индикаторы на ней, но это отдельная тема (с этим я уже знаю что делать :)
Кажется мало что изменилось по логам. Выкладываю.
Рецепт прежний? Внешнее питание? Может быть еще идеи есть? ;)
я уже нашел стабильные версии, из -d ветки (несколько страниц назад, этой темы)
на данный момент хочу разобратся где глюки в RTN ветке..... а для себя уже нашел решения..... но понять где затык то нужно :)...
ЗЫ на данный момент по какой-то причине /usr/ppp/dial не стартует в автомате!., если его при нестарте, запустить ручками или скриптом, то все стабильно даже более чем.
По поводу причины отсутствия устройства в wan0_pppd, вроде бы dlukanidin все правильно сказал, дело в неправильном указании data-порта в вебморде. Другими словамив строке "/dev/usb/tts/0 : 1.1 : Manufacturer="ZTE" : Product="MF192"" искал вхождение строки ": 1.0 :", что и приводило к ошибке. Поэтому мне непонятно, что дает замена ": $loc :" на ": $loc".Code:loc="${nv_loc}.${dataport}"
usbdev=$(grep ": $loc :" "$devpath_name" | awk -F':' '{print $1}')
Может лучше сделать так (с учетом того, что usbdev имеет значение по-умолчанию):
Заставить работать модем через acm пока не получилось. Драйвер поднимается, символьные устройства /dev/usb/acm/0 ... 3 появляются, скрипт dial завершается с ошибкой.Code:tmpdev=$(grep ": $loc :" "$devpath_name" | awk -F':' '{print $1}')
if[-n tmpdev] ; then
usbdev=tmpdev
fi
Возможно, опять проблемы с неправильным переключением устройства в режим модема...Эксперименты будут продолжены. Поэтому пока не готов предложить правильные команды переключения модема для usb_modeswitch :(
Хочу попробовать переключить его командой eject. Для этого прошу научить добавлять ее в busybox, или (если это сложно) собрать прошивку с этой командой для wl500gp (ранее выкладывалась прошивка для wl500gpv2, если я ничего не путаю).
Еще отвлеченный вопрос, зачем в usbmodem.c на 691строке использовать три подряд sprintf, хотя на мой взгляд достаточно было бы одного (да и переменную tmp2 можно было бы сэкономить)? :)
Согласен, мой краткий коммент в профильной ветке.
Попробуйте порты отличные от 0 в качестве дата порта. ZTE на других модемах обычно как ui port выбирал 0-й а как дата предпоследний.Quote:
Заставить работать модем через acm пока не получилось. Драйвер поднимается, символьные устройства /dev/usb/acm/0 ... 3 появляются, скрипт dial завершается с ошибкой.
P.S. Вместо tmpdev ИМХО достаточно добавить сообщение - Неправильно указан дата порт (не существует) в ppp log.
http://wl500g.info/showpost.php?p=231769&postcount=1131
busybox/.config + make oldconfig там же.
Можно, но пришлось бы делить tmp на подстроки с явным указанием смещения. См. реализацию eval.
Итак...
с командой eject ничего не получилось., пишет "Inappropriate ioctl for device". Может дейвас не тот, ну да ладно...
Пробовал с usb_modeswitch, с командой-аналогом "eject", общей для многих модемов ZTE (раньше я ее приводил).
в логе появляется пугающая строчка (последняя):Code:#cat /proc/bus/usb/devpath
Device : Location : Info
/dev/usb/acm/0 : 1.0
/dev/usb/acm/1 : 1.0
/dev/usb/acm/2 : 1.0
/dev/usb/acm/3 : 1.0
#lsmodem
0:19d2:1218:W:0:0:1:(null):(null)
#cat /proc/bus/usb/devices
T: Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 4 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=02(comm.) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=19d2 ProdID=1218 Rev= 0.01
C:* #Ifs=10 Cfg#= 1 Atr=a0 MxPwr=500mA
I: If#= 0 Alt= 0 #EPs= 0 Cls=02(comm.) Sub=08 Prot=00 Driver=acm
I: If#= 0 Alt= 1 #EPs= 0 Cls=02(comm.) Sub=08 Prot=00 Driver=acm
I: If#= 1 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=acm
E: Ad=81(I) Atr=03(Int.) MxPS= 64 Ivl=2ms
I: If#= 2 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=acm
E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I: If#= 3 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=acm
E: Ad=83(I) Atr=03(Int.) MxPS= 64 Ivl=2ms
I: If#= 4 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=acm
E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I: If#= 5 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=acm
E: Ad=85(I) Atr=03(Int.) MxPS= 64 Ivl=2ms
I: If#= 6 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=acm
E: Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I: If#= 7 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=acm
E: Ad=87(I) Atr=03(Int.) MxPS= 64 Ivl=2ms
I: If#= 8 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=acm
E: Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I: If#= 9 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E: Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=89(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
в файле /tmp/ppp/peers/wan0_pppd прописаны аж четыре девайса /dev/usb/acm/0 ... 3. При ручном редактировании и оставлении только одного, лучше не становится.Code:Jan 1 03:01:20 DEBUG[96]: child_reap: Reaped 220
Jan 1 03:01:25 pppd[194]: Connect script failed
Jan 1 03:01:32 pppd[194]: Connect script failed
Jan 1 03:01:40 pppd[194]: Connect script failed
Jan 1 03:01:47 pppd[194]: Connect script failed
Jan 1 03:01:53 kernel: ehci_hcd 01:03.2: force halt; handhake c01ee014 00004000 00000000 -> -145
Самое обидное, что вчера поздно вечером как-то удалось завести девайс, обнадеженный я лег спать. А сегодня повторить успех уже не смог. Вобщем откатился я обратно на использование usbserial с параметрами...
Прошу пользователей имеющих такой же модем подключаться к обсуждению, нужны свежие идеи.
народ, какую прошивку мне поставить на WL500w для модема MF180?
// Релиз какой? И если можно, будьте добры ссылку указать.
От энтузиастов.
Положительных результатов для пида 0х140с не добился (вложение №1).
Дважды обратил внимание на "неполноту" сислога после ребута роутера без подключенного модема. (вложение №1)
---
Поиски "идеальной" прошивки привели к релизу d-r2381. На ней модем определился на автомате и без шаманства. На предыдущем найденном релизе (d-r2295) завелось со скрипом (после ребута). А вот с последующих:
- r2394 - висят оба умс, не завелось ваще
- r2624 - висят оба умс, после перезагрузки - 1436
- r2418 - завис один умс, 1436
- r2435 - 1436
- r2452 - 1436
Основное отличие на code.google между релизами d-r2381 и r2394 - тулчейн.
Попытка переноса модулей acm.o option.o usbcore.o usbserial.o ehci-hcd.o usb-ohci.o с d-r2381 на свежие релизы завершилась успешно, но без положительных результатов.
+1
Очень сильно хочется не верить, что при добавлении хотя-бы еще одной строки кода, поведение прошивки меняется. Другими словами: объект-код транслируется в mips32-код, и при внесении доп. оператора последующий mips32-код не есть такой-же как перед добавлением (адресация невсчет).
---
Родилась еще одна теория, препятствующая нормальному определению модемов в системе. Как уже говорилось ранее, простое усб-устройство переключается в составное. Скажем, имея на борту простого устройства cdrom, система должна увидеть в этом устройстве в ПЕРВУЮ очередь хаб! И уже в нем - сидюк (и все остальное). Тоже самое и для составного устройства. К сожалению /proc/bus/usb/devices этого хаба не видит (или я не туда гляжу) Кое-что есть в соседней ветке