USB 3G модем и FreeBSD
03-02-2012. Разместил: synergix Не так давно я стал "счастливым" обладателем 3G USB модема от синей компании

Итак, что у нас в наличии:
1. Ясная голова и кружка кофе.
2. Компьютер с установленной FreeBSD 8.0
3. Собственно сам 3G USB Modem.

Вот немного его технических характеристик.
Спецификация модема MF627.
Стандарт HSDPA/UMTS 2100 MHz; EDGE/GPRS/GSM 850/900/1800/1900MHz
Передача данных UMTS 384Kbps UL; HSDPA 3.6Mbps DL
Чипсет Qualcomm MSM6246
Антенна Внутренняя
USB USB2.0
Операционная Система Windows 2000, Windows XP, Vista, MAC
Принимая во внимание, что синий оператор успешно покрыл сетью 3G практически все крупные города, скорость даже в пределах 1 Mbps вполне меня устраивает.
Немного погуглив, было найдена страничка с драйверами для данного вида модемов, которая говорила что поддержка данного типа модемов уже имеется в FreeBSD 7-ой и 8-ой ветки и носит название u3g.
Поначалу решено было загружаться с ядром GENERIC, так как на текущем ядре я отключил USB за ненадобностью, но как видимо зря, а пересобирать ядро было лень ввиду слабого процессора.
Загрузившись, ничтоже сумняшеся, подгружаем драйвера модема.
#kldload u3g
и смотрим, загрузилось ли оно
#kldstat
Собравшись с духом, втыкаем модем в свободный USB порт и смотрим, определился ли он.
В выводе usbconfig модем определяется так:
ugen1.3: <ZTE cdma="" technologies="" msm="" incorporated="" /> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON
Далее возможны варианты. Если после подключения модема появилось новое устройство вида /dev/cd0, значит, модем представляется CD-приводом, содержащим драйвера для Windows и прочих. Выводится модем из этого режима следующим образом:
usbconfig -d 1.3 add_quirk UQ_MSC_EJECT_ZTESTOR
camcontrol eject pass0
Цифры 1.3 скопированы из вывода usbconfig, а 0 - из названия /dev/cd0, у вас могут быть другие значения.
Если же вам понадобится вернуть автозагрузку CD-ROM и картридера, то достаточно сконнектится на порт модема телнетом и дать команду
AT+ZCDRUN=8 - возвращает загрузку CD-ROM и картридера
AT+ZCDRUN=E - включить режим модема
AT+ZCDRUN=F - режим модем+картридер
После этого пропадает /dev/cd0 и появляются /dev/cuaU0.0, /dev/cuaU0.1 и /dev/cuaU0.2. Опять же, конкретные цифры у вас могут быть другими при наличии в системе других устройств /dev/cuaUx.
Необходимо добиться появления /dev/cuaUx.x, без этого к следующим шагам переходить рано.
Настройка подключения
Открываем файл /etc/ppp/ppp.conf и пишем туда следующее:
itc:
ident user-ppp VERSION (built COMPILATIONDATE)
set log PHase Chat LCP IPCP CCP tun command
set device /dev/cuaU0.0
set phone "*999#"
set dial "ABORT BUSY ABORT NOsCARRIER TIMEOUT 5 "" AT OK-AT-OK ATE1Q0s7=60 OK dATDT TIMEOUT 40 CONNECT"
set login
set authname ""
set authkey ""
add default HISADDR
ВНИМАНИЕ! ВСЕ СТРОКИ, КРОМЕ ПЕРВОЙ (itc:) ДОЛЖНЫ НАЧИНАТЬСЯ С ОТСТУПА
Иногда могут потребоваться такие строки:
set speed 1920000
set ifaddr 0.0.0.0/0 0.0.0.0/0 0.0.0.0/0
Теперь осталось добавить строки запуска демона в /etc/rc.conf:
ppp_enable="YES"
ppp_mode="ddial"
ppp_nat="YES"
ppp_profile="itc"
ppp_user="root"
После этого запускаем подключение:
#/etc/rc.d/ppp start
Теперь можно посмотреть в файл /var/log/ppp.log и если там нет ошибок и сообщений вида «hangup», значит всё работает и можно проверить, получили ли мы адрес и добавился ли шлюз по умолчанию:
#ifconfig tun0
tun0: flags=8051 metric 0 mtu 1500
options=80000
inet 95.111.XX.XX --> 195.128.XX.XX netmask 0xffffffff
Opened by PID 483
#netstat -rn | grep default
default 195.128.XX.XX UGS 0 22785 tun0
Собственно, всё.
Вернуться назад