Информационные технологииStfw.Ru 🔍

Подключение Internet в FreeBSD через Bluetooth и смартфон Nokia

FreeBSD 7.0
🕛 18.10.2009, 15:25
Еще года полтора назад был куплен ноутбук Asus X50V. ОСь установил FreeBSD 7.0 :)
И первые грабли: как поднять интернет? Поскольку это лэптоп - значит мобильный инет (3G, EDGE)

Гуглением нашел информацию для Siemens под Linux. И как всегда результат: сделай сам.
Тема немного экзотичная, но возможно кому-то пригодится

Поехали...

Все обкатано на такой связке
Asus X50V + Bluetooth + Nokia 6120 + FreeBSD 7.1 = Internet

Этап первый: подгон железа

Nokia 6120 (смартфон, bluetooth 2.0, 3G) напрочь отказался подключаться через дата-кабель, постояное ugen0. Исключение составил режим передачи данных, здесь он радостно обрадовал появлением /dev/da1. Значит доступ к карте памяти есть. Ну лучше так, чем вообще никак :)

Поиски перешли в сторону bluetooth. В магазине был куплен USB девайс за 60 UAH известного китайского производителя NoName

Работа bluetooth-стека реализуется через NetGraph

В конфиг ядра надо добавить такие строчки и пересобрать

options NETGRAPH
options NETGRAPH_BLUETOOTH
options NETGRAPH_BLUETOOTH_BT3C
options NETGRAPH_BLUETOOTH_H4
options NETGRAPH_BLUETOOTH_HCI
options NETGRAPH_BLUETOOTH_L2CAP
options NETGRAPH_BLUETOOTH_SOCKET
options NETGRAPH_BLUETOOTH_UBT
options NETGRAPH_BLUETOOTH_UBTBCMFW

или подгрузить как модули.

Теперь подключение адаптера вызывает

ubt0: on uhub0
ubt0: Interface 0 endpoints: interrupt=0x81, bulk-in=0x82, bulk-out=0x2
ubt0: Interface 1 (alt.config 5) endpoints: isoc-in=0x83, isoc-out=0x3; wMaxPacketSize=49; nframes=6, buffer size=294

Значит все ОК, переходим к следующему пункту.

Нюанс: при отключении адаптера система падает, на данный момент причину установить не удалось. Есть предположение о кривизне bluetooth-адаптера.

Этап второй: спаривание телефона


За подключение (спаривание) смарта и FreeBSD отвечает демон hcsecd.

В файле /etc/bluetooth/hcsecd.conf добавляем

device {
bdaddr 00:1e:a4:85:cd:34;
name "nokia-6120";
key nokey;
pin "111000";
}
В файле /etc/bluetooth/hosts

00:1e:a4:85:cd:34 nokia-6120

Здесь 00:1e:a4:85:cd:34 - это MAC-адрес телефона. Его можно определить командой

root@freebsd# hccontrol inquiry

На что получаем ответ

Inquiry result, num_responses=1
Inquiry result #0
BD_ADDR: 00:1e:a4:85:cd:34
Page Scan Rep. Mode: 0x1
Page Scan Period Mode: 00
Page Scan Mode: 00
Class: 5a:02:0c
Clock offset: 0x202a

В /etc/rc.conf добавляем запуск hcsecd

hcsecd_enable="YES"

Теперь проверяем, как все работает

root@freebsd# /etc/rc.d/hcsecd start
root@freebsd# l2ping -a 00:1e:a4:85:cd:34
0 bytes from 00:1e:a4:85:cd:34 seq_no=0 time=25.494 ms result=0
0 bytes from 00:1e:a4:85:cd:34 seq_no=1 time=30.933 ms result=0
0 bytes from 00:1e:a4:85:cd:34 seq_no=2 time=10.996 ms result=0
0 bytes from 00:1e:a4:85:cd:34 seq_no=3 time=26.050 ms result=0

0 байт ето нормально, при первом пинге телефон захочет PIN-код, у меня он 111000 (установлен в /etc/bluetooth/hcsecd.conf параметр pin), его надо ввести.

Теперь самый интересный момент: настройка PPP

Этап третий: настройка PPP


Добавляем в /etc/ppp/ppp.conf

ks-bluetooth:
enable force-scripts
set authname
set authkey
set phone "*99***1#"
set dial "ABORT ERROR ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \
\"\" ATZ OK-ATZ-OK AT+CGDCONT=1,\\\"IP\\\",\\\"www.ab.kyivstar.net\\\" OK \\dATD\\T TIMEOUT 40 CONNECT"
set login
set timeout 600
# enable dns
set dns 192.168.10.108
resolv rewrite
set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
add! default HISADDR

set phone "*99***1#" - это номер дозвона, для ericson рекомендуют ставить set phone "*99#"
www.ab.kyivstar.net - точка доступа (APN), у каждого оператора своя, здесь Kyivstar, будьте внимательны (когда-то использовал xl.kyivstar.net 5коп за 1Mb, случайно оставил www.ab.kyivstar.net - 5грн за 1Mb :)))
enable dns - использовать DNS провайдера, перепишет ваш resolv.conf
set dns 192.168.10.108 - использовать свой DNS 192.168.10.108
Остальное взято с системного примера PPP.

Дозвон осуществляет rfcomm_pppd

rfcomm_pppd -a 00:1e:a4:85:cd:34 -c -C DUN -l ks-bluetooth

DUN - Dial UP Network
ks-bluetooth - название конфигурации с ppp.conf
00:1e:a4:85:cd:34 - MAC нашего смарта

Для удобства создал скрипт /etc/ppp/nokia-6120.ks.up

#!/bin/sh
rfcomm_pppd -a 00:1e:a4:85:cd:34 -c -C DUN -l ks-bluetooth

И сделал симлинк

root@freebsd# ln -s /etc/ppp/nokia-6120.ks.up /usr/bin/inet
root@freebsd# chmod +x /etc/ppp/nokia-6120.ks.up

Пора проверить наш инет

root@freebsd# inet
root@freebsd# ifconfig tun0
tun0: flags=8051 metric 0 mtu 1500
inet 94.153.xxx.xxx -> 10.6.6.6 netmask 0xffffff00
Opened by PID 3471

Все работает :) Ваши замечания и предложения оставляйте в комментах.
Спасибо за внимание!
Источники

man ppp
man bluetooth
man hccontrol
man rfcomm_pppd

Unix   Теги: Bluetooth, Freebsd, Nokia

Читать IT-новости в Telegram
Информационные технологии
Мы в соцсетях ✉