The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Подключение КПК к FreeBSD через Bluetooth для выхода в сеть. (ipaq linux pda palm bluetooth)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: ipaq, linux, pda, palm, bluetooth,  (найти похожие документы)
From: fr33man <fr33man@fr33man.ru.> Date: Mon, 28 Nov 2006 18:21:07 +0000 (UTC) Subject: Подключение КПК к FreeBSD через Bluetooth для выхода в сеть. Оригинал: http://www.lissyara.su/?id=1282 О чем эта статья? Я написал эту статью после трех дней мучения и головоломания. Идея была проста: у меня был КПК(HP hx4700) и два компьютера, один из которых домашний(под управлением ОС Linux), а второй -- роутер(FreeBSD 5.4). Причем домашний выходил в инет через роутер. Поэтому было решено подружить КПК и фрю. После часа изучения рунета я понял, что связывать буду через bluetooth, соглачитесь -- не очень приятно тоскать с собой крэдл ;) . А с помощью bluetooth можно передвигаться, не завися от проводов. Пришлось смотаться в ближайшую компьютерную лавочку и купить USB-bluetooth(~10$). Можно было приступать к спариванию устройств! :) Подключения USB-bluetooth к роутеру(FreeBSD). Работу с bluetooth-устройствами во FreeBSD осуществляет модуль ng_ubt, который, кстати, написан нашим соотечественником Максимом Евменкиным. За что ему -- огроменый респект! Итак, перед подключением устройства нужно погрузить этот модуль: # kldload ng_ubt После этого можно смело вставлять bluetooth адаптор в usb-порт. Если посмотреть /var/log/messages, то там будут записи типа таких: # tail /var/log/messages Feb 4 12:46:57 fr33man kernel: ubt0: SiW SiW, rev 1.10/15.00, addr 2 Feb 4 12:46:57 fr33man kernel: ubt0: SiW SiW, rev 1.10/15.00, addr 2 Feb 4 12:46:57 fr33man kernel: ubt0: Interface 0 endpoints: interrupt=0x81, bulk-in=0x82, bulk-out=0x2 Feb 4 12:46:57 fr33man kernel: ubt0: Interface 1 (alt.config 5) endpoints: isoc-in=0x83, isoc-out=0x3; wMaxPacketSize=49; nframes=6, buffer size=294 Если у Вас примерно такие же записи, то все хорошо. Девайс определился как ubt0. теперь нам нужно активировать интерфейс, чтобы мы смогли работать с bluetooth-устройствами: # cp /usr/share/examples/netgraph/bluetooth/rc.bluetooth \ /etc/rc.bluetooth # chmod 555 /etc/rc.bluetooth # /etc/rc.bluetooth start ubt0 BD_ADDR: 00:0b:0d:08:93:f2 Features: 0xff 0xff 0x5 0x38 0x18 0x18 00 00 < 3-Slot> < 5-Slot> < Encryption> < Slot offset > < Timing accuracy > < Switch > < Hold mode > < Sniff mode > < Park mode> < RSSI> < Channel quality> < SCO link> < HV2 packets> < HV3 packets> < u-law log> < A-law log> < CVSD> < Power control> Max. ACL packet size: 120 bytes Number of ACL packets: 20 Max. SCO packet size: 0 bytes Number of SCO packets: 0 Теперь наш девайс подключен и работает, давайте попробуем найти наш КПК: # hccontrol -n ubt0hci inquiry Inquiry result, num_responses=1 Inquiry result #0 BD_ADDR: 08:00:37:4e:5d:c6 Page Scan Rep. Mode: 0x1 Page Scan Period Mode: 0x2 Page Scan Mode: 00 Class: 32:01:10 Clock offset: 0x10f0 Inquiry complete. Status: No error [00] Как можно увидеть адрес КПК -- 08:00:37:4e:5d:c6. Чтобы не запоминать этот номер я тут же занес его в /etc/bluetooth/hosts: # echo 08:00:37:4e:5d:c6 kpk >> /etc/bluetooth/hosts Если еще раз просканировать сеть, то мы получим немного другой результат: # hccontrol -n ubt0hci inquiry Inquiry result, num_responses=1 Inquiry result # 0 BD_ADDR: kpk Page Scan Rep. Mode: 0x1 Page Scan Period Mode: 0x2 Page Scan Mode: 00 Class: 32:01:10 Clock offset: 0x10f0 Inquiry complete. Status: No error [00] Теперь вместо адреса устройства пишется его имя. Настройка ppp-соединения. С помощью ppp, мы сможем соеденить КПК и роутер в сеть и соответственно открыть КПК доступ в инет. Для начала запустим сервер sdpd, который нужен для того, чтобы КПК нашел наши службы: # sdpd # ps ax | grep sdpd 16654 ?? Is 0:00.36 sdpd Теперь можно перейти к составлению конфига /etc/ppp/ppp.conf: rfcomm-server: set timeout 0 set lqrperiod 10 enable lqr accept lqr set ifaddr 172.16.0.1 172.16.0.10 255.255.255.0 enable force-scripts set dial "CLIENT CLIENTSERVER" accept dns disable pap deny pap disable chap deny chap Такой простенький конфиг. Обо всех опциях можно почитать в мане. Я остановлюсь только на одной: set ifaddr. Первый аргумент -- ip-адрес шлюза, второй -- адрес, который будет выдан клиенту, ну и третий -- маска сети. После этого запускаем наш сервер: # rfcomm_pppd -s -C 7 -l rfcomm-server # ps ax | grep ppp 19233 ?? Is 0:00.00 rfcomm_pppd -s -C 7 -l rfcomm-server Опции запуска очень просты и Вы сможете прочесть о них в мане(rfcomm_pppd). OBEX Что такое OBEX? Это протокол обмена файлами между портативными устройствами. Программа -- obexapp. Ставить будем из портов: # cd /usr/ports/comms/obexapp # make install clean Теперь будем настраивать. По сути подправить нужно только один файл /etc/bluetooth/hcsecd: device { bdaddr 00:00:00:00:00:00; name "Default entry"; key nokey; pin nopin; } device { bdaddr 08:00:37:4e:5d:c6; name "kpk"; key nokey; pin "12345"; } Конфиг создан, теперь создадим директорию, для закачки фалов, а так же запустим необходимые демоны: # mkdir /var/spool/obex # hcsecd # obexapp -s -C 1 Теперь все работает и можно переходить к тестированию. Но так как моей задачей было выпустить КПК в инет, то нужно настроить нат. Это будет Вашим Домашним заданием. ;) Тестирование. К сожалению предоставить скрины с КПК я не с могу по техническим причинам, поэтому смотреть будем только со стороны сервера. Для начала подключитесь к сети на КПК. Когда Вас попросят ввести имя пользователя и пароль -- ничего не вводите, а просто нажмите ОК. После этого Вы подключитесь к сети. Давайте посмотрим что произошло на сервере: # tail /var/log/ppp.log Feb 5 15:41:19 fr33man ppp[34325]: Phase: Using interface: tun0 Feb 5 15:41:19 fr33man ppp[34325]: Phase: deflink: Created in closed state Feb 5 15:41:19 fr33man ppp[34325]: Phase: PPP Started (direct mode). Feb 5 15:41:19 fr33man ppp[34325]: Phase: bundle: Establish Feb 5 15:41:19 fr33man ppp[34325]: Phase: deflink: closed - > opening Feb 5 15:41:19 fr33man ppp[34325]: Phase: deflink: Connected! Feb 5 15:41:19 fr33man ppp[34325]: Phase: deflink: opening - > dial Feb 5 15:41:20 fr33man ppp[34325]: Phase: deflink: dial - > carrier Feb 5 15:41:20 fr33man ppp[34325]: Phase: deflink: carrier - > login Feb 5 15:41:20 fr33man ppp[34325]: Phase: deflink: login - > lcp Feb 5 15:41:20 fr33man ppp[34325]: Phase: deflink: lcp - > open Feb 5 15:41:20 fr33man ppp[34325]: Phase: bundle: Network # ifconfig tun0 tun0: flags=8051< UP,POINTOPOINT,RUNNING,MULTICAST > mtu 1500 inet6 fe80::240:f4ff:fe7e:aea4%tun0 prefixlen 64 scopeid 0x9 inet 172.16.0.1 -- > 172.16.0.10 netmask 0xffffff00 Opened by PID 34325 Как видно все работает. Теперь проверим как передаются файлы. Если Вы на КПК попробуете передать файл на сервер, то он будет передан без ошибок, НО на сервере не вылетит никакого предупреждающего сообщения о приеме файла. И переданный файл можно найти в /var/spool/obex. А давайте соеденимся по протоколу OBEX с КПК: # obexapp -a kpk -C OPUSH obex> put /etc/passwd Success, response: OK, Success (0x20) obex> di Success, response: OK, Success (0x20) Мы передали файл /etc/passwd. Он сохранился в папке My Documents на КПК. Заключение. Я брал информацию из многих источников, в том числе и английских. Где об этом можно почитать: freebsd.org(handbook), google.com, man. © lissyara 2006-10-24 08:47 MSK

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1, Balm (?), 17:24, 16/09/2007 [ответить]  
  • +/
    Хорошая статья, спасибо.
    А если бы роутер работал не на FreeBSD, а на Windows Server, можно было бы подключить КПК к Интернету? Возможно ли такое в принципе?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру