четвер, 10 грудня 2009 р.

3G ExpressCard modem on FreeBSD

Итак, мною куплен HSDPA модем Novatel Merlin XU870. Под FreeBSD 9.x он без каких-либо вопросов распознался с помощью u3g(4):

Dec 10 16:00:29 laptop kernel: ugen5.2: at usbus5
Dec 10 16:00:29 laptop kernel: u3g0: on usbus5
Dec 10 16:00:29 laptop kernel: u3g0: Found 2 ports.

После втыкания появляются два порта: ttyU0.0 и ttyU0.1. Первый обычный AT порт, второй судя по всему порт для мониторинга и какого-то управления.
Через первый порт стандартно всё почти работает через ppp(8) обычными настройками как для мобилки. "Почти" потому, что umc додумался выдавать адреса на концы туннеля в стиле 95.109.188.33 -> 0.0.0.0 . В принципе вполне рабочая конструкция, но ppp офигевает от такого, ругается что не может выставить адреса на tun интерфейс и всё сваливается. Поэтому немного покопался и настроил через mpd.
В mpd всё получилось достаточно просто вот такой секцией в mpd.conf

hypernet:
create link static LHP modem
set modem device /dev/cuaU0.0
set modem watch -cd
set modem var $APN "hyper.net"
set modem script DialGprs
set link disable chap pap
set link accept chap pap
set link action bundle BHP
create bundle static BHP
set bundle links LHP
set iface addrs 0.0.0.0 !10.253.252.251
set iface route default

Плюс еще поправил штатный mpd.scripts: была добавлена секция

DialGprs:
set $DialPrefix "DT"
set $Telephone "*99#"
goto DialPeer

(хотя не думаю что это правильный метод - это можно было и в mpd.conf вынести), и добавлено определение и инициализация модема: после строки print "ATI\r\n" была добавлена строка match "+CGSM" ModemIdentGSM и описана Ident секция:

ModemIdentGSM:
set $ModemDescription "GSM modem"
set $ModemIsAnalog "no"
set $ModemSetupFunc GsmSetup
return
...
GsmSetup:
set $Baundrate 921600
set $modemCmd "+CGDCONT=1,\"IP\",\"${APN}\",\"0.0.0.0\",0,0"
call ModemCmd2
return

Всё работает вполне чётко и стабильно.
С рюшечками пока ничего нет: umtsmon достаточно быстро собрал под фрей, но работать он пока не захотел. Так что с ним еще буду разбираться

2 коментарі:

Анонім сказав...

Здравствуйте!

Можете выложить конфиги mpd целиком?

Ибо у меня (всё сделал как у вас написано) mpd выдаёт:
[LPD] Changing state Initial->Starting и висит.

Модем работает, ppp отваливается, получив нулевой адрес шлюза.

Заранее благодарен }=

levsha сказав...

Это, у меня в моём конфиге нету open в конце секции, поэтому соединение автоматически не подымается. Я сделал это специально: у меня в mpd.conf описано много всяких соединений, и я просто подключаюсь через admin console и даю команду какое именно соединение мне нужно поднять методом
link LHP
open
Ну а вообще вот http://levsha.me/mpd5/mpd.conf и вот http://levsha.me/mpd5/mpd.script