PDA

Просмотр полной версии : ZTE MF620 настройка под линукс - мануал


Паук
09.03.2008, 20:29
Всем привет!
Думаю, комуто будет полезен мой опыт, учитывая тот факт, что русскоязычной инфы по этому модему просто нет.

[ПРОЛОГ]Итак. Приобрел себе я модем ZTE MF620, который предлагает life:) с giga-годом в нагрузку. Ну и естественно, жутко захотелось его заставить работать в линуксе.
Под виндой софт настолько кривой - что хочется выть и лезть на потолок. А так же оторвать китаёзам все выступающие части тела. Немного обьясню: при подключении модем определяется как usb-cd (видимо для экономии компакт-диска с дровами в комплекте). Приходится ставить родной софт, который переключает модем с режима накопителя в режим модема.
Но если бы переключением все ограничивалось... Дело в том, что симка регистрируется в сети только этим дебильным софтом. Тоесть - даже если винда видит модем, подключится к сети не выйдет. А если програму закрыть - это равноценно отключению модема - установленное соединение разрывается и симка вываливается с сети. Маразм и идиотизм полнейший.[/ПРОЛОГ]

При подключении девайс определяется как сьемный накопитель. Для переключения в режим модема необходимо использовать usb_modeswitch (http://www.draisberghof.de/usb_modeswitch/):
закачиваем исходники
$ wget http://www.draisberghof.de/usb_modeswitch/usb_modeswitch-0.9.2.tar.bz2
распаковываем их
$ tar -xvf usb_modeswitch-0.9.2.tar.bz2
заходим в папку
$ cd usb_modeswitch-0.9.2
собираем
$ /compile.sh
и копируем собранный бинарник
$ sudo cp usb_modeswitch /usr/sbin/

Для сборки в системе должа быть либа libusb (http://libusb.sourceforge.net/)

Создаем для usb_modeswitch под рутом конфиг /etc/usb_modeswitch.conf с содержанием:
########################################################
# ZTE MF620 (Experimental)
# Message string taken from a sniffer log. Untested!
# Contributor: Flávio Moringa
#
DefaultVendor=0x19d2
DefaultProduct=0x2000
#
TargetVendor=0x19d2
TargetProduct=0x0001
#
MessageEndpoint=0x04
MessageContent="5553424308a0b7870000000000000600000000000000000000000000000000"

И создаем для udev под рутом конфиг /etc/udev/rules.d/15-zte-mf620.rules с содержанием:
# ZTE MF620 rules
# Is this the ZTE ZeroCD device?
SYSFS{idProduct}=="2000", SYSFS{idVendor}=="19d2", RUN+="/usr/bin/usb_modeswitch -d 1 -v 0x19d2 -p 0x2000 -V 0x19d2 -P 0x0001"
# Is this the ZTE actual modem?
SYSFS{idProduct}=="0001", SYSFS{idVendor}=="19d2", RUN+="/sbin/modprobe usbserial vendor=0x19d2 product=0x0001", MODE="660", GROUP="dialout"
Внимание! все, что начинается с SYSFS{idProduct} - это ОДНА строка.

Для того, чтобы при переключении модема udev создавал необходимые устройства - обязательно должен быть в ядре модуль usbserial. Причем собран он должен быть именно модулем, а не в ядре. Я на эти грабли наступил и долго не мог понять, в чем же дело.
Если модуля нет - придется пересобрать ядро с опциями в конфиге:
Device Drivers --->
USB support --->
USB Serial Converter support --->
<M> USB Serial Converter support
USB Generic Serial Driver
Теперь, при подключении модема он вначале определяется как накопитель, а затем - как модем - создаются файлы устройств /dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2
Зачем так много - без понятия, но имхо ttyUSB0 используется непосредственно для канала данных, ttyUSB1 - хз, ttyUSB2 - для мониторинга за состоянием модема - уровень сигнала и прочее. Что интересно - в винде при подключенном инете софт показывает уровень сигнала, наличие edge, заряд батареи, можно работать с смс (отправлять-принимать) и справочником симки. Скорее всего, это достигается использованием нескольких юсб-каналов - ведь при подключении обычного телефона в системе появляется всего лишь одно устройство (модем), и при подключенном инете оно недоступно.

Вот здесь я наступил на вторые грабли - переключение в режим модема не включает симку. Для того, чтобы симка зарегистрировалась в сети, требуется утилитка comgt (http://sourceforge.net/projects/comgt):
закачиваем исходники
$ wget http://kent.dl.sourceforge.net/sourceforge/comgt/comgt.0.32.tgz
распаковываем их
$ tar -xvf comgt.0.32.tgz2
заходим в папку
$ cd comgt.0.32
собираем
$ make all
и устанавливаем
$ sudo make install

У кого софт ставится не в /usr/local/ - правим Makefile, указывая нужные пути (у меня например все ставится в /usr/)

Ну а дальше - все просто.
Подключаем модем, ждем пока он переключится в режим модема (занимает секунд 10), командой comgt -d /dev/ttyUSB0 регистрируем симку в сети.
Дальше - настраиваем любимый kppp (указываем в нем модем /dev/ttyUSB0, если требуется - логин/пароль) и подключаемся к сети.
comgt имеет кучу интересных параметров - выбор диапазона (900-1800/850-1900), режима работы (2G/3G)

Мне больше по душе стандартный консольный pppd:
$ sudo su
удаляем нафик все содердание /etc/ppp/
# cd /etc/ppp
# rm -rf /etc/ppp/*
создаем там пустой файл options:
# touch options
файлы pap-secrets и chap-secrets:
# echo "life life life" > pap-secrets
# chmod 600 pap-secrets
# ln -s pap-secrets chap-secrets
создаем папку peers/
# mkdir peers
и в ней любым текстовым редактором файл life с содержимым:
lock
/dev/ttyUSB0
modem
921600
crtscts
defaultroute
unit 0
updetach
usepeerdns
name life
remotename life
connect '/usr/sbin/chat -v \
"" "at" \
"" "at+cgdcont\=1\,\"IP\"\,\"internet\"" \
OK "atd\*99\*\*\*1#" \
'

После этого подключаемся к сети командой pppd call life
(c) Паук, 2008


ЗЫ: Вся инфа по крупинкам собрана из гугля, переработана и проверена лично.
ЗЫЫ: При указании автора и ссылки на источник на благо общества данная статья подлежит обязательной публикации в различных местах интернета.

therost
09.03.2008, 21:41
Спасибо, хоть сейчас и не надо, но инфа очень полезная, респект!

panatar
09.03.2008, 22:20
Мда...А для Сиерры 875/875U дрова прямые, да и под никсами он ставится с полутыка...

EricX
09.03.2008, 22:42
Паук,спасибо,руководство практически пошаговое. Только зачем скорость модема выставлять в 921600? Вроде как излишество.

therost
09.03.2008, 22:49
Мда...А для Сиерры 875/875U дрова прямые, да и под никсами он ставится с полутыка...

А сколько же он стоит - этот Сиерра?

Паук
09.03.2008, 23:01
EricX, дык эта... Моделька то 3G с HSPDA... А вдруг опсос включит 3Г - нада же быть готовым :))
Кроме того, работает - и ладно. В винде это максимальная скорость порта.
panatar, хорошо сделать железяку - пол дела. Кривой софт способен загубить отличное железо.
Как под линуксом сиерра работает? Через usbserial, АСМ или через другой модуль?

Disabled
09.03.2008, 23:11
Спасибо за инструкцию!

plebis
10.03.2008, 02:47
Паук, мущина!
надо ссылку техсаппорту 5433 показать, чтобы знали, если че, куда абонентов отправлять.
Тему перекинул в ликбез и немного переименовал для будущих поколений , если ты не против

De Marco
10.03.2008, 02:55
Паук,
пасиба, с меня красное

Паук
25.03.2008, 16:32
Я вот что думаю...
Можно ли собрать usb_modeswitch и comgt для венды?
Тогда можно бы было выбросить родной софт на помойку...

ЗЫ: один человек (кто сталкивался с моторами, наверняка хоть краем уха слышал о Vilko) собрал по моей просьбе comgt и usb_modeswitch для винды.
Дома потестирую - отпишусь.


Итак... Мучения usb_modeswitch пока ни к чему не привели, опыты продолжаются.
Зато! Отследив общение софта с портами, и вооружившись монуалом по АТ-командам, понял - как инициировать симку в сети))) Пока только в ручном режиме с терминалки, но уже прогресс.
Вобщем. При переключении девайса из режима модема в режим накопителя появляются 3 устройства (3 СОМ-порта): на 1й вешается драйвер модема, второй - хз что, и третий СОМ-порт - для управления.
Так вот, сим-карта регистрируется в сети по команде at+cfun=1, отключение от сети - командой at+cfun=0.
Но! Модем постоянно выдает в терминал +ZUSIMR:2 (видимо тип воткнутой сим-карты)
И перестает выдавать эту инфу только после команд at+cpbs="sm" (выбор области памяти для тел.книги) и at+cpms="sm","sm","" (где будут хранится сообщения)
Вот здесь я уже нифига не понимаю - зачем они нужны...

Паук
26.03.2008, 22:11
Так...
Чем симку регить в сети нашел.
Как ни странно, это putty.
Добью скрипт - останется только разобраться с переключением модема.

barabas
19.09.2008, 14:33
Уважаемый Паук! Получилось ли у Вас подключение модема в Винде напрямую?

Паук
19.09.2008, 14:55
Да, вот только мануал еще не собрал в кучу. Часть мыслей высказывал здесь, часть - в своем блоге.