- Паутина - http://pauk.org.ua -

Подключение ZTE MF620 в Linux

Posted By Паук On 17.10.08 @ 23:17 In Hard & Soft,mobile | 19 Comments

Еще весной (после покупки MF620) я опубликовал статью [1], как этот самый модем использовать по прямому назначению в линуксе. Тогда приходилось шаманить с usb_modeswitch (для переключения с режима накопителя в режим модема) и comgt (для регистрации симки в сети). Сейчас же я использую решение «подключил — подключился к интернету».

Нужен установленный windows. Один раз, но нужен обязательно. Нужен для того, чтобы при подключении модем определялся как модем — так же, как и для Mac OS X. Переключаем [2] режим устройства при подключении на модем (закачиваем прогу, запускаем родной софт, ждем, пока модем переключится и зарегистрируется в сети. После чего запускаем zte_switch_mode.exe и нажимаем “For MAC Users”. Ничего сложного, страшного и криминального.)

[все действия выполняем под root]

Дальше нужно добавить правило для udev. Для этого создаем файл /etc/udev/rules.d/zte.rules :

SYSFS{idProduct}==»0001″, SYSFS{idVendor}==»19d2″, PROGRAM+=»/usr/bin/namer %n», SYMLINK+=»zte%c», RUN+=»/usr/bin/zte_init», MODE=»660″, GROUP=»dialout»

!!!!!Никаких пробелов быть не должно, это ОДНА СТРОЧКА!!!!!

Создаем файл /usr/bin/namer с содержимым:

#!/bin/sh
tmp=/tmp/usb
(sleep 2 ; rm $tmp) &

if [ -f $tmp ]; then
 num=`cat $tmp`
else
 if [ ! -e /dev/ttyUSB0 ] || [ ! -e /dev/ttyUSB1 ] ; then
  num=0
  echo 0 > $tmp
 else
  num=`ls /dev/ttyUSB* | tail -n 1 | sed 's/^.*USB//'`
  num=`expr $num + 1`
  echo $num > $tmpтреуется
 fi
fi

num=`expr $1 - $num`
echo $num

Создаем файл /usr/bin/zte_init с содержимым:

#!/bin/sh
/sbin/modprobe usbserial vendor=0x19d2 product=0x0001
sleep 2
echo at+cpbs="sm" > /dev/zte0
sleep 2
echo at+cpms="sm","sm","" > /dev/zte0
sleep 2
echo at+cfun=1 > /dev/zte0
pppd call zte

Назначаем для них правильные права доступа:

chmod 755 /usr/bin/namer

chmod 755 /usr/bin/zte_init

Первый скрипт (namer) нужен для того, чтобы присвоить правильные номера при создании ссылок zte0 > ttyUSB0 ; zte1 > ttyUSB1 ; zte2 > ttyUSB2 Второй — для регистрации сим-карты в сети и подключения к интернету. Хотя я предпочитаю подключаться к интернету вручную…

Создаем само подключение,

Удаляем содержимое /etc/ppp/ если ранее pppd не использовался (не забываем сделать бекап), Создаем там пустой файл options:

cd /etc/ppp

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

и в ней файл zte с содержимым:

lock
debug
/dev/zte0
modem
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#" \
'

Вместо internet пишем нужный APN (смотрим на сайте своего оператора, звоним другу или в службу поддержки), так же (если требуется) узнаем — нужен ли при подключении логин/пароль, У нас он обычно не требуется.

Обращаю внимание — модуль usbserial должен быть собран как модуль (в самом начале наступал на эти грабли — люблю монолитное ядро). Если модуля нет — придется пересобрать ядро с опциями в конфиге:

Device Drivers --->
 USB support --->
  USB Serial Converter support --->
   <M> USB Serial Converter support
   [*]   USB Generic Serial Driver

Единственный нюанс — при замене сим-карты нужно будет править конфиг /etc/ppp/peers/zte, указывая правильный APN. Но это актуально только тем, кто часто меняет сим-карты в модеме. Ну а тот, кто использует одного оператора для доступа к интернету — это не нужно.

Вот и все. Теперь при подключении модема загрузится нужный модуль ядра, будут созданы необходимые симлинки, сим-карта зарегистрируется в сети и будет создано подключение к интернету. Мой совет — подключать модем нужно после полной загрузки системы. Если требуется производить все эти действия в автоматическом режиме при загрузке системы — лучше написать стартовый скрипт.

Если требуется переключение между сетями (gsm/umts) — тогда понадобится comgt [3], или внимательное чтение документации на АТ-команды [4],

