Linux 下有若干个蓝牙协议栈,目前生存状况比较健康的是bluez和affix,后者大概是Nokia支持的吧,前者则是目前蓝牙的Linux官方版本,集成在 Linux内核之中,也就是说,如果你有一个比较新的2.6内核,那么,你多半已经支持蓝牙了,而如果还不支持的话,重新编译一下也就好了。
内核的协议栈支持主要包含这么几个部分:
(1)HCI:这个是最底层的了,称为 Host Control Interface,之所以称为 HCI 是源于蓝牙的应用模型的。蓝芽是连接智能外设的无线接口,接口的一侧是设备,另一侧就是主机 (Host) 了,采用类似记法的还有 USB, IEEE1394,所以,从设计初衷来看,这几个东东都是针对差不多的市场的,当然,各有所长了。一个蓝牙适配器是否能被驱动起来,就看 HCI 的支持性了。最常见的蓝牙适配器就是这类 USB 接口的了,对于大部分标准的蓝牙设备,它的驱动模块是: hci-usb,对于我们的 2.6 内核,插入这个适配器,该模块就被自动加载了。
(2)在 HCI 之上是 L2CAP,Logical Link Control and Adaptation Protocal 这一层的功能承上启下,向上层提供异步数据传输的链路控制功能,所谓异步,就是不存在一个主时钟来同步所有传输的一种传输方式,通常用于数据的传输;与之相反,同步传输是完全与时钟同步的,通常用在诸如语音或是多媒体通话之中,在蓝牙中,语音同步传输也是被支持的,bluez 协议栈中的 SCO 就是支持同步模式的。
(3)L2CAP之上有两个协议被较广地使用着:RFCOMM和BNEP,前者用于取代传统的串行口,包括串行口上的各种应用,比如,传真和拨号上网、打印机、文件图片等数据传输;后者则可以提供一个以太网接口,更适于计算机组网。自然地,对于手机和计算机之间,RFCOMM 总是更常被用到。
在笔记本上插入蓝牙适配器(USB)之后:
1、lsusb
此命令列出USB设备信息。
2、hciconfig
此命令可以看到蓝牙主控设备的相关信息(设备号)。
3、sudo /etc/init.d/blutooth restart
此命令用于打开蓝牙设备。
4、sudo hciconfig [设备号] up
此命令用于激活蓝牙。
5、下面可以使用hcitool命令来操作蓝牙了(hcitool --help来查看相关命令帮助信息)。
hcitool scan 可以扫描蓝牙设备(非低功耗)
hcitool lescan 可以扫描低功耗蓝牙设备
扫描过之后可以得到蓝牙设备的硬件地址和设备名称。
6、下面可以使用rfcomm命令来连接蓝牙设备了(rfcomm --help来查看相关命令帮助信息)。
首先、sudo rfcomm bind /dev/rfcomm0 [目的设备硬件地址] 绑定目的设备;
然后、sudo cat >/dev/rfcomm0 连接目的设备。
如果需要配对的话,还要输入配对信息(PIN码)。
在配对完成之后我们需要删除绑定(否则在下次使用时会提示设备正忙),命令如下:sudo rfcomm release /dev/rfcomm0。
7、下面就要进行各种传输工作了。