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

Нужен установленный windows. Один раз, но нужен обязательно. Нужен для того, чтобы при подключении модем определялся как модем — так же, как и для Mac OS X. Переключаем режим устройства при подключении на модем (закачиваем прогу, запускаем родной софт, ждем, пока модем переключится и зарегистрируется в сети. После чего запускаем 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, или внимательное чтение документации на АТ-команды,

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

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