ubuntu下手機連接到藍牙區域網pan/pand

←手機掃碼閱讀     火星人 @ 2014-03-26 , reply:0

這篇文章是專門面向懂得玩ubuntu linux和手機的技術人士

索愛在K550以後的主流手機和M608/W958后的智能手機都支持利用藍牙區域網技術PAN通過藍牙連接到電腦,通過電腦的網路上互聯網,從而享受到了手機免費玩互聯網的樂趣,比如PlayNow,可以隨便和快速地試聽歌曲而不用花費用(僅限試聽),或從mp3百度下載mp3,或收取blog在手機查看。速度比gprs/edge快上幾十倍(如果是藍牙2.0,速度只受你的ADSL和手機處理器限制),而又沒什麼什麼包月500元封頂這樣的費用。PlayNow會給你輕鬆的感受,程序員的你可以想象出建立一個手機上的P2P音樂網路。

PAN在windows下配置很容易,要靠安裝藍牙軟體和點滑鼠,但出了問題就無法查找,難解決。在ubuntu下掌握了工作原理后就很容易了,配置好后,就非常透明和自動了,手機在每次想開始使用時可以隨時連接網路,而不用點任何滑鼠開任何軟體,是一個free的世界,在windows下則要忍受蹩腳的藍牙軟體,如果你是程序員,甚至感覺到藍牙軟體搞亂了你的系統。

我嘗試配置了一天下午,搞通了這個,就很暢快了。給我指引和啟示主要是如下兩篇網上文章,A篇給了一個配置的整體結構,B篇避免了前篇的缺點和複雜,要結合兩篇配置的優點才做到一個更好的配置:

同時,按A篇的說明,配置時和試驗單個部分時經常查看 tail -n 100 /var/log/messages 會對Troubleshooting和了解原理非常有好處。
有一個比較重要的原理是: 藍牙網路連接bnep0,只有手機連接上來時,才會生效/可見,手機斷開時,bnep0就會消失,這和有線eth0或wifi是不同的。

(1)前提準備:首先將你的手機和ubuntu配置起來支持基本的藍牙連接,即是能搜索到,能輸入匹配密碼,如果已經能互傳文件就是更好了。

(2)桌面電腦需要的額外軟體: 先按A篇,安裝好dhcp3-server:
install apt-get install dhcp3-server

(3)按A篇在/etc/dhcp3/dhcpd.conf配置好,讓手機自動獲取ip地址:

option domain-name "example.org";(這個無所謂)
option domain-name-servers 202.96.128.166, 202.96.134.133;(這個為你的dns server ip)

subnet 10.0.254.0 netmask 255.255.255.0 {
authoritative; (這個是A篇的設置沒提示的,但手機能連上來,併發出dhcp包后,dhcp server的/var/log/message會提示)
range 10.0.254.1 10.0.254.10;
option domain-name-servers 202.96.128.166;
option domain-name "cache-b.guangzhou.gd.cn";
option routers 10.0.254.1;
option broadcast-address 10.0.254.255;
default-lease-time 600;
max-lease-time 7200;
}

此時手機沒連接上來,沒配置好藍牙網路連接bnep0 ip為10.0.254.1,/etc/init.d/dhcp3-server restart是fail的,因為根本還沒這個10.0.254.1這個ip和subnet 10.0.254.0

(4)按A篇在/etc/bluetooth/hcid.conf設置: lm accept, master;

(5)按A篇在/etc/default/bluetooth設置:
PAND_ENABLED=1
PAND_OPTIONS="--listen --role=NAP --devup /etc/bluetooth/pan/dev-up" (手機藍牙pan連接上來時bnep0就會生效,並會自動啟動dev-up執行)

配置好后,記得:
/etc/init.d/bluetooth restart

(6)不按A篇在/etc/network/interfaces作任何配置,由B篇的啟示,直接在/etc/bluetooth/pan/dev-up設置bnep0的ip地址和nat路由:
mkdir /etc/bluetooth/pan
vi /etc/bluetooth/pan/dev-up
chmod +x /etc/bluetooth/pan/dev-up

dev-up內容:
#!/bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward
ifconfig $1 10.0.254.1 netmask 255.255.255.240 mtu 900
ifconfig $1 up
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 10.0.254.0/24 -j MASQUERADE
iptables -A FORWARD -i bnep0 -o eth0 -j ACCEPT
iptables -A FORWARD -o bnep0 -i eth0 -j ACCEPT
sleep 2
/etc/init.d/dhcp3-server restart

(7)此時就可以按網上其它文章在手機上建立藍牙PAN連接上來就可以了就算配置結束和成功了,手機tcp/ip/dns都用默認的自動配置。

可以通過tail -n 100 /var/log/messages看到dhcp分配給手機的IP地址,並能ping得通。
手機有了IP地址並能以TCP/IP網路的方式運行,會給做軟體的你很多想象,你能以你熟悉的socket編程方式開發你的手機應用程序了。




[火星人 ] ubuntu下手機連接到藍牙區域網pan/pand已經有607次圍觀

http://coctec.com/docs/linux/show-post-180954.html