PDA

Bekijk de volledige versie : "Обвязка" 3G/4G и CDMA модемов на прошивке энтузиастов



Pages : [1] 2 3 4 5

Vitaly_k
13-10-2009, 13:47
Я к своему удивлению обнаружил, что с USB-модемами рабоает не только "чешская прошивка", но и обсуждаемая прошивка "от энузиастов".
Настраивается это через переменные NVRAM и скрипты загрузки, подробнее например тут - http://wl500g.info/showthread.php?t=20272
Разработчки не хотят сделать этот функционал доступным через веб-интерфейс?
Можно добавить в типы соединений "USB Modem" или "DialUp", а сам скрипт поднятия соединения модифицируем так, чтобы он использовал стандартные параметры NVRAM доступные через веб-интрефейс, основная часть доступна и сейчас (user name, password, mtu, mru), часть можно брать из похожих по смыслу (wan_usb_apn= heart beat server), ну а часть можно добавить (wan_usb_vend и пр.).

Общий смысл - сделать работу с USB-модемами не стоящим где-то в сторонке функциоаналом, а полноценной частью прошивки работающей через стандартные параметры и стандартно конфиругурируемой.

lly
13-10-2009, 13:59
Разработчки не хотят сделать этот функционал доступным через веб-интерфейс?
Ты сможешь это осилить? У нас пока на это не хватает ни сил, ни времени.


не силён в линуксах поэтому подскажите плс каким образом можно добавить сборку этого модуля в прошивку 1.9.2.7-d?
Отредактировать kernel/kernel.config после чего пересобрать прошивку по инструкции - это самое простое. Остальные варианты требуют хоть грамма чтения readme к ядру.

Vitaly_k
13-10-2009, 14:03
Ты сможешь это осилить? У нас пока на это не хватает ни сил, ни времени.


К сожалению нет, не могу, навыков в linuxe/web у меня нет.
А в целом такой подход Вы одобряете? Это достойно для занесения в to-do?

al37919
13-10-2009, 14:14
в todo оно уже полгода: http://wl500g.info/showpost.php?p=142521&postcount=591 Только добровольных помощников пока не нашлось... Кстати, любопытно --- первый и третий пункты из того списка уже реализованы :)

Vitaly_k
13-10-2009, 14:30
в todo оно уже полгода: http://wl500g.info/showpost.php?p=142521&postcount=591 Только добровольных помощников пока не нашлось...

Действительно есть, проглядел. :)
А делать второй WAN-интерфейс планируется?
В чешской прошивке это есть, но в урезанном варианте - Backup Connection, хотеолось бы комбинировать в любых вариантах - независимые интерфейсы, backup, один поверх другого

Vitaly_k
27-11-2009, 18:56
По материалам топика - http://wl500g.info/showthread.php?p=168930
Поставил прошивку скомпилированную lly под v1.
В целом прикольно - собраны вместе как наработки чехов, так и результат труда наших разработчиков.
Я бы немного реоранизовал настройки в веб-морде, все настройки из папки первого уровня USB Connection собрал вместе на одну страничку и поместил их в папку IP config сразу за WiMax.
Ну и с Backup connection нужно что-то делать, или доводить до ума - добавлять Wimax и пр., или делать частным случаем полноценного MultiWan, или выкидывать совсем.

С мой модем (AnyData ADU-E100A) роутер не опознал (на прошивке чехов все ОК), в логах:
====
Jan 1 03:00:06 kernel: usb.c: USB device 2 (vend/prod 0x16d5/0x6501) is not claimed by any active driver.
Jan 1 03:00:12 pppd[133]: In file /tmp/ppp/peers/cdma: unrecognized option '/dev/usb/tts/0'
====

Стал сравнивать с прошивкой чехов и не нашел модуля anydata.o, видимо дело в нем. Вот лог с прошивкой чехов:
====
Nov 27 20:49:24 kernel: Manufacturer: AnyDATA Corporation
Nov 27 20:49:24 kernel: Product: AnyDATA CDMA Products
Nov 27 20:49:24 kernel: usbserial.c: AnyDATA converter detected
Nov 27 20:49:24 kernel: usbserial.c: AnyDATA converter now attached to /dev/usb/tts/1
====

UPDATE:

Ссылка на актуальные версии прошивок - ftp://core.dumped.ru/
Wi-ki по подключению модемов - http://code.google.com/p/wl500g/wiki/GUIUSBNetworkDevices3GCDMA?wl=ru

lly
27-11-2009, 19:12
Я бы немного реоранизовал настройки в веб-морде, все настройки из папки первого уровня USB Connection собрал вместе на одну страничку и поместил их в папку IP config сразу за WiMax.
Ну и с Backup connection нужно что-то делать, или доводить до ума - добавлять Wimax и пр., или делать частным случаем полноценного MultiWan, или выкидывать совсем.
Если кто-то нам поможет в этом нелегком труде, мы только ЗА!

С мой модем (AnyData ADU-E100A) роутер не опознал (на прошивке чехов все ОК), в логах:
====

