Документация по ОС FreeBSD Среда, 08.05.2024, 16:35
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Мои статьи [0]
Установка и настройка [281]
X Window [25]
Man pages [30]
Ports & Packages [26]
cvs [18]
Multimedia [20]
Нововсти в мире Unix [0]
RFC [4]
RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Безопасность [52]
Работа с железом [58]
Книги по FreeBSD [17]
Сеть [505]
Программирование [40]
FireWall [58]
Темы экзамена BSDA [14]
Официальные темы экзамена BSDA, включая подробноые описания и советы по обучению.

Главная » Статьи » Работа с железом

Прикручивание 3G модема С-motech под FreeBSD для использования в сети Peoplenet [2009]
После облома с подключением по wifi к одному из провайдеров, пришлось остановиться на Peoplenet.
Вот и займемся прикручиванием данного провайдера к правильной ОС :)
Было решено запереть модем на чердак и воткнуть его в роутер, который планировался для wifi :)
В качестве роутера выступает iP133/64RAM/2x2,1Gb/мать с USB, как по мне, вполне достаточно для раздачи и-нета на несколько машин, по крайней мере в институтское время выручала отлично, думаю и сейчас не подведет :)
Модем C-MOTECH CCU-650U, и рулить всем будет

home-gw# uname -a
FreeBSD home-gw 6.3-RELEASE FreeBSD 6.3-RELEASE #0: Wed Jan 16 04:18:52
UTC 2008 root@dessler.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC
i386

Грузим umodem
home-gw# kldload umodem

Подключаем модем и наблюдаем картинку:
ugen0: CMOTECH CO., LTD. CMOTECH CDMA Technologies, rev 2.00/0.00, 
addr 2

Модем не определился... Следуя проторенной тут дорожке,
за которую спасибо товарисчу 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/0 10.0.0.2/0 0.0.0.0 0.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 помощью гугла и некоторого
участия серого вещества родилась пара скриптиков
home-gw# cat /root/bin/chk_balance
#!/bin/sh

date_b=`date "+%d.%m.%Y %H:%M "`
ostatok=`wget http://my.people.net.ua/TSU/WWW/ACCOUNT_INFO --post-data \
"X_Username=USERNAME&X_Password=PASSWORD" -O - -q | grep -E "span \
class=.(gray|red)." | sed "s#^.*\">##;s%&#1075.*$%%"`
echo >> /root/_balance
echo $date_b ostatok - $ostatok grn >> /root/_balance

Проверка нашего баланса через сайт 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
00011 19 2049 count ip from any to any in via tun0
00012 17 1247 count ip from any to any out via tun0

Чего-то уже успело пробежать :)

Далее следующий скрипт
home-gw# cat /root/bin/traf_stat
#!/bin/sh

download=`/sbin/ipfw show 11 | awk '{ print$3 }'`
upload=`/sbin/ipfw show 12 | awk '{ print$3 }'`
date_b=`date "+%d.%m.%Y"`

echo trafic statistics >> /root/_balance
echo " downloaded $download bytes" >> /root/_balance
echo " uploaded $upload bytes" >> /root/_balance

/sbin/ipfw zero 11
/sbin/ipfw zero 12

Т.е. считываем значения в нашем ipfw, сохраняем их в /root/_balance и
обнуляем статистику в фаерволе.

И дадим работы нашему cron... В /etc/crontab добавил следующие строки
55 23 * * * root /root/bin/chk_balance
59 23 * * * root /root/bin/traf_stat
05 0 * * * root /root/bin/chk_balance

Проверяем баланс за 5 минут до полуночи, сбрасываем статистику по трафу за
минуту до полуночи и в 5 минут после полуночи снимаем баланс еще раз
(хочется видеть списание абонплаты и превышения)

Все эти данные можем посмотреть в файлике /root/_balance

Помимо этого был настроен фаервол, установлен squid (этого описывать не вижу
смысла, на данном ресурсе найти статьи по данной тематике не проблема ;) ),
в планах динамический DNS

Также есть еще некоторые доработки железного характера:
- Так как под виндами бывали случаи подвисания модема, в цепь его питания
впаял реле на разрыв и подвел питание к катушке от БП, с выводом пары наружу.
При замыкании выведенных контактов, реле разрывает цепь питания модема, чем
обеспечивается его перезагрузка;
- Вывел наружу и пару от контактов reset на всякий случай, мало-ли :)

эти 2 пары передам по незадействованным парам витухи к свичу и будет такой
себе remote control :)

После использования в течении некоторого времени, полезла такая ошибка
home-gw kernel: ucom0: ucomreadcb: IOERROR

соединение подвисает, приходится килять ppp и стартовать заново...
Нарыл в и-нете следующее
и пропатчил...
Живет, ошибки сыпятся, но соединение восстанавливается без мучений ppp
 


Источник: http://www.lissyara.su/?id=1895
Категория: Работа с железом | Добавил: oleg (02.04.2009) | Автор: Dron
Просмотров: 1137 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024