06 июля 2010

Настройка CDMA модема в Linux

Беспроводный доступ в интернет набирает обороты. Пользователи Linux не стоят в стороне, активно используя новые технологии. В статье показано как настроить CDMA модем CNU-680 в Debian Etch (это не опечатка :)).

Модем CNU-680 сочетает в себе два устройства - собственно сам модем и флэш память, где хранятся драйвера. В составе драйверов есть утилита для Linux RDEVCHG, которая позволяет активизировать модем. Но в Debian Etch она работать отказалась, сославшись на устаревшую библиотеку libc6.

Чтобы модем заработал необходимо воспользоваться утилитой usb_modeswitch. Так как пакета для Etch уже не сыскать - поставим из исходников. Для этого скачиваем два тарбола usb-modeswitch-1.1.3.tar.bz2 и usb-modeswitch-data-20100623.tar.bz2 отсюда. Первый файл содержит саму утилиту, а второй данные для различных устройств, которые использует usb_modeswitch.

Распаковываем архивы, выполнив в командной строке:
tar -vvxjf usb-modeswitch-1.1.3.tar.bz2
tar -vvxjf usb-modeswitch-data-20100623.tar.bz2
Для компиляции утилиты usb_modeswitch необходимо установить пакет libusb-dev, для этого в командной строке от рута выполним:
aptitude install libusb-dev
Устанавливаем утилиту usb_modeswitch, последовательно от рута выполнив следующие команды в директории с ранее распакованным архивом usb-modeswitch-1.1.3.tar.bz2:
cd usb-modeswitch-1.1.3
make install
Для установки данных для различных устройств необходимо отредактировать Makefile из архива usb-modeswitch-data-20100623.tar.bz2. Для этого в директории с ранее распакованным архивом от рута выполним:
cd usb-modeswitch-data-20100623
vim Makefile (редактор vim заменяете тем, которым пользуетесь)
меняем строку
UDEVDIR = $(DESTDIR)/lib/udev
на
UDEVDIR = $(DESTDIR)/etc/udev
сохраняем файл и выходим (в vim команда :wq)
make files-istall
Для корректного включения модема в CNU-680 надо отредактировать файл /etc/usb_modeswitch.d/16d8:6803. Почему именно этот файл? До активации модема lsusb "видит" CNU-680 вот так:
lsusb
...
Bus 001 Device 007: ID 16d8:6803
...
Редактируем файл от рута:

vim /etc/usb_modeswitch.d/16d8:6803
заменяем строку
MessageContent="555342431234567824000000800008ff524445564348470000000000000000"
на
MessageContent="555342431234567824000000800008ff524445564348473100000000000000"
сохраняем файл и выходим (в vim команда :wq)
Перезагружаем компьютер и смотрим usb устройства. Если все корректно, то CNU-680 из командной строки выглядит приблизительно так:

lsusb
...
Bus 001 Device 007: ID 16d8:680a
...
Более подробно можно посмотреть выполнив в командной строке:
lsusb -d 16d8:680a -vv
После активации модема в директории /dev должно появиться устройство ttyACM0, смотрим командой:
ls -la /dev | grep ACM
...
crw-rw----  1 root dialout 166,    0 2010-07-06 11:36 ttyACM0
...

Модем активирован, теперь надо создать ppp подключение. Установим необходимый пакет:
aptitude install ppp
Из под рута создаем файл /etc/ppp/peers/cnu680, следующего содержания:
vim /etc/ppp/peers/cnu680

debug
/dev/ttyACM0
460800
ipcp-accept-local
ipcp-accept-remote
lcp-echo-interval 30
lcp-echo-failure 5
usepeerdns
defaultroute
replacedefaultroute
noccp
noauth
persist
user cdma           #здесь ваше имя пользователя
password cdma   #здесь ваш пароль 

Из под рута создаем ещё один файл /etc/chatscripts/cnu680, следующего содержания:
vim /etc/chatscripts/cnu680

'' ''
'' 'ATZ'
'OK' 'AT+CRM=1;&C0'
'OK' 'ATD #777' #здесь номер телефона вашего провайдера
'CONNECT' ''
Подключиться через модем CNU-680 можно выполнив команду:
pon cnu680
 Отключить соединение можно выполнив команду:
poff cnu680
Если соединение не устанавливается, смотрим логи:
grep 'pppd' /var/log/syslog
Если соединение не устанавливается по причине 'no carrier', то это может означать что требуется введение PIN-кода. Зопрос PIN-кода можно убрать вставив симку в сотовый телефон и сделав соответствующие настройки. Либо можно вводить PIN-код AT-командой:
AT+CPIN=xxxx  # вместо хххх ваш pin-код
Её можно включить в файл /etc/chatscripts/cnu680. Для использования соединения через CNU-680 из под пользователя необходимо включить пользователя в группу dialout:
usermod -aG dialout username
Для автозапуска соединения при старте системы надо прописать в файле /etc/network/interfaces следующие строки:
#PPP link to CDMA
auto ppp0
iface ppp0 inet ppp
provider cnu680

Понравилась статья? Подпишись на этот блог!

Также можно почитать:

4 коммент.:

Александр 26 июля 2010 г., 19:17  

Там на диске этого модема (в смысле на флешке которая внутри модема) идет еще и файл с многообещающим расширением .c (если память не подводин, то файл называется RDEVCHG.c)

В общем в Ubuntu 9.10 я настроил через network manager - там skylink нужно просто выбрать, а все параметры он сам подставляет. Потом скомпилировал этот файл, слинковал и запустил. На консоль чего то ругательное сказало,но усе заработало.

Кстати на сайте у них есть обновление которое ставит графическую программу в раздел "Интернет" и она тоже работает.

linux0id 27 июля 2010 г., 9:15  

Александр, модем ставил на сервер, там графических прибамбасов нет, только через консоль. Пробовал компилировать RDEVCHG.c, не заработало в etch. Вообще usb_modeswitch делает тоже что и RDEVCHG, только для разных моделей модемов используя udev.

Александр 27 июля 2010 г., 19:45  

Понятно. Попробую тоже через usb_modeswitch сделать, в связи с этим вопросы.

Файл /etc/usb_modeswitch.d/16d8:6803
он сам создается или надо вызывать usb_modeswitch?

В тексте прям магия какая:
заменяем строку
MessageContent="555342431234567824000000800008ff524445564348470000000000000000"
на
MessageContent="555342431234567824000000800008ff524445564348473100000000000000"

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

linux0id 27 июля 2010 г., 19:52  

Александр, файл /etc/usb_modeswitch.d/16d8:6803 появится после установки пакета usb-modeswitch-data-20100623.tar.bz2. Я пропустил описание его установки, поправлю. Цифры для замены взяты с форума http://www.draisberghof.de/usb_modeswitch/bb/. Если цифры не менять устройство /dev/ttyACM0 не появиться.

Отправить комментарий

  © Blogger template Blue Surfing by Ourblogtemplates.com 2008

Наверх