Стал сравнивать с прошивкой чехов и не нашел модуля anydata.o, видимо дело в нем.
====
У чехов часть модулей в бинарниках без исходников и не под лицензией GPL :( modem.o, ipw.o, zadacom.o
ipw был сбэкпорчен из 2.6, я это повторил - это несложно, а на остальное исходников нема совсем.

В 2.4.37 это должен быть option.o

P.S. Я в своё время списывался с автором cdma engy, он сначала идею воспринял с энтузиазмом, а потом перестал отвечать да и на родном форуме переименовался с Engy на EngyOS :confused:

Добавлено: обнаружил еще один зажатый исходник - serialcomm. А нафига он нужен??

Vitaly_k
27-11-2009, 19:54
У чехов часть модулей в бинарниках без исходников и не под лицензией GPL :( modem.o, ipw.o, zadacom.o


Если это как-то поможет - могу прислать anydata.o и что еще нужно, чешская прошивка у меня осталась в другом роутере.
Их бинарники к нашей прошивке подойдут?

lly
27-11-2009, 19:56
Если это как-то поможет - могу прислать anydata.o и что еще нужно, чешская прошивка у меня осталась в другом роутере.
Их бинарники к нашей прошивке подойдут?
нет конечно, модули от 2.4.20 не подходят к 2.4.37. Ну и раскрутить прошивку firmware-mod-kit я могу и сам.

у чехов за anydata отвечал modem.o

Vitaly_k
27-11-2009, 20:35
нет конечно, модули от 2.4.20 не подходят к 2.4.37. Ну и раскрутить прошивку firmware-mod-kit я могу и сам.


Значит без вариантов? С моим модемом облом?



у чехов за anydata отвечал modem.o

Ну не знаю, я в прошивке 1.9.2.7-8-USB-1.67 (в более поздних глючит DynDNS) вижу в Diagnostic info:
Kernel Modules
pl2303 14048 0 (unused)
anydata 2920 1
usbserial 25492 0 [pl2303 anydata]

lly
27-11-2009, 20:39
Значит без вариантов? С моим модемом облом?
я ж тебе написал - попробуй option.o

Ну не знаю, я в прошивке 1.9.2.7-8-USB-1.67 (в более поздних глючит DynDNS) вижу в Diagnostic info:
Kernel Modules
pl2303 14048 0 (unused)
anydata 2920 1
usbserial 25492 0 [pl2303 anydata]
Я раскручивал 1.71 (т.к. DynDNS меня не интересовал - его theMIROn подкрутил сильно покруче чехов :))

Vitaly_k
27-11-2009, 21:31
я ж тебе написал - попробуй option.o


Yes! Получилось.
Зашел в telnet, insmod option.o и коннект поднялся.
Нельзя ли сделать чтобы он сам стартовал?

theMIROn
27-11-2009, 21:36
Yes! Получилось.
Зашел в telnet, insmod option.o и коннект поднялся.
Нельзя ли сделать чтобы он сам стартовал?
при каких условиях?

Vitaly_k
27-11-2009, 21:42
при каких условиях?

При условии, что выбран тип WAN-соединения USB-Connection.
Если модуль нужен не для любых соединений, то можно еще проанализировать тип модема в настройках connection mode/

lly
28-11-2009, 08:33
Yes! Получилось.
Зашел в telnet, insmod option.o и коннект поднялся.
Нельзя ли сделать чтобы он сам стартовал?
Надо перепахивать чешские скрипты dial (/usr/ppp/*/dial) именно там прописаны insmod'ы. Работёнка несложная, но очень нудная, т.к. нет однозначного соответствия типа insmod modem.o => insmod option.o

Vitaly_k
28-11-2009, 10:05
Надо перепахивать чешские скрипты dial (/usr/ppp/*/dial) именно там прописаны insmod'ы. Работёнка несложная, но очень нудная, т.к. нет однозначного соответствия типа insmod modem.o => insmod option.o

Ясно. А как правильно запустить из скриптов автозапуска? Добавить в post-boot или куда еще?

Vitaly_k
08-12-2009, 15:32
Ясно. А как правильно запустить из скриптов автозапуска?

Отвечу сам себе - соединение стало подниматься само при включении роутра после добавления в post-boot строчек:

sleep 7
insmod option.o

rss
09-05-2010, 14:25
Нужна ли кому-нибудь поддержка ZadaCOM в прошивке? (единственное устройство, которое тянет за собой непонятный бинарник serialcomm).

eugenem
12-05-2010, 14:56
Добрый день,

правильно ли я понимаю, что можно будет использовать в качестве основного wan интерфейса usb модем от Еты, а в качестве резервного - usb модем от Skylink и будет работать резервирование основного канала и возврат к первому при восстановлении связи?

WBR,
Eugene

rss
12-05-2010, 18:22
Добрый день,

правильно ли я понимаю, что можно будет использовать в качестве основного wan интерфейса usb модем от Еты, а в качестве резервного - usb модем от Skylink и будет работать резервирование основного канала и возврат к первому при восстановлении связи?

WBR,
Eugene

На первом этапе надо будет явно переключать. Мультиван - позже, но если будет, то полноценный с любым количеством интерфейсов.

rss
19-05-2010, 20:13
Первый вариант интегрированной поддержки cdma. Прошивки с выводом отладочной информации в syslog. Можно начинать тестировать. Все исходники в SVN. При любых проблемах - см. скрипты в директории /usr/ppp/ или http://code.google.com/p/wl500g/source/browse/#svn/trunk/cdma
Ждём отзывы, предложения и исправления.


WL500gp-1.9.2.7-d-r1591-cdma-debug.trx (http://narod.ru/disk/20932237000/WL500gp-1.9.2.7-d-r1591-cdma-debug.trx.html)
WL500gpv2-1.9.2.7-d-r1591-cdma-debug.trx (http://narod.ru/disk/20932469000/WL500gpv2-1.9.2.7-d-r1591-cdma-debug.trx.html)
WL500W-1.9.2.7-d-r1591-cdma-debug.trx (http://narod.ru/disk/20932805000/WL500W-1.9.2.7-d-r1591-cdma-debug.trx.html)
WL520gu-1.9.2.7-d-r1591-cdma-debug.trx (http://narod.ru/disk/20933005000/WL520gu-1.9.2.7-d-r1591-cdma-debug.trx.html)

Unlimited
20-05-2010, 05:52
Есть пожелание замерджить это в rt-n ^)

lly
20-05-2010, 07:25
Есть пожелание замерджить это в rt-n ^)
Offtopic: А если rss заставить работать круглосуточно, то он и драйвер madwimax допишет до поддержки всех провайдеров и избавит от подвисаний :D

А если серьёзно, то всё сразу не получится, но в планах есть.

Unlimited
20-05-2010, 08:14
Offtopic: А если rss заставить работать круглосуточно, то он и драйвер madwimax допишет до поддержки всех провайдеров и избавит от подвисаний :D

А если серьёзно, то всё сразу не получится, но в планах есть.
А что там опять какая-то несовместимость из-за ядра?

lly
20-05-2010, 08:37
А что там опять какая-то несовместимость из-за ядра?
вместо devfs в 2.6 udev - надо переделывать скрипты

Unlimited
20-05-2010, 10:03
вместо devfs в 2.6 udev - надо переделывать скрипты
Или симлинки создавать?

lly
20-05-2010, 10:09
Или симлинки создавать?
Не пойдет - файлы устройств создаются user-space'ным mdev'ом или hotplug2. Почитай про udev - теперь я понимаю почему его так материли в своё время.

Unlimited
20-05-2010, 10:24
Не пойдет - файлы устройств создаются user-space'ным mdev'ом или hotplug2. Почитай про udev - теперь я понимаю почему его так материли в своё время.
Ага почитаю, просто увидел что sda1 и sda это симлинки...

lly
20-05-2010, 11:09
rss:
Кстати, ты смотрел улучшенный скрипт modem.sh от max_mad (http://wl500g.info/showpost.php?p=195901&postcount=3174)?
Может стоит использовать часть наработок?

rss
20-05-2010, 11:21
rss:
Кстати, ты смотрел улучшенный скрипт modem.sh от max_mad (http://wl500g.info/showpost.php?p=195901&postcount=3174)?
Может стоит использовать часть наработок?

Не смотрел. Посмотрю в выходные. Однако сразу могу сказать, что подход чехов, когда на каждый тип модема отдельный скрипт, несколько упрощает управление проектом. Главное - по мере увеличения количества поддерживаемых устройств не захлебнуться.

В части автоматического определения модема надо подумать с учетом будущего мультивана и нескольких модемов в системе. Пока предлагаю доделать подстановку VID:PID из списка доступных устройств, в котором выбирает пользователь.

vectorm
20-05-2010, 11:59
Первый вариант интегрированной поддержки cdma. Прошивки с выводом отладочной информации в syslog. Можно начинать тестировать. Все исходники в SVN. При любых проблемах - см. скрипты в директории /usr/ppp/ или http://code.google.com/p/wl500g/source/browse/#svn/trunk/cdma
Ждём отзывы, предложения и исправления.
в файле /usr/ppp/dial
опечатка в 39 строке:
22) dialdir=$ROOT_DIR/ppp/cdm/AnyDATA
Должно быть:
22) dialdir=$ROOT_DIR/ppp/cdma/AnyDATA

В USB Modem -> PPP Connection Mode
Если выбрать GPRS/EDGE/UMTS, то в Zero CD Configuration тип модема не фиксируется ни в Хроме, ни в Мозилле. Хоть наобжимайся Apply.

rss
20-05-2010, 18:20
в файле /usr/ppp/dial
опечатка в 39 строке:
22) dialdir=$ROOT_DIR/ppp/cdm/AnyDATA
Должно быть:
22) dialdir=$ROOT_DIR/ppp/cdma/AnyDATA

В USB Modem -> PPP Connection Mode
Если выбрать GPRS/EDGE/UMTS, то в Zero CD Configuration тип модема не фиксируется ни в Хроме, ни в Мозилле. Хоть наобжимайся Apply.
Ок, спасибо, исправляю. Отлаживался на сотовом телефоне :o .

rss
20-05-2010, 19:53
WL500gp-1.9.2.7-d-r1595-cdma-debug.trx (http://narod.ru/disk/20967617000/WL500gp-1.9.2.7-d-r1595-cdma-debug.trx.html)
WL500gpv2-1.9.2.7-d-r1595-cdma-debug.trx (http://narod.ru/disk/20968626000/WL500gpv2-1.9.2.7-d-r1595-cdma-debug.trx.html)
WL500W-1.9.2.7-d-r1595-cdma-debug.trx (http://narod.ru/disk/20968110000/WL500W-1.9.2.7-d-r1595-cdma-debug.trx.html)
WL520gu-1.9.2.7-d-r1595-cdma-debug.trx (http://narod.ru/disk/20968242000/WL520gu-1.9.2.7-d-r1595-cdma-debug.trx.html)

Vitaly_k
21-05-2010, 10:52
Поробовал на двух модемах:

P: Vendor=16d5 ProdID=6501 Rev= 0.00
S: Manufacturer=AnyDATA Corporation
S: Product=AnyDATA CDMA Products

и

P: Vendor=1726 ProdID=1000 Rev= 0.00
S: Manufacturer=AXESSTEL CO., LTD.
S: Product=AXESSTEL DATA MODEM

В обоих случаях неудача, лог выглядит так:



Jan 1 03:00:08 kernel: usb.c: registered new driver serial
Jan 1 03:00:08 kernel: usbserial.c: USB Serial support registered for Generic
Jan 1 03:00:08 kernel: usbserial.c: USB Serial Driver core v1.4
Jan 1 03:00:14 pppd[147]: In file /tmp/ppp/peers/cdma: unrecognized option '/dev/usb/tts/0'
Jan 1 03:00:15 kernel: usbserial.c: USB Serial support registered for Option GSM modem
Jan 1 03:00:15 kernel: usbserial.c: Option GSM modem converter detected
Jan 1 03:00:15 kernel: usbserial.c: Option GSM modem converter now attached to ttyUSB0 (or usb/tts/0 for devfs)
Jan 1 03:00:15 kernel: usbserial.c: Option GSM modem converter detected
Jan 1 03:00:15 kernel: usbserial.c: Option GSM modem converter now attached to ttyUSB1 (or usb/tts/1 for devfs)
Jan 1 03:00:15 kernel: option.c: USB Driver for GSM modems: v0.7.2a
Jan 1 03:00:18 DEBUG[112]: child_reap: Reaped 151
Jan 1 03:00:18 DEBUG[1]: main_loop: TIMER
Jan 1 03:00:18 DEBUG[1]: main_loop: IDLE
Jan 1 03:00:18 DEBUG[1]: Hit enter to continue...
Jan 1 03:00:44 pppd[167]: pppd 2.4.5 started by admin, uid 0
Jan 1 03:00:44 kernel: usb-uhci.c: ENXIO c0410280, flags 0, urb 81705c20, burb 81705ba0
Jan 1 03:00:44 kernel: usb-uhci.c: ENXIO c0410280, flags 0, urb 81705ca0, burb 81705ba0
Jan 1 03:00:44 kernel: usb-uhci.c: ENXIO c0410280, flags 0, urb 81705d20, burb 81705ba0
Jan 1 03:01:18 DEBUG[112]: child_reap: Reaped 169
Jan 1 03:02:00 DEBUG[1]: rc_signal: signalling USR1
Jan 1 03:02:00 DEBUG[1]: main_loop: SERVICE
Jan 1 03:02:00 DEBUG[1]: wan connect
Jan 1 03:02:00 wan: connected manually
Jan 1 03:02:00 DEBUG[1]: main_loop: IDLE
Jan 1 03:02:00 DEBUG[1]: Hit enter to continue...
Jan 1 03:02:01 DEBUG[1]: child_reap: Reaped 197
Jan 1 03:02:01 DEBUG[1]: Hit enter to continue...
Jan 1 03:02:18 DEBUG[112]: child_reap: Reaped 199

OlegaVB
21-05-2010, 13:52
AnyData ADU-E100A

hub.c: new USB device 00:03.1-1.2, assigned address 4
usb.c: USB device 4 (vend/prod 0x16d5/0x6501) is not claimed by any active driver.

Не понимает :(

rss
21-05-2010, 16:39
Спасибо за информацию. Однако, из доступного оборудования у меня только сотовый телефон, поэтому гарантировать работу могу лишь до момента start_modem_dial в syslog и запуска gprs.

Если ранее на других прошивках удавалось подключить модем, просьба:

посмотреть /tmp/chat.log (на странице USB PPP Log) и определить, на какой AT-команде произошел сбой;
скопировать скрипты командой cp -R /usr/ppp /tmp/;
попробовать исправить нужный скрипт и добиться подключения из командной строки. В скриптах могут быть ошибки!!!
основной скрипт, который запускает всё остальное называется /usr/ppp/dial. То, что будет запущено далее, зависит от состояния nvram


Пока отлаживал работу на сотовом телефоне заметил, что проблемы могут быть из-за неправильно указанного USB-устройства из cat /proc/bus/usb/devpath. Например телефон nokia n79 по умолчанию подключается через /dev/usb/acm/0, а если нажать на нём nokia pc suite, то работать уже будет только через /dev/usb/ttys/1.


-------------------------------------------------------------------

sorine предлагает использовать его скрипт modem.sh, однако и тут есть вопросы, на которые у меня нет ответа:

достаточен ли перечень устройств, которые с работает его скрипт?
нужна ли статистика при работе модема GTRAN в том виде, как это сделали чехи?
нужны ли устройства IPW и ZadaCom?

Vitaly_k
21-05-2010, 19:11
Применительно к Скайлинку и модемам AnyData/Axesstel проблемы две:
1. Скрипт дозвона сам не стартует, chat.log пустой. Если запустить руками /usr/ppp/dial, то дозвон начинается.
2. Не проходит авторизация. У Скайлинка нужно указать логин/пароль = mobile/internet. У чехов для этого есть специальная закладка для логина пароля, в тестовой прошивке их указать негде. Пробовал указать в логине/пароле для pptp/l2tp - скрипт дозвона их не подхватывает. Кроме того, если брать их отдута нужно сделать поля доступными при типе соединения USB Modem.

rss
21-05-2010, 19:20
Применительно к Скайлинку и модемам AnyData/Axesstel проблемы две:
1. Скрипт дозвона сам не стартует, chat.log пустой. Если запустить руками /usr/ppp/dial, то дозвон начинается.
WAN Connection Type: Usb-modem выбрано? В syslog строка start_modem_dial появляется?



2. Не проходит авторизация. У Скайлинка нужно указать логин/пароль = mobile/internet. У чехов для этого есть специальная закладка для логина пароля, в тестовой прошивке их указать негде. Пробовал указать в логине/пароле для pptp/l2tp - скрипт дозвона их не подхватывает. Кроме того, если брать их отдута нужно сделать поля доступными при типе соединения USB Modem. Там же есть страница USB Modem / PPP Connection Mode, в которой выбирается CDMA и появляются поля для логина/пароля.

Vitaly_k
21-05-2010, 23:51
WAN Connection Type: Usb-modem выбрано? В syslog строка start_modem_dial появляется?

Да, появляется:

Jan 1 03:00:07 DEBUG[1]: start_modem_dial: done
Jan 1 03:00:07 DEBUG[1]: start_wan: 0.0.0.0 0.0.0.0
Jan 1 03:00:07 DEBUG[1]: start_nas: done
Jan 1 03:00:08 DEBUG[1]: child_reap: Reaped 111
Jan 1 03:00:08 DEBUG[112]: rc applet: watchdog
Jan 1 03:00:08 DEBUG[112]: child_reap: Reaped 115
Jan 1 03:00:08 kernel: usb.c: registered new driver serial
Jan 1 03:00:08 kernel: usbserial.c: USB Serial support registered for Generic
Jan 1 03:00:08 kernel: usbserial.c: USB Serial Driver core v1.4
Jan 1 03:00:14 pppd[147]: In file /tmp/ppp/peers/cdma: unrecognized option '/dev/usb/tts/0'
Jan 1 03:00:15 kernel: usbserial.c: USB Serial support registered for Option GSM modem
Jan 1 03:00:15 kernel: usbserial.c: Option GSM modem converter detected
Jan 1 03:00:15 kernel: usbserial.c: Option GSM modem converter now attached to ttyUSB0 (or usb/tts/0 for devfs)
Jan 1 03:00:15 kernel: usbserial.c: Option GSM modem converter detected
Jan 1 03:00:15 kernel: usbserial.c: Option GSM modem converter now attached to ttyUSB1 (or usb/tts/1 for devfs)
Jan 1 03:00:15 kernel: option.c: USB Driver for GSM modems: v0.7.2a
Jan 1 03:00:18 DEBUG[112]: child_reap: Reaped 151
Jan 1 03:00:18 DEBUG[1]: main_loop: TIMER
Jan 1 03:00:18 DEBUG[1]: main_loop: IDLE
Jan 1 03:00:18 DEBUG[1]: Hit enter to continue...

Как версия - перед запуском option нужно поставить затержку неск. секунд, когдя я экспериментировал (см. начало топика) после wait 7 соединение стало подниматься.



Там же есть страница USB Modem / PPP Connection Mode, в которой выбирается CDMA и появляются поля для логина/пароля.

Страница есть, тип модема CDMA выбран, но поля для логина/пароля не появляются. Глючит браузер(IE8)? Какие переменные в NVRAM нужно задать руками? Не лучше использовать логин/пароль для PPP из основной закладки WAN&LAN?

OlegaVB
22-05-2010, 04:44
AnyData ADU-E100A

[admin@Asus root]$ /usr/ppp/cdma/AnyDATA/dial
insmod: can't insert 'modem.o': No such file or directory
pppd: In file /tmp/ppp/peers/cdma: unrecognized option '/dev/usb/tts/0'

А что писать в полях

USB device location ID:
USB device packet size (0 for default):

Vitaly_k
22-05-2010, 08:31
Логин/пароль для соединения нашел - дело действительно было в браузере, в FireFox дополнительные поля появились.
Может не мудрить с их активированием/деактивированием и отображать всегда?

После ручного запуска скрипта /usr/ppp/dial соединение поднялось - прогресс на лицо :)
При загрузке роутера само не поднимается, склоняюсь к версии, что задержка должна помочь - сейчас дозвон начинается раньше чем обнаруживается модем:


Jan 1 03:00:14 pppd[147]: In file /tmp/ppp/peers/cdma: unrecognized option '/dev/usb/tts/0'
Jan 1 03:00:15 kernel: usbserial.c: USB Serial support registered for Option GSM modem
Jan 1 03:00:15 kernel: usbserial.c: Option GSM modem converter detected
Jan 1 03:00:15 kernel: usbserial.c: Option GSM modem converter now attached to ttyUSB0 (or usb/tts/0 for devfs)

rss
22-05-2010, 11:40
AnyData ADU-E100A

[admin@Asus root]$ /usr/ppp/cdma/AnyDATA/dial
insmod: can't insert 'modem.o': No such file or directory
pppd: In file /tmp/ppp/peers/cdma: unrecognized option '/dev/usb/tts/0'

А что писать в полях

Во-первых вижу ошибку в скрипте /usr/ppp/cdma/AnyDATA/dial - должно быть insmod option вместо insmod modem

Во-вторых после выполнения insmod usbserial запуск cat /proc/bus/usb/devpath должен выдавать что-то типа:

/dev/usb/tts/0 : 2.0 : Manufacturer="AnyDATA Corporation" : Product="AnyDATA CDMA Products"
/dev/usb/tts/1 : 2.1 : Manufacturer="AnyDATA Corporation" : Product="AnyDATA CDMA Products"
/dev/usb/tts/2 : 2.2 : Manufacturer="AnyDATA Corporation" : Product="AnyDATA CDMA Products"

Соответственно, в USB device location ID вписываем одно из значений 2.0, 2.1, 2.2 (как выбрать иначе, чем перебором - не знаю).

rss
22-05-2010, 11:44
Логин/пароль для соединения нашел - дело действительно было в браузере, в FireFox дополнительные поля появились.
Может не мудрить с их активированием/деактивированием и отображать всегда?
Зависит от количества полей. У чехов их было много. Очень не хочется порождать еще одну ленту LANWAN. Кстати, и на ней неплохо бы свернуть то, что не нужно при выбранном в данный момент WAN type. Может быть даже внести новые пункты туда.

А какой конкретно браузер не работает?



После ручного запуска скрипта /usr/ppp/dial соединение поднялось - прогресс на лицо :)
При загрузке роутера само не поднимается, склоняюсь к версии, что задержка должна помочь - сейчас дозвон начинается раньше чем обнаруживается модем:

Надо подумать, как делать лучше. Задержка - полумера, хотя для начала её можно и поставить.

Просьба указывать модемы, на которых заработало.

Vitaly_k
22-05-2010, 16:09
А какой конкретно браузер не работает?


IE 8.0.6001.18702




Надо подумать, как делать лучше. Задержка - полумера, хотя для начала её можно и поставить.


Можно в цикле опрашивать существование /dev/usb/tts/0 (1) и лишь после их воявления давать отмашку pppd.




Просьба указывать модемы, на которых заработало.

Заработал - AnyData ADU-E100A
Хотя как-то странно он заработал, сейчас опять не соединяется - пишет cant insert modem.o, закономерности пока не уловил.
Для Axesstel, кстати, нужно тоже поменять modem на option.

rss
22-05-2010, 16:20
IE 8.0.6001.18702

Понял, посмотрю.




Можно в цикле опрашивать существование /dev/usb/tts/0 (1) и лишь после их воявления давать отмашку pppd.

Не всё так просто. /dev/usb/tts/0 (1) появятся после insmod usbserial, а если устройство еще не подключилось - не знаю, что будет. Ставлю пока задержку 5 сек. В норме надо ловить момент появления устройства - это в принципе возможно.




Заработал - AnyData ADU-E100A
Хотя как-то странно он заработал, сейчас опять не соединяется - пишет cant insert modem.o, закономерности пока не уловил.
Для Axesstel, кстати, нужно тоже поменять modem на option.
Заметил. Сделал некоторые изменения, чуть позже выложу обновление. Самое главное - решение вынести имя скрипта дозвона в nvram. Надо оценить нужны ли скрипты чехов или подставляем чей-нибудь modem.sh. Думаю, что так это будет сделать проще - можно будет работать с копиями скриптов на флешке. Потом - сводим всё в единственный финальный вариант.

rss
22-05-2010, 18:25
Поправил скрипты. Добавил переменную wan_modem_scriptfn. Соответственно, делаем nvram set wan_modem_scriptfn="/usr/ppp/dial" и вписываем любое имя скрипта дозвона... Если wan_modem_scriptfn не задана - будет /usr/ppp/dial.

Проблему с IE решить не удалось. Ни один браузер ошибок не выдает, IE
говорит "Строка: 95. Ошибка: Предполагается наличие объекта", а там - <body onload="return changeUSBConnectionType();" или <body onload="changeUSBConnectionType();". Пока нет времени его ковырять.

Vitaly_k
22-05-2010, 22:56
Поправил скрипты.

AnyData 100 - соединение стало подниматься само, pppd после добавления задержки стартует вовремя.
Axesstel - не поднимается, ни сам ни вручную:


Jan 1 03:00:19 pppd[148]: Connect script failed
Jan 1 03:00:19 pppd[148]: Exit.

/tmp/ppp/cdma/Axesstel/cdma.chat -- open failed: No such file or directory
Script chat -s -S -V -t 5 -f /tmp/ppp/cdma/Axesstel/cdma.chat 2>/tmp/chat.log finished (pid 2974), status = 0x1
Connect script failed


Еще вопрос - DynDNS на текущем этапе должен работать?
У меня в логе ошибка:

May 23 02:16:57 ddns update: (nnnn.dyndns.org) unable to resolve interface

rss
23-05-2010, 07:10
AnyData 100 - соединение стало подниматься само, pppd после добавления задержки стартует вовремя.
очень хорошо.



Axesstel - не поднимается, ни сам ни вручную:
/tmp/ppp/cdma/Axesstel/cdma.chat 2>/tmp/chat.log finished (pid 2974), status
Вижу. Файл находится в /usr/ppp/cdma/Axesstel/cdma.chat. Исправил.




Еще вопрос - DynDNS на текущем этапе должен работать?
У меня в логе ошибка:

May 23 02:16:57 ddns update: (nnnn.dyndns.org) unable to resolve interface По идее - должен. Он активируется pppd через /tmp/ppp/ip-up. Если нет - чуть позже.


Проблему с IE - нашел. Он, зараза, не понимает, что такое const. Исправил заменой const sCDMA='CDMA'; на var sCDMA='CDMA';.

В переменной wan_modem_scriptfn хранится имя скрипта дозвона. Если wan_modem_scriptfn не задана - будет /usr/ppp/dial.
Соответственно, делаем nvram set wan_modem_scriptfn="/usr/ppp/dial" и вписываем любое имя скрипта дозвона...


WL500gp-1.9.2.7-d-r1595-3-cdma-debug.trx (http://narod.ru/disk/21037446000/WL500gp-1.9.2.7-d-r1595-3-cdma-debug.trx.html)
WL500gpv2-1.9.2.7-d-r1595-3-cdma-debug.trx (http://narod.ru/disk/21037472000/WL500gpv2-1.9.2.7-d-r1595-3-cdma-debug.trx.html)
WL500W-1.9.2.7-d-r1595-3-cdma-debug.trx (http://narod.ru/disk/21037495000/WL500W-1.9.2.7-d-r1595-3-cdma-debug.trx.html)
WL520gu-1.9.2.7-d-r1595-3-cdma-debug.trx (http://narod.ru/disk/21037570000/WL520gu-1.9.2.7-d-r1595-3-cdma-debug.trx.html)


Сборки соответствуют r1600.

Vitaly_k
23-05-2010, 08:31
Вижу. Файл находится в /usr/ppp/cdma/Axesstel/cdma.chat. Исправил.


Заработало. Еще один протестированный рабочий модем Axesstel MV-110.
C DynDNS тоже все ОК.

В общем, работоспособный вариант прошикви в первом приближении
Вы сделали :)

Можно начинать думать над глобальной задачей - как должен выглядеть MultiWAN/Backup connection. У чехов, на мой взгляд сделано не слишком красиво - нельзя сделать два однотипных WAN-a.

rss
23-05-2010, 09:20
Заработало. Еще один протестированный рабочий модем Axesstel MV-110.
C DynDNS тоже все ОК.

В общем, работоспособный вариант прошикви в первом приближении
Вы сделали :)Хорошо. Значит уже как минимум работают:

Nokia n79;
Axesstel MV-110;
AnyData ADU-E100A.




Можно начинать думать над глобальной задачей - как должен выглядеть MultiWAN/Backup connection. У чехов, на мой взгляд сделано не слишком красиво - нельзя сделать два однотипных WAN-a.

Думаю, не в ближайшее время. Однако далее - вопрос ко всем.
Может быть для начала объединить LANWAN с настройками Wimax, USB-modem? (соответственно, делаем страницу wan с привязанным к ней интерфейсом и устройством). Интерфейс по аналогии с Advanced_ConnectionMode_Content.asp - сворачиваем те параметры, редактирование которых в данный момент недоступно.
Следующий шаг для интерфейса - страницы WAN на каждый канал, но это уже потребует серьезной переделки всего остального.


По текущим проблемам в cdma остались:

активация интерфейса по кнопке Connect на странице Status & Log - Status. Проблема в том, что там стоит проверка существования файла /tmp/ppp/ip-up, вследствие чего start_wan не запускается;
корректное определение момента появления usb-модема в системе, после которого можно подключать драйверы (сейчас ожидание 5 секунд);
упрощение выбора VID:PID для модема (сделать js-скрипт, анализирующий cat /proc/bus/usb/devices и соответствующее окно ввода).

lly
23-05-2010, 09:47
Может быть для начала объединить LANWAN с настройками Wimax, USB-modem? (соответственно, делаем страницу wan с привязанным к ней интерфейсом и устройством). Интерфейс по аналогии с Advanced_ConnectionMode_Content.asp - сворачиваем те параметры, редактирование которых в данный момент недоступно.
Если у тебя хватит сил и терпения на переделку АСУС'ного интерфейса - будет супер!



По текущим проблемам в cdma остались:

корректное определение момента появления usb-модема в системе, после которого можно подключать драйверы (сейчас ожидание 5 секунд);

Еще до запуска usb_modeswitch? Или уже готовность /dev/usb/tts/X ?

rss
23-05-2010, 10:00
Если у тебя хватит сил и терпения на переделку АСУС'ного интерфейса - будет супер! ок, но не на этой неделе. Кстати, не стоит ли тогда разделить LANWAN на чистый WAN и чистый LAN?



Еще до запуска usb_modeswitch? Или уже готовность /dev/usb/tts/X ? При загрузке маршрутизатора отрабатывает start_wan. В этот момент usb-устройств еще может не быть и запуск скрипта подключения может пройти впустую (уже внутри него insmod usbserial VID:PID, option и usb_modeswitch). В идеале напрашивается асинхронный обработчик по появлению устройства с нужным VID:PID.

lly
23-05-2010, 10:08
Кстати, не стоит ли тогда разделить LANWAN на чистый WAN и чистый LAN?
Надо думать - и так полный бардак, но к которому все привыкли - например пункт Miscellaneous из "IP Config" - смешано upnp, remote log, udpxy, синхронизация ntp...

При загрузке маршрутизатора отрабатывает start_wan. В этот момент usb-устройств еще может не быть и запуск скрипта подключения может пройти впустую (уже внутри него insmod usbserial VID:PID, option и usb_modeswitch). В идеале напрашивается асинхронный обработчик по появлению устройства с нужным VID:PID.
Спасибо понял, я упустил этот момент из вашего диалога. Получается что так и придётся делать.

rss
23-05-2010, 10:21
Надо думать - и так полный бардак, но к которому все привыкли - например пункт Miscellaneous из "IP Config" - смешано upnp, remote log, udpxy, синхронизация ntp...Как вариант - оставляем всё как есть и в параллель запускаем разработку нового js-интефейса со взаимодействием через JSON. На нём и выполняем компоновку.


Спасибо понял, я упустил этот момент из вашего диалога. Получается что так и придётся делать. Имеет смысл тогда сделать унифицированный механизм. Сейчас WIMAX тоже работает по вероятности. Но там, если не сработало, через 10 секунд отработает watchdog и запустит драйвер.

lly
23-05-2010, 10:30
Как вариант - оставляем всё как есть и в параллель запускаем разработку нового js-интефейса со взаимодействием через JSON. На нём и выполняем компоновку.
Тогда пока оставляем как есть

Имеет смысл тогда сделать унифицированный механизм. Сейчас WIMAX тоже работает по вероятности. Но там, если не сработало, через 10 секунд отработает watchdog и запустит драйвер.
Унифицированный watchdog для USB модемов, наверное, это правильно. Но попотеть придется...

rss
23-05-2010, 10:39
Унифицированный watchdog для USB модемов, наверное, это правильно. Но попотеть придется... Может всё же унифицированный обработчик для USB? Появился любой usb-модем - запускаем wan для его интерфейса, если нашли его proto в wanX_ (фрагмент из start_wan). Заодно шаг в сторону мультивана. Получается, что когда писали start_wan, физически все устройства уже были подключены, а у нас - их может еще не быть и не факт, что появятся - модем могли выдернуть, не изменив настройки.

lly
23-05-2010, 10:46
Может всё же унифицированный обработчик для USB?
Я имел в виду что диски/видеокамеру/аудио оставляем пока как есть, а меняем только для сетевых/модемных устройств

theMIROn
23-05-2010, 11:08
пара копеек от меня: всегда можно подождать появление устройства в procfs/devfs, а драйвера для них грузить заране или иметь в ядре.
самый простой пример - ожидание создания ppp устройства для ppp* подключений

OlegaVB
23-05-2010, 11:25
AnyData ADU-E100A если запускать
/usr/ppp/cdma/AnyDATA/dial
соединяется нормально, а из web интерфейса по нажатию кнопки "Connect" не соединяется, в логах
May 23 16:18:33 DEBUG[1]: rc_signal: signalling USR1
May 23 16:18:33 DEBUG[1]: main_loop: SERVICE
May 23 16:18:33 DEBUG[1]: wan connect
May 23 16:18:33 wan: connected manually
May 23 16:18:33 DEBUG[1]: main_loop: IDLE
May 23 16:18:33 DEBUG[1]: Hit enter to continue...
May 23 16:18:34 DEBUG[1]: child_reap: Reaped 1927
May 23 16:18:34 DEBUG[1]: Hit enter to continue...
wan_modem_scriptfn прописано

nvram get wan_modem_scriptfn
/usr/ppp/cdma/AnyDATA/dial

rss
23-05-2010, 11:34
из web интерфейса по нажатию кнопки "Connect" не соединяется, Это пока нормально. Будет работать позже.

wan_modem_scriptfn прописано...На скрипты из /usr/ppp эту переменную ни к чему переставлять. Там всё запускается через /usr/ppp/dial. А вот если возникнет желание подключить modem.sh (с соответствующими правками nvram переменных), то разместить его придется на флешке.

rss
23-05-2010, 11:38
пара копеек от меня: всегда можно подождать появление устройства в procfs/devfs, а драйвера для них грузить заране или иметь в ядре.
самый простой пример - ожидание создания ppp устройства для ppp* подключений Не всегда. Надо точно знать, что устройство подключено. Простая ситуация - в настройках два модема (гипотетический мультиван). Один подключился, другой выдернули, когда маршрутизатор был выключен...

Над этим надо еще подумать. В ближайшую неделю буду доделывать кнопки detect в веб-интерфейсе для определения VID:PID модема и USB ID.

Vitaly_k
23-05-2010, 14:51
Может быть для начала объединить LANWAN с настройками Wimax, USB-modem? (соответственно, делаем страницу wan с привязанным к ней интерфейсом и устройством). Интерфейс по аналогии с Advanced_ConnectionMode_Content.asp - сворачиваем те параметры, редактирование которых в данный момент недоступно.


Мое мнение - Wimax, USB нужно переносить в WAN и по максимуму использовать существующие настройки. Логин/пароль для модема берем из PPTP.
Для уменьшения размера страницы радио-кнопки с типом модема можно заменить на поле с выпадающим списком.



Следующий шаг для интерфейса - страницы WAN на каждый канал, но это уже потребует серьезной переделки всего остального.


WAN&LAN можно разделить на LAN, WAN1, WAN2 чтобы не валить все в кучу.

OlegaVB
23-05-2010, 14:54
Логин/пароль для модема берем из PPTP.

Не надо так - лучше отдельно, как сейчас. У меня CDMA модем как резерв и есть основное соединение.

rss
23-05-2010, 15:18
Мое мнение - Wimax, USB нужно переносить в WAN и по максимуму использовать существующие настройки. Логин/пароль для модема берем из PPTP.
Для уменьшения размера страницы радио-кнопки с типом модема можно заменить на поле с выпадающим списком.
Надо экспериментировать, смотреть, что получится и можно ли этим пользоваться. Честно говоря, я не веб-дизайнер, хотя при наличии интернета особых проблем сделать динамическую страницу не испытываю. В ближайшую неделю точно заниматься этим не буду. Если есть время - присоединяйтесь к экспериментам. Весь код - в SVN.


WAN&LAN можно разделить на LAN, WAN1, WAN2 чтобы не валить все в кучу.А также WAN3, WAN4.... Отсюда вытекает принципиальное ограничение нынешнего веб-интерфейса на невозможность создасть столько страниц, сколько нужно в данный конкретный момент. Также надо помнить, что мультиван - не только резервные каналы, но и параллельные, включая транковые соединения при наличии соответствующей аппаратуры с ответной стороны.

vectorm
24-05-2010, 10:16
AnyDATA ADU-520A заработал:

nvram set wan_modem_scriptfn="/usr/ppp/cdma/AnyDATA/dial"
Режим GPRS/EDGE/UMTS
Username: mobile
Password: internet
Dial Number (usually *99***1# or *99#): #777
USB device serial speed (usually 115200): 115200
Zero CD Configuration
Modem type: AnyDATA ADU-5xx
Custom USB device parameters
USB device location ID: 2.0
USB device Vendor ID (0xabcd): 0x16d5
USB device Product ID (0xefgh): 0x6502
USB device packet size (0 for default): 0

ZTE MF626 не заработал:

Режим GPRS/EDGE/UMTS
Username: beeline
Password: beeline
APN: home.beeline.ru
Dial Number (usually *99***1# or *99#): *99#
USB device serial speed (usually 115200): 115200
Zero CD Configuration
Modem type: /usr/local/etc/usb_modeswitch.conf с другими подобрать не удалось.
Custom USB device parameters
USB device location ID: 1.0
USB device Vendor ID (0xabcd): 0x19d2
USB device Product ID (0xefgh): 0x0031
USB device packet size (0 for default): 0
Ошибка:


AT+CGDCONT=1,"IP","home.beeline.ru"
OK
ATD*99#Failed
Script /usr/sbin/chat -s -S -V -t 30 -f /tmp/ppp/peers/gprs.chat 2>/tmp/chat.log finished (pid 192), status = 0x3
Connect script failed

rss
24-05-2010, 10:54
AnyDATA ADU-520A заработал
хорошо.



ZTE MF626 не заработал:

Режим GPRS/EDGE/UMTS
Username: beeline
Password: beeline
APN: home.beeline.ru
Dial Number (usually *99***1# or *99#): *99#
USB device serial speed (usually 115200): 115200
Zero CD Configuration
Modem type: /usr/local/etc/usb_modeswitch.conf с другими подобрать не удалось.
Можно добавить этот модем в список. Только просьба директорию для него подготовить в стиле чехов.



Script /usr/sbin/chat -s -S -V -t 30 -f /tmp/ppp/peers/gprs.chat 2>/tmp/chat.log finished (pid 192), status = 0x3
[/code] Понял, спасибо, поправлю.

vectorm
24-05-2010, 11:06
Можно добавить этот модем в список. Только просьба директорию для него подготовить в стиле чехов.


/usr/ppp/zerocdconf/ZTE_MF626/usb_modeswitch.conf
Содержимое usb_modeswitch.conf:

CheckSuccess=2
# ZTE MF628+ (tested version from Telia / Sweden)
# ZTE MF626
#
# Contributor: Joakim Wennergren

DefaultVendor= 0x19d2
DefaultProduct= 0x2000

TargetVendor= 0x19d2
TargetProduct= 0x0031

MessageEndpoint=0x01
MessageContent="55534243123456782000000080000c85010101180101010101 000000000000"

# if that command doesn't work, try the other ("eject")
MessageContent="5553424312345678000000000000061b000000030000000000 000000000000"
Должен завестись обычным /usr/ppp/dial

В файле Advanced_ConnectionMode_Content.asp
538 строкой добавка наверное такая:


<option class="content_input_fd" value="ZTE_MF626" <%nvram_match_x("LANHostConfig","wan_modem_zerocd_mode", "ZTE_MF626","selected"); %>>
ZTE MF626</option>

rss
24-05-2010, 17:43
Ошибка:


AT+CGDCONT=1,"IP","home.beeline.ru"
OK
ATD*99#Failed
Script /usr/sbin/chat -s -S -V -t 30 -f /tmp/ppp/peers/gprs.chat 2>/tmp/chat.log finished (pid 192), status = 0x3
Connect script failed


Посмотрел внимательно - здесь /tmp/ppp/peers/gprs.chat - так и должно быть. Это копия с исправленными параметрами, которую делает скрипт ppp/gprs/update. Да и ошибка возникла на ATD*99#.

rss
24-05-2010, 19:20
добавлен ZTE_MF626

WL500gp (http://narod.ru/disk/21102378000/WL500gp-1.9.2.7-d-r1608-cdma-debug.trx.html)
WL500gpv2 (http://narod.ru/disk/21102745000/WL500gpv2-1.9.2.7-d-r1608-cdma-debug.trx.html)
WL500W (http://narod.ru/disk/21102977000/WL500W-1.9.2.7-d-r1608-cdma-debug.trx.html)
WL520gu (http://narod.ru/disk/21103198000/WL520gu-1.9.2.7-d-r1608-cdma-debug.trx.html)

oleg71
25-05-2010, 06:22
добавлен ZTE_MF626

ОГРОМНОЕ спасибо!

Подскажите, если модем (с удаленными файлами, отдельная история) уже определяется по ID

Vendor= 0x19d2
Product= 0x0031

как поведет себя usb_modeswitch, проще говоря, будет ли работать ?

ЗP/S/ И эта инструкция подключения модема ZTE MF626 (http://wl500g.info/showpost.php?p=129475&postcount=1) сдается в архив ?

msevm
25-05-2010, 07:03
TargetVendor= 0x19d2
TargetProduct= 0x0031


У МТСовских "голосовых" прошивок MF626(7) другой TargetProduct, кажись 0x2003.

vectorm
25-05-2010, 10:53
ОГРОМНОЕ спасибо!

Подскажите, если модем (с удаленными файлами, отдельная история) уже определяется по ID

Vendor= 0x19d2
Product= 0x0031

как поведет себя usb_modeswitch, проще говоря, будет ли работать ?

ЗP/S/ И эта инструкция подключения модема ZTE MF626 (http://wl500g.info/showpost.php?p=129475&postcount=1) сдается в архив ?
1. Если VID и PID отличаются - указываем последнюю строчку - работу через usb_modeswitch.conf, и в нем прописываем свои данные. Если данные уже какие надо, то ничего в выборе модемов не указываем.
2. У меня модем никак не хочет работать пока. Собрал стенд для компиляции прошивки, и кручу параметры.
3. Инструкция работает при любых условиях. Самое интересное, что если прошиться новой РЕЛИЗНОЙ прошивкой, и сделать по инструкции, то будет работать без перенастройки и Wimax, и MF262. Любой из них втыкаешь, включаешь роутер, и получаешь нужный тип инета.

Vitaly_k
25-05-2010, 13:48
Модем CMOTECH CNU-680
P: Vendor=16d8 ProdID=6803 Rev= 0.00
Команда для перевода в режим модема из режима накопителя:

usb_modeswitch -v 0x16d8 -p 0x6803 -V 0x16d8 -P 0x6803 -M "555342431234567824000000800008ff524445564348470000 000000000000"

Соединение не поднимается. Лог:


Jan 1 00:00:04 kernel: hub.c: new USB device 00:03.1-1, assigned address 2
Jan 1 00:00:04 kernel: hub.c: USB hub found
Jan 1 00:00:04 kernel: hub.c: 2 ports detected
Jan 1 00:00:05 DEBUG[87]: rc applet: hotplug usb
Jan 1 00:00:05 DEBUG[87]: hotplug_usb: 9/0/0-add-424/2502/1
Jan 1 00:00:05 DEBUG[1]: start_wan:
Jan 1 00:00:05 DEBUG[1]: start_nas: done
Jan 1 00:00:05 DEBUG[90]: rc applet: udhcpc deconfig
Jan 1 00:00:05 DEBUG[90]: wan_down: vlan1 dhcp
Jan 1 00:00:05 DEBUG[90]: update_resolvconf: vlan1 0 0
Jan 1 00:00:05 dnsmasq[68]: read /etc/hosts - 2 addresses
Jan 1 00:00:05 DEBUG[92]: rc applet: watchdog
Jan 1 00:00:05 DEBUG[90]: wan_down: done
Jan 1 00:00:05 dhcp client: deconfig: lease is lost
Jan 1 00:00:05 DEBUG[90]: deconfig: done
Jan 1 00:00:05 DEBUG[92]: child_reap: Reaped 95
Jan 1 00:00:05 DEBUG[1]: child_reap: Reaped 91
Jan 1 00:00:05 kernel: hub.c: new USB device 00:03.1-1.2, assigned address 3
Jan 1 00:00:06 kernel: scsi0 : SCSI emulation for USB Mass Storage devices
Jan 1 00:00:06 kernel: Vendor: CMOTECH Model: Mass Storage Rev: 2.31
Jan 1 00:00:06 kernel: Type: CD-ROM ANSI SCSI revision: 02
Jan 1 00:00:06 DEBUG[101]: rc applet: hotplug usb
Jan 1 00:00:06 DEBUG[101]: hotplug_usb: 8/6/80-add-16d8/6803/0
Jan 1 00:00:08 DEBUG[1]: main_loop: TIMER
Jan 1 00:00:08 DEBUG[1]: main_loop: IDLE
Jan 1 00:00:08 DEBUG[1]: Hit enter to continue...
Jan 1 00:00:15 DEBUG[92]: child_reap: Reaped 103
Jan 1 00:00:20 DEBUG[105]: rc applet: udhcpc leasefail
Jan 1 00:00:55 DEBUG[106]: rc applet: udhcpc leasefail
Jan 1 00:01:15 DEBUG[92]: child_reap: Reaped 108
Jan 1 00:01:30 DEBUG[109]: rc applet: udhcpc leasefail
Jan 1 00:02:05 DEBUG[110]: rc applet: udhcpc leasefail
Jan 1 00:02:15 DEBUG[92]: child_reap: Reaped 112
Jan 1 00:02:40 DEBUG[113]: rc applet: udhcpc leasefail
Jan 1 00:03:15 DEBUG[92]: child_reap: Reaped 115
Jan 1 00:03:15 DEBUG[116]: rc applet: udhcpc leasefail
Jan 1 00:03:50 DEBUG[117]: rc applet: udhcpc leasefail
Jan 1 00:04:15 DEBUG[92]: child_reap: Reaped 119

Ручной запуск скрипта:


[admin@WL-E0CB4E7AB8E6 root]$ /usr/ppp/cdma/dial
/usr/ppp/cdma/dial: cd: line 42: can't cd to GTRAN
/usr/ppp/cdma/dial: exec: line 42: ./dial: not found

Запуск dial из папки GRAN


[admin@WL-E0CB4E7AB8E6 GTRAN]$ dial
insmod: a module named acm already exists
pppd: In file /tmp/ppp/peers/cdma: unrecognized option '/dev/usb/acm/0'

vectorm
25-05-2010, 14:16
ZTE MF626 (перепрошитый, без удаления флагов) заработал:

Режим GPRS/EDGE/UMTS
Username: beeline
Password: beeline
APN: home.beeline.ru
Dial Number (usually *99***1# or *99#): *99#
USB device serial speed (usually 115200): 115200
Zero CD Configuration
Modem type: ZTE MF626
Custom USB device parameters
USB device location ID: 1.3
USB device Vendor ID (0xabcd): 0x19d2
USB device Product ID (0xefgh): 0x0031
USB device packet size (0 for default): 0

Только почему то соединяется только в режиме GPRS/EDGE, я уже и модифицировал gprs.chat, все равно не хочет 3G выдавать ...
UPD: 3G заработал, видимо Билайн не давал соединиться. Сегодня проверил, стабильно подцепилось, и работало.
Если кто даст другие модемы - протестирую и подгоню скрипты в прошивке.

Кому интересно повозиться:
Немного модифицировал прошивку (http://vectormm.net/uploads/WL500gp-1.9.2.7-d-r1608M.trx) в попытках побороть несуществующие глюки. Скомпилена только для WL500gp.
Изменения:
1. Добавил в файл /usr/ppp/update параметр password:


Строку 20 изменил, строку 21 добавил:
sed -e "s/\\\$username\\\$/$USERNAME/g" \
sed -e "s/\\\$password\\\$/$PASSWORD/g" /usr/ppp/gprs/gprs >> /tmp/ppp/peers/gprs

2. Изменил файл /usr/ppp/gprs.chat как в инструкции по MF626 (http://wl500g.info/showpost.php?p=129475&postcount=1):


'' ''
'' 'ATZ'
'OK' 'AT+CFUN=1'
'OK' 'ATQ0 V1 E1 S0=0 &C1 &D0 +FCLASS=0'
'OK' 'AT+ZSNT=0,0,2'
'OK' 'AT+ZOPRT=5'
'OK' 'AT+ZSTART'
'OK' 'AT+CPBS="SM"'
'OK' 'AT+CPMS="SM","SM",""'
'OK' 'AT+CGDCONT=1,"IP","$apn$"'
'OK' 'ATD $dialno$'
'CONNECT' ''

2. Добавил в файл /usr/ppp/gprs 11 строкой:


password "$password$"

rss
25-05-2010, 17:48
Модем CMOTECH CNU-680
P: Vendor=16d8 ProdID=6803 Rev= 0.00
Команда для перевода в режим модема из режима накопителя:

usb_modeswitch -v 0x16d8 -p 0x6803 -V 0x16d8 -P 0x6803 -M "555342431234567824000000800008ff524445564348470000 000000000000" Автоматический запуск не сработал судя по всему из-за слишком медленной инициализации USB-устройства. Постараюсь до конца недели сделать реакцию на обнаруженные устройства. Сейчас - только задержка (с 5 до 10 секунд).




Ручной запуск скрипта:


[admin@WL-E0CB4E7AB8E6 root]$ /usr/ppp/cdma/dial
/usr/ppp/cdma/dial: cd: line 42: can't cd to GTRAN
/usr/ppp/cdma/dial: exec: line 42: ./dial: not found

Запуск dial из папки GRAN


[admin@WL-E0CB4E7AB8E6 GTRAN]$ dial
insmod: a module named acm already exists
pppd: In file /tmp/ppp/peers/cdma: unrecognized option '/dev/usb/acm/0'


Скрипт там довольно специфически сделан.

while true; do
grep -q 'Vendor=05c6 ProdID=3196' /proc/bus/usb/devices && MODEM='GTRAN'
grep -q 'Vendor=16d5 ProdID=6501' /proc/bus/usb/devices && MODEM='ANYDATA'
...


if [ "$MODEM" = "GTRAN" ]; then
nvram set wan_modem_cdma_type=GTRAN
cd GTRAN
exec ./dial $1
fi

...
sleep 1
done
Подозреваю, что в первый раз почему-то не срабатывает GTRAN/dial $1, а дальше cd GTRAN уже сработать не может.


А вот pppd: '/dev/usb/acm/0' подозреваю, что неправильно подобрано USB ID из /proc/bus/usb/devices.

rss
25-05-2010, 18:08
ZTE MF626 (перепрошитый, без удаления флагов) заработал
Надо думать, что делать с множеством модемов. Получается, что универсальные скрипты дозвона нам не помогут, поскольку реально AT-команды различаются даже в пределах gprs. Значит на ближайшее время можем использовать подход чехов - как в ppp/cdma определять, что подключили и перенаправлять в соответствующую директорию.

Задачи на ближайшее время:

выделить различия в AT-командах модемов (чтобы понять, как их группировать). Здесь же сходство модемов, например в части применимости команд ZTE MF626 к ZTE MF620;
выделить общие части скриптов или воспользовать в качестве каркаса теми универсальными скриптами дозвона, которые есть (как минимум почти однотипны update и весьма похожи dial);
придумать вменяемую схему управления всем этим из веб-интерфейса;
понять принципы мониторинга соединения средствами модема, разобраться нужны ли они и какими средствами их обеспечить.


Напрашиваются изменения в веб-интерфейс. Поскольку .chat файлы различны, а также, возможно, различаются параметры для pppd, для модемов можно выделить определенные группы или шаблоны дозвона. Проблема в том, что сейчас заставляем выбирать zerocd, но может оказаться, что правильных параметров нет. В то же время есть правильный шаблон дозвона от модема прежней модели.

Раздельный выбор шаблона дозвона и параметров zerocd будет выглядеть странно, особенно когда пункты в них совпадают, но и гарантировать такое совпадение для новых модемов не можем, следовательно и объединять их нельзя.

Как вариант предлагаю сделать базу известных модемов по VID:PID и устанавливать известные параметры (USB device location ID, usb_modeswitch, USB device packet size). Если нет - то подбирать под конкретный модем. Может быть даже позволить .chat-файл набирать или редактировать из веб-интерфейса.

vectorm
26-05-2010, 07:14
Надо думать, что делать с множеством модемов. Получается, что универсальные скрипты дозвона нам не помогут, поскольку реально AT-команды различаются даже в пределах gprs. Значит на ближайшее время можем использовать подход чехов - как в ppp/cdma определять, что подключили и перенаправлять в соответствующую директорию.
У меня MF626 заработал и на не переделанных файлах, так что, возможно и остальные будут работать. Проверил бы кто-нибудь еще, модемов стандартных же полно ...
А АТ команды вывести в веб морду - наверное слишком громоздко получится.


Задачи на ближайшее время:

выделить различия в AT-командах модемов (чтобы понять, как их группировать). Здесь же сходство модемов, например в части применимости команд ZTE MF626 к ZTE MF620;
выделить общие части скриптов или воспользовать в качестве каркаса теми универсальными скриптами дозвона, которые есть (как минимум почти однотипны update и весьма похожи dial);
придумать вменяемую схему управления всем этим из веб-интерфейса;
понять принципы мониторинга соединения средствами модема, разобраться нужны ли они и какими средствами их обеспечить.


Напрашиваются изменения в веб-интерфейс. Поскольку .chat файлы различны, а также, возможно, различаются параметры для pppd, для модемов можно выделить определенные группы или шаблоны дозвона. Проблема в том, что сейчас заставляем выбирать zerocd, но может оказаться, что правильных параметров нет. В то же время есть правильный шаблон дозвона от модема прежней модели.

Раздельный выбор шаблона дозвона и параметров zerocd будет выглядеть странно, особенно когда пункты в них совпадают, но и гарантировать такое совпадение для новых модемов не можем, следовательно и объединять их нельзя.

Как вариант предлагаю сделать базу известных модемов по VID:PID и устанавливать известные параметры (USB device location ID, usb_modeswitch, USB device packet size). Если нет - то подбирать под конкретный модем. Может быть даже позволить .chat-файл набирать или редактировать из веб-интерфейса.
Наверное надо ввести 1 универсальный usb_modeswitch.conf с параметрами, задаваемыми из веб интерфейса - типа $parameter_N$, как сейчас сделано с логином-паролем.
Основная загвоздка еще в автоопределении /dev/usb/tts/x
А /dev/usb/acm/0 - он вообще где-нибудь встречается???? Может попробовать его вообще из скриптов убрать? Если вдруг где проявится - вернуть для специфического устройства - не долго. А так логика проверки упростится.
С базой VID:PID наверное сложность - надо же будет свести все пары реальных VID:PID с желаемыми, т.е. - определяем VID:PID модема, смотрим в базе, какие должны быть в итоге VID:PID, подсовываем их в usb_modeswitch, получаем на выходе набор /dev/usb/tts/x. Видимо по той-же базе определяем, какой из "х" - модем, подставляем его в скрипт дозвона ...

rss
26-05-2010, 07:23
У меня MF626 заработал и на не переделанных файлах, так что, возможно и остальные будут работать. Проверил бы кто-нибудь еще, модемов стандартных же полно ...
С полноценной поддержкой 3G-сети? (возможно модем запоминает предыдущие состояния. Тогда нужны дополнительные строки инициализации к конкретным модемам).


Основная загвоздка еще в автоопределении /dev/usb/tts/x
А /dev/usb/acm/0 - он вообще где-нибудь встречается???? Может попробовать его вообще из скриптов убрать? Если вдруг где проявится - вернуть для специфического устройства - не долго. А так логика проверки упростится.Еще как используется. У меня на сотовом именно так и подключается. Если переделать на /dev/usb/tts/x, придется при каждом подключении телефона и каждой перезагрузке нажимать на нём PC Connection Suite.



Наверное надо ввести 1 универсальный usb_modeswitch.conf с параметрами, задаваемыми из веб интерфейса - типа $parameter_N$, как сейчас сделано с логином-паролем.

С базой VID:PID наверное сложность - надо же будет свести все пары реальных VID:PID с желаемыми, т.е. - определяем VID:PID модема, смотрим в базе, какие должны быть в итоге VID:PID, подсовываем их в usb_modeswitch, получаем на выходе набор /dev/usb/tts/x. Видимо по той-же базе определяем, какой из "х" - модем, подставляем его в скрипт дозвона ...В принципе, можно отказаться от выбора zerocd. Учитывая, что VID:PID всё равно жестко прошиты и связаны с командами, можно доделать сканирование известных. А вот если известных нет, то тогда только руками, хотя строку команды на переключение можно вынести в веб-интерфейс, чтобы не заставлять размещать файл usb_modeswitch.conf руками.

vectorm
26-05-2010, 07:31
С полноценной поддержкой 3G-сети? (возможно модем запоминает предыдущие состояния. Тогда нужны дополнительные строки инициализации к конкретным модемам).


626-й не запоминает предыдущие состояния. У него при инициализации можно задавать приоритеты АТ командой.

Еще как используется. У меня на сотовом именно так и подключается. Если переделать на /dev/usb/tts/x, придется при каждом подключении телефона и каждой перезагрузке нажимать на нём PC Connection Suite.


Ясно, тогда не вариант.

В принципе, можно отказаться от выбора zerocd. Учитывая, что VID:PID всё равно жестко прошиты и связаны с командами, можно доделать сканирование известных. А вот если известных нет, то тогда только руками, хотя строку команды на переключение можно вынести в веб-интерфейс, чтобы не заставлять размещать файл usb_modeswitch.conf руками.
Наверное тогда проще будет usb_modeswitch.conf сделать изменяемым из веб морды, чтобы в консоль не гонять народ.

sorine
26-05-2010, 07:55
Основная загвоздка еще в автоопределении /dev/usb/tts/x
А /dev/usb/acm/0 - он вообще где-нибудь встречается???? Может попробовать его вообще из скриптов убрать? Если вдруг где проявится - вернуть для специфического устройства - не долго. А так логика проверки упростится.

Устройства /dev/usb/acm/0 это все телефоны GSM CDMA
вот логика оределения /dev/usb/acm/ или /dev/usb/tts/

инициализируем драйверы

insmod acm
insmod usbserial
insmod option

потом получаем переменную usbdev

usbdev=$(cat /proc/bus/usb/devpath | grep -o "/.*" | awk -F 'm' '{print $1}')

если получаем usbdev=/dev/usb/ac то в скрипт идет dev/usb/acm/$port иначе в скрипт идет dev/usb/tts/$port

if [ "$usbdev" == "/dev/usb/ac" ]; then
echo "/dev/usb/acm/$port" >> /tmp/ppp/peers/dialup
else
echo "/dev/usb/tts/$port" >> /tmp/ppp/peers/dialup
fi
Порт получаем из веб интерфейса, по умолчанию равен 0. можно конечно сделать опрос портов для выбора интернет порта как в убунту.

vectorm
26-05-2010, 08:25
sorine
Спасибо!
В роутерном usb_modeswitch работают usb_modeswitch.rules?
Можно попробовать этими правилами нафигарить стандартные пары устройств, типа:

SUBSYSTEMS=="usb", ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="2000", RUN+="/usr/sbin/usb_modeswitch; eject /dev/sr1"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0031", RUN+="/sbin/modprobe usbserial vendor=0x19d2 product=0x031"
Опрос портов в Убунте пока не нашел, надо будет покопаться. Только программер из меня никакой :)

WhiteWings
26-05-2010, 10:33
Manufacturer: huawei
Model: E1750

MODE: GPRS/EDGE/UMTS

.conf:

DefaultVendor= 0x12d1
DefaultProduct= 0x1446
TargetVendor= 0x12d1
TargetProdct= 0x1001
MessageEndpoint= 0x01
MessageContent="55534243000000000000000000000011060000000000000000 000000000000"

PPP log:

ATZ
OK
ATI
Manufacturer: huawei
Model: E1750
Revision: 11.126.07.10.209
IMEI: 353144037632105
+GCAP: +CGSM,+FCLASS,+DS

OK
AT+COPS?
+COPS: 0,2,"25002",0

OK
AT+CGDCONT=1,"IP","internet"
^BOOT:37632105,0,0,0,20

OK
ATD*99#
CONNECTScript /usr/sbin/chat -s -S -V -t 30 -f /tmp/ppp/peers/gprs.chat 2>/tmp/chat.log finished (pid 140), status = 0x0
Serial connection established.
using channel 1
Using interface ppp0
Connect: ppp0 <--> /dev/usb/tts/2
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x2d6161f3> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x2d6161f3> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x2d6161f3> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x2d6161f3> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x2d6161f3> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x2d6161f3> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x2d6161f3> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x2d6161f3> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x2d6161f3> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x2d6161f3> <pcomp> <accomp>]
LCP: timeout sending Config-Requests
Connection terminated.
Receive serial link is not 8-bit clean:
Problem: all had bit 7 set to 0
Modem hangup




^BOOT:37632105,0,0,0,20
ATZ
OK
ATI
Manufacturer: huawei
Model: E1750
Revision: 11.126.07.10.209
IMEI: 353144037632105
+GCAP: +CGSM,+FCLASS,+DS

OK
AT+COPS?
+COPS: 0,2,"25002",0

OK
AT+CGDCONT=1,"IP","internet"
^BOOT:37632105,0,0,0,20

OK
ATD*99#
NO CARRIER

^BOOT:37632105,0,0,0,20
Failed
Script /usr/sbin/chat -s -S -V -t 30 -f /tmp/ppp/peers/gprs.chat 2>/tmp/chat.log finished (pid 180), status = 0x3
Connect script failed

На чешской прошивке коннектится, но идут потери пинга 50%, хотя Интернет вроде нормально работает... Роутер частенько зависает. (Ставил на 520gu прошивку от 500gP2)

sorine
26-05-2010, 15:08
Manufacturer: huawei
Model: E1750


Думаю надо выставить порт 0 а не 2

WhiteWings
26-05-2010, 15:39
Думаю надо выставить порт 0 а не 2
При 0 было хуже))) Но сейчас попробую еще раз, т.к. чешская зависает =(

sorine
26-05-2010, 16:16
При 0 было хуже))) Но сейчас попробую еще раз, т.к. чешская зависает =(

В портах модема не может хуже или лучше. Один из портов для интернета остальные порты для сервиса, управления, логов. Не встречал модемов Huawei, работающих на порту отличном от 0.

WhiteWings
26-05-2010, 16:33
В портах модема не может хуже или лучше. Один из портов для интернета остальные порты для сервиса, управления, логов. Не встречал модемов Huawei, работающих на порту отличном от 0.
Да в том то и дело, что на других в тот момент у меня не работал)))
Прошу помочь разобраться:
Почему при первом запуске находил ProdID = 1446, теперь всегда только 1001 - как такое может быть и какой мне теперь писать в usb_modeswitch.conf?

UPDATE: Перепрошил обратно в эту версию.

Ставлю порт 1.0 или 1.1:
Failed
Script /usr/sbin/chat -s -S -V -t 30 -f /tmp/ppp/peers/gprs.chat 2>/tmp/chat.log finished (pid 138), status = 0x3
Connect script failed

Ставлю порт 1.2:
^BOOT:37632105,0,0,0,20
ATZ
OK
ATI
Manufacturer: huawei
Model: E1750
Revision: 11.126.07.10.209
IMEI: 353144037632105
+GCAP: +CGSM,+DS,+ES

OK
AT+COPS?
+COPS: 0,2,"25002",2

OK
AT+CGDCONT=1,"IP","internet"
^BOOT:37632105,0,0,0,20

OK
ATD*99#
NO CARRIER

^RSSI:16

^BOOT:37632105,0,0,0,20
Failed
Script /usr/sbin/chat -s -S -V -t 30 -f /tmp/ppp/peers/gprs.chat 2>/tmp/chat.log finished (pid 138), status = 0x3
Connect script failed


UPDATE: Подскажите, может какие-нибудь файлы из чешской прошивки попробовать закинуть на роутер с этой прошивкой, чтобы соединялся? (типа gprs.chat?)

dlukanidin
27-05-2010, 09:05
Ничего не удалено, просто включена тестовая поддержка usb-модемов.

Попрбовал новую прошивку CDMA. Большое спасибо Rss и Vampic за усилия по доработке web морды и внесению 3G модемов в стандартный функционал дира.
Оборудование: активный USB хаб от Dlink 4 порта, Anydata ADU-300A, флэшка 4 гига ноунэйм.

Что получилось:
1. легко настроил модем, установил связь
2. связь устойчива во время активной работы модема
3. модем можно налету убирать, вставлять, всё работает

Что не получилось (зная по опыту, что при неактивном использовании возникают всякие разрывы связи, эмулировал их искуственно)

1. дир не умеет сбрасывать этот модем, как следствие, если pppd закончил работу по любой причине, а модем остался на связи, происходит подвис который лечится только вытыканием модема. Причём иногда связь не восстанавливается после перезагрузки дира.
2. встроенная самба при стандартных настройках вдруг устроила непрекращающуюся драку с ноутбуком за лидерство.

см. samba.txt (http://wl500g.info/attachment.php?attachmentid=6480&stc=1&d=1274946716)

И так до бесконечности. Это меня повеселило, но пришлось вставить конфиг для самбы в /tmp/local/etc
[global]
wins support = yes
local master = no
domain master = yes
preferred master = yes
после этого вроде они перестали драться.

3. поддержка русского языка в ftp не была включена, пришлось делать вручную в соответствии с рекомендациями форума.
4. (mac адреса сбросились на 00:90:4c:c1:. Раньше стояла версия 1445 от энтузиастов. Там заменил в nvram все mac адреса с этих на актуальные. Что-то надо делать ещё, а то приходится устанавливать ручками) Исправлено в соответствии с рекомендациями Vampic.
5. в графиках загрузки интересно было бы увидеть ppp0

Вывод: Отличная прошивка.
Буду ещё пробовать ddns, т.к. на 1445 он работал плохо, после его включения начали плодиться мёртвые процессы и возникать ошибки сегментации памяти.

Просьба к Rss и Vampic. Посмотрите пожалуйста используемые мной скрипты для устойчивой работы моего оборудования. Для тестовых целей предлагаю в скрипте для pppd опция connect, заменить параметры вызова chat на -v -t 10 или что-то похожее, чтобы видеть в логе что же он посылает и получает от модема (наличие в ответе модема кракозябр означает, что он не отвалился и что можно дать возможность pppd установить соединение на уже имеющемся коннекте.).

см. flasfs_DIR320-1.9.2.7-d-r1609M.tar.gz (http://wl500g.info/attachment.php?attachmentid=6481&stc=1&d=1274946974)

Vampik
27-05-2010, 09:32
dlukanidin
По поводу поддержки cdma/3g/gprs модемов пишите, пожалуйста, сюда: "Обвязка" CDMA (фичи "чехов" на "прошивке энтузиастов") (http://wl500g.info/showthread.php?t=22275). Автор доработок - rss, в той теме есть прошивка для Asus, я только собрал аналогичную для DIR-320.
Про подвис известная проблема, где-то в той же теме писалось, что исправляется только аппаратной модификацией роутера.
Если mac-адреса пришлось устанавливать ручками, значит заводская конфигурация в памяти роутера затерлась при использовании прошивки для Asus. К сожалению, тут есть только два варианта - ручками восстановить заводскую конфигурацию (я писал об этом в этой теме), и тогда они будут устанавливаться автоматически, либо прописывать вручную после каждого сброса настроек.

vectorm
27-05-2010, 11:37
Да в том то и дело, что на других в тот момент у меня не работал)))
Прошу помочь разобраться:
Почему при первом запуске находил ProdID = 1446, теперь всегда только 1001 - как такое может быть и какой мне теперь писать в usb_modeswitch.conf?
UPDATE: Подскажите, может какие-нибудь файлы из чешской прошивки попробовать закинуть на роутер с этой прошивкой, чтобы соединялся? (типа gprs.chat?)
Если Вы еще не заметили, то в последних версиях, указанных в этой теме, все из чешских прошивок вставлено.
Попробуйте выключить роутер, перевткнуть модем, и включить роутер.
Может есть специфический файл .chat под Ваш модем?

dlukanidin
27-05-2010, 12:40
dlukanidin
тут есть только два варианта - ручками восстановить заводскую конфигурацию (я писал об этом в этой теме), и тогда они будут устанавливаться автоматически, либо прописывать вручную после каждого сброса настроек.

Нашёл, сделал, благодарю.

Проверил вариант доработанный Vampic (DIR320-1.9.2.7-d-r1609M-cdma.trx)
вот отзыв (http://wl500g.info/showpost.php?p=198945&postcount=3323) (разместил там т.к. не видел этой темы, sorry)

Хотел добавить, что также не сохраняется пароль доступа к рутеру. Приходится ручками nvram commit делать.

WhiteWings
27-05-2010, 12:56
Если Вы еще не заметили, то в последних версиях, указанных в этой теме, все из чешских прошивок вставлено.Буду знать =)

Попробуйте выключить роутер, перевткнуть модем, и включить роутер.Ясен пень))) Уже раз 5 сделал...

Может есть специфический файл .chat под Ваш модем?Ну если с чешской прошивкой только с правкой usb_modeswitch.conf подключается - значит нет специфического файла наверно =)

vectorm
27-05-2010, 13:39
Ну если с чешской прошивкой только с правкой usb_modeswitch.conf подключается - значит нет специфического файла наверно =)
Чешские файлы настроек модемов перенесены практически один-в-один, так что работать должно одинаково.

WhiteWings
28-05-2010, 06:20
Чешские файлы настроек модемов перенесены практически один-в-один, так что работать должно одинаково.
Думаю что что-то все таки в прошивке) Ибо 3 раза переустанавливал туда-обратно, 3 раза один итог... А действия одинаковые: Отключегние Flash, Отключение 2.0, редактирование .conf, выставление параметров и т.д.
Сейчас надыбал E156G модем, он с чешской прошивкой работает нормально (иногда не запускается правда). Так что на этом моменте я отлучусь на не определенное время (дела)... Как возможность появится, надеюсь, с вашей помощью, пойму почему E1750 не коннектился...

dlukanidin
28-05-2010, 07:17
Поскольку в стандартной конфигурации модем подвисал, сделал свою на прошивке r1609M-cdma от Vampic. USB Modem->PPP Connection Mode->User defined.
За образец взял cdma->AnyDATA. Скорректировал:
1. Добавил проверку поднятого соединения при коннекте (наличие в ответе модема '}' ).
2. Добавил "передёргивание" option, если pppd закончился по ошибке скрипта с таймаутом.
3. Немного скорректировал скрипт дозвона для chat (я думаю это не оказало никакого влияния).

Итог:
1. При наличии трафика всё работает стабильно.
2. При отсутствии трафика каждые полчаса модем отпадает. Судя по всему по инициативе опсоса и поднимается только после "передёргивание" option.
3. ddns работает отлично.

В целом без вмешательства оператора всё проработало сутки и ничего не указывает, что что-то изменится.

На что обратил внимание - на странице диагностики увидел:

USB devfs Devices
Device : Location : Info
/dev/usb/tts/0 : 1.1.0 : Manufacturer="AnyDATA Corporation" : Product="AnyDATA CDMA Products"
/dev/usb/tts/1 : 1.1.1 : Manufacturer="AnyDATA Corporation" : Product="AnyDATA CDMA Products"
/dev/usb/tts/0 : 1.1.0 : Manufacturer="AnyDATA Corporation" : Product="AnyDATA CDMA Products"
/dev/usb/tts/1 : 1.1.1 : Manufacturer="AnyDATA Corporation" : Product="AnyDATA CDMA Products"
/dev/usb/tts/0 : 1.1.0 : Manufacturer="AnyDATA Corporation" : Product="AnyDATA CDMA Products"
/dev/usb/tts/1 : 1.1.1 : Manufacturer="AnyDATA Corporation" : Product="AnyDATA CDMA Products"
/dev/usb/tts/0 : 1.1.0 : Manufacturer="AnyDATA Corporation" : Product="AnyDATA CDMA Products"
/dev/usb/tts/1 : 1.1.1 : Manufacturer="AnyDATA Corporation" : Product="AnyDATA CDMA Products"
/dev/usb/tts/0 : 1.1.0 : Manufacturer="AnyDATA Corporation" : Product="AnyDATA CDMA Products"
/dev/usb/tts/1 : 1.1.1 : Manufacturer="AnyDATA Corporation" : Product="AnyDATA CDMA Products"
/dev/usb/tts/0 : 1.1.0 : Manufacturer="AnyDATA Corporation" : Product="AnyDATA CDMA Products"
/dev/usb/tts/1 : 1.1.1 : Manufacturer="AnyDATA Corporation" : Product="AnyDATA CDMA Products"
/dev/usb/tts/0 : 1.1.0 : Manufacturer="AnyDATA Corporation" : Product="AnyDATA CDMA Products"
/dev/usb/tts/1 : 1.1.1 : Manufacturer="AnyDATA Corporation" : Product="AnyDATA CDMA Products"
/dev/usb/tts/0 : 1.1.0 : Manufacturer="AnyDATA Corporation" : Product="AnyDATA CDMA Products"
/dev/usb/tts/1 : 1.1.1 : Manufacturer="AnyDATA Corporation" : Product="AnyDATA CDMA Products"
/dev/usb/tts/0 : 1.1.0 : Manufacturer="AnyDATA Corporation" : Product="AnyDATA CDMA Products"
/dev/usb/tts/1 : 1.1.1 : Manufacturer="AnyDATA Corporation" : Product="AnyDATA CDMA Products"
/dev/usb/tts/0 : 1.1.0 : Manufacturer="AnyDATA Corporation" : Product="AnyDATA CDMA Products"
/dev/usb/tts/1 : 1.1.1 : Manufacturer="AnyDATA Corporation" : Product="AnyDATA CDMA Products"

что-то здесь неправильно - слишком их много.

WhiteWings
28-05-2010, 16:41
Радость моя не долгой была - с E156G тоже зависает роутер... Так что думаю это из-за того, что я 500gpV2 ставлю на 520gu

UPDATE: Итак, удалось таки подключить с прошивкой WL520gu-1.9.2.7-d-r1608-cdma-debug.trx
Сделал все как в чешской - заработало, видимо, раньше какой то момент упускал...
Но при нагрузке эта сволоч зависает!!!! Прошу помочь разобраться.
Имеем: модем E156G и E1750 с одной сим-картой.
Что делаю:
1) Factory default
2) Включаю WAN через USB модем.
3) Отключаю USB Storage, USB 2.0
4) Выбираю тип GPRS
5) Выставляю параметры Vendor, Product, ASP и т.д., тип модема E169
6) Перезагружаю выключением питания.