PS: для чего нужен /usr/bin/namer — расскажу в следующей статье — «подключение palm zire 72 в линуксе»

PPS: Выкладываю по просьбе исходные файлы: files [5]


19 Comments (Open | Close)

19 Comments To "Подключение ZTE MF620 в Linux"

#1 Comment By Shemilixa On 10.11.08 @ 20:05

купил этот модем zte mf626
После установки linuxdriveronda1.0.1.tar.bz2 скачал тут [6] проблема с распознанием zte mf626 решилась появились вот такие устройства:
/dev/ttyUSB0
/dev/ttyUSB1
/dev/ttyUSB2
/dev/ttyUSB3
настроил подключение через gnome-ppp, но через кажые 2 минуты отключается.
От рута запускал программу UnBeeline брал тут [6] не помогла.
Пытался создать файл:
#!/bin/sh

PORT=/dev/ttyUSB0

while [ -w $PORT ]; do
echo «AT+ZOPERTE=\\\»beeline\\\»" > $PORT
sleep 60
done
echo $PORT: No such port

неоднократно менял названия устройства PORT=/dev/ttyUSB*
не помогло,как отключался так и отключается.

Напишите как приручить в ubuntu 8.04 модем zte mf626 очень прошу.

#2 Comment By Паук On 10.11.08 @ 21:47

Shemilixa, где-то встречал статью именно о MF626, но где — уже не вспомню… У меня MF620, причем не лоченый, так что подсказать не могу.

#3 Comment By mrded On 03.12.08 @ 17:38

а как быть с устройством huawei e219?

#4 Comment By Ерёма On 21.12.08 @ 18:45

у меня mf620, лайф гига год, linux mint.
я в никсах нюб и сперва сделал всё как вы написали. незаработало,
проблема в скрипте namer:
expr — синтаксис эрор.
потом заметил вот это «echo $num > $tmpтреуется» и заменил просто на «$num>$tmp»

ошибка осталась, стал пихать в каждую строчку echo ‘error tut!’
получилось что ошибка в
num=`expr $1 — $num`

что я делаю не так?

#5 Comment By Паук On 21.12.08 @ 23:16

Скоре всего где то в синтаксисе скрипта…
Нужно пошагово разбирать сам скрипт — и смотреть, где и что.

#6 Comment By Ерёма On 23.12.08 @ 13:11

Можете, пожалуйсто, выложить свои файлы скриптов namer и zte_init, которые у вас точно работают?

устройства /dev/ttyUSB0 и /dev/ttyUSB1 у меня появляются при подключении модема.

#7 Comment By Паук On 23.12.08 @ 21:42

Готово. Не забудь только права нужные выставить на файлы.

#8 Comment By Ерёма On 24.12.08 @ 12:05

спасибо, буду пробывать дальше

#9 Comment By Ерёма On 24.12.08 @ 12:49

как я понял соединение устанавливатся должно после подключения модема, однако этого не происходит. попробывал вручную из терминала
namer
zte_init
pppd call giga

появилось следуйщее:

Serial connection established.
using channel 1
Using interface ppp0
Connect: ppp0 /dev/zte0
sent [LCP ConfReq id=0x1 ]
rcvd [LCP ConfReq id=0x0 ]
sent [LCP ConfAck id=0x0 ]
rcvd [LCP ConfAck id=0x1 ]
rcvd [LCP DiscReq id=0x1 magic=0xc910d5]
rcvd [CHAP Challenge id=0x1 , name = "UMTS_CHAP_SRVR"]
sent [CHAP Response id=0x1 , name = "life"]
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 0f 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 ConfReq id=0x0]
sent [IPCP ConfNak id=0x0 ]
rcvd [IPCP ConfRej id=0x2 ]
sent [IPCP ConfReq id=0x3 ]
rcvd [IPCP ConfReq id=0x1]
sent [IPCP ConfAck id=0x1]
rcvd [IPCP ConfNak id=0x3 ]
sent [IPCP ConfReq id=0x4 ]
rcvd [IPCP ConfAck id=0x4 ]
Could not determine remote IP address: defaulting to 10.64.64.64
local IP address 79.124.159.201
remote IP address 10.64.64.64
primary DNS address 212.58.160.33
secondary DNS address 212.58.160.34

и тишина.

зы. сорри, я наверное уже достал)

#10 Comment By Паук On 27.12.08 @ 18:24

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

#11 Comment By Ерёма On 27.12.08 @ 23:49

ну и я вот думаю что раз DNS адреса присваиваются — значит всё нормально, но та же мозила из которой я читаю сию сохранёную статью «не видит» интернета.
есть ли какие-то настройки, фаервола например, о которых я не знаю, но после установки линуха их обязательно делать?

