六. 命令行工具
蓝牙的可操作性取决于各种服务的交互。至少需要两个后台守护程序:hcid(主机控制器接口守护程序)和 sdpd(服务发现协议守护程序),前者充当蓝牙设 备的接口并控制蓝牙设备,而设备可以通过后者找到主机提供的服务。如果在启动系统时未自动激活 hcid 和 sdpd,则可以使用命令 rcbluetooth start激活这两个守护程序。必须以 root 用户身份执行此命令。
下面简要介绍了可用于使用蓝牙的最重要的 Shell 工具。尽管现在可以使用各种图形组件来控制蓝牙,但这些程序也值得您去关注。某些命令只能以 root 用户身份执行。
hcitool
hcitool 可用于确定是否检测到本地和远程设备。命令 hcitool dev 列出本地设备。输出为每个检测到的本地设备生成一行,可以使用命令 hcitool inq 搜索远程设备。对于每个检测到的远程设备,返回 3 个值:设备地址、时钟偏移和设备类。设备地址很重要,因为其他命令用它来标识目标设备。时钟偏移主要用于技术目的。而设备类以十六进制值的形式指定设备类型和服务类型。
命令 hcitoolname device-address 可用于确定远程设备的设备名。对于远程计算机,设备类和设备名对应于其 /etc/bluetooth/hcid.conf 中的信息。使用本地设备地址将生成错误输出。hcitool命令行方式的蓝牙扫描各程序,它内嵌有已被编译到内核中去了的BlueZ协议,这个扫描程序被称为hcitool,它可找到所有那些已处于可发现模式(discoverable mode)的蓝牙设备。Hcitool的网站主页地址为http://linuxcommand.org/man_pages/hcitool1.html ;现在,拿来在计算机有效范围内的另外一个蓝牙设备,确保该设备对蓝牙扫描可见。然后,从命令行运行hcitool scan。该过程将持续15~20s 后完成扫描,之后将显示以下信息:
My output :
|
hcitool scan 00:E0:03:36:90:2D Nokia 6230 |
hciconfig
命令 /usr/sbin/hciconfig 提供有关本地设备的详细信息。如果不带任何参数执行 hciconfig,则输出将显示设备名 (hciX) 等设备信息、物理设备地址(12 位数字,形式为 00:12:34:56:78)和有关已传送数据量的信息。hciconfig hci0 name 显示当您的计算机接收来自远程设备的请求时它返回的名称。除查询本地设备的设置外,hciconfig 还可用于修改这些设置。例如,hciconfig hci0 name TEST 将名称设置为 TEST。典型输出如下:
|
hciconfig –a hci0: Type: USB BD Address: 00:A0:96:20:2B:A0 ACL MTU: 128:8 SCO MTU: 64:8 UP RUNNING PSCAN ISCAN RX bytes:159590 acl:1544 sco:0 events:977 errors:0 TX bytes:56114 acl:769 sco:0 commands:210 errors:0 Features: 0xff 0xff 0x05 0x00 0x00 0x00 0x00 0x00 Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 Link policy: RSWITCH HOLD SNIFF PARK Link mode: SLAVE ACCEPT Name: 'BlueZ (enki)' Class: 0x100100 Service Classes: Object Transfer Device Class: Computer, Uncategorized HCI Ver: 1.1 (0x1) HCI Rev: 0x72 LMP Ver: 1.1 (0x1) LMP Subver: 0x72 Manufacturer: Cambridge Silicon Radio (10) |
说明:如果没有看到这样的信息,那么确认一下hcid 是否正在运行,在文件/var/log/messages 中是否有错误信息。适配器的BD Address是蓝牙识别符的唯一标识,其原理与以太网的MAC 地址类似。
sdptool
命令sdptool 可用于检查特定设备提供哪些服务。命令 sdptoolbrowsedevice_address 返回某个设备的所有服务。使用命令 sdptool searchservice_code 搜索特定的服务。此命令扫描所有可访问的设备来搜索请求的服务。如果其中一台设备提供服务,则此程序将输出此设备返回的完整服务名及简短说明。输入不带参数的 sdptool 可以查看所有可能的服务代码列表。典型输出如下:
|
sdptool browse 00:E0:03:36:90:2D Service Name: OBEX Object Push Service RecHandle: 0x1000e Service Class ID List: "OBEX Object Push" (0x1105) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 9 "OBEX" (0x0008) Language Base Attr List: code_ISO639: 0x656e encoding: 0x6a base_offset: 0x100 Profile Descriptor List: "OBEX Object Push" (0x1105) Version: 0x0100 …… |
总 结:
如今,支持无线蓝牙的设备真可谓是无处不在,而且相关软件的使用也很简单。尽管如此还是有不少有消费者没有了解它,不知道怎样使用它。本文介绍蓝牙的基础知识以及如何在Linux系统安装一些蓝牙设备。随着身边内置蓝牙设备的增多,与电脑交换资料如果不用蓝牙的话实在是可惜,但是现在内置蓝牙的本本并不多,到市场上买一个蓝牙适配器即可,1.2版本的基本在40-80元 。