Когда пингую - пингуется, как только даю нагрузку - виснет (через 1-15 сек нагрузки)


USB Devices

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.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0000 ProdID=0000 Rev= 0.00
S: Product=USB OHCI Root Hub
S: SerialNumber=b8003000
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=255ms
T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=12d1 ProdID=1001 Rev= 0.00
S: Manufacturer=HUAWEI Technology
S: Product=HUAWEI Mobile
C:* #Ifs= 3 Cfg#= 1 Atr=e0 MxPwr=500mA
I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=serial
E: Ad=81(I) Atr=03(Int.) MxPS= 64 Ivl=5ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=01(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=serial
E: Ad=83(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=serial
E: Ad=84(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms


USB devfs Devices

Device : Location : Info
/dev/usb/tts/0 : 1.0 : Manufacturer="HUAWEI Technology" : Product="HUAWEI Mobile"
/dev/usb/tts/1 : 1.1 : Manufacturer="HUAWEI Technology" : Product="HUAWEI Mobile"
/dev/usb/tts/2 : 1.2 : Manufacturer="HUAWEI Technology" : Product="HUAWEI Mobile"


PPP chat log

ATZ
OK
ATI
Manufacturer: huawei
Model: E1750
Revision: 11.126.07.10.209
IMEI: 353144037632105
+GCAP: +CGSM,+DS,+ES

OK
AT+COPS?
+COPS: 0,2,"25002",2

OK
AT+CGDCONT=1,"IP","internet"
OK
ATD*99#
CONNECTScript /usr/sbin/chat -s -S -V -t 30 -f /tmp/ppp/peers/gprs.chat 2>/tmp/chat.log finished (pid 138), status = 0x0
Serial connection established.
using channel 1
Using interface ppp0
Connect: ppp0 <--> /dev/usb/tts/0
sent [LCP ConfReq id=0x1 ]
rcvd [LCP ConfReq id=0x0 ]
sent [LCP ConfAck id=0x0 ]
rcvd [LCP ConfAck id=0x1 ]
sent [LCP EchoReq id=0x0 magic=0x6c6182cb]
rcvd [LCP DiscReq id=0x1 magic=0xf4c038]
rcvd [CHAP Challenge id=0x1 <24ec1cca2697d330d4586893e611a0a7>, name = "UMTS_CHAP_SRVR"]
sent [CHAP Response id=0x1 , name = ""]
rcvd [LCP EchoRep id=0x0 magic=0xf4c038 6c 61 82 cb]
rcvd [CHAP Success id=0x1 ""]
CHAP authentication succeeded
CHAP authentication succeeded
sent [CCP ConfReq id=0x1 ]
sent [IPCP ConfReq id=0x1 ]
rcvd [LCP ProtRej id=0x2 80 fd 01 01 00 15 12 06 00 00 00 01 1a 04 78 00 18 04 78 00 15 03 2f]
Protocol-Reject for 'Compression Control Protocol' (0x80fd) received
rcvd [IPCP ConfNak id=0x1 ]
sent [IPCP ConfReq id=0x2 ]
rcvd [IPCP ConfNak id=0x2 ]
sent [IPCP ConfReq id=0x3 ]
rcvd [IPCP ConfReq id=0x0]
sent [IPCP ConfNak id=0x0 ]
rcvd [IPCP ConfRej id=0x3 ]
sent [IPCP ConfReq id=0x4 ]
rcvd [IPCP ConfReq id=0x1]
sent [IPCP ConfAck id=0x1]
rcvd [IPCP ConfNak id=0x4 ]
sent [IPCP ConfReq id=0x5 ]
rcvd [IPCP ConfAck id=0x5 ]
Could not determine remote IP address: defaulting to 10.64.64.64
local IP address 10.211.162.192
remote IP address 10.64.64.64
primary DNS address 10.78.72.44
secondary DNS address 10.78.72.20
Script /tmp/ppp/ip-up started (pid 144)
Script /tmp/ppp/ip-up finished (pid 144), status = 0x0



[admin@WL-E0CB4EA872BF root]$ tail -f /tmp/syslog.log
Jan 1 00:00:22 DEBUG[144]: ip2class: 192.168.1.0/24
Jan 1 00:00:22 DEBUG[1]: child_reap: Reaped 68
Jan 1 00:00:22 DEBUG[1]: Hit enter to continue...
Jan 1 00:00:22 DEBUG[144]: stop_upnp: done
Jan 1 00:00:22 DEBUG[144]: start_upnp: done
Jan 1 00:00:22 DEBUG[144]: wan_up: done
Jan 1 00:00:22 3G USB Modem: connected to ISP
Jan 1 00:00:22 DEBUG[144]: ipup_main: done
Jan 1 00:00:22 DEBUG[1]: child_reap: Reaped 152
Jan 1 00:00:22 DEBUG[1]: Hit enter to continue...
May 28 16:43:25 DEBUG[88]: child_reap: Reaped 182
May 28 16:43:36 login[183]: root login on 'pts/1'
May 28 16:44:22 ntp client: Synchronizing time with time.nist.gov ...
May 28 16:44:22 pppd[136]: System time change detected.
May 28 16:44:37 DEBUG[88]: child_reap: Reaped 186
May 28 16:44:40 login[187]: root login on 'pts/2'
May 28 16:45:34 pppd[136]: System time change detected.




Статистика Ping для 93.158.134.3:
Пакетов: отправлено = 70, получено = 35, потеряно = 35 (50% потерь),
Приблизительное время приема-передачи в мс:
Минимальное = 62мсек, Максимальное = 240 мсек, Среднее = 75 мсек






[admin@WL-E0CB4EA872BF root]$ tail -f /tmp/chat.log
rcvd [IPCP ConfNak id=0x4 <addr 10.211.162.192> <ms-dns1 10.78.72.44> <ms-dns2 1
0.78.72.20>]
sent [IPCP ConfReq id=0x5 <addr 10.211.162.192> <ms-dns1 10.78.72.44> <ms-dns2 1
0.78.72.20>]
rcvd [IPCP ConfAck id=0x5 <addr 10.211.162.192> <ms-dns1 10.78.72.44> <ms-dns2 1
0.78.72.20>]
Could not determine remote IP address: defaulting to 10.64.64.64
local IP address 10.211.162.192
remote IP address 10.64.64.64
primary DNS address 10.78.72.44
secondary DNS address 10.78.72.20
Script /tmp/ppp/ip-up started (pid 144)
Script /tmp/ppp/ip-up finished (pid 144), status = 0x0
System time change detected.
System time change detected.


UPDATE: Таак.. Писец полный, подрубил Yota - тоже завис при нагрузке... Сейчас попробую обычный интернет... Если зависнет - перепрошью родную прошивку... Если и тогда зависнет - понесу обратно в магаз =)

Vitaly_k
28-05-2010, 18:13
Насколько я понимаю, автор сейчас собирает под разные роутеры и выкладывает руками прошивки. Что нужно, чтобы доработки в части модемов включались в ежедневные сборки на ftp://core.dumped.ru/wl ?
Владелец этого ресурса сюда заглядывает?

rss
28-05-2010, 19:32
1. При наличии трафика всё работает стабильно.
Если достаточно хотя бы раз в минуту дёргать - надо просто добавить ping.



USB devfs Devices
Device : Location : Info
/dev/usb/tts/0 : 1.1.0 : Manufacturer="AnyDATA Corporation" : Product="AnyDATA CDMA Products"
/dev/usb/tts/1 : 1.1.1 : Manufacturer="AnyDATA Corporation" : Product="AnyDATA CDMA Products"
/dev/usb/tts/0 : 1.1.0 : Manufacturer="AnyDATA Corporation" : Product="AnyDATA CDMA Products"
/dev/usb/tts/1 : 1.1.1 : Manufacturer="AnyDATA Corporation" : Product="AnyDATA CDMA Products"
что-то здесь неправильно - слишком их много.
Вероятно сказывается переподключение option.

rss
28-05-2010, 19:35
Насколько я понимаю, автор сейчас собирает под разные роутеры и выкладывает руками прошивки. Что нужно, чтобы доработки в части модемов включались в ежедневные сборки на ftp://core.dumped.ru/wl ?
Владелец этого ресурса сюда заглядывает?

На core.dumped.ru выкладывает Unlimited. Однако в этой ветке ежесуточные сборки не помогут. Когда появляются изменения - я пересобираю сам, а когда их нет - нет смысла пересобирать.

Производительность работы по вечерам у меня ограниченная ;) .

На выходных попробую переделать zerocd и что-нибудь придумать с универсальными скриптом + шаблоны .chat-файлов.

rss
28-05-2010, 19:42
Радость моя не долгой была - с E156G тоже зависает роутер... Так что думаю это из-за того, что я 500gpV2 ставлю на 520gu А зачем на 500gpV2 ставить прошивку от 520gu? :eek:


Сделал все как в чешской - заработало, видимо, раньше какой то момент упускал...
Но при нагрузке эта сволоч зависает!!!! Прошу помочь разобраться.

UPDATE: Таак.. Писец полный, подрубил Yota - тоже завис при нагрузке... Сейчас попробую обычный интернет... Если зависнет - перепрошью родную прошивку... Если и тогда зависнет - понесу обратно в магаз =) Зависает маршрутизатор или модем?

