Всем привет!
Думаю, комуто будет полезен мой опыт, учитывая тот факт, что русскоязычной инфы по этому модему просто нет.
[ПРОЛОГ]Итак. Приобрел себе я модем ZTE MF620, который предлагает life с giga-годом в нагрузку. Ну и естественно, жутко захотелось его заставить работать в линуксе.
Под виндой софт настолько кривой - что хочется выть и лезть на потолок. А так же оторвать китаёзам все выступающие части тела. Немного обьясню: при подключении модем определяется как usb-cd (видимо для экономии компакт-диска с дровами в комплекте). Приходится ставить родной софт, который переключает модем с режима накопителя в режим модема.
Но если бы переключением все ограничивалось... Дело в том, что симка регистрируется в сети только этим дебильным софтом. Тоесть - даже если винда видит модем, подключится к сети не выйдет. А если програму закрыть - это равноценно отключению модема - установленное соединение разрывается и симка вываливается с сети. Маразм и идиотизм полнейший.[/ПРОЛОГ]
При подключении девайс определяется как сьемный накопитель. Для переключения в режим модема необходимо использовать 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
Создаем для usb_modeswitch под рутом конфиг /etc/usb_modeswitch.conf с содержанием:
И создаем для udev под рутом конфиг /etc/udev/rules.d/15-zte-mf620.rules с содержанием:
Внимание! все, что начинается с SYSFS{idProduct} - это ОДНА строка.
Для того, чтобы при переключении модема udev создавал необходимые устройства - обязательно должен быть в ядре модуль usbserial. Причем собран он должен быть именно модулем, а не в ядре. Я на эти грабли наступил и долго не мог понять, в чем же дело.
Если модуля нет - придется пересобрать ядро с опциями в конфиге:
Теперь, при подключении модема он вначале определяется как накопитель, а затем - как модем - создаются файлы устройств /dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2
Зачем так много - без понятия, но имхо ttyUSB0 используется непосредственно для канала данных, ttyUSB1 - хз, ttyUSB2 - для мониторинга за состоянием модема - уровень сигнала и прочее. Что интересно - в винде при подключенном инете софт показывает уровень сигнала, наличие edge, заряд батареи, можно работать с смс (отправлять-принимать) и справочником симки. Скорее всего, это достигается использованием нескольких юсб-каналов - ведь при подключении обычного телефона в системе появляется всего лишь одно устройство (модем), и при подключенном инете оно недоступно.
Вот здесь я наступил на вторые грабли - переключение в режим модема не включает симку. Для того, чтобы симка зарегистрировалась в сети, требуется утилитка 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 с содержимым:
После этого подключаемся к сети командой pppd call life
(c) Паук, 2008
ЗЫ: Вся инфа по крупинкам собрана из гугля, переработана и проверена лично.
ЗЫЫ: При указании автора и ссылки на источник на благо общества данная статья подлежит обязательной публикации в различных местах интернета.
Думаю, комуто будет полезен мой опыт, учитывая тот факт, что русскоязычной инфы по этому модему просто нет.
[ПРОЛОГ]Итак. Приобрел себе я модем ZTE MF620, который предлагает life с giga-годом в нагрузку. Ну и естественно, жутко захотелось его заставить работать в линуксе.
Под виндой софт настолько кривой - что хочется выть и лезть на потолок. А так же оторвать китаёзам все выступающие части тела. Немного обьясню: при подключении модем определяется как usb-cd (видимо для экономии компакт-диска с дровами в комплекте). Приходится ставить родной софт, который переключает модем с режима накопителя в режим модема.
Но если бы переключением все ограничивалось... Дело в том, что симка регистрируется в сети только этим дебильным софтом. Тоесть - даже если винда видит модем, подключится к сети не выйдет. А если програму закрыть - это равноценно отключению модема - установленное соединение разрывается и симка вываливается с сети. Маразм и идиотизм полнейший.[/ПРОЛОГ]
При подключении девайс определяется как сьемный накопитель. Для переключения в режим модема необходимо использовать 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
Создаем для 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"
Для того, чтобы при переключении модема udev создавал необходимые устройства - обязательно должен быть в ядре модуль usbserial. Причем собран он должен быть именно модулем, а не в ядре. Я на эти грабли наступил и долго не мог понять, в чем же дело.
Если модуля нет - придется пересобрать ядро с опциями в конфиге:
Код:
Device Drivers --->
USB support --->
USB Serial Converter support --->
<M> USB Serial Converter support
[*] USB Generic Serial Driver
Зачем так много - без понятия, но имхо ttyUSB0 используется непосредственно для канала данных, ttyUSB1 - хз, ttyUSB2 - для мониторинга за состоянием модема - уровень сигнала и прочее. Что интересно - в винде при подключенном инете софт показывает уровень сигнала, наличие edge, заряд батареи, можно работать с смс (отправлять-принимать) и справочником симки. Скорее всего, это достигается использованием нескольких юсб-каналов - ведь при подключении обычного телефона в системе появляется всего лишь одно устройство (модем), и при подключенном инете оно недоступно.
Вот здесь я наступил на вторые грабли - переключение в режим модема не включает симку. Для того, чтобы симка зарегистрировалась в сети, требуется утилитка 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
ЗЫ: Вся инфа по крупинкам собрана из гугля, переработана и проверена лично.
ЗЫЫ: При указании автора и ссылки на источник на благо общества данная статья подлежит обязательной публикации в различных местах интернета.
Останнє редагування: