Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103696200
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: LINUX

2008-04-08 12:55:58

作者: iopto  出自:
索爱在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编程方式开发你的手机应用程序了。
阅读(298) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~