Собственно, проще всего проверить - поставить релизную прошивку с http://wl500g.googlecode.com и попробовать нагрузить на йоте. (Только для своего маршрутизатора).

Если виснет модем - тогда жду полный syslog (особенно после того, как модем завис) от прошивки из этой ветки (с отладочной информацией).

WhiteWings
28-05-2010, 20:37
А зачем на 500gpV2 ставить прошивку от 520gu? :eek:
Чешской прошивки для 520 нету) Ну вообщем оно работает так же как и с прошивкой 520gu из этой ветки.
Зависает маршрутизатор или модем?Роутер зависает - перестает отвечать на пинги даже. При чем зависает на обоих прошивках, с обоими модемами.
При нагрузке на WAN порт - все нормально. Т.е. впечатление что что-то с USB Завтра буду пробовать стандартную прошивку c code.google.com и потом DD-WRT с йотой...

vectorm
28-05-2010, 20:45
Немного статистики:
Погонял на WL500gP v1 с модемом ZTE MF626 прошивку, с немного доработанными файликами (http://wl500g.info/showpost.php?p=198731&postcount=69). Но и с обычной версией 1608-cdma аналогично должно быть.
Билайн сбрасывает коннект каждые 90 минут.
Модем стабильно переконнекчивается. Даже после ребута роутера.

Аналогичный модем с D-Link 320 и прошивкой 1612-cdma после ребута не восстанавливает соединения:

Jan 1 07:51:38 kernel: usbserial.c: USB Serial deregistering driver Option GSM modem
Jan 1 07:51:38 kernel: usbserial.c: USB Serial support registered for Option GSM modem
Jan 1 07:51:38 kernel: option.c: USB Driver for GSM modems: v0.7.2a
Jan 1 07:51:43 pppd[18448]: no device specified and stdin is not a tty
по кругу.
Видимо Длинк неполноценно поддерживается Асусной прошивкой.

Unlimited
28-05-2010, 21:16
Насколько я понимаю, автор сейчас собирает под разные роутеры и выкладывает руками прошивки. Что нужно, чтобы доработки в части модемов включались в ежедневные сборки на ftp://core.dumped.ru/wl ?
Владелец этого ресурса сюда заглядывает?
Заглядывает :) ну почему-то создатели прошивки решили по-умолчанию выключить поддержку CDMA... могу собирать еще версию с ней конечно...

dlukanidin
29-05-2010, 01:09
Вероятно сказывается переподключение option.

В итоге, пришлось отказаться от option

Если ипользую option то, гарантированно получаю зависание при любом отключении pppd. Причём лечится только перезагрузкой option.
Это не работает с опцией persist. А как следствие не работает при подключении по запросу.
Потенциально при отключении option теряю возможность поднять второй USB канал (я так понимаю преимущества работы логики option), но имею стабильность первичного соединения.

Думаю,что option надо переписовать под себя. Не уверен, что это стоит делать.

Хочу получить возможность работы со вторым 3G или GPRS соединением для backup канала или управления маршрутизатором через SMS.

dlukanidin
29-05-2010, 11:48
Вот логи успешной работы

lly
29-05-2010, 14:10
Заглядывает :) ну почему-то создатели прошивки решили по-умолчанию выключить поддержку CDMA...
Пусть наберуться терпения, скоро всё будет ;)

В итоге, пришлось отказаться от option
...
Думаю,что option надо переписовать под себя. Не уверен, что это стоит делать.
Не переписывать, а доделывать. Теперь (после массового тестирования) видно, что бекпорт option с багами. Осталось их локализовать и исправить. Увы, у меня самого usb модема нет...

dlukanidin
30-05-2010, 01:21
Не переписывать, а доделывать.

Понимаю, что вопрос некорректен, но сильно ломает разбираться со сборкой прошивки, какую версию linux взять, что установить, что от куда скачать и т.д.
Можно попросить готовый образ для сборки текущей прошивки под виртуальную машину, например Sun Virtual box? (и конечно коротенькую инструкцию, что где лежит и что запустить, совсем наглый :))
Нет так нет, а если да, то было бы супер. Вроде и время есть и определённое желание.

В любом случае огромная благодарность за проделанную Вами работу.

rss
30-05-2010, 05:40
Понимаю, что вопрос некорректен, но сильно ломает разбираться со сборкой прошивки, какую версию linux взять, что установить, что от куда скачать и т.д.
Можно попросить готовый образ для сборки текущей прошивки под виртуальную машину, например Sun Virtual box? (и конечно коротенькую инструкцию, что где лежит и что запустить, совсем наглый :))
Нет так нет, а если да, то было бы супер. Вроде и время есть и определённое желание.

В любом случае огромная благодарность за проделанную Вами работу.

http://code.google.com/p/wl500g/wiki/Welcome?tm=6

PS: у меня на OpenSuSE 11.1 AMD64

VicSer
30-05-2010, 14:37
Понимаю, что вопрос некорректен, но сильно ломает разбираться со сборкой прошивки, какую версию linux взять, что установить, что от куда скачать и т.д.
Можно попросить готовый образ для сборки текущей прошивки под виртуальную машину, например Sun Virtual box? (и конечно коротенькую инструкцию, что где лежит и что запустить, совсем наглый :))
Нет так нет, а если да, то было бы супер. Вроде и время есть и определённое желание.

В любом случае огромная благодарность за проделанную Вами работу.

