RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Прикручивание 3G модема С-motech под FreeBSD для использования в сети Peoplenet [2009]
После облома с подключением по wifi к одному из провайдеров, пришлось остановиться на Peoplenet. Вот и займемся прикручиванием данного провайдера к правильной ОС :) Было решено запереть модем на чердак и воткнуть его в роутер, который планировался для wifi :) В качестве роутера выступает iP133/64RAM/2x2,1Gb/мать с USB, как по мне, вполне достаточно для раздачи и-нета на несколько машин, по крайней мере в институтское время выручала отлично, думаю и сейчас не подведет :) Модем C-MOTECH CCU-650U, и рулить всем будет
Модем не определился... Следуя проторенной тут дорожке, за которую спасибо товарисчу paradox'y, смотрим, VendorID и DevID
home-gw# usbdevs -v
Controller /dev/usb0:
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), Intel(0x0000),
rev 1.00
port 1 powered
port 2 addr 2: full speed, power 500 mA, config 1, CMOTECH CDMA Technologies
(0x6523), CMOTECH CO., LTD.(0x16d8), rev 0.00
и согласно обсуждению в форуме правим патч, применяем его, пересобираем модуль и подгружаем (готовый патч под мою систему и железку смотри ниже) Переподключаем модем и смотрим
ucom0: CMOTECH CO., LTD. CMOTECH CDMA Technologies, rev 2.00/0.00, addr 2,
iclass 2/2
ucom0: data interface 1, has CM over data, has break
ucom0: status change notification available
Это уже веселее, пойдем далее
home-gw# cu -l /dev/cuaU0
Connected
t
OK
at
OK
ati
Manufacturer: C-MOTECH Co., Ltd.
Model: CCU-650
Revision: CCU65TSU00
Esn: 532E8A6F
+GCAP: +CIS707A, +MS, +ES, +DS, +FCLASS
OK
ati3
Manufacturer: C-MOTECH Co., Ltd.
Model: CCU-650
Revision: CCU65TSU00
Esn: 532E8A6F
+GCAP: +CIS707A, +MS, +ES, +DS, +FCLASS
OK
Так, модем "верещит" как положено :) Поехали дальше...
Под винды есть сервисная программка для модема, посмотрим может и повезет. Порывшись на форумах, вышел на такую [url=http://www.bsdua.org/cdma.html] страничку[/url], CLI приложение для управления C-MOTECH модемами, написанная Алексеем Ватченко. Исходники для OpenBSD, есть порт для Linux (спрашиваем автора, ссылочку он по какой-то причине не указал на сайте) Теперь благодаря товаричсу Andy имеем shar для этой утили (смотри ниже). Скачиваем shar (я его скачал в /tmp), распаковываем (в /root создал каталог cdma, в него и распакую), ошибочка... Создаем каталог files и распаковываем снова, получилось, собираем, rehash и попробуем запустить...
home-gw# cd /root
home-gw# mkdir cdma
home-gw# cd cdma
home-gw# mv /tmp/cdma.shar /root/cdma/
home-gw# sh cdma.shar
x - ./Makefile
x - ./distinfo
x - ./pkg-descr
x - ./files/patch-aa
cdma.shar: cannot create ./files/patch-aa: No such file or directory
x - ./files/patch-ab
cdma.shar: cannot create ./files/patch-ab: No such file or directory
x - ./pkg-plist
home-gw# mkdir files
home-gw# sh cdma.shar
x - ./Makefile
x - ./distinfo
x - ./pkg-descr
x - ./files/patch-aa
x - ./files/patch-ab
x - ./pkg-plist
home-gw# make install clean
===> Vulnerability check disabled, database not found
=> cdma-0.10.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
=> Attempting to fetch from http://www.bsdua.org/files/.
cdma-0.10.tar.gz 100% of 12 kB 23 kBps
===> Extracting for cdma-0.10
=> MD5 Checksum OK for cdma-0.10.tar.gz.
=> SHA256 Checksum OK for cdma-0.10.tar.gz.
===> Patching for cdma-0.10
===> Applying FreeBSD patches for cdma-0.10
===> Configuring for cdma-0.10
===> Building for cdma-0.10
"/usr/share/mk/bsd.compat.mk", line 36: warning: NOMAN is deprecated in favor
of NO_MAN
Warning: Object directory not changed from original /root/cdma/work/cdma-0.10
cc -O2 -fno-strict-aliasing -pipe -W -Wall -g -c cdma.c
cc -O2 -fno-strict-aliasing -pipe -W -Wall -g -c dev.c
cc -O2 -fno-strict-aliasing -pipe -W -Wall -g -c util.c
cc -O2 -fno-strict-aliasing -pipe -W -Wall -g -c cmotech_ccu550.c
cmotech_ccu550.c:573: warning: unused parameter 'ctx'
cmotech_ccu550.c:573: warning: unused parameter 'n_sms'
cmotech_ccu550.c:42: warning: unused parameter 'ctx'
cc -O2 -fno-strict-aliasing -pipe -W -Wall -g -c cmotech_ccu650u.c
cmotech_ccu650u.c:31: warning: unused parameter 'ctx'
cc -O2 -fno-strict-aliasing -pipe -W -Wall -g -o cdma cdma.o dev.o util.o
cmotech_ccu550.o cmotech_ccu650u.o
===> Installing for cdma-0.10
===> Generating temporary packing list
===> Checking if comms/cdma already installed
"/usr/share/mk/bsd.compat.mk", line 36: warning: NOMAN is deprecated in favor
of NO_MAN
install -s -o root -g wheel -m 555 cdma /usr/local/bin/
===> Registering installation for cdma-0.10
===> Cleaning for cdma-0.10
home-gw# rehash
home-gw# ./cdma
cdma [-d device_model] [-f device] command
Commands:
list - show all supported device models
date - show date and time
date set - set local time
mode - show current mode
mode hybrid - set hybrid mode
mode 1x - set 1x mode
mode ev-do - set EV-DO mode
pb - show address book
pb add <idx> <phone> <name> - add record with index <idx>
pb del <idx> - delete record by index <idx>
pin - show whether PIN code is enabled
pin enable - enable PIN code
pin disable - disable PIN code
pin change - change PIN code
sms - show stored messages
sms check - check for new SMS
sms send <phone> - send SMS (from stdin)
sms read - read new SMS (written to stdout)
sms del <idx> - delete stored SMS with index <idx>
sms save <phone> [date] - save SMS (from stdin) into SIM-card
Date format: [[[[[cc]yy]mm]dd]HH]MM[.SS]
Собственно разобраться проблемы не составит, меня же интересует проверка и переключение при необходимости в EV-DO.
home-gw# cdma mode
EV-DO
действительно, то что и было выставлено в винде в последний раз. Приятно :) Скажу только, что использовать утилиту надо при разорванном соединении.
Далее пришел черед позвонить... Надеяться на поддержку пиплнета нет смысла, так как все специалисты поддержки у них умеют только галки в винде тыцать. Промучившись около 15 минут с тем, что номер никак не хотел набираться, плюнул и вставил его прямо в строку инициализации. Получилась следующая секция для пиплнета для ppp в /etc/ppp/ppp.conf
peoplenet:
set device /dev/cuaU0
set speed 460800
#Отсюда номер у меня не подхватился
set phone \#777
#А отсюда наоборот
set dial "ABORT BUSY ABORT NOsCARRIER TIMEOUT 5 \"\" AT OK-AT-OK AT \
OK-AT-OK ATDT\#777 TIMEOUT 40 CONNECT"
enable dns
set authname 8092_PHONE_NUMBER_@people.net.ua
set authkey PASS
accept PAP
set login
add default HISADDR
set ifaddr 10.0.0.1/010.0.0.2/00.0.0.00.0.0.0
disable ipv6cp
disable mppe
disable pred1 deflate protocomp acfcomp shortseq vj
deny pred1 deflate protocomp acfcomp shortseq vj
Особо не тестировалось, т.к. установлю все это хозяйство на чердак в выходные, но коннектится и работает без проблем.
home-gw# ping lissyara.su
PING lissyara.su (77.221.149.162): 56 data bytes
64 bytes from 77.221.149.162: icmp_seq=0 ttl=53 time=226.061 ms
64 bytes from 77.221.149.162: icmp_seq=1 ttl=53 time=255.973 ms
64 bytes from 77.221.149.162: icmp_seq=2 ttl=53 time=220.971 ms
64 bytes from 77.221.149.162: icmp_seq=3 ttl=53 time=229.934 ms
64 bytes from 77.221.149.162: icmp_seq=4 ttl=53 time=240.886 ms
^C
--- lissyara.su ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 220.971/234.765/255.973/12.463 ms
Теперь душе хочется немного статистики :) C помощью гугла и некоторого участия серого вещества родилась пара скриптиков
Проверка нашего баланса через сайт my.peoplenet.ua В USERNAME и PASSWORD нужно подставить свои данные. Полученная информация складывается в /root/_balance
Далее хотелось-бы статистики по трафу на внешнем интересфейсе. Для начала добавим пару правил в ipfw, которые будут подсчитывать количество принятых и отправленных байт
ipfw add 11 count all from any to any in via tun0
ipfw add 12 count all from any to any out via tun0
Не забудьте их внести в инициализацию своего фаервола.
home-gw# ipfw show 11 12
00011192049 count ip from any to any in via tun0
00012171247 count ip from any to any out via tun0
Проверяем баланс за 5 минут до полуночи, сбрасываем статистику по трафу за минуту до полуночи и в 5 минут после полуночи снимаем баланс еще раз (хочется видеть списание абонплаты и превышения)
Все эти данные можем посмотреть в файлике /root/_balance
Помимо этого был настроен фаервол, установлен squid (этого описывать не вижу смысла, на данном ресурсе найти статьи по данной тематике не проблема ;) ), в планах динамический DNS
Также есть еще некоторые доработки железного характера: - Так как под виндами бывали случаи подвисания модема, в цепь его питания впаял реле на разрыв и подвел питание к катушке от БП, с выводом пары наружу. При замыкании выведенных контактов, реле разрывает цепь питания модема, чем обеспечивается его перезагрузка; - Вывел наружу и пару от контактов reset на всякий случай, мало-ли :)
эти 2 пары передам по незадействованным парам витухи к свичу и будет такой себе remote control :)
После использования в течении некоторого времени, полезла такая ошибка
home-gw kernel: ucom0: ucomreadcb: IOERROR
соединение подвисает, приходится килять ppp и стартовать заново... Нарыл в и-нете следующее и пропатчил... Живет, ошибки сыпятся, но соединение восстанавливается без мучений ppp