зы rm -rf не предлогать, пробывал не помогает:))

#12 Comment By Паук On 30.12.08 @ 23:54

Возможно не хочет работать какой-то кеширующий днс-сервер. Попробуй попинговать адреса: ya.ru [213.180.204.8], google.com.ua [66.249.93.104]

#13 Comment By Ерёма On 08.01.09 @ 16:04

сасибо, буду разбиратся. тема достаточно редкая, если не уникальная в интернетах.

#14 Comment By Сергей On 07.04.09 @ 14:57

хм, на форуме ubuntu давным давно эта тема закрылась… читайте о линукс на линукс форумах…

#15 Comment By Паук On 07.04.09 @ 21:02

Ну конечно, после того, как на opennet разжевал все по полочкам — так сразу и закрылась. Где ж ты был год назад, когда инфы не то что на русском, ее и на английском почти не было.

#16 Comment By leshiy_odessa On 09.04.09 @ 19:07

Здравствуйте. Помогите найти где затык.

Есть модем ZTE MF620, провайдер LIFE:)
Роутер ASUS WL-500gP

ФАЙЛ — dialup

============================================
lock
debug
/dev/usb/tts/0
modem
921600
crtscts
defaultroute
unit 0
updetach
usepeerdns
name life
remotename life
connect «/usr/sbin/chat -s -S -V -t 60 -f /tmp/ppp/dialup.chat 2>/tmp/chat.log»
============================================

ФАЙЛ — dialup.chat

============================================
» ‘AT’
» ‘AT+CGDCONT=1,»IP»,»internet»‘
‘OK’ ‘ATD*99#’
‘CONNECT’ »
============================================

Получаем в логе такое:

============================================
[admin@asus root]$ pppd call dialup
Script /usr/sbin/chat -s -S -V -t 60 -f /tmp/ppp/dialup.chat 2>/tmp/chat.log finished (pid 206), status = 0×0
Serial connection established.
using channel 1
Using interface ppp0
Connect: ppp0 /dev/usb/tts/0
sent [LCP ConfReq id=0x1 ]
rcvd [LCP ConfReq id=0xd ]
sent [LCP ConfAck id=0xd ]
rcvd [LCP ConfAck id=0x1 ]
rcvd [LCP DiscReq id=0xe magic=0x3dd2dffa]
rcvd [CHAP Challenge id=0x1 , name = "UMTS_CHAP_SRVR"]
sent [CHAP Response id=0x1 , name = "life"]
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=0xf 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
sent [IPCP ConfReq id=0x1 ]
sent [IPCP ConfReq id=0x1 ]
sent [IPCP ConfReq id=0x1 ]
sent [IPCP ConfReq id=0x1 ]
sent [IPCP ConfReq id=0x1 ]
sent [IPCP ConfReq id=0x1 ]
sent [IPCP ConfReq id=0x1 ]
sent [IPCP ConfReq id=0x1 ]
sent [IPCP ConfReq id=0x1 ]
IPCP: timeout sending Config-Requests
sent [LCP TermReq id=0x2 "No network protocols running"]
sent [LCP TermReq id=0x3 "No network protocols running"]
Connection terminated.
Modem hangup
[admin@asus root]$

============================================

#17 Comment By Serge On 24.05.09 @ 19:46

С модемом ZTE AC5710 не срабатывает USB_switch_mode — Com port: NULL, синий search, все кнопки кроме Exit серые.
Как еще можно вылечить модем, чтобы был модемом а не флэшкой?

#18 Comment By Паук On 31.05.09 @ 20:53

Serge, попробуй после «переключения» родным софтом пошаманить с QPST

#19 Comment By Дмитрий(Nrader) On 09.08.09 @ 23:56

Паук, скажы плз а если не делать все вышеописанное — родные дрова от MF620 будут работать под linux без глюков? или без этого вообще никак не выйдешь в интернет?


Article printed from Паутина: http://pauk.org.ua

URL to article: http://pauk.org.ua/?p=174

URLs in this post:

[1] статью: http://www.opennet.ru/base/modem/zte_usb_modem.txt.html

[2] Переключаем: http://pauk.org.ua/?p=36

[3] comgt: http://sourceforge.net/projects/comgt

[4] АТ-команды: http://pauk.org.ua/?p=6

[5] files: http://pauk.org.ua/wp-content/uploads/2008/12/files.zip

[6] : http://forum.ubuntu.ru/index.php?topic=39060.0

© 2013 Паутина.