Ссылка на образ пробегала в этой (http://wl500g.info/showpost.php?p=196754&postcount=4136) теме.

dlukanidin
30-05-2010, 17:10
http://code.google.com/p/wl500g/wiki/Welcome?tm=6
PS: у меня на OpenSuSE 11.1 AMD64


Ссылка на образ пробегала в этой (http://wl500g.info/showthread.php?t=17136&page=277) теме. Смотрите сообщения №4147, 4149.

Большие благодарности за ссылки, но для меня это к сожалению не совсем подходит. В обоих случаях необходимо качать обновления до текущей версии, причём в онлайне из под линукса. Это довольно большой объём, а при моей связи это меделенно и дорого. Я имею возможность попросить скачать любой файл и привезти мне его на флешке, но это должен быть 1 (или несколько, но не много) файл.
Если какие либо решения возможны, прошу прислать в личку. Sorry за офтоп.

rss
31-05-2010, 06:23
WL500gp (http://narod.ru/disk/21334351000/WL500gp-1.9.2.7-d-r1626M-debug.trx.html)
WL500gpv2 (http://narod.ru/disk/21334366000/WL500gpv2-1.9.2.7-d-r1626M-debug.trx.html)
WL500W (http://narod.ru/disk/21334383000/WL500W-1.9.2.7-d-r1626M-debug.trx.html)
WL520gu (http://narod.ru/disk/21334395000/WL520gu-1.9.2.7-d-r1626M-debug.trx.html)


Изменения:

Реализована процедура обнаружения USB-устройства. Теперь дозвон будет начинаться сразу после того, как устройство реально обнаружено. Задержки исключены.
Добавлена база конфигурации usb_modeswitch.d. В настройках ZeroCD осталось два значимых пункта - Auto и User config. Скрипт zerocd пока еще не вырезан.


PS: по умолчанию в проекте включена сборка cdma. Т.е. теперь на ftp://core.dumped.ru/wl .
Однако при возникновении ошибок приводить логи отладочных прошивок!!!

Vitaly_k
31-05-2010, 10:35
Модем CMOTECH не соединяется.



Jan 1 00:00:06 kernel: hub.c: new USB device 00:03.1-1.2, assigned address 3
Jan 1 00:00:07 kernel: scsi0 : SCSI emulation for USB Mass Storage devices
Jan 1 00:00:07 kernel: Vendor: CMOTECH Model: Mass Storage Rev: 2.31
Jan 1 00:00:07 kernel: Type: CD-ROM ANSI SCSI revision: 02
Jan 1 00:00:08 kernel: scsi1 : SCSI emulation for USB Mass Storage devices
Jan 1 00:00:08 kernel: Vendor: CMOTECH Model: Mass Storage Rev: 2.31
Jan 1 00:00:08 kernel: Type: Direct-Access ANSI SCSI revision: 02
Jan 1 00:00:08 kernel: Attached scsi removable disk sda at scsi1, channel 0, id 0, lun 0
Jan 1 00:00:08 kernel: sda: Waiting for disc 0 to settle.
Jan 1 00:00:08 kernel: SCSI device sda: 102401 512-byte hdwr sectors (52 MB)
Jan 1 00:00:08 kernel: sda: Write Protect is off
Jan 1 00:00:08 kernel: Partition check:
Jan 1 00:00:08 kernel: /dev/scsi/host1/bus0/target0/lun0: unknown partition table
Jan 1 00:00:08 DEBUG[103]: rc applet: hotplug usb
Jan 1 00:00:08 DEBUG[103]: hotplug_usb: 255/255/255-add-16d8/6803/0
Jan 1 00:00:08 DEBUG[104]: rc applet: hotplug usb
Jan 1 00:00:08 DEBUG[103]: hotplug_network_device: 255/255/255 add 16d8/6803/0
Jan 1 00:00:08 DEBUG[103]: hotplug_sem_open: (nil), Function not implemented
Jan 1 00:00:08 DEBUG[103]: hotplug_sem_open: (nil), Function not implemented
Jan 1 00:00:08 DEBUG[103]: hotplug_network_device: vlan1 dhcp (nil)
Jan 1 00:00:08 DEBUG[103]: hotplug_network_device: done
Jan 1 00:00:08 DEBUG[104]: hotplug_usb: 255/255/255-add-16d8/6803/0
Jan 1 00:00:08 DEBUG[104]: hotplug_network_device: 255/255/255 add 16d8/6803/0
Jan 1 00:00:08 DEBUG[104]: hotplug_sem_open: (nil), Function not implemented
Jan 1 00:00:08 DEBUG[104]: hotplug_sem_open: (nil), Function not implemented
Jan 1 00:00:08 DEBUG[104]: hotplug_network_device: vlan1 dhcp (nil)
Jan 1 00:00:08 DEBUG[104]: hotplug_network_device: done
Jan 1 00:00:08 DEBUG[105]: rc applet: hotplug usb
Jan 1 00:00:08 DEBUG[105]: hotplug_usb: 255/255/255-add-16d8/6803/0
Jan 1 00:00:08 DEBUG[105]: hotplug_network_device: 255/255/255 add 16d8/6803/0
Jan 1 00:00:08 DEBUG[105]: hotplug_sem_open: (nil), Function not implemented
Jan 1 00:00:08 DEBUG[105]: hotplug_sem_open: (nil), Function not implemented
Jan 1 00:00:08 DEBUG[105]: hotplug_network_device: vlan1 dhcp (nil)
Jan 1 00:00:08 DEBUG[105]: hotplug_network_device: done
Jan 1 00:00:08 DEBUG[106]: rc applet: hotplug usb
Jan 1 00:00:08 DEBUG[107]: rc applet: hotplug usb
Jan 1 00:00:08 DEBUG[106]: hotplug_usb: 8/6/80-add-16d8/6803/0
Jan 1 00:00:08 DEBUG[107]: hotplug_usb: 8/6/80-add-16d8/6803/0
Jan 1 00:00:09 DEBUG[1]: main_loop: TIMER
Jan 1 00:00:09 DEBUG[1]: main_loop: IDLE
Jan 1 00:00:09 DEBUG[1]: Hit enter to continue...
Jan 1 00:00:16 DEBUG[92]: child_reap: Reaped 109
Jan 1 00:00:21 DEBUG[113]: rc applet: udhcpc leasefail
Jan 1 00:00:56 DEBUG[114]: rc applet: udhcpc leasefail
Jan 1 00:01:16 DEBUG[92]: child_reap: Reaped 116
Jan 1 00:01:31 DEBUG[117]: rc applet: udhcpc leasefail
Jan 1 00:02:06 DEBUG[118]: rc applet: udhcpc leasefail
Jan 1 00:02:16 DEBUG[92]: child_reap: Reaped 120

vectorm
31-05-2010, 11:01
Да, что-то все поломалось ...
Но модем стал реально быстрее определяться.
ZTE MF626
Логи в ПМ rss сложил.
И в 1628 аналогичная ситуация.
Я пробовал поправить файлики /gprs и /gprs.chat, но не помогло, видимо логика в другом месте пострадала...

+ZUSIMR:2

+ZUSIMR:2
Failed
/usr/sbin/chat -s -S -V -t 30 -f /tmp/ppp/peers/gprs.chat 2>/tmp/chat.log finished (pid 252), status = 0x3
Connect script failed
Script /usr/sbin/chat -s -S -V -t 30 -f /tmp/ppp/peers/gprs.chat 2>/tmp/chat.log finished (pid 254), status = 0x3
Connect script failed
Script /usr/sbin/chat -s -S -V -t 30 -f /tmp/ppp/peers/gprs.chat 2>/tmp/chat.log finished (pid 253), status = 0x3
Connect script failed
Плюс pppd запускается по три раза подряд.

Jan 1 00:00:23 pppd[251]: pppd 2.4.5 started by admin, uid 0
Jan 1 00:00:23 pppd[250]: pppd 2.4.5 started by admin, uid 0
Jan 1 00:00:23 pppd[237]: pppd 2.4.5 started by admin, uid 0
Jan 1 00:00:54 pppd[251]: Connect script failed
Jan 1 00:00:55 pppd[237]: Connect script failed
Jan 1 00:00:55 pppd[250]: Connect script failed
Jan 1 00:00:55 pppd[251]: Exit.
Jan 1 00:00:56 pppd[237]: Exit.
Jan 1 00:00:56 pppd[250]: Exit.

rss
31-05-2010, 11:15
Модем CMOTECH не соединяется.


Jan 1 00:00:08 DEBUG[103]: hotplug_usb: 255/255/255-add-16d8/6803/0
Jan 1 00:00:08 DEBUG[104]: rc applet: hotplug usb
Jan 1 00:00:08 DEBUG[103]: hotplug_network_device: 255/255/255 add 16d8/6803/0
Jan 1 00:00:08 DEBUG[103]: hotplug_sem_open: (nil), Function not implemented
Jan 1 00:00:08 DEBUG[103]: hotplug_sem_open: (nil), Function not implemented
Jan 1 00:00:08 DEBUG[103]: hotplug_network_device: vlan1 dhcp (nil)
Jan 1 00:00:08 DEBUG[103]: hotplug_network_device: done
Jan 1 00:00:08 DEBUG[104]: hotplug_usb: 255/255/255-add-16d8/6803/0
Jan 1 00:00:08 DEBUG[104]: hotplug_network_device: 255/255/255 add 16d8/6803/0
Jan 1 00:00:08 DEBUG[104]: hotplug_sem_open: (nil), Function not implemented
Jan 1 00:00:08 DEBUG[104]: hotplug_sem_open: (nil), Function not implemented
Jan 1 00:00:08 DEBUG[104]: hotplug_network_device: vlan1 dhcp (nil)
Jan 1 00:00:08 DEBUG[104]: hotplug_network_device: done
Jan 1 00:00:08 DEBUG[105]: rc applet: hotplug usb
Jan 1 00:00:08 DEBUG[105]: hotplug_usb: 255/255/255-add-16d8/6803/0
Jan 1 00:00:08 DEBUG[105]: hotplug_network_device: 255/255/255 add 16d8/6803/0
Jan 1 00:00:08 DEBUG[105]: hotplug_sem_open: (nil), Function not implemented
Jan 1 00:00:08 DEBUG[105]: hotplug_sem_open: (nil), Function not implemented
Jan 1 00:00:08 DEBUG[105]: hotplug_network_device: vlan1 dhcp (nil)
Jan 1 00:00:08 DEBUG[105]: hotplug_network_device: done

В настройках указано VID, PID 0x16d8 и 0x6803?

Впрочем, в нынешнем виде не запустится - идёт троекратный запуск hotplug_usb: 255/255/255-add-16d8/6803/0, что никак сейчас не обрабатывается.

Возможно, что придется перевести запуск скрипта дозвона на watchdog, но тогда дозвон будет происходить не мгновенно после обнаружения, а в течение 10 секунд.

Vitaly_k
31-05-2010, 12:35
В настройках указано VID, PID 0x16d8 и 0x6803?


Нет, через стандарное подключение.
UPD:
Через custom указанием ID тоже не работает.

dlukanidin
31-05-2010, 20:11
Попробовал подключить одновременно Anydata modem и Samsung handy. Вместе определяться отказываются либо одно, либо другое. Пробовал и с option и без него, указывал явно и пытался определить в автомате. Без разницы, только один. Более того, подключенный, но не поднятый драйвером мобильник заставляет глючить usbserial, тот спонтанно перезагружается, а потом и вовсе подвисает (я так подозреваю, что ему самостоятельно перезагружаться вредновато). Боюсь с бэкап каналом по GPRS просто не получится. Т.е. поднять то его в случае проблем с CDMA можно. Но проверять поднялся ли основной канал на CDMA не получится не отключившись и не перезагрузив option или usbserial, а это уже не то.
Кроме того была задумка аварийное управление через SMS организовать, придётся с Anydata бороться в диагностическом режиме. Кстати никто не подскажет как можно работать с ком портом посылая и принимая двоичные данные. Вернее послать то ещё можно, а вот как принять и проанализировать в скрипте ?

rss
01-06-2010, 04:15
r1631-debug

WL500gp (http://narod.ru/disk/21377918000/WL500gp-1.9.2.7-d-r1631M-debug.trx.html)
WL500gpv2 (http://narod.ru/disk/21377922000/WL500gpv2-1.9.2.7-d-r1631M-debug.trx.html)
WL500W (http://narod.ru/disk/21377927000/WL500W-1.9.2.7-d-r1631M-debug.trx.html)
WL520gu (http://narod.ru/disk/21377930000/WL520gu-1.9.2.7-d-r1631M-debug.trx.html)

Viper_Rus
01-06-2010, 06:37
HUAWEI E160G почему-то не завелся. Помню год назад руками получилось запусить. Щас взял DIR-320. Прошил отладочной прошивкой. Сделал полный сброс. Произвел минимальные настройки. К сожалению не подсоединяется :( На компе работает.

rss
01-06-2010, 06:57
HUAWEI E160G почему-то не завелся. Помню год назад руками получилось запусить. Щас взял DIR-320. Прошил отладочной прошивкой. Сделал полный сброс. Произвел минимальные настройки. К сожалению не подсоединяется :( На компе работает.

Модем обнаруживается, usb_modeswitch запускаются - это хорошо. А вот почему пусто в USB devfs Devices - не знаю. Надо разбираться с драйверами. unrecognized option '/dev/usb/tts/0' быть не должно. К сожалению, модема у меня нет - подсказать не могу.

dlukanidin
01-06-2010, 08:18
Прошивка r1612M-cdma (на 1628 сам поднялся ppp1 и начал бороться с ppp0 за модем, откатился на 1612)

Обнаружил в логе:


Jun 1 04:48:07 kernel: usb.c: USB disconnect on device 00:03.1-1.1 address 3
Jun 1 04:48:07 kernel: usbserial.c: Generic converter now disconnected from ttyUSB0
Jun 1 04:48:07 kernel: usbserial.c: Generic converter now disconnected from ttyUSB1
Jun 1 04:48:07 pppd[129]: Modem hangup
Jun 1 04:48:07 pppd[129]: Connect time 58.7 minutes.
Jun 1 04:48:07 pppd[129]: Sent 3864 bytes, received 8646 bytes.
Jun 1 04:48:08 pppd[129]: Connection terminated.
Jun 1 04:48:08 dnsmasq[74]: read /etc/hosts - 2 addresses
Jun 1 04:48:08 dnsmasq[74]: using nameserver 212.119.97.5#53
Jun 1 04:48:08 dnsmasq[74]: using nameserver 212.119.99.200#53
Jun 1 04:48:08 3G USB Modem: Disconnected
Jun 1 04:48:11 kernel: hub.c: new USB device 00:03.1-1.1, assigned address 5
Jun 1 04:48:11 kernel: usbserial.c: Generic converter detected
Jun 1 04:48:11 kernel: usbserial.c: Generic converter now attached to ttyUSB0 (or usb/tts/0 for devfs)
Jun 1 04:48:11 kernel: usbserial.c: Generic converter detected
Jun 1 04:48:11 kernel: usbserial.c: Generic converter now attached to ttyUSB1 (or usb/tts/1 for devfs)
Jun 1 04:51:47 pppd[129]: Starting link
Jun 1 04:51:49 pppd[129]: Serial connection established.
Jun 1 04:51:49 pppd[129]: Connect: ppp0 <--> /dev/usb/tts/0
................и дальше успешное соединение.

Точно такое же через 3 часа. Попробовал выдернуть и воткнуть модем руками. Совпадает, только разрыв по времени не 3 сек., а побольше соответственно.
Т.е. впечатление, что кто-то программно выдёргивает модем. Идея как бы не плохая, только бы понять при каких условиях это возникает и кто это делает.

rss
01-06-2010, 08:23
Прошивка r1612M-cdma (на 1628 сам поднялся ppp1 и начал бороться с ppp0 за модем, откатился на 1612)
В r1631-debug (выложил сегодня) учтён многократный вызов hotplug. По остальному ответить не могу - модема нет.

vectorm
01-06-2010, 09:14
В r1631-debug (выложил сегодня) учтён многократный вызов hotplug.
ZTE MF626 заработал, проверю как со временем переконнекчивается.
Завтра попробую остальные модемы.
Еще бы сделать автораспознавание на каком девайсе висит модем, и в идеале - оператора, для подставления учетных данных.
Тогда получится полностью универсальная штука для обычных пользователей.

rss
01-06-2010, 09:21
ZTE MF626 заработал, проверю как со временем переконнекчивается.
Завтра попробую остальные модемы.
Еще бы сделать автораспознавание на каком девайсе висит модем, и в идеале - оператора, для подставления учетных данных.
Тогда получится полностью универсальная штука для обычных пользователей.

По секрету сообщаю, если в системе один модем и не заполнены VID:PID, то при первой загрузке с proto=usbmodem VID:PID будут прописаны автоматически по обнаруженному коммуникационному устройству.

На счет остального - просто не знаю, какими средствами реализовать.

Если с usb_modeswitch и переделанным подключением через hotplug всё в порядке, следующий на очереди на изменение скрипт дозвона. Соответственно, скрипт zerocd и zerocdconf - убираем за ненадобностью.

kulibin
01-06-2010, 10:19
Прошивка r1631-debug, WL500GP v1 + ZTE MF622 + Samsung SWC-U200.
Тест 3G-модема:
Стартует при включенном модеме нормально. Подключение "на горячую" не работает.
В логе - нормальная загрузка и подключение, затем передергивание модема в тот же порт, затем нажатие кнопки Connect в разделе "Status & Log - Status", затем нажатие кнопки Connect в разделе "USB Connection - PPP Connection Mode".
Тест 4G-модема - все ок. Лог не прилагаю.

rss
01-06-2010, 10:48
Прошивка r1631-debug, WL500GP v1 + ZTE MF622 + Samsung SWC-U200.
Тест 3G-модема:
Стартует при включенном модеме нормально. Подключение "на горячую" не работает.
В логе - нормальная загрузка и подключение, затем передергивание модема в тот же порт, затем нажатие кнопки Connect в разделе "Status & Log - Status", затем нажатие кнопки Connect в разделе "USB Connection - PPP Connection Mode".
Тест 4G-модема - все ок. Лог не прилагаю.Подключение "на горячую" не факт, что нужно. Если подключается новое оборудование, то перезагрузить маршрутизатор проблем не составит.
Переподключение можно доделать (не тестировал).

А вот по поводу кнопок - еще не разбирался. Скорее всего проблемы там еще есть. Со страницы USB Connection - PPP Connection Mode думаю, что их надо убрать.

PS: сейчас бы доделать основную функциональность. Бантики позже.

kulibin
01-06-2010, 11:56
Да, MultiWAN 4G-3G запустить гораздо интереснее.
Пока потестирую длительность коннекта для 3G.
Есть мысль покатать маршрутизатор в автомобиле. :)

dlukanidin
01-06-2010, 13:52
Подключение "на горячую" не факт, что нужно. Если подключается новое оборудование, то перезагрузить маршрутизатор проблем не составит.
Переподключение можно доделать (не тестировал).


На этой прошивке у меня вылезло то же ничем не спровоцированное (судя по всему программное) отключение модема как и писал раньше. В результате этого "горячего" переподключения система запустила второй раз скрипт dial и как следствия два одновременно работающих скрипта тут же подвесили модем наглухо. Логи и сосояние системы в прикреплённом файле.

rss
01-06-2010, 14:03
На этой прошивке у меня вылезло то же ничем не спровоцированное (судя по всему программное) отключение модема как и писал раньше. В результате этого "горячего" переподключения система запустила второй раз скрипт dial и как следствия два одновременно работающих скрипта тут же подвесили модем наглухо. Логи и сосояние системы в прикреплённом файле.
Значит пока делать перезагрузку. Позже доделаю переподключение.

vectorm
01-06-2010, 16:44
Значит пока делать перезагрузку. Позже доделаю переподключение.
У меня все прекрасно переподключалось, без лишних процессов.
Тестировал так:
Перепрошивал, сбрасывал в дефолт, и настраивал руками.
Если не сбрасывать, то действительно, вылезают разнообразные страсти.

ford7
01-06-2010, 19:05
dir-320, залил WL500gpv2-1.9.2.7-d-r1631M-debug.trx, модем AnyData ADU-510A.
Модем определяет, но коннекта нет. Где копать?
Лог прилагаю.

rss
01-06-2010, 19:22
dir-320, залил WL500gpv2-1.9.2.7-d-r1631M-debug.trx, модем AnyData ADU-510A.
Модем определяет, но коннекта нет. Где копать?
Лог прилагаю.

Режим Zerocd - Auto установлен?


Видимо не установлен, поскольку в режиме CDMA закладка Zerocd отключается...
Надо переключить в "GPRS/EDGE/UMTS", установить Zerocd - Auto, потом вернуться к "CDMA".

ford7
01-06-2010, 20:08
Режим Zerocd - Auto установлен?


Видимо не установлен, поскольку в режиме CDMA закладка Zerocd отключается...
Надо переключить в "GPRS/EDGE/UMTS", установить Zerocd - Auto, потом вернуться к "CDMA".

установил zerocd-auto, еще на вкладке dial-up добавил #777, но не выходит каменный цветок...

ford7
01-06-2010, 20:14
очередной лог:

rss
01-06-2010, 20:18
очередной лог:

Модем судя по всему переключился. А на странице LANWAN WAN Connection Type: режим USBModem выбран?

ford7
01-06-2010, 21:06
Модем судя по всему переключился. А на странице LANWAN WAN Connection Type: режим USBModem выбран?

выбрал режим и... вуаля!
все-таки работает эта хреновина... (с)
Спасибо огромное!!!

dlukanidin
01-06-2010, 23:14
Перепрошивал, сбрасывал в дефолт, и настраивал руками.


Сделал также.
1. Пароль не устанавливается, меняю руками.
2. Кодировку ftp меняю руками
3. mac адреса сбросились, придётся давать команду flash в прошивке Vampic (потом, чтобы не нарушать чистоту эксперимента)
4. Встроенная самба бесконечно борется с ноутбуком за право стать локальным мастером домена. Добавил конфиг самбы.
5. После ребута из System setup-> Systemcommand->reboot, соединение с интернетом не поднимается( см. прикреплённый файл, лог дозвона пустой), а после ребута из телнета, поднимается.


Остальное настроил через web морду.
Модем поднялся, интернет есть. Будем посмотреть как будет держаться.
Всё ещё хочется в Status & log->System utilization увидеть WAN (или хотя бы получить совет как это настраивается). Написал, чтобы не забылось.

При экспериментах с диагностическим режимом модема выяснил, что драйвер option влияет на этот порт и команды не проходят. (вернее первая проходит, но ответ от модема неправильный, скорее всего option перехватыват вывод с порта, на остальные ответа нет).

А в целом пока всё отлично, благодарности разработчику.

rss
02-06-2010, 04:27
r1635-debug

WL500gp (http://narod.ru/disk/21421057000/WL500gp-1.9.2.7-d-r1635M-debug.trx.html)
WL500gpv2 (http://narod.ru/disk/21421061000/WL500gpv2-1.9.2.7-d-r1635M-debug.trx.html)
WL500W (http://narod.ru/disk/21421074000/WL500W-1.9.2.7-d-r1635M-debug.trx.html)
WL520gu (http://narod.ru/disk/21421080000/WL520gu-1.9.2.7-d-r1635M-debug.trx.html)



Доделано отключение модема - вычищает процессы dial и pppd.
Вставлено явное автоопределение модема (опция, в случае нескольких модемов будет работать неправильно). После правки скрипта дозвона теоретически должен позволять на лету перетыкать модемы разных типов.
ZeroCD включено по умолчанию в состояние Auto - на usb_modeswitch будут поступать все устройства, для которых есть конфигурации.

rss
02-06-2010, 06:43
Сделал также.
1. Пароль не устанавливается, меняю руками.
Он должен устанавливаться по Save&Restart.



5. После ребута из System setup-> Systemcommand->reboot, соединение с интернетом не поднимается( см. прикреплённый файл, лог дозвона пустой), а после ребута из телнета, поднимается. Вот это странно.



Остальное настроил через web морду.
Модем поднялся, интернет есть. Будем посмотреть как будет держаться.
Всё ещё хочется в Status & log->System utilization увидеть WAN (или хотя бы получить совет как это настраивается). Написал, чтобы не забылось. Проверю. Возможно забыли usbmodem.



При экспериментах с диагностическим режимом модема выяснил, что драйвер option влияет на этот порт и команды не проходят. (вернее первая проходит, но ответ от модема неправильный, скорее всего option перехватыват вывод с порта, на остальные ответа нет). Посмотрю в выходные.


А в целом пока всё отлично, благодарности разработчикАМ. Спасибо.

vectorm
02-06-2010, 07:38
r1635-debug

Доделано отключение модема - вычищает процессы dial и pppd.
Вставлено явное автоопределение модема (опция, в случае нескольких модемов будет работать неправильно). После правки скрипта дозвона теоретически должен позволять на лету перетыкать модемы разных типов.
ZeroCD включено по умолчанию в состояние Auto - на usb_modeswitch будут поступать все устройства, для которых есть конфигурации.

ZTE MF626:
Автоматически не прописалось USB device location ID:
Прописал руками, и завелось. Без него естественно /tts/0 не находило.

Чтобы на странице USB PPP Log заработала кнопка "Refresh", возможно нужно строчки 63-66 в Main_ChatStatus_Content.asp заменить на следующие:


<td height="25" width="33%" style="text-align: center; font-family: 'Arial';">
<input class=inputSubmit onMouseOut=buttonOut(this) onMouseOver="buttonOver(this)"
onClick="document.form3.next_host.value = location.host; onSubmitCtrl(this, ' Refresh ')" type="submit" value="Refresh" name="action">
</td>

По аналогии с Main_LogStatus_Content.asp

rss
02-06-2010, 08:02
ZTE MF626:
Автоматически не прописалось USB device location ID:
Прописал руками, и завелось. Без него естественно /tts/0 не находило.

И не должно (о чем, кстати, написано во всплывающей подсказке).
USB device location ID - на этом уровне можно определить только имея базу VID:PID по модемам. Надеюсь этот пункт закрыть скриптом дозвона (поковыряюсь в выходные).



Чтобы на странице USB PPP Log заработала кнопка "Refresh", возможно нужно строчки 63-66 в Main_ChatStatus_Content.asp заменить на следующиеспасибо, надо поправить.

Viper_Rus
02-06-2010, 08:16
Я не особо спец в том как это работает, но ради прикола загрузил в чистый сброшенный роутер прошлогодний flashfs. Как не странно, но HUAWEI E160G моментально завелся. Методом исключения из post-boot выявил строчку виновцу торжества.
insmod usbserial vendor=0x12D1 product=0x1003

Не могу понять, ведь по идее в веб морде так же указываю эти же vid/pid, но модем даже в "USB devfs Devices" не появляется без этой строчки :(

rss
02-06-2010, 08:29
Методом исключения из post-boot выявил строчку виновцу торжества.
insmod usbserial vendor=0x12D1 product=0x1003
Может быть без 0x было указано? или всё таки номер не тот? Или до этого не был активен usb_modeswitch?


Если мне не нужен WiMax, то его можно как-то совсем выключить, чтобы не сифонил лишний раз в эфир?А разве он подключается в случае, если выбран usbmodem? (при подключении светит синий светодиод).

Viper_Rus
02-06-2010, 08:34
Может быть без 0x было указано? или всё таки номер не тот? Или до этого не был активен usb_modeswitch?

Приду с работы, еще раз сброшу в 0 роутер вылажу скрины настроек и логи. Блин, мне уже самому интересно почему у всех работает а у меня нет ;)

dlukanidin
02-06-2010, 09:05
Он должен устанавливаться по Save&Restart.


А там нет такой опции, есть только две кнопки save и clear. А рестарт я делал через system command->reboot. Так не работало. (может сделать как в других местах Apply и Finish, чтобы единство интерфейса не нарушалось ?) AAA понял, в испоьзуемой мной последовательности некому сделать commit nvram.

Прошивка 1631 (вижу, что уже есть новая, не успеваю с отчётами :)), установка со сбросом к заводским, настройка модема - CDMA, добавлены только имя и пароль, остальное (см. предыдущий пост) ручками.

Сейчас появилась возможность посмотреть роутер оставленный с 4-х утра до 11 утра. Результат (см. прикреплённый файл) модем повис. После ребута всё стартовало. Что странно, опять 2 pppd.

rss
02-06-2010, 09:24
А там нет такой опции, есть только две кнопки save и clear. А рестарт я делал через system command->reboot. Так не работало. (может сделать как в других местах Apply и Finish, чтобы единство интерфейса не нарушалось ?) AAA понял, в испоьзуемой мной последовательности некому сделать commit nvram. Значит надо доделать.

Сейчас появилась возможность посмотреть роутер оставленный с 4-х утра до 11 утра. Результат (см. прикреплённый файл) модем повис. После ребута всё стартовало. Что странно, опять 2 pppd.
Из списка процессов вижу только:
3560 admin 1524 S /bin/sh ./dial 1

pppd нет вообще. Внутри скрипта ppp/.../dial есть цикл для запуска pppd. Видимо проблема где-то там, но скриптами дозвона я еще не занимался. См. скрипты от sorine или max_mad за исключением фрагмента для работы с usb_modeswitch.


Народ, еще раз повторяюсь - роутер W520Gu у меня зависает с этой прошивкой, с чешской и с прошивкой Надо выявить причину зависания рутера. Если перегрев, то можно попробовать сделать скрипт с бесконечным циклом, в котором делается только echo "123". Однако в этом случае от прошивки ничего не зависит.

dlukanidin
02-06-2010, 10:20
Из списка процессов вижу только:
3560 admin 1524 S /bin/sh ./dial 1

pppd нет вообще.

из sysloga видно, что pppd запускается одновременно 2 штуки.


См. скрипты от sorine или max_mad.

Для моего частного случая у меня все скрипты есть, которые работают без сбоев (на основе скриптов max_mad, без использования option, если нужны могу выложить). Но интересно получить работающий вариант в целом. Т.к. дальнейшие модификации функционала и обновления в этом случае не потребуют адаптации к ним моего частного случая.

vectorm
02-06-2010, 11:17
А там нет такой опции, есть только две кнопки save и clear. А рестарт я делал через system command->reboot. Так не работало. (может сделать как в других местах Apply и Finish, чтобы единство интерфейса не нарушалось ?)
На какой странице?
Я поискал, такой страницы в веб морде WL 500gP не нашел.

Мне вообще тестером быть тяжело - всегда все (за исключением явных глюков) работает стабильно, хотя у кучи народа косяки отовсюду вылазят.
Сказывается наверное "эффект присутствия" :)
И сейчас 500gP с MF626 уже 4 час стабильно работает, раз в 90 минут переконнекчиваясь по инициативе Билайна.

dlukanidin
02-06-2010, 14:57
В связи с тем, что лениво каждый раз забивать руками все установки после сброса в заводские настройки, а для чистоты эксперимента это нужно, написал скрипт inst.sh (см. вложение) и положил его на флэшку.
После сброса в System setup -> System command набираю /tmp/harddisk/inst.sh, жду пару минут пока перезагрузится и всё.


На какой странице?

System Setup -> Change Password


Я не понял, чьи скрипты мы обсуждаем в части проблем дозвона?
Нынешний вариант чехов явно надо переписывать. Если есть желание что-либо предложить в качестве основы - выкладывайте, обсудим.

В качестве основы наверное не пойдёт, а для информации выложил.
Я просто копирую эти скрипты в /tmp/local/dial и выбираю на странице USB Modem-> PPP Connection Mode опцию User defined.

Viper_Rus
02-06-2010, 14:59
Ну что ж, я пришел.

Берем роутер DIR-320 с вашей отладочной прошивокой.
Берем модем HUAWEI E160G. Внутренний диск не отключен.

1. Сбрасываю в дефол и настраиваю с нуля:

http://s59.radikal.ru/i164/1006/eb/e0431a076769t.jpg (http://radikal.ru/F/s59.radikal.ru/i164/1006/eb/e0431a076769.jpg.html)http://s54.radikal.ru/i143/1006/1b/e56d8a325108t.jpg (http://radikal.ru/F/s54.radikal.ru/i143/1006/1b/e56d8a325108.jpg.html)
http://s004.radikal.ru/i206/1006/84/eab52f923525t.jpg (http://radikal.ru/F/s004.radikal.ru/i206/1006/84/eab52f923525.jpg.html)
Не коннектится. Приложил логи. Более того, даже в USB devfs Devices ничего нет.

2. Даю вот такой код


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 "insmod usbserial vendor=0x12D1 product=0x1003" >> /usr/local/sbin/post-boot
flashfs save && flashfs commit && flashfs enable && reboot


Что имеем:
Модем подсоединился, но инета нет. Ну хоть что-то ;)

vectorm
02-06-2010, 16:59
Ну что ж, я пришел.

Берем роутер DIR-320 с вашей отладочной прошивокой.
Берем модем HUAWEI E160G. Внутренний диск не отключен.

1. Сбрасываю в дефол и настраиваю с нуля:


Посмотреть глазами, что нужно 1 строчку руками вписать, не получилось? ;)
Специально написал для других:
http://wl500g.info/showpost.php?p=199711&postcount=133
Пока нет полной автоматизации распознавания модема.

rss
02-06-2010, 18:21
Просьба ко всем. В виду того, что модемов у меня нет и реально отладить не на чем, при сообщении об ошибках разделяйте системную часть, в которой запускается usb_modeswitch и определяется появление модема от того, что происходит в скрипте дозвона.

Поясняю сообщения в логе:

Jan 1 00:00:05 DEBUG[97]: hotplug_usb: 8/6/80-add-198a/3/0
Jan 1 00:00:05 DEBUG[97]: hotplug_usb_modeswitch: done
Устройство хранения (т.е. в нашем случае диск с драйверами модема) с интерфейсом 8/6/80 и VID/PID - 198a/3 обнаружено. hotplug_usb_modeswitch: done - hotplug_usb_modeswitch завершился, запись в базе не найдена.


Jun 1 09:06:31 DEBUG[172]: hotplug_usb: 8/6/80-add-19d2/2000/0
Jun 1 09:06:31 DEBUG[172]: hotplug_usb_modeswitch: usb_modeswitch -c /usr/share/usb_modeswitch.d/19d2_2000
Jun 1 09:06:31 DEBUG[172]: hotplug_usb_modeswitch: doneВторая строка сообщает, что файл конфигурации для модема 19d2/2000 найден и запущен. Запускаются либо те модемы, которые присутствуют в базе http://www.draisberghof.de/usb_modeswitch/ - usb-modeswitch-data, либо пользовательский /usr/local/etc/usb_modeswitch.conf



Jan 1 00:00:05 DEBUG[96]: rc applet: hotplug usb
Jan 1 00:00:05 DEBUG[96]: hotplug_usb: 255/255/255-add-19d2/1/0
Jan 1 00:00:05 DEBUG[96]: hotplug_network_device: 255/255/255 add 19d2/1/0
...
Jan 1 00:00:05 DEBUG[96]: start_modem_dial: /usr/ppp/dialМодем (т.е. устройство с интерфейсом 255/, имеющее VID/PID - 19d2/1 ) обнаружен, запущен скрипт /usr/ppp/dial.


Если эти части прошли корректно, дальше надо смотреть скрипты дозвона, копировать их в /tmp/ppp, вставлять вывод отладочной информации и разбираться. Переподключение модема сейчас должно работать, соответственно и запуск скриптов должен происходить при каждом включении, а при удалении модема из системы - принудительный kill.

dlukanidin
03-06-2010, 07:22
Кстати, я не обратил внимания на то, что так можно положить скрипты дозвона, поэтому сделал переменную nvram.


Не нашёл переменной отвечающей за расположение user defined скриптов или неправильно понял.


Отчёт прошивка WL500gpv2-1.9.2.7-d-r1635M-debug.trx, сброс на заводские и настройка скриптом inst.sh. В стандартные скрипты дозвона вставил ограничение на количество попыток вызова pppd (чтобы не забил лог).
Всё работало до прекращения трафика. После этого ожидаемая ситуация, pppd отпал, модем ничего обэтом не знает и pppd просто не может дозвониться.
После перезагрузки соединение восстановилось. Резюме - пока прекращаю пользоваться стандартными скриптами, буду смотреть, поведение системы на моих.

P.S. По отладке. Можно было бы вставить в страничку Diagnostic Info кнопку Save (как на System log) и сохранять в файл сразу всё и диагностику и все нужные логи, да ещё имя файлу сразу предлагать с указанием даты и времени снятия системной информации. Это дополнительно упорядочит систему отчёта тестеров.

vectorm
03-06-2010, 11:24
Потестировали на 1635 AnyData ADU-520A
Своеобразно работает:
Если все настроить, проверить работоспособность, и выключить роутер, то после включения соединения не происходит. При этом pppd запускается, и молчит как партизан, в chat.log пустота. (логи log_on.txt - диагностический, syslog_on.txt - системный).
Если на любой страничке сделать Finish + Save&Reboot, то все прекрасно подключается. (логи log_reboot.txt - диагностический, syslog_reboot.txt - системный).

Плюс с этим модемом постоянно в лог сыплется

Jun 3 14:15:42 kernel: usb-uhci.c: ENXIO c0010200, flags 0, urb 81711240, burb 81711140
Проверено на двух разных роутерах и двух модемах.

rss
03-06-2010, 18:39
Не нашёл переменной отвечающей за расположение user defined скриптов или неправильно понял.
nvram set wan_modem_scriptfn="/.../..." Впрочем нынешний вариант тоже годится.


Всё работало до прекращения трафика. После этого ожидаемая ситуация, pppd отпал, модем ничего обэтом не знает и pppd просто не может дозвониться. после этого перезагрузить скрипт dial недостаточно?
Тогда сразу вопрос - что делать? Могу предложить пинг раз в минуту.


P.S. По отладке. Можно было бы вставить в страничку Diagnostic Info кнопку Save (как на System log) и сохранять в файл сразу всё и диагностику и все нужные логи, да ещё имя файлу сразу предлагать с указанием даты и времени снятия системной информации. Это дополнительно упорядочит систему отчёта тестеров. Можно. Но на счет добавления времени в имя файла - просьба советовать вместе с кодом ;)





Потестировали на 1635 AnyData ADU-520A
Своеобразно работает:
Если все настроить, проверить работоспособность, и выключить роутер, то после включения соединения не происходит. При этом pppd запускается, и молчит как партизан, в chat.log пустота. (логи log_on.txt - диагностический, syslog_on.txt - системный). Пока непонятно. Надо ставить отладочный вывод в скрипте cdma/dial после каждой строчки и смотреть, какой драйвер не проходит. Возможно дело в том, что dial я запускаю по первому событию hotplug, а для этого модема их три. Может быть надо отказаться от запуска сразу, а сделать отложенный запуск через watchdog. Вероятно к этому приду, т.к. с его помощью буду делать ping.



Плюс с этим модемом постоянно в лог сыплется

Jun 3 14:15:42 kernel: usb-uhci.c: ENXIO c0010200, flags 0, urb 81711240, burb 81711140
#define ENXIO 6 /* No such device or address */
Надо разбираться, для какого устройства это сыпется и почему.

lly
03-06-2010, 18:48
#define ENXIO 6 /* No such device or address */
Надо разбираться, для какого устройства это сыпется и почему.
Скорее всего, это бага драйвера option - путает/теряет pipe'ы. Цитата из ядерного мейллиста:

> I got following message:
>.
> usb-uhci: ENXIO 80002280, flags 0, urb ce072180, burb c89d2600
>.
> It does probably come from usb-uhci.c line 1663 (2.4.20-pre11).
> Under what conditions can this happen?

If you submit 2 URB's to the same endpoint and the pipe isn't bulk and
you didn't use bulk queuing.

JE

чинить в отсутствии модема и воспроизводимости баги проблематично... но главное - время!

rss
03-06-2010, 19:00
Скорее всего, это бага драйвера option - путает/теряет pipe'ы. Цитата из ядерного мейллиста:

чинить в отсутствии модема и воспроизводимости баги проблематично... но главное - время!

Судя по дате сообщения Thu, 12 Dec 2002 04:47:48 -0800 надеяться не на что. Единственное что можно попробовать - посмотреть, нельзя ли изменить режим работы модема его собственными настройками, чтобы не было на одном VID/PID трех каналов.

Кстати, альтернативы option есть?

lly
03-06-2010, 19:15
Кстати, альтернативы option есть?
Альтернативы - это типа HSO? Унылый copy-paste с usbserial + option, и таких развелось вагон - каждый дописывает пару-тройку строк и обзывает "свой" драйвер по другому, вместо того, чтобы сделать универсально :mad:
А мейнтенеры ядра физически не могут разобраться в зоопарке модемов...

Надо тупо допиливать. Это не так сложно, но муторно и небыстро (для меня, по крайней мере).

dlukanidin
03-06-2010, 21:43
после этого перезагрузить скрипт dial недостаточно?
Тогда сразу вопрос - что делать? Могу предложить пинг раз в минуту.


Моё мнение:
1. Перезагружать скрипт бесполезно, т.к. usbserial и option при этом не опустятся и следовательно с точки зрения модема ничего не изменится. Мы просто войдём в тот же цикл с pppd.
2. Решение с быстрым подхватом не опустившейся сессии есть в моих скриптах. Но это надо тестировать на других модемах, может это только с моим так "повезло".
3. Правильным решением является программное передёргивание самого модема. Причём это судя по всему возможно (я писал, что наблюдал такие ситуации возникающие спонтанно, но не смог поймать за хвост кто это делал). Как сделать пока даже предположить не могу.
4. ИМХО решение с пингом не годится. Во первых трафик, во вторых мой опыт показывает, что не спасает, я сначала тоже пытался с ним баловаться, но потом отказался.
5. Ну и конечно злосчастный option. Его перезагрузка вроде помогает, но при этом накапливаются какие то ошибки или нежелательные события и потом всё падает напрочь и приходится перезагружать весь роутер.
offtop: Вот доберусь до Москвы и быстренько установлю на уже подготовленный в виртуалке линь софт для сборки прошивки, тогда может быть смогу помочь чем-то существенным.

dlukanidin
04-06-2010, 14:06
Причём это судя по всему возможно (я писал, что наблюдал такие ситуации возникающие спонтанно, но не смог поймать за хвост кто это делал).

Поймал виновника за хвост. Судя по всему это выключатель света в комнате. Срабатывет не каждый раз, но ... срабатывает ( а как хитро, только я ухожу - модем перезагружается :)). То ли по питанию проходит помеха (правда через USB хаб, странно) то ли стартёры люминисцентных ламп при выключении дают какой то импульс (ещё после покупки заметил, что иногда шевеление на антенном входе приводит к перезагрузке модема), но главное - это не глюк прошивки, а чисто мои проблемы.

AndreyUA
05-06-2010, 08:43
Модем AnyData ADU-510A
Запустился после
http://i.piccy.info/i5/94/83/178394/screen_240.jpg (http://piccy.info/view3/178394/e95cb847e71e1de9eabe857e1450b41a/)

Хотя VID и PID определился как положено.

Добавлено позже:
Работает не стабильно.

После отключения питания не подключается

Jan 1 02:01:10 kernel: hub.c: new USB device 00:03.0-1, assigned address 3
Jan 1 02:01:10 kernel: usbserial.c: Option GSM modem converter detected
Jan 1 02:01:10 kernel: usbserial.c: Option GSM modem converter now attached to ttyUSB0 (or usb/tts/0 for devfs)
Jan 1 02:01:10 kernel: usbserial.c: Option GSM modem converter detected
Jan 1 02:01:10 kernel: usbserial.c: Option GSM modem converter now attached to ttyUSB1 (or usb/tts/1 for devfs)
Jan 1 02:01:10 kernel: usbserial.c: Option GSM modem converter detected
Jan 1 02:01:10 kernel: usbserial.c: Option GSM modem converter now attached to ttyUSB2 (or usb/tts/2 for devfs)
Jan 1 02:01:16 pppd[207]: pppd 2.4.5 started by admin, uid 0
Jan 1 02:01:21 pppd[207]: Connect script failed
Jan 1 02:01:21 pppd[207]: Exit.


ATZ
OK
ATI
Manufacturer: QUALCOMM INCORPORATED
Model: 239
Revision: U51AUU14 1 [Mar 27 2007 13:00:00]
ESN: 0xEF22FF86
+GCAP: +CIS707-A, CIS-856, +MS, +ES, +DS, +FCLASS

OK
ATDT#777Failed
Script chat -s -S -V -t 5 -f /usr/ppp/cdma/AnyDATA/cdma.chat 2>/tmp/chat.log finished (pid 132), status = 0x3
Connect script failed

После нескольких ребутов с помощью save&restart подключается и работает

rss
08-06-2010, 19:43
Немного переделал скрипт дозвона, который предоставил Sorine - почистил и перевёл на наши имена переменных.

Требуется сделать:

nvram set wan_usb_standard=1 - gprs/edge/umts/hsdpa, 0 - cdma/evdo
В поле USB device location ID: веб-интерфейса указать номер порта 0, 1, 2...
Выбирать из cat /proc/bus/usb/devpath, но только после загрузки usbserial:

Device : Location : Info
/dev/usb/tts/0 : 1.2.0 : Manufacturer="Nokia" : Product="N79"
/dev/usb/tts/1 : 1.2.2 : Manufacturer="Nokia" : Product="N79"
/dev/usb/tts/2 : 1.2.4 : Manufacturer="Nokia" : Product="N79"
Указать User defined Dial-Up connection.
Разместить скрипт либо под именем /usr/local/dial/dial - тогда будет автоматически запускаться по User defined, либо под любым другим именем. Также можно прописать в nvram set wan_modem_scriptfn="/usr/local/..."


Для упрощения отладки рекомендую убрать из него reboot.
Если этого скрипта достаточно - выбрасываем скрипты чехов и немного изменяем веб-интерфейс.

PS: в теме http://sat-forum.su/index.php/topic,6629.15.html есть рекомендации к выбору номера порта модема.

vectorm
08-06-2010, 20:20
Немного переделал скрипт дозвона, который предоставил Sorine - почистил и перевёл на наши имена переменных.

В конце скрипта опечатка:

if [ -n "`pidof pppd`" ]
then
sleep $reconnect

Наверное так будет лучше:

if [ -n "`pidof pppd`" ]
then
sleep 60
$reconnect

И по User defined запускается скрипт /usr/ppp/dial
Так что без
nvram set wan_modem_scriptfn="/usr/local/dial"
не обойтись.

rss
09-06-2010, 06:21
В конце скрипта опечатка:

if [ -n "`pidof pppd`" ]
then
sleep 60
$reconnect
$reconnect там висит без инициализации (не моё ;) ). Поэтому второй вариант тоже не лучше.



И по User defined запускается скрипт /usr/ppp/dial
Так что без
nvram set wan_modem_scriptfn="/usr/local/dial"
не обойтись.
Не совсем так:
http://code.google.com/p/wl500g/source/browse/trunk/cdma/files/usr/ppp/dial

/usr/local/dial/dial

Забыл про cd $dialdir.

rss
09-06-2010, 18:14
Собрал comgt - альтернатива chat, позволяющая задавать правила для нескольких вариантов ответа устройства. В архиве собранный исполняемый модуль comgt и всё, что к нему прилагается в оригинале, включая тестовые скрипты подключения.

http://linux.die.net/man/1/comgt
http://www.pharscape.org/comgt.html

PS: В http://sat-forum.su/index.php/topic,6784.msg111328.html#msg111328 предполагается, что это поможет решить проблему с модемами, которые отваливаются через некоторое время.

vectorm
09-06-2010, 20:37
Собрал comgt - альтернатива chat
Побаловался немного с comqt:
На "падучем" ADU-520A вот такое

[admin@router2 root]$ /tmp/local/etc/comgt/comgt -d /dev/usb/tts/0
***SIM ERROR***
Check device port configuration.
Check SIM is inserted
Test SIM in a mobile phone?

Похоже придется вкрячивать что-то подобное:

echo "'' 'ATDT#777'" > /tmp/ppp/peers/modem.chat
echo "'' 'ATO'" >> /tmp/ppp/peers/modem.chat

UPD:
попробовал так:

/tmp/local/etc/comgt/comgt /tmp/local/etc/comgt/config -d /dev/usb/tts/0
где /tmp/local/etc/comgt/config:

print "\nContext..."
# send "AT+CGDCONT=1,\"IP\",\"home.beeline.ru\"^m"
# waitfor 10 "OK", "ERR"
# if % = -1 goto timeout
# if % = 0 goto readym
# if % = 1 goto errorm

:readym
print "\nDialing..."
send "ATDT#777^m"
waitfor 10 "OK", "CONNECT"
waitfor 60 "ogin:"
send "mobile^m"
waitfor 60 "word:"
send "internet^m"
if % = -1 goto timeout
if % = 0 goto finito
if % = 1 goto finito

#For Option 3G only cards (ricola) USB serial
:finito
print "\nFINITO\n"
exec "pppd /dev/usb/tts/0 115200 debug crtscts modem novj nobsdcomp defaultroute"

#For Option 3G HSDPA cards (nozomi)
#:finito
# print "\nFINITO\n"
# exec "pppd noz0 115200 debug crtscts modem defaultroute"

:errorm
print "\nERROR\n"
exit 1

Сделан по мотивам http://www.pharscape.org/forum/index.php/topic,145.0.html
Ошибка все та же...
Может comqt с CDMA не работает?

dlukanidin
09-06-2010, 22:53
предполагается, что это поможет решить проблему с модемами, которые отваливаются через некоторое время.

В моих скриптах (выкладывал ранее) эта проблема решена штатными средствами chat и проверено на моём отваливающемся модеме. Работает хорошо.

rss
10-06-2010, 06:53
r1654M-debug (не в SVN)

WL500gp (http://narod.ru/disk/21712334000/WL500gp-1.9.2.7-d-r1654M-debug.trx.html)
WL500gpv2 (http://narod.ru/disk/21712526000/WL500gpv2-1.9.2.7-d-r1654M-debug.trx.html)
WL500W (http://narod.ru/disk/21712783000/WL500W-1.9.2.7-d-r1654M-debug.trx.html)
WL520gu (http://narod.ru/disk/21713013000/WL520gu-1.9.2.7-d-r1654M-debug.trx.html)



Добавлен универсальный скрипт дозвона. Появился соответствующий пункт "Universal"
Допустимо использование "init AT Command", например для переключения модема на приоритет в 3G (не проверял в виду отсутствия модема).
Скрипт находится в /usr/ppp/uni/dial. Подключайтесь к редактированию.





Побаловался немного с comqt:
Ошибка все та же...
Может comqt с CDMA не работает?
Не должен он различать модемы - все они должны работать как устройства на последовательном порте. Скорее всего ошибка в последовательности команд или особенностях управления модемом. В принципе, можно отснять снифером протокол работы с порта и посмотреть, как модем должен работать, например под Windows на родных драйверах. Или добиться какого-нибудь работоспособного решения менее трудоёмкими средствами (например reboot).


Докладываю насчёт связки WL500gpv1 и мопед Airplus MCD-650 ;)
С прошивкой из этой ветки в режиме Dual_Up коннект иногда поднимается но как правило ошибка. :( лог в файле ;)
Откатился на прошивку от http://koppel.cz и о чудо :D
получился стабильный коннект. Скин настроек:

В режиме Dual_Up игнорировался параметр init AT Command - сейчас исправлено. Кроме того, просьба попробовать на универсальном скрипте дозвона.
В логе увидел

speed 115000 not supported
Допустимая скорость должна быть 115200


В моих скриптах (выкладывал ранее) эта проблема решена штатными средствами chat и проверено на моём отваливающемся модеме. Работает хорошо.
Просьба присоединиться к сведению наработок в единую сборку.

Напоминаю, что имеющиеся системные средства (т.е. /rc) позволяют:

обнаружить модем;
запустить dial по обнаружению или по нажатию кнопки (в процессе разработки);
остановить соединение и "прибить" процессы дозвона;
можно доделать ping по расписанию и автоматический подъем соединения при падении pppd.

vectorm
10-06-2010, 20:07
r1654M-debug (не в SVN)

Добавлен универсальный скрипт дозвона. Появился соответствующий пункт "Universal"
Допустимо использование "init AT Command", например для переключения модема на приоритет в 3G (не проверял в виду отсутствия модема).
Скрипт находится в /usr/ppp/uni/dial. Подключайтесь к редактированию.

При выборе универсального скрипта не прописывается
nvram set wan_usb_standard
В результате лог chat.log вот такой:

/tmp/ppp/peers/.chat -- open failed: No such file or directory
Script /usr/sbin/chat -s -S -V -t 60 -f /tmp/ppp/peers/.chat 2>/tmp/chat.log finished (pid 174), status = 0x1
Connect script failed
Вставил "1" вручную - коннект прошел, оставлю на ночь на тест реконнекта. В этом режиме ошибок в логе не появляется, что радует.
При выборе CDMA - модем ADU-520A 2 часа отработал как часы, реконнект каждые 30 минут при неактивности отрабатывает нормально. Но как и раньше - засыпает кучей ошибок в логе.
Судя по логу - скрипт подключения стал отрабатывать намного быстрее - пропала куча передергиваний модема. Сразу после обнаружения CD-ROM отрабатывает modeswitch.


Не должен он различать модемы - все они должны работать как устройства на последовательном порте. Скорее всего ошибка в последовательности команд или особенностях управления модемом. В принципе, можно отснять снифером протокол работы с порта и посмотреть, как модем должен работать, например под Windows на родных драйверах. Или добиться какого-нибудь работоспособного решения менее трудоёмкими средствами (например reboot).
попробую как-нибудь проверить на Линуксовом ББ, как там определит модем. Но надеюсь, заработает и без него.

rss
10-06-2010, 20:25
При выборе универсального скрипта не прописывается
nvram set wan_usb_standard
Спасибо, забыл исправить. Патч прилагаю.


Судя по логу - скрипт подключения стал отрабатывать намного быстрее - пропала куча передергиваний модема. Сразу после обнаружения CD-ROM отрабатывает modeswitch.
Системная часть как раз не менялась. Почему на много быстрее - не знаю.

dlukanidin
10-06-2010, 22:28
Извиняюсь, что не в тему,
но в теме компиляции прошивок ответа не получил.

При компиляции получил следующую ошибку

httpd.c:77:23: error: bcmconfig.h: No such file or directory

подскажите где искать пропавший include или где посмотреть, что неправильно делаю.

rss
11-06-2010, 06:11
Извиняюсь, что не в тему,
но в теме компиляции прошивок ответа не получил.

При компиляции получил следующую ошибку

httpd.c:77:23: error: bcmconfig.h: No such file or directory

подскажите где искать пропавший include или где посмотреть, что неправильно делаю.
gateway/shared/bcmconfig.h

По умолчанию всё должно собираться, если сделано по инструкции http://code.google.com/p/wl500g/wiki/CompilingCustomFirmware

vectorm
11-06-2010, 06:34
При выборе универсального скрипта не прописывается
nvram set wan_usb_standard
В результате лог chat.log вот такой:

/tmp/ppp/peers/.chat -- open failed: No such file or directory
Script /usr/sbin/chat -s -S -V -t 60 -f /tmp/ppp/peers/.chat 2>/tmp/chat.log finished (pid 174), status = 0x1
Connect script failed
Вставил "1" вручную - коннект прошел, оставлю на ночь на тест реконнекта. В этом режиме ошибок в логе не появляется, что радует.

Не делает реконнект почему-то

Jun 10 23:29:10 pppd[145]: LCP terminated by peer
Jun 10 23:29:10 pppd[145]: Connect time 32.8 minutes.
Jun 10 23:29:10 pppd[145]: Sent 1045 bytes, received 2363 bytes.
Jun 10 23:29:10 dnsmasq[79]: read /etc/hosts - 2 addresses
Jun 10 23:29:10 dnsmasq[79]: using nameserver 212.119.97.5#53
Jun 10 23:29:10 dnsmasq[79]: using nameserver 212.119.99.200#53
Jun 10 23:29:10 3G USB Modem: Disconnected
Jun 10 23:29:13 pppd[145]: Connection terminated.
Jun 10 23:29:14 pppd[145]: Modem hangup
Jun 10 23:30:45 pppd[145]: Connect script failed
Jun 10 23:32:18 pppd[145]: Connect script failed
Jun 10 23:32:19 pppd[145]: Exit.
Jun 10 23:32:44 pppd[190]: pppd 2.4.5 started by admin, uid 0
Jun 10 23:33:46 pppd[190]: Connect script failed
Jun 10 23:35:18 pppd[190]: Connect script failed
Jun 10 23:35:19 pppd[190]: Exit.

Попытаюсь сравнить, чем так различаются с режимом CDMA.

dlukanidin
11-06-2010, 17:25
По умолчанию всё должно собираться

Получилось, после установки нескольких пакетов.

А для сборки прошивки debug нужно указать где то эту опцию или Вы под себя make файл переписывали ?

lly
11-06-2010, 17:43
Получилось, после установки нескольких пакетов.
Если вы отклоняетесь от стандартной процедуры сборки, то хорошо бы понимать что делаете ;)

Можно, например, заглянуть в Makefile, и понять, что shared/bcmconfig.h формируется на основании содержимого .config

sorine
11-06-2010, 19:24
Не делает реконнект почему-то

Попытаюсь сравнить, чем так различаются с режимом CDMA.
то rss...
В скрипте, при переподключении, при падении pppd нужно, во всяком случае для модемов Anydata, да и для других тоже, либо ребутить роутер, либо что более правильно выгружать модули usbserial, option, acm. и запускать скрипт заново. иначе никакого реконнекта...Модемы повисают на модулях, в результате порты заняты, пока не выгрузишь.

dlukanidin
12-06-2010, 00:51
Если вы отклоняетесь от стандартной процедуры сборки, то хорошо бы понимать что делаете ;)

Можно, например, заглянуть в Makefile, и понять, что shared/bcmconfig.h формируется на основании содержимого .config

Там к сожалению не получается так просто. Что меня ввело в заблуждение это, что на одном запуске make выдаёт ошибку, а на следующем эта ошибка как то обходится. В результате я не знаю, как оно закончилось. Кроме этого в процессе установки пакетов у меня всё выпадало раз 10. Каждый раз разбирать где и почему свалился конкретный make слишком геморойно. В целом ошибки происходят из за того, что не хватает какого то пакета. Поэтому рецепт для тех кто после меня пойдёт этой дорогой - запускайте каждую строчку приведённую в инструкции по отдельности ( я от большого ума сделал из инструкции скрипт с параметрами, в результате запускал по строчно). Если выпадает ошибка, смотрите какого пакета не хватает и устанвливайте его штатным для Вашего линукса пакет менеджером. После этого, по возможности если понимаете, что делаете, удалите результаты предыдущего make и запускайте по новой. Если всё равно затык, начинайте с начала ( с уже установленными пакетами от предыдущих ошибок) и т.д.

rss
12-06-2010, 07:59
то rss...
В скрипте, при переподключении, при падении pppd нужно, во всяком случае для модемов Anydata, да и для других тоже, либо ребутить роутер, либо что более правильно выгружать модули usbserial, option, acm. и запускать скрипт заново. иначе никакого реконнекта...Модемы повисают на модулях, в результате порты заняты, пока не выгрузишь.

Спасибо, подумаю как сделать. Собственно, два варианта - либо поместить всё в скрипт, либо сделать на watchdog мониторинг процесса pppd с нужным pid и инициировать процедуру подключения заново.

Кстати, есть еще один вариант - можно послать reset usb-устройству, но не знаю, нужно ли это делать. (не сработает, если устройство повисло).

sorine
12-06-2010, 08:44
Спасибо, подумаю как сделать. Собственно, два варианта - либо поместить всё в скрипт, либо сделать на watchdog мониторинг процесса pppd с нужным pid и инициировать процедуру подключения заново.

Кстати, есть еще один вариант - можно послать reset usb-устройству, но не знаю, нужно ли это делать. (не сработает, если устройство повисло).

на ядре 2.4 не сработает.

rss
12-06-2010, 08:52
на ядре 2.4 не сработает.
Очень жёстко это перезагружать маршрутизатор при каждом разрыве соединения, особенно, если используется мультиван. (к нему же стремимся)

sorine
12-06-2010, 08:53
на ядре 2.4 не сработает.
может в конце скрипта сделать так, не прибегая к ребуту?

while true; do
kill -9 $(ps|grep pppd|grep gprs|awk -F' ' '{print $1}') 2>/dev/null
rmmod option
rmmod acm
rmmod usbserial
if [ "$vend" == "" -o "$prod" == "" ]; then
insmod acm
insmod option
else
insmod usbserial vendor=$vend product=$prod maxSize=4096
fi
sleep 5
pppd call dialup >> /tmp/chat.log 2>&1
sleep 25
done

sorine
12-06-2010, 08:59
Очень жёстко это перезагружать маршрутизатор при каждом разрыве соединения, особенно, если используется мультиван. (к нему же стремимся)

возможно еще придется выгружать ohci uhci ehci

тогда это будет полный аналог ребута для usb устройств.

lly
12-06-2010, 09:10
возможно еще придется выгружать ohci uhci ehci

Это слишком. Если модем не реагирует на команду reset, то опускать всю шину (вместе с флешкой, например) это конечно круто, но лучше или найти причину или выкинуть такой модем.

rss
12-06-2010, 09:53
может в конце скрипта сделать так, не прибегая к ребуту?
Лучше:


while true; do
if [ "$vend" == "" -o "$prod" == "" ]; then
rmmod option
rmmod acm

insmod acm
insmod option
else
rmmod usbserial
insmod usbserial vendor=$vend product=$prod maxSize=4096
fi
sleep 5
pppd call dialup >> /tmp/chat.log 2>&1
sleep 25
done

Строка kill -9 ... по-моему лишняя. Сюда можем попасть только если pppd уже свалился, а чужие pppd снимать незачем.

Однако тоже есть над чем подумать, так как в начале скрипта для определения usbdev фактически драйверы подключаются в холостую, а время на них тратится. см. http://code.google.com/p/wl500g/source/browse/trunk/cdma/files/usr/ppp/uni/dial

PS: напоминаю, что 3G-модема у меня нет, а тестировать на МТС стабильность связи по телефонному тарифу слишком накладно.

sorine
12-06-2010, 10:19
Строка kill -9 ... по-моему лишняя. Сюда можем попасть только если pppd уже свалился, а чужие pppd снимать незачем.

посмотри вот так

#!/bin/sh
apn=$(nvram get wan_modem_apn)
dialnumber=$(nvram get wan_modem_dialno)
modem=$(nvram get wan_modem_standard) #1 - gprs/edge/umts/hsdpa, 0 - cdma/evdo
username=$(nvram get wan_modem_username)
port=$(nvram get wan_modem_tts_port)
portspeed=$(nvram get wan_modem_portspeed)
password=$(nvram get wan_modem_password)
mtu=1492 #$(nvram get wan_usb_mtu)
mru=1492 #$(nvram get wan_usb_mru)
vend=$(nvram get wan_modem_vid)
prod=$(nvram get wan_modem_pid)
pppdoptions=$(nvram get wan_modem_options)
initoptions=$(nvram get wan_modem_dialup_init)

sleep 5
if [ "$vend" == "" -o "$prod" == "" ]; then
insmod acm
insmod option
else
insmod usbserial vendor=$vend product=$prod maxSize=4096
fi
kill -9 $(ps|grep pppd|awk -F' ' '{print $1}') 2>/dev/null
mkdir /tmp/ppp/peers/
sleep 20
usbdev=$(cat /proc/bus/usb/devpath | grep -o "/.*" | awk -F 'm' '{print $1}')
if [ "$usbdev" == "/dev/usb/ac" ]; then
device=$"/dev/usb/acm/$port"
else
device=$"/dev/usb/tts/$port"
fi


echo "'' ''
'' 'ATZ'
$initoptions
'OK' 'ATDT#777'
'CONNECT' 'ATO'
'' ''" > /tmp/ppp/peers/0.chat

echo "'' 'ATZ'
$initoptions
'' 'AT+CGDCONT=1,\"IP\",\"$apn\"'
'OK' 'ATD$dialnumber'
'CONNECT' ''" > /tmp/ppp/peers/1.chat

echo "debug" > /tmp/ppp/peers/dialup
echo "$device
echo "$portspeed
crtscts
noipdefault
ipcp-accept-local
lcp-echo-interval 60
lcp-echo-failure 6
mtu $mtu
mru $mru
usepeerdns
noauth
$pppdoptionss
maxfail 2
nodetach
persist
linkname wan0
user '$username'
password '$password'
connect \"/usr/sbin/chat -s -S -V -t 60 -f /tmp/ppp/peers/$modem.chat 2>/tmp/chat.log\"" >> /tmp/ppp/peers/dialup


while [ -e $device ]; do
if [ -n "`pidof pppd`" ]
then
sleep 25
else
rmmod option
rmmod acm
rmmod usbserial
if [ "$vend" == "" -o "$prod" == "" ]; then
insmod acm
insmod option
else
insmod usbserial vendor=$vend product=$prod maxSize=4096
fi
pppd call dialup >> /tmp/chat.log 2>&1
fi
done

в конце смысл: если есть модем и пппд отвалился то выгружаем загружаем модули и запускаем пппд

sorine
12-06-2010, 10:26
только внутри while [ -e $device ]

вместо $device нужно все-таки указать наличие /dev/usb/tts/$port или dev/usb/acm/$port

rss
12-06-2010, 11:31
while [ -e $device ]; do
if [ -n "`pidof pppd`" ]
then
sleep 25
else
rmmod option
rmmod acm
rmmod usbserial
if [ "$vend" == "" -o "$prod" == "" ]; then
insmod acm
insmod option
else
insmod usbserial vendor=$vend product=$prod maxSize=4096
fi
pppd call dialup >> /tmp/chat.log 2>&1
fi
done

в конце смысл: если есть модем и пппд отвалился то выгружаем загружаем модули и запускаем пппдЗдесь pppd не возвращает управление. Соответственно, до if [ -n "`pidof pppd`" ] не дойдет.

Подправил немного скрипт. На моём сотовом работает (пробовал прибивать pppd руками).

PS: dlukanidin использует для диагностики ошибок chat.sh (см ранее). А тажке cdma.chat вида:

ABORT '}'
ABORT 'BUSY'
ABORT 'NO CARRIER'
ABORT 'ERROR'
ABORT 'NO DIAL TONE'
ABORT 'NO ANSWER'
ABORT 'DELAYED'
REPORT 'CONNECT'
'' 'AT'
'' 'ATZ'
'OK' 'ATI'
'OK' 'ATDT#777'
'CONNECT' ''. При падении pppd на модемах, отличных от ADU-300A это поможет перезапустить соединение?

dlukanidin
12-06-2010, 14:47
PS: dlukanidin использует для диагностики ошибок chat.sh (см ранее).

Очень хотелось бы увидеть в итоговой реализации (может быть только в скриптах для Anydata) "горячее соединение" через ответ в chat "}" в том или ином виде, т.к. мой опыт показывает, что без этого мой модем больше часа без действий руками не работает.

Относительно скрипта, не представляю, кто будет прибивать pppd для попадания в последний while (вариант прибивания руками указывает, что пользователь хочет остановить скрипт и поднимать его после этого принудительно считаю ошибкой). Хотелось бы сразу предусмотреть возможность задать соединение по требованию. Мой опыт показывает, что это устойчиво работает. Для этого кроме добавления соответствующих переменных и диалога в морде для их задания необходимо принудительно инициировать первое подключение, т.к. при этом будут получены правильные IP от провайдера, в противном случае, соединение не поднимается и приложения стучатся по псевдо адресам. В моих скриптах это есть.

rss
12-06-2010, 16:20
Очень хотелось бы увидеть в итоговой реализации (может быть только в скриптах для Anydata) "горячее соединение" через ответ в chat "}" в том или ином виде, т.к. мой опыт показывает, что без этого мой модем больше часа без действий руками не работает. К каким модемам относится "}"? Можно ли это обобщить? (на поверхности материалы не нашел).


Относительно скрипта, не представляю, кто будет прибивать pppd для попадания в последний while (вариант прибивания руками указывает, что пользователь хочет остановить скрипт и поднимать его после этого принудительно считаю ошибкой).
Сейчас dial и pppd прибиваются кнопкой "disconnect" либо при вытаскивании модема.


Хотелось бы сразу предусмотреть возможность задать соединение по требованию. Мой опыт показывает, что это устойчиво работает. Для этого кроме добавления соответствующих переменных и диалога в морде для их задания необходимо принудительно инициировать первое подключение, т.к. при этом будут получены правильные IP от провайдера, в противном случае, соединение не поднимается и приложения стучатся по псевдо адресам. В моих скриптах это есть. Вообще-то сейчас есть возможность вписать команды для pppd. На сколько я понял, для подключения ondemand требуется в опциях pppd лишь строка: persist idle 1 demand. Или что-то не так?


PS: неплохо бы, чтобы кто-нибудь проверил эти скрипты на своих CDMA модемах.

dlukanidin
13-06-2010, 01:34
К каким модемам относится "}"? Можно ли это обобщить? (на поверхности материалы не нашел).
.
У меня пока нет возможности проверить, но в ближайшее время нарою ещё 2 модема и проверю на них. В целом ситуация такая, pppd отключает соединение, а модем этого не видит, не знаю от чего зависит. То ли от провайдера, то ли от модема. При этом модем считает, что соединение висит, а pppd нет. в результате поймав в ответ символ "}" от дата строки (наиболее характерен), можно при посылке строки инициализации типа ATZ и получив в ответ вместо OK случайный набор символов в котором с очень большой вероятностью встретим "}" заново восстановить соединение просто передав управление обратно pppd с кодом 0.

Сейчас dial и pppd прибиваются кнопкой "disconnect" либо при вытаскивании модема.
.
Это именно та ситуация о которой я говорил. Пользователь разорвал соединение и не надо принудительно устанавливать его вновь. Причём вытаскивание модема, это другая ситуация. При этом указанные скрипты работают нормально. (ещё раз замечу, что option работает некорректно. Буду смотреть код, и если пойму в чём дело, предложу решение)

Вообще-то сейчас есть возможность вписать команды для pppd. На сколько я понял, для подключения ondemand требуется в опциях pppd лишь строка: persist idle 1 demand. Или что-то не так?
.
Обращаю дополнительное внимание на то, что при первичном соединении по требованию присваиваются псевдо IP адреса и это надо специальным образом обрабатывать.

PS: неплохо бы, чтобы кто-нибудь проверил эти скрипты на своих CDMA модемах.
Будем стараться.

rss
13-06-2010, 06:29
r1670-debug.

WL500gp (http://narod.ru/disk/21807733000/WL500gp-1.9.2.7-d-r1670-debug.trx.html)
WL500gpv2 (http://narod.ru/disk/21807738000/WL500gpv2-1.9.2.7-d-r1670-debug.trx.html)
WL500W (http://narod.ru/disk/21807741000/WL500W-1.9.2.7-d-r1670-debug.trx.html)
WL520gu (http://narod.ru/disk/21807748000/WL520gu-1.9.2.7-d-r1670-debug.trx.html)


Обновлён универсальный скрипт дозвона.

Задачи на ближайшее время - определить применимость скриптов dlukanidin для модемов, отличных от Anydata ADU-300A и использовать наработки (перезагрузка pppd без перезагрузки драйверов в случаях, когда это не требуется) в универсальном скрипте.

rss
13-06-2010, 06:58
У меня пока нет возможности проверить, но в ближайшее время нарою ещё 2 модема и проверю на них. В целом ситуация такая, pppd отключает соединение, а модем этого не видит, не знаю от чего зависит. То ли от провайдера, то ли от модема. При этом модем считает, что соединение висит, а pppd нет. в результате поймав в ответ символ "}" от дата строки (наиболее характерен), можно при посылке строки инициализации типа ATZ и получив в ответ вместо OK случайный набор символов в котором с очень большой вероятностью встретим "}" заново восстановить соединение просто передав управление обратно pppd с кодом 0.

Это именно та ситуация о которой я говорил. Пользователь разорвал соединение и не надо принудительно устанавливать его вновь. Причём вытаскивание модема, это другая ситуация. При этом указанные скрипты работают нормально. (ещё раз замечу, что option работает некорректно. Буду смотреть код, и если пойму в чём дело, предложу решение)

Обращаю дополнительное внимание на то, что при первичном соединении по требованию присваиваются псевдо IP адреса и это надо специальным образом обрабатывать.

Будем стараться.
Если есть время - просьба свести всё в универсальный скрипт (за вычетом ledctl.sh) - проведём тестирование на разных модемах. Нет - сегодня вечером или завтра сделаю вариант.

Последняя версия: http://code.google.com/p/wl500g/source/browse/trunk/cdma/files/usr/ppp/uni/dial. Все дополнительные скрипты размещать там же в usr/ppp/uni/

OlegaVB
13-06-2010, 08:35
Модем AnyDATA ADUE-100A, прошивка 1.9.2.7-d-r1670-debug при запуске

/usr/ppp/uni/dial
cannot create directory `/tmp/ppp/peers/': File exists
rmmod: can't unload 'usbserial': unknown symbol in module, or unknown parameter

Соединения нет. Нормально соединяется через

/usr/ppp/cdma/AnyDATA/dial

rss
13-06-2010, 08:46
Модем AnyDATA ADUE-100A, прошивка 1.9.2.7-d-r1670-debug при запуске

/usr/ppp/uni/dial
cannot create directory `/tmp/ppp/peers/': File exists
Уже создана. Команда оставлена на всякий случай.

rmmod: can't unload 'usbserial': unknown symbol in module, or unknown parameter При первом запуске - нормально. Драйвера еще нет.



Соединения нет. Нормально соединяется через

/usr/ppp/cdma/AnyDATA/dial Соответственно, вариант чехов.
Надо смотреть, что конкретно мешает соединиться. Подозреваю, что неправильно указан тип модема - usbserial - для GPRS, а не CDMA

OlegaVB
13-06-2010, 08:51
Соответственно, вариант чехов.
Надо смотреть, что конкретно мешает соединиться. Подозреваю, что неправильно указан тип модема - usbserial - для GPRS, а не CDMA

Чем помочь - где это посмотреть?

rss
13-06-2010, 09:09
Чем помочь - где это посмотреть?

На странице USB Connection - PPP Connection Mode
Universal/Modem type - CDMA

или nvram set wan_modem_standard="0"

OlegaVB
13-06-2010, 09:23
На странице USB Connection - PPP Connection Mode
Universal/Modem type - CDMA

или nvram set wan_modem_standard="0"
Сделал, теперь через /usr/ppp/uni/dial соединяется нормально, но если прервать, снова подключается, если отключить - подключить модем.

dlukanidin
13-06-2010, 13:13
Если есть время - просьба свести всё в универсальный скрипт

Пока сделал простейший вариант без опции demand. Годится для первичного тестирования.
Полный пишу.

dlukanidin
13-06-2010, 22:09
Полный пишу.

Вот весь скрипт с возможностью соединения по требованию.

Внесённые изменения отмечены комментариями (если принимаются, то комменты надо убирать).
Я бы ещё рекомендовал изменить параметр maxfail на 0. Перезагрузка usbserial не даёт на моём оборудовании никакого результата. Более того, после нескольких перезагрузок выдаёт ошибку на пайпе и естесственно отказывается после этого поднимать порты.
Заменил символ для горячего переподключения с "}" на "~", последний вроде более характерен.
Особенно обращаю внимание на то, что изменил способ применения переменной $initoptions. Теперь в неё надо записывать непосредственно команды модему, а не chat.

Совсем не понял, для чего запись dialup идёт в цикле, причём так, чтобы собственно процедура выполнилась один раз. Но трогать не стал.

Для того, чтобы попробывать скрипт в работе можно выбрать uni соединение в веб морде, задать как минимум тип соединения и для CDMA порт имя и пароль и сохранить через apply, finish. После этого скрипт надо записать в /tmp/local/dial/ и установить в веб морде user defined, опять же сохраниться. Для соединения по требованию надо ручками записать в nvram wan_modem_demand=1 и wan_modem_idle=n, где n это количество секунд простоя до отключения (по умолчанию 600). Отключается эта опция либо demand=0 либо unset demand (не забывайте делать перед перезагрузкой nvram commit).
Пробуйте.

P.S. Для работы со Skylink встречал рекомендации устанавливать для pppd следующие опции
novj nobsdcomp novjccomp nopcomp noaccomp
это можно установить через nvram set wan_modem_options=........

rss
14-06-2010, 12:25
Вот весь скрипт с возможностью соединения по требованию.
Спасибо, немного подправил. Проверил на своём сотовом - работает. Теперь надо тестировать на всём, что есть.



Совсем не понял, для чего запись dialup идёт в цикле, причём так, чтобы собственно процедура выполнилась один раз. Но трогать не стал.
Видимо для того, чтобы в случае непредвиденного завершения соединения перезапускать pppd. Или он это может сделать сам не завершая выполнение (естественно включая случаи, когда соединение разорвал провайдер)?

dlukanidin
14-06-2010, 15:46
Спасибо, немного подправил.

Мне кажется, что при записи chat.sh в строках
wan_modem_restart_drv="0"
wan_modem_restart_drv="1"
надо поставить
wan_modem_restart_drv=\"0\"
wan_modem_restart_drv=\"1\"

rss
14-06-2010, 16:15
Мне кажется, что при записи chat.sh в строках
надо поставить
wan_modem_restart_drv=\"0\"
wan_modem_restart_drv=\"1\"
Спасибо, пропустил. Можно проще:
wan_modem_restart_drv=0
wan_modem_restart_drv=1

Скрипт обновил.

dlukanidin
14-06-2010, 16:23
To rss
Обдумываю более естественный и разумный вариант, но прошу совета.
Можно ли в chat.sh отследить вызван ли он после того как соединение (авторизация) состоялась или после неудачного соединения после предыдущего вызова?
Идея крайне проста. После того, как уже было успешное соединение, вместо отлова каких то символов типа } или ~ просто делать попытку авторизации через pppd не вызывая chat, а сразу возвращая управление pppd с кодом 0, но если не получилось, то тогда уже проходить весь скрипт chat.

rss
14-06-2010, 16:43
To rss
Обдумываю более естественный и разумный вариант, но прошу совета.
Можно ли в chat.sh отследить вызван ли он после того как соединение (авторизация) состоялась или после неудачного соединения после предыдущего вызова?
Идея крайне проста. После того, как уже было успешное соединение, вместо отлова каких то символов типа } или ~ просто делать попытку авторизации через pppd не вызывая chat, а сразу возвращая управление pppd с кодом 0, но если не получилось, то тогда уже проходить весь скрипт chat.
Алгоритм работы pppd я не знаю. Если такой вопрос возник - лучше всего открыть исходники pppd и посмотреть, когда и при каких условиях вызывается скрипт при опции connect. Кстати, есть еще возможность поставить скрипт на disconnect. Можно отследить корректное отключение.
http://ppp.samba.org/ppp/pppd.html

PS: Относительно wan_modem_restart_drv - я уже не уверен. Если в случае завершения chat по ABORT и возврата скриптом 0 в pppd последний продолжит работать, то wan_modem_restart_drv не нужно. Надо всё таки посмотреть работу с connect и disconnect в pppd.

dlukanidin
14-06-2010, 17:24
лучше всего открыть исходники pppd и посмотреть Кстати, есть еще возможность поставить скрипт на disconnect.

Спасибо за идеи. Буду разбираться дальше.

Но всё таки кто-то с кем то конфликтует. После довольно длительной нормальной работы и успешного восстановления соединения без рестарта usbserial, получил ошибку (см. лог). При попытке ручного подключения, usbserial отвечает broken pipe.

lly
14-06-2010, 17:40
После довольно длительной нормальной работы и успешного восстановления соединения без рестарта usbserial, получил ошибку (см. лог). При попытке ручного подключения, usbserial отвечает broken pipe.
Подобного раньше не видел. Здесь только включать CONFIG_USB_DEBUG, и пытаться понять кто же в ядре неправ...
Плюс на D-link'e работа USB не является показателем - неизвестно как честно отрезали PLL.

kulibin
14-06-2010, 17:44
Модем Huawei E1550 (от МТС, разлочен) работает.

rss
14-06-2010, 19:16
Спасибо за идеи. Буду разбираться дальше.

Но всё таки кто-то с кем то конфликтует. После довольно длительной нормальной работы и успешного восстановления соединения без рестарта usbserial, получил ошибку (см. лог). При попытке ручного подключения, usbserial отвечает broken pipe.

И всё таки wan_modem_restart_drv=0 в chat.sh лишнее.Посмотрел исходники: есть фунция device_script, которой передаётся имя скрипта (init, connect, disconnect). Возвращает она 0, если вызываемый ею скрипт вернул 0 и -1 во всех других случаях. Если chat.sh вернул 0, то pppd продолжает как ни в чём не бывало (только я не понимаю, как он вклинивается в поток данных и соединение устанавливает, если номинально должен действовать по протоколу ppp)...

Также поясняю на счет disconnect_script. Это скрипт для завершения соединения, который вызывается только в одном случае, когда pppd получил сигнал завершения, например через kill pppd.


По поводу "broken pipe". В libusb есть ошибка LIBUSB_ERROR_PIPE, которая чаще всего возникает "if the endpoint halted" (один из каналов устройства в нашем случае). Соответственно, виновато может быть как само устройство, которое на команду обмена ничего не вернуло, так и конфликт драйверов.

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

Однако pppd возвращает следующие значения:

#define EXIT_OK 0
#define EXIT_FATAL_ERROR 1
#define EXIT_OPTION_ERROR 2
#define EXIT_NOT_ROOT 3
#define EXIT_NO_KERNEL_SUPPORT 4
#define EXIT_USER_REQUEST 5
#define EXIT_LOCK_FAILED 6
#define EXIT_OPEN_FAILED 7
#define EXIT_CONNECT_FAILED 8
#define EXIT_PTYCMD_FAILED 9
#define EXIT_NEGOTIATION_FAILED 10
#define EXIT_PEER_AUTH_FAILED 11
#define EXIT_IDLE_TIMEOUT 12
#define EXIT_CONNECT_TIME 13
#define EXIT_CALLBACK 14
#define EXIT_PEER_DEAD 15
#define EXIT_HANGUP 16
#define EXIT_LOOPBACK 17
#define EXIT_INIT_FAILED 18
#define EXIT_AUTH_TOPEER_FAILED 19
#ifdef MAXOCTETS
#define EXIT_TRAFFIC_LIMIT 20
#endif
#define EXIT_CNID_AUTH_FAILED 21 Можно попробовать перезагружать драйверы только по определенным кодам или наоборот не перезагружать по определенным кодам. Рекомендую обратить внимание на код возврата, записываемый сейчас в лог и посмотреть, что получится на длительном промежутке времени.

Скрипт прилагаю.

dlukanidin
15-06-2010, 00:22
r1675-debug с новым универсальным скриптом

1. Нашёл небольшую, но фатальную для скрипта ошибку, в строке
if [ restart_drv == "1" ]; then
пропущен $ перед переменной, в результате не создаётся dialup. Я так понял, что эта переменная это задел на будующий анализ кодов возврата.

2. Реализовал свою идею. Прилагаю новый скрипт. Изменения как и раньше выделены комментами. Старый код не убрал, т.к. могут быть экзотические по времени ситуации, когда pppd прибивается (или падает) в процессе соединения. А в целом у меня работает, переподключается моментально (ждать то не надо), так что в этом направлении надеюсь пока всё OK.

3. Внёс косметические изменения в скрипт пингования.

Теперь по поводу перезагрузки драйверов. Повторюсь, для меня это вредно. Я предпочитаю, чтобы pppd восстанавливал соединение самостоятельно, а не отваливался после нескольких попыток (maxfail=0).
С моей точки зрения в цикл скрипт вывалится только после убийства pppd пользователем, например через вебморду остановив соединение. В этой ситуации дрова перегружать не надо, а вот код возврата проанализировать полезно, т.к. эта ситуация должна быть отслежена.
Давайте посмотрим, что будет возникать у людей при тестировании скрипта, по тому что все эти рассуждения большей частью теоретические.

Теперь буду пытаться разбираться с usbserial.

P.S. Горячее переподключение как то вылетело из головы. Но у меня не хватает информации. Запускается ли что нибудь связанное со скриптом по событиям подключения или отключения модема, или достаточно проверять наличие поднятого драйвером порта?

rss
15-06-2010, 04:38
1. Нашёл небольшую, но фатальную для скрипта ошибку, в строке
if [ restart_drv == "1" ]; then
пропущен $ перед переменной, в результате не создаётся dialup. Я так понял, что эта переменная это задел на будующий анализ кодов возврата.
Поторопился - не проверил. :(

Пересобрал r1675-debug с новым универсальным скриптом (не в SVN).

WL500gp (http://narod.ru/disk/21861043000/WL500gp-1.9.2.7-d-r1675-debug.trx.html)
WL500gpv2 (http://narod.ru/disk/21861045000/WL500gpv2-1.9.2.7-d-r1675-debug.trx.html)
WL500W (http://narod.ru/disk/21861051000/WL500W-1.9.2.7-d-r1675-debug.trx.html)
WL520gu (http://narod.ru/disk/21861057000/WL520gu-1.9.2.7-d-r1675-debug.trx.html)

Управление режимом ondemand см. ранее.



3. Внёс косметические изменения в скрипт пингования.
Не обратил внимания, что пинг делается раз в секунду.
Действие "pingaddr=\$(ifconfig ppp0 | grep P-t-P | awk -F: '{print \$3}' | awk '{print \$1}')" довольно затратное для процессора. Нужно ли так часто?


Теперь по поводу перезагрузки драйверов. Повторюсь, для меня это вредно. Я предпочитаю, чтобы pppd восстанавливал соединение самостоятельно, а не отваливался после нескольких попыток (maxfail=0).
С моей точки зрения в цикл скрипт вывалится только после убийства pppd пользователем, например через вебморду остановив соединение. В этой ситуации дрова перегружать не надо, а вот код возврата проанализировать полезно, т.к. эта ситуация должна быть отслежена.
Давайте посмотрим, что будет возникать у людей при тестировании скрипта, по тому что все эти рассуждения большей частью теоретические. Ничего здесь ответить не могу. Идея исходила от sorine.
Вписал в скрипте запись кода возврата в syslog.



P.S. Горячее переподключение как то вылетело из головы. Но у меня не хватает информации. Запускается ли что нибудь связанное со скриптом по событиям подключения или отключения модема, или достаточно проверять наличие поднятого драйвером порта? hotplug драйверы не загружает. По кнопке connect просто запускается скрипт dial, по disconnect - снимается этот же скрипт и pppd.

dlukanidin
15-06-2010, 09:10
Не обратил внимания, что пинг делается раз в секунду.
Действие "pingaddr=\$(ifconfig ppp0 | grep P-t-P | awk -F: '{print \$3}' | awk '{print \$1}')" довольно затратное для процессора. Нужно ли так часто?


переписал скрипт пингования

echo -e "#!/bin/sh
pingaddr=\"8.8.8.8\"
for i in 1 2 3 4; do
usleep 500000
if [[ \$(nvram get wan0_gateway) = \"0.0.0.0\" ]]; then
ping -I ppp$ifnum -c 1 \$pingaddr >> /tmp/chat.log
else
break
fi
usleep 500000
done" > /tmp/ppp/peers/ping$ifnum.sh
chmod +x /tmp/ppp/peers/ping$ifnum.sh

rss
15-06-2010, 09:44
переписал скрипт пингования

echo -e "#!/bin/sh
pingaddr=\$(nvram get wan0_gateway)
for i in 1 2 3 4; do
usleep 500000
if [[ \$(nvram get wan0_gateway) == \"0.0.0.0\" ]]; then
ping -I ppp$ifnum -c 1 \$pingaddr >> /tmp/chat.log
else
break
fi
usleep 500000
done" > /tmp/ppp/peers/ping$ifnum.sh
chmod +x /tmp/ppp/peers/ping$ifnum.sh
Есть ли смысл пинговать DNS гугла, если есть ближайший шлюз?
И, кстати, зачем разрывать sleep на два usleep?

И последний вопрос, может быть сделать централизованный скрипт проверки соединения, который запускается watchdog раз в 10 секунд? Для wimax уже есть такой.

dlukanidin
15-06-2010, 10:45
Есть ли смысл пинговать DNS гугла, если есть ближайший шлюз?.

Да. Т.к. при старте pinga соединение ещё не поднято, собственно для этого и пингуем. Извлечь в этой ситуации адрес ближайшего шлюза (10.112.112.112 - псевдо адрес присвоенный на тот момент pppd, причём он может меняться) можно ИМХО только через ifconfig. Гугл можно заменить другим внешним IP.


И, кстати, зачем разрывать sleep на два usleep?.

т.к. ping вызывается до pppd, надо дать последнему возможность начать поднимать соединение, иначе первый ping уходит в "молоко". Но с задержками можно играться.


И последний вопрос, может быть сделать централизованный скрипт проверки соединения, который запускается watchdog раз в 10 секунд? Для wimax уже есть такой.

Я - против. Аргументацию уже где-то приводил, но повторюсь:
1. Пинг жрёт трафик, трафик вроде не дорогой, но у всех по разному, да и люди разные.
2. Постоянный пинг не даст работать соединению по требованию.
3. Мой опыт показывает, что пинг не спасает ни от каких зависаний.

Теперь о горячем переподключении.
1. Я понимаю под этим вынимание и вставление модема в USB порт во время работы роутера.
2. При этом hotplug соответственно убивает скрипт dial и pppd и при подключении запускает скрипт dial.
3. Таким образом всё переподключается без проблем.
4. При проверке работы на практике обнаружил 2 ошибки.
- пришлось упростить скрипт пингования (иначе не работает при переподключении)

echo -e "#!/bin/sh
pingaddr=\"8.8.8.8\"
for i in 1 2 3 4; do
usleep 500000
ping -I ppp$ifnum -c 1 \$pingaddr >> /tmp/chat.log
usleep 500000
done" > /tmp/ppp/peers/ping$ifnum.sh
chmod +x /tmp/ppp/peers/ping$ifnum.sh

- Ошибка приводившая к зависанию роутера на скрипте ip-up. Соответственно исправление.

if [[ ! -e /tmp/ppp/peers/ip-up ]] ; then
mv /tmp/ppp/ip-up /tmp/ppp/peers/ip-up
fi
echo -e "#!/bin/sh
nvram set wan_modem_need_chat=0
echo \"<<< /tmp/ppp/ip-up >>> Session is up, next try to reconnect\" >>/tmp/chat.log
/tmp/ppp/peers/ip-up \$@" > /tmp/ppp/ip-up
chmod +x /tmp/ppp/ip-up


P.S. Ещё хотел добавить, может быть при переподключении проверять запущены ли драйвера (или подняты порты) и не проводить повторный запуск драйверов ?
Типа такого

usbserial_not_loaded=[ ! `lsmod | grep usbserial` ]
serial_down=[ ! -e $usbdev ]
if [[ $usbserial_not_loaded || $serial_down ]]; then
...........
fi

rss
15-06-2010, 20:22
P.S. Ещё хотел добавить, может быть при переподключении проверять запущены ли драйвера (или подняты порты) и не проводить повторный запуск драйверов ?
Типа такого

usbserial_not_loaded=[ ! `lsmod | grep usbserial` ]
serial_down=[ ! -e $usbdev ]
if [[ $usbserial_not_loaded || $serial_down ]]; then
...........
fi

Вообще-то можно обнаружить модем и по наличию каналов
if [ -e /dev/usb/tts/$port ];... (это было у sorine). Вопрос, поможет ли всё это в случае подвисания модема.


PS: Скрипт в SVN, как и селектор режима ondemand в веб-интерфейсе.

dlukanidin
15-06-2010, 21:28
Вообще-то можно обнаружить модем и по наличию каналов
if [ -e /dev/usb/tts/$port ];... (это было у sorine). Вопрос, поможет ли всё это в случае подвисания модема.
.
Вы правы, перемудрил. А поможет ли смогут ответить только тестеры. Я попробую как есть, посмотрю сколько продержится и почему отвалится.


PS: Скрипт в SVN, как и селектор режима ondemand в веб-интерфейсе.

Спасибо. К своему стыду до сих пор не знаю как собрать прошивку с опцией дебаг. Всё таки на данном этапе отладки это необходимо.

dlukanidin
16-06-2010, 06:05
В скрипте chat.sh обнаружил ошибку

if [[ $res = 4 ]]; then
название переменной должно быть $rez (или и вдругих местах исправить)
Как бы ничего страшного, этот фрагмент скрипта оставлен для экзотических случаев, но нужно исправить.

Для информации - кусок лога при переподключении модема (у меня с электричеством беда и время от времени происходит такое передёргивание).

Jun 16 06:48:48 pppd[149]: Exit.
Jun 16 06:48:51 kernel: hub.c: new USB device 00:03.1-1.1, assigned address 5
Jun 16 06:48:52 kernel: usbserial.c: Generic converter detected
Jun 16 06:48:52 kernel: usbserial.c: Generic converter now attached to ttyUSB0 (or usb/tts/0 for devfs)
Jun 16 06:48:52 kernel: usbserial.c: Generic converter detected
Jun 16 06:48:52 kernel: usbserial.c: Generic converter now attached to ttyUSB1 (or usb/tts/1 for devfs)
Jun 16 06:48:57 kernel: usbserial.c: USB Serial deregistering driver Generic
Jun 16 06:48:57 kernel: usbserial.c: Generic converter now disconnected from ttyUSB0
Jun 16 06:48:57 kernel: usbserial.c: Generic converter now disconnected from ttyUSB1
Jun 16 06:48:57 kernel: usb.c: deregistering driver serial
Jun 16 06:48:57 kernel: usb.c: registered new driver serial
Jun 16 06:48:57 kernel: usbserial.c: USB Serial support registered for Generic
Jun 16 06:48:57 kernel: usbserial.c: Generic converter detected
Jun 16 06:48:57 kernel: usbserial.c: Generic converter now attached to ttyUSB0 (or usb/tts/0 for devfs)
Jun 16 06:48:57 kernel: usbserial.c: Generic converter detected
Jun 16 06:48:57 kernel: usbserial.c: Generic converter now attached to ttyUSB1 (or usb/tts/1 for devfs)
Jun 16 06:48:57 kernel: usbserial.c: USB Serial Driver core v1.4
Jun 16 06:49:17 pppd[245]: pppd 2.4.5 started by root, uid 0

rss
16-06-2010, 07:15
Спасибо. К своему стыду до сих пор не знаю как собрать прошивку с опцией дебаг. Всё таки на данном этапе отладки это необходимо.
Расскомментировать в shared/Makefile строку CFLAGS += -g -DDEBUG_TO_SYSLOG
Расскомментировать в rc/Makefile строку CFLAGS += -g -DDEBUG -DDEBUG_TO_SYSLOG


В скрипте chat.sh обнаружил ошибку

if [[ $res = 4 ]]; then
название переменной должно быть $rez (или и вдругих местах исправить)
Как бы ничего страшного, этот фрагмент скрипта оставлен для экзотических случаев, но нужно исправить. Исправлю.


Для информации - кусок лога при переподключении модема (у меня с электричеством беда и время от времени происходит такое передёргивание).

Jun 16 06:48:48 pppd[149]: Exit.
Jun 16 06:48:51 kernel: hub.c: new USB device 00:03.1-1.1, assigned address 5
Jun 16 06:48:52 kernel: usbserial.c: Generic converter detected
Jun 16 06:48:52 kernel: usbserial.c: Generic converter now attached to ttyUSB0 (or usb/tts/0 for devfs)
Jun 16 06:48:52 kernel: usbserial.c: Generic converter detected
Jun 16 06:48:52 kernel: usbserial.c: Generic converter now attached to ttyUSB1 (or usb/tts/1 for devfs)
Jun 16 06:48:57 kernel: usbserial.c: USB Serial deregistering driver Generic
Jun 16 06:48:57 kernel: usbserial.c: Generic converter now disconnected from ttyUSB0
Jun 16 06:48:57 kernel: usbserial.c: Generic converter now disconnected from ttyUSB1
Jun 16 06:48:57 kernel: usb.c: deregistering driver serial
Jun 16 06:48:57 kernel: usb.c: registered new driver serial
Jun 16 06:48:57 kernel: usbserial.c: USB Serial support registered for Generic
Jun 16 06:48:57 kernel: usbserial.c: Generic converter detected
Jun 16 06:48:57 kernel: usbserial.c: Generic converter now attached to ttyUSB0 (or usb/tts/0 for devfs)
Jun 16 06:48:57 kernel: usbserial.c: Generic converter detected
Jun 16 06:48:57 kernel: usbserial.c: Generic converter now attached to ttyUSB1 (or usb/tts/1 for devfs)
Jun 16 06:48:57 kernel: usbserial.c: USB Serial Driver core v1.4
Jun 16 06:49:17 pppd[245]: pppd 2.4.5 started by root, uid 0 Самопроизвольная перезагрузка устройства?

dlukanidin
16-06-2010, 07:35
Самопроизвольная перезагрузка устройства?

Благодарю за подсказку.
Нет-нет, я ранее писал, думал даже, что это программно, но потом обнаружил, что часто при выключении света происходит перезагрузка модема, то ли импульсные помехи по питанию, то ли по антене (с этим чудо модемом чего только не бывает).

theMIROn
16-06-2010, 19:48
rss, видел?
http://wl500g.info/showpost.php?p=201530&postcount=352

rss
16-06-2010, 20:03
rss, видел?
http://wl500g.info/showpost.php?p=201530&postcount=352

Говоря откровенно, ничего не могу сказать про работу firewall в 3G Connection. Да и про модемы ZTE MF632 и HUAWEI E172 тоже ничего не известно.
На прошивке rt-n я даже само подключение usb-модема не проверял, не то, что дозвон. wl-версия, полагаю, на rt-n 16 работать не будет?

theMIROn
16-06-2010, 20:08
На заре когда wimax подключался недоскриптами, firewall/ddns/vserver тоже ниразу не работали...
это и было причиной унификации.

rss
16-06-2010, 20:16
На заре когда wimax подключался недоскриптами, firewall/ddns/vserver тоже ниразу не работали...
это и было причиной унификации.

По идее сейчас всё работает через штатные средства. Но никто же их не проверил явно.

И что всё таки делаем с ondemand и idletime? Объединяем, переименовываем название? Или пока оставляем как есть?

dlukanidin
16-06-2010, 20:24
Поскольку со скриптами вроде пока делать нечего, надо ждать реакции тестеров, начал потихоньку ковырять usbserial и option. Хотел попробовать option в действии и обнаружил, что если даже ставлю autodetect - no и убираю vendor и product IDs, всё равно после перезагрузки происходит автоматическое их определение и скрипт идёт по ветке usbserial. Разве так должно происходить ?

dlukanidin
16-06-2010, 20:57
Хотел попробовать option в действии и обнаружил

option это не самостоятельный драйвер, а нахлобучка (сорри за термин) на usbserial. Без него он работать не будет. (А с ним пока работает как то криво ИМХО). Драйвер acm тут usbserial не заменит. Таким образом эта ветка скрипта не работоспособна в принципе. (Чуствую маловато таких модемов или у них и так всё в порядке, теста мы от них не дождёмся). Пробую дальше.

Запустилась комбинация usbserial+option (всё без параметров, модем option нашёл сам и поднял порты), после того, как изменил скорость на 115200 (других пока не пробовал) и перезагрузился. Смотрю, что будет.

Итак прошло время, повисло. Лог прилагаю. Вывод:
1. Использование option возможно, но пока не очень желательно для модемов, которые могут нормально работать с generic режимом usbserial (option при разрыве соединения, соединиться заново уже не даёт никаким способом, chat просто не получает ожидаемого ответа, а подхватить сессию не удаётся).
2. В скрипт надо добавить загрузку usbserial без параметров перед option и развести загрузку option с acm по разным веткам.
3. Логика настройки может быть следующей.
3.1. User делает попытку загрузиться с uni драйвером в авто режиме.
3.2. Если не получилось, т.е. модем не acm и не работает или работает не устойчиво с usbserial generic, то пробует загрузиться с option.
То rss Если Вы поддерживаете такой подход, то перепишу скрипт.
Буду смотреть дальше.

rss
17-06-2010, 06:15
Поскольку со скриптами вроде пока делать нечего, надо ждать реакции тестеров, начал потихоньку ковырять usbserial и option. Хотел попробовать option в действии и обнаружил, что если даже ставлю autodetect - no и убираю vendor и product IDs, всё равно после перезагрузки происходит автоматическое их определение и скрипт идёт по ветке usbserial. Разве так должно происходить ?
Остатки первой версии обнаружения по отсутствию записи. При autodetect просто будет каждый раз происходить перезатирание.
Исправлю.

autodetect оставляю по умолчанию включенным?




Итак прошло время, повисло. Лог прилагаю. Вывод:
1. Использование option возможно, но пока не очень желательно для модемов, которые могут нормально работать с generic режимом usbserial (option при разрыве соединения, соединиться заново уже не даёт никаким способом, chat просто не получает ожидаемого ответа, а подхватить сессию не удаётся).
2. В скрипт надо добавить загрузку usbserial без параметров перед option и развести загрузку option с acm по разным веткам.
3. Логика настройки может быть следующей.
3.1. User делает попытку загрузиться с uni драйвером в авто режиме.
3.2. Если не получилось, т.е. модем не acm и не работает или работает не устойчиво с usbserial generic, то пробует загрузиться с option.
То rss Если Вы поддерживаете такой подход, то перепишу скрипт.
Буду смотреть дальше.Итого, pppd сам не выходит, следовательно при данных настройках в цикле его запускать не надо. Соответственно, не используется перезагрузка драйверов.

По логике подключения драйверов достоверно ответить не могу - надо пробовать.

dlukanidin
17-06-2010, 06:56
autodetect оставляю по умолчанию включенным?
Да


Итого, pppd сам не выходит, следовательно при данных настройках в цикле его запускать не надо. Соответственно, не используется перезагрузка драйверов.


Мне думается, что цикл нужно оставить для общности, чтобы можно было играться с maxfail (я думаю, что универсальность скрипта не только в том, что он позволит 99% автоматизировать, но и оставшийся 1% решить изменением параметров). Перезагрузка драйверов на моём оборудовании ничего не даёт. Может на других модемах это может быть эффективно, не знаю.

Извините, но не понял, что делаем с option? В текущем состоянии его оставлять нельзя.

rss
17-06-2010, 07:01
Извините, но не понял, что делаем с option? В текущем состоянии его оставлять нельзя. Надо смотреть его исходники и разбираться, что конкретно он делает. Вечером посмотрю.

dlukanidin
17-06-2010, 17:30
Опять broken pipe, после попытки убийства pppd, чтобы перезапустить usbserial вообще абзац.

rss
17-06-2010, 18:22
Опять broken pipe, после попытки убийства pppd, чтобы перезапустить usbserial вообще абзац.

С драйверами получается следующая ситуация (посмотрел бегло - могу ошибаться):

usbserial нужен в том случае, если о модеме ничего не знаем, поэтому и подключаем его с конкретными VID:PID;
acm - т.н. Abstract Control Model driver - обеспечивает работу устройств типа телефонов, создает интерфейсы вида

Device : Location : Info
/dev/usb/acm/0 : 1.2.0 : Manufacturer="Nokia" : Product="N79"

option - для модемов, VID/PID которых ему известны (см. прилагаемый исходник - константы PID).


Также могу грузить драйвер на этапе обнаружения устройства - в hotplug, но как определить, какой драйвер нужен и что делать в случае подвисания пока не знаю.


PS: В принципе, можно опцию autodetect пустить как раз на ветвь acm, option, а определение VID/PID сделать только в том случае, если VID - пустое и в этом случае пускать по ветви usbserial.

lly
17-06-2010, 18:33
С драйверами получается следующая ситуация (посмотрел бегло - могу ошибаться):

option - является заменой usbserial для модемов, VID/PID которых ему известны (см. прилагаемый исходник - константы PID).


Не совсем так, все драйвера базирующиеся на usbserial, используют usb_serial_register/usb_serial_deregister для встраивания в единую цепочку конвертеров и, соответственно, требуют загруженного модуля usbserial. acm работает независимо.

dlukanidin
17-06-2010, 19:26
option - является заменой usbserial для модемов, VID/PID которых ему известны (см. прилагаемый исходник - константы PID)..
ИМХО Вы ошиблись. Все драйвера в папке serial работают через usbserial. В данном случае usbserial это generic драйвер, а остальные предоставляют ему свои функции, которые usbserial вызывает после того как выполнил общее действие. В описании написано, что остальные драйвера должны автоматически запускать usbserial, но для этого он должен быть загружен иначе option выдаёт неразрешимую ссылку. Внутри usbserial прописан только один vendor product, который загружается по умолчанию ещё один можно передать ему в параметрах, внутри остальных прописаны свои наборы. Запускает всё добро hotplug.
acm является действительно независимым драйвером.


usbserial является универсальным, поэтому конфликтует по именам устройств как с acm, так и с option.
Про acm не знаю, а вот мой модем в option прописан и если его явно указать в usbserial может появиться конфликт (а впринципе, как я писал он может работать и с одним и с другим).


Также могу грузить драйвер на этапе обнаружения устройства - в hotplug, но как определить, какой драйвер нужен и что делать в случае подвисания пока не знаю.
Как я понимаю разработчиками этих драйверов предусмотрена другая логика. При insmod драйвера предоставляют функцию probe, которую вызывает hotplag и которая отвечает поддерживается ли устройство драйвером, если да, то hotplug его стартует для этого устройства.


PS: В принципе, можно опцию autodetect пустить как раз на ветвь acm, option, а определение VID/PID сделать только в том случае, если VID - пустое и в этом случае пускать по ветви usbserial.
Это не укладывается в логику того, что я писал выше. Хотя конечно могу ошибаться. Сейчас работаю с исходниками драйверов, ох и муторное это дело.

rss
17-06-2010, 19:31
В части option ошибся однозначно.

В hotplug сейчас драйверы точно не запускаются.

В части комбинации драйверов - посмотрел у чехов - /usr/ppp/dialup/dial

if [ "$(nvram get wan_modem_packetsize)" == "0" ]; then
insmod acm
else
insmod acm maxpacketsize=$(nvram get wan_modem_packetsize)
fi

if [ "$(nvram get wan_modem_vid)" == "" -o "$(nvram get wan_modem_pid)" == "" ]; then
insmod usbserial
else
if [ "$(nvram get wan_modem_packetsize)" == "0" ]; then
insmod usbserial vendor=$(nvram get wan_modem_vid) product=$(nvram get wan_modem_pid)
else
insmod usbserial vendor=$(nvram get wan_modem_vid) product=$(nvram get wan_modem_pid) maxpacketsize=$(nvram get wan_modem_packetsize)
fi
fi

insmod option
insmod pl2303
insmod ftdi_sio А вот в случае падения pppd они перезагружают только option, но не для всех модемов (разные скрипты).

theMIROn
17-06-2010, 19:32
Опять broken pipe, после попытки убийства pppd, чтобы перезапустить usbserial вообще абзац.

не надо убивать pppd. он обижается

rss
17-06-2010, 19:37
не надо убивать pppd. он обижается

Может быть и цикл перезагрузки pppd не нужен? Полагаться на то, что если уж отключился, то по причине отключения устройства?

dlukanidin
17-06-2010, 20:04
В hotplug сейчас драйверы точно не запускаются.
Я имел в виду не загружаются (insmod), а запускаются функцией init (вроде так)

В части комбинации драйверов - посмотрел у чехов
У чехов всё абсолютно логично. Единственное, пока не понимаю кто будет работать при совпадении продуктов явно указанных в usbserial и имеющихся в наличии в option, то ли generic драйвер, то ли специфический (вообще то исходя из общей логики должен специфический). Все драйвера могут быть загружены одновременно т.к. usbserial может одновременно обрабатывать до 255 устройств, а acm вообще независимый.

А вот в случае падения pppd они перезагружают только option, но не для всех модемов (разные скрипты).
Лoгику работы option пока не понимаю. Знаю, что в нём прописана куча устройств, пытается имитировать работу по аппаратным сигналам dtr rts
, вроде одновременно работает только с одним устройством. Но не будем забывать, что он портирован с ядра 2.6 и поэтому возможны сюрпризы.

Я всё таки предлагаю пока общую логику скрипта оставить как есть, только для запуска option предусмотреть переменную nvram и конечно загружать usbserial в любом случае, т.к. без него ничего остального кроме acm работать не будет, а acm ему не мешает (тоже можно загружать всегда).

rss
17-06-2010, 20:09
Я всё таки предлагаю пока общую логику скрипта оставить как есть, только для запуска option предусмотреть переменную nvram и конечно загружать usbserial в любом случае, т.к. без него ничего остального кроме acm работать не будет, а acm ему не мешает (тоже можно загружать всегда).

Поскольку выявленные баги надо было исправить - исходники обновил вместе с исправлением скрипта. Завтра на тестирование ftp://core.dumped.ru/wl/1691

Соответственно, дорабатываем дальше.

dlukanidin
17-06-2010, 20:35
Поскольку выявленные баги надо было исправить - исходники обновил вместе с исправлением скрипта. Завтра на тестирование ftp://core.dumped.ru/wl/1691

Соответственно, дорабатываем дальше.

Я боюсь так не получится. usbserial не поймёт параметр maxpacketsize=$(nvram get wan_modem_packetsize), ему надо maxSize= кроме того многие жаловались на снижение скорости если не указать сразу 4096 (я бы поставил это значение по умолчанию). И автоопределение я бы оставил по умолчанию, option то пока не загружается (ИМХО правильно).

rss
18-06-2010, 06:16
Я боюсь так не получится. usbserial не поймёт параметр maxpacketsize=$(nvram get wan_modem_packetsize), ему надо maxSize= кроме того многие жаловались на снижение скорости если не указать сразу 4096 (я бы поставил это значение по умолчанию). И автоопределение я бы оставил по умолчанию, option то пока не загружается (ИМХО правильно).

Надо разбираться с правилами загрузки драйверов. У чехов местами стоят проверки wan_modem_packetsize==0, чтобы запускать разные ветви драйверов в т.ч. с полным автоматическим определением модемов.

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

dlukanidin
18-06-2010, 07:16
Надо разбираться с правилами загрузки драйверов. У чехов местами стоят проверки wan_modem_packetsize==0, чтобы запускать разные ветви драйверов в т.ч. с полным автоматическим определением модемов.

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

Ивините я не понял. Из скрипта чехов, который Вы приводили следует, что размер пакета либо указывается либо нет и только.
Все драйверы лежат в /lib/modules/, Вы наверное, что-то другое имели в виду. Или я уже перестал понимать.

Опять поймал разрушенный пайп. Подозреваю, что причина в цепочке rmmod insmod, которая кофликтует с естественным поднятием и опусканием драйверов при передёргивании модема. Попрбую её убрать и посмотрю, что будет.

rss
18-06-2010, 08:12
Ивините я не понял. Из скрипта чехов, который Вы приводили следует, что размер пакета либо указывается либо нет и только.
Все драйверы лежат в /lib/modules/, Вы наверное, что-то другое имели в виду. Или я уже перестал понимать. У чехов несколько скриптов - состав драйверов в них различается в зависимости от модема. См. скрипты dial http://code.google.com/p/wl500g/source/browse/#svn/trunk/cdma/files/usr/ppp


Опять поймал разрушенный пайп. Подозреваю, что причина в цепочке rmmod insmod, которая кофликтует с естественным поднятием и опусканием драйверов при передёргивании модема. Попрбую её убрать и посмотрю, что будет. Может быть попробовать их вообще не перезагружать? Или по крайней мере разобраться в том, какие конкретно драйверы требуют перезагрузки при передёргивании модема.

Viper_Rus
18-06-2010, 16:09
Ура! Была проблема, пару недель назад описывал. http://wl500g.info/showpost.php?p=199788&postcount=153
Не работал модем HUAWEI E160G, даже в USB devfs Devices не появлялся. Прошился с 1935 на1691, все заработало с пол оборота.

Спасибо!

rss
18-06-2010, 16:21
Ура! Была проблема, пару недель назад описывал. http://wl500g.info/showpost.php?p=199788&postcount=153
Не работал модем HUAWEI E160G, даже в USB devfs Devices не появлялся. Прошился с 1935 на1691, все заработало с пол оборота.

Спасибо!
А с каким скриптом дозвона? С чешским или с нашим? (их сейчас одновременно два)

Viper_Rus
18-06-2010, 16:25
А как понять с каким? Может мне вылажить логи?

p.s. Вобщем вот лог. Только у меня не билд для тестов, а стандартный.

p.s.s. Тока напиши плиз, что из этого видно. Но работает отлично. Роутер DIR-320(мой для тестов), свисток HUAWEI E160G

p.s.s.s. Роутер сброшенный в 0. Настроил тока WAN закладку(WAN Connection Type:USB MODEM) и USB Modem(прописал логин, пароль, тип подключения GPRS/EDGE/UMTS, номер дозвона *99***1#). ID сами прописались. Больше ниче не трогал.

rss
18-06-2010, 18:49
А как понять с каким? Может мне вылажить логи?

p.s. Вобщем вот лог. Только у меня не билд для тестов, а стандартный.

p.s.s. Тока напиши плиз, что из этого видно. Но работает отлично. Роутер DIR-320(мой для тестов), свисток HUAWEI E160G

p.s.s.s. Роутер сброшенный в 0. Настроил тока WAN закладку(WAN Connection Type:USB MODEM) и USB Modem(прописал логин, пароль, тип подключения GPRS/EDGE/UMTS, номер дозвона *99***1#). ID сами прописались. Больше ниче не трогал.

Наш - Universal. Остальные - чехов.

dlukanidin
18-06-2010, 18:52
У чехов несколько скриптов - состав драйверов в них различается в зависимости от модема.

Посмотрел внимательно на все (до этого подробно рассматривал только Anydata). В целом всё однотипно и укладывается в наше сегоднешнее понимание. Поскольку IPW и ZADACOM мы пока не рассматриваем, по крайней мере до того как не объявятся люди у которых это есть, то у нас остаётся всё тот же вопрос - будет ли нормально работать option, и нужен ли он нам вообще, а если нужен, то в каких ситуациях его вызывать, нужно ли перезагружать драйверы и если нужно, то какие.
Для этого мне представляется оптимальным подходом было бы следующее. Пока мы роемся в коде, пусть тестеры попробуют как работает без option. Не нравится - как работает с option. То же не нравится подробно разбираемся где и из-за кого падает.
Для этого предлагается следующая инструкция по тестированию:
1. Настройте соединение через uni скрипт и укажите тип, имя, пароль и если нужно номер, а также другие данные в которых Вы уверены (например номер порта).
2. Поставьте автоматическое определение модема и убедитесь, что его vid и pid совпадают с известными Вам данными.
3. Перезагрузитесь и посмотрите syslog. Убедитесь (строчки с usbserial), что порты модема поднимаются и что они либо 0 и 1 либо совпадают с указанными Вами, если необходимо укажите порты увиденные в syslog.
4. Проверьте поднялось ли соединение и тестируйте его.
5. Если что-то не получилось или не нравится как работает, отключите автоматическое определение модема и сотрите vid и pid.
6. Перезагрузитесь и посмотрите syslog. Убедитесь (строчки с option), что порты модема поднимаются и что они либо 0 и 1 либо совпадают с указанными Вами, если необходимо укажите порты увиденные в syslog.
7. Проверьте поднялось ли соединение и тестируйте его.
8. Если что-то не получилось или не нравится как работает, сохраните syslog, добавьте в него сисинфо, заархивируйте (желательно в имени файла указать дату и время) и выложите в этой ветке с Вашими комментариями. Обязательной является следующая информация:
8.1 Номер прошивки
8.2 Название и тип маршрутизатора
8.3 Название и тип модема
8.4 Какой тип соединения выбран (CDMA , UMTS, Dial-up, Universal, Userdefined)
8.5 До какого пункта инструкции Вы дошли прежде чем разместить сообщение.
9. Благодарим Вас за оказанную помощь. Ваше участие очень важно для нас.

P.S
1. Я всё таки поправил скрипт и добавил max_packet_size, иначе не работает.
2. Всё таки я как то неправильно компилирую прошивку. Взял скомпиленую rss и pipe перестал падать.

Viper_Rus
20-06-2010, 09:03
Наш - Universal. Остальные - чехов.

Только щас понял о чем вы. Нашел пункт "Alternative universal dial script for CDMA/GPRS/EDGE/UMTS modems." Щас с ним попробую.

p.s. C вашим скриптом тоже отлично работает. Короче с прошивки 1635 на 1691 прогресс налицо. Там вообще не определялся модем, тут на обоих скриптах рабоает ;) Более подробно буду уже тестить в отпуске. Ну и модем ессно более скоростной куплю HUAWEI E169G или HUAWEI E1750. Надеюсь заработает.

ford7
20-06-2010, 10:40
Так я написал, что в 1631 все работало. Вот ее лог, который я отсылал ранее:

rss
20-06-2010, 10:57
Так я написал, что в 1631 все работало. Вот ее лог, который я отсылал ранее:

Не годится - слишком давно. Свежайшая отладочная прошивка:
http://narod.ru/disk/22052350000/WL500gpv2-1.9.2.7-d-r1695-debug.trx.html

ford7
20-06-2010, 11:12
Скачал.. с этим все работает. лог прилагаю:

igoran777
20-06-2010, 12:48
Здраствуйте! Спасибо огромное за последнюю прошивку 1691 с ней у меня все наконец то заработало без единого разрыва :) Мое оборудование роутёр D-Link Dir320 + AnyData 310A(skylink) в настройках выбрал universal вбил логин с пароль и строку инициализации(APN: ) и номер набора #777 проверял более суток инет подключался когда было необходимо. Даже подключал модем на горячую тоже все опредилялось отлично и подключалось!

dlukanidin
20-06-2010, 13:30
Уже достало,

Jan 1 03:31:51 3G USB Modem: connected to ISP
Jun 20 14:44:09 pppd[296]: System time change detected.
Jun 20 14:44:35 ntp client: Synchronizing time with time.nist.gov ...
Jun 20 15:35:09 kernel: usbserial.c: generic_write - port 0: failed submitting write urb (-32)
Jun 20 15:36:09 kernel: usbserial.c: generic_write - port 0: failed submitting write urb (-32)
Jun 20 15:37:09 kernel: usbserial.c: generic_write - port 0: failed submitting write urb (-32)
Jun 20 15:38:09 kernel: usbserial.c: generic_write - port 0: failed submitting write urb (-32)
Jun 20 15:39:09 kernel: usbserial.c: generic_write - port 0: failed submitting write urb (-32)
Jun 20 15:40:09 pppd[296]: No response to 6 echo-requests
Jun 20 15:40:09 pppd[296]: Serial link appears to be disconnected.
Jun 20 15:40:09 pppd[296]: Connect time 57.0 minutes.
Jun 20 15:40:09 pppd[296]: Sent 30146 bytes, received 48216 bytes.
Jun 20 15:40:09 kernel: usbserial.c: generic_write - port 0: failed submitting write urb (-32)
Jun 20 15:40:09 dnsmasq[73]: read /etc/hosts - 2 addresses
Jun 20 15:40:09 dnsmasq[73]: using nameserver 212.119.97.5#53
Jun 20 15:40:09 dnsmasq[73]: using nameserver 212.119.99.200#53
Jun 20 15:40:09 3G USB Modem: Disconnected
Jun 20 15:40:12 kernel: usbserial.c: generic_write - port 0: failed submitting write urb (-32)
Jun 20 15:40:15 pppd[296]: Connection terminated.
Jun 20 15:41:37 pppd[296]: Starting link
Jun 20 15:41:37 kernel: usbserial.c: generic_open - failed resubmitting read urb, error -32

после rmmod usbserial

Jun 20 15:48:49 kernel: usbserial.c: USB Serial deregistering driver Home-Electronics TIRA-1 IR Transceiver
Jun 20 15:48:49 kernel: usbserial.c: USB Serial deregistering driver USB-UIRT Infrared Tranceiver
Jun 20 15:48:49 kernel: usbserial.c: USB Serial deregistering driver FTDI FT232R Compatible
Jun 20 15:48:49 kernel: usbserial.c: USB Serial deregistering driver FTDI FT2232C Compatible
Jun 20 15:48:49 kernel: usbserial.c: USB Serial deregistering driver FTDI FT232BM Compatible
Jun 20 15:48:49 kernel: usbserial.c: USB Serial deregistering driver FTDI 8U232AM Compatible
Jun 20 15:48:49 kernel: usbserial.c: USB Serial deregistering driver FTDI SIO
Jun 20 15:48:59 kernel: usbserial.c: USB Serial deregistering driver PL-2303
Jun 20 15:49:08 kernel: usbserial.c: USB Serial deregistering driver Generic
Jun 20 15:49:08 kernel: usbserial.c: Generic converter now disconnected from ttyUSB1
Jun 20 15:49:08 kernel: usb.c: deregistering driver serial
Jun 20 15:49:08 kernel: Unable to handle kernel paging request at virtual address 0000001c, epc == c01d386c, ra == c01761bc
Jun 20 15:49:08 kernel: Oops in fault.c::do_page_fault, line 206:
Jun 20 15:49:08 kernel: $0 : 00000000 1000dc00 00000000 00000001 c01d0000 81903800 00000001 80212900
Jun 20 15:49:08 kernel: $8 : 00000001 00002929 00002929 00002903 80250000 80250000 80250000 ffffffff
Jun 20 15:49:08 kernel: $16: c01d4c70 81903800 81966660 00000000 c01d0000 81ca0400 0040df40 00406444
Jun 20 15:49:08 kernel: $24: 00000002 c01d0168 8179a000 8179bde8 7fff791c c01761bc
Jun 20 15:49:08 kernel: Hi : 00000000
Jun 20 15:49:08 kernel: Lo : 00000003

Не знаю в каком направлении копать. Аппаратура что ли накрылась?

lly
20-06-2010, 13:40
Уже достало,

Не знаю в каком направлении копать. Аппаратура что ли накрылась?
USB подсистема в 2.4 имеет множество недоделок, возможно, это одна из них. Можешь сам подсчитать сколько ядру 2.4 лет ;)

По первому вопросу, расшифровка в linux/linux/Documentation/usb/error-codes.txt

-EPIPE endpoint stalled
По второму, для анализа нет самого главного - Call Trace. Похоже, потребуется консоль.

Можно еще понавставлять printk() в usbserial.c:usb_serial_exit()