Подключение 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