本博客已转移至 http://www.lupaworld.com/home/35714

征服蓝牙

上一篇 / 下一篇  2007-03-31 03:56:54 / 个人分类:Linux

征服蓝牙

 

本文是本人在ubuntu 6.06下安装使用蓝牙耳机的笔记。
蓝牙的内核支持不在本文讨论范围,系统的默认配置已满足要求。有兴趣的可以看参考资料中的相关文章。
先来看一下涉及到的各个软件包。

bluez-hcidump - Analyses Bluetooth HCI packets//建议安装,方便调试
bluez-pcmcia-support - PCMCIA support files for BlueZ 2.0 Bluetooth tools//你的蓝牙适配器是PC卡接口时
bluez-pin - Bluetooth PIN helper with D-BUS support//连接蓝牙设备(比如耳机)时输入验证码的工具
bluez-utils - Bluetooth tools and daemons//核心支持,必须安装
bluez-btsco - Bluez Bluetooth SCO tool//连接蓝牙耳机必备
gnome-bluetooth - GNOME Bluetooth tools.//蓝牙设备扫描,用蓝牙收发文件的工具
alsaplayer-alsa - PCM player designed for ALSA (ALSA output module)//alsa相关工具,推荐

建议先将蓝牙适配器插到电脑上,再执行上面的软件安装。

hcitool dev

这时会列出你的蓝牙适配器的信息:

Devices:
hci0 00:08:1B:83:C7:91

如果没有,则是驱动方面出了问题。
如果有蓝牙手机,现在就可以用它和你的电脑互传文件了。
发文件给电脑要先在电脑上运行

gnome-obex-server

发文件给手机请用

gnome-obex-send filename

(建议给上面两条命令建个alias)

安装必备的软件后。有两个配置文件需要关注。
一:/etc/bluetooth/hcid.conf
网上的资料大都说要修改这个文件。但根据我的实践,这个文件不用做任何修改即可正常使用。
不过如果你的蓝牙设备是固定的(比如像我只有一个蓝牙耳机),建议做如下修改:
建立一个文件/home/ahlong/bt-pin.sh
内容为

#!/bin/sh
echo “PIN:0000″

“0000″是耳机的验证码,可从随机文档上查得。

chmod a+x /home/ahlong/bt-pin.sh

将文件改为可执行,一定别忘了(此处省略852字)。
然后找到配置文件下面的这段

# PIN helper
pin_helper /usr/bin/pinwrapper;

并将”/usr/bin/pinwrapper”改为”/home/ahlong/bt-pin.sh”。
这样可以使btsco时弹出对话框的步骤直接被省略。

二:/etc/bluetooth/rfcomm.conf
进行这步前,需要先得到耳机的标识码。

hcitool scan

扫描设备。如果无输出,可做如下尝试后重新扫描(下面两个命令可能不只用在这个时候):

sudo hciconfig hci0 down
sudo hciconfig hci0 up

如果还是没有输出,请确保你的耳机处在”可以被发现”状态。具体方法请见设备随机文档。
这里得到的是00:03:89:4A:96:6D
现在可以把配置文件改成类似下面的样子。

rfcomm0 {
bind yes;
# Bluetooth address of the device
device 00:03:89:4A:96:6D;
# # RFCOMM channel for the connection
channel 2;
# # Descrīption of the connection
comment “ahlong-M3000″;
}

上面的channel的值是如何确定的呢?

sdptool records 00:03:89:4A:96:6D

这个命令用于扫描00:03:89:4A:96:6D支持多少种蓝牙应用。
下面是我的输出:

Service Name: M3000 by Plantronics
Service RecHandle: 0×10000
Service Class ID List:
“Headset” (0×1108)
“Generic Audio” (0×1203)
Protocol Descrīptor List:
“L2CAP” (0×0100)
“RFCOMM” (0×0003)
Channel: 1
Language Base Attr List:
code_ISO639: 0×656e
encoding: 0×6a
base_offset: 0×100
Profile Descrīptor List:
“Headset” (0×1108)
Version: 0×0100

Service Name: M3000 by Plantronics
Service RecHandle: 0×10001
Service Class ID List:
“Handsfree” (0×111e)
“Generic Audio” (0×1203)
Protocol Descrīptor List:
“L2CAP” (0×0100)
“RFCOMM” (0×0003)
Channel: 2
Language Base Attr List:
code_ISO639: 0×656e
encoding: 0×6a
base_offset: 0×100
Profile Descrīptor List:
“Handsfree” (0×111e)
Version: 0×0100

从上面看到这个蓝牙耳机支持”Headset” 和 “Handsfree”,当然还有”Generic Audio”。
Channel设为1或2都是可以的。但我试验发现,设为1时似乎XMMS放完一首歌时会停在下一首歌开始处,所以我选成2。

有多个蓝牙设备时添加多个rfcommX {……}即可。

想用蓝牙耳机听音乐,需要加载snd_bt_sco模块

sudo modprobe snd_bt_sco

执行完后,系统就会多出来一块声卡设备(我这里是/dev/dsp2)。可以通过gnome-volume-control的菜单里看到。
为了方便使用,建议将snd_bt_sco添加到/etc/modules。

想要使用蓝牙听音乐时打开一个控制台并输入

btsco 00:03:89:4A:96:6D 2

2是通道,好像可以省略。
正常的话不会有输出,务必保持窗口不被关闭。
特别说明一下,由于显式指定了地址,这里并不要求耳机处在”可以被发现”状态。

这样蓝牙耳机就可用了,不过由于蓝牙耳机不是默认的声卡设备。所以需要在软件里手动指定。
在XMMS中,将输出驱动选为alsa,然后点击Configure,在audio device里选择带BT字样的。
mplayer对声卡的识别没有XMMS好,同样选择alsa,再将device手动填成hw=1,0即可,hw=1,0的值与你电脑硬件配置等相关。可以用XMMS中读到,也可以根据gnome-volume-control的顺序来推断。
虚拟出的声卡一个时刻只能被一个程序使用。
如何让skype使用蓝牙耳机呢?在相应的地方选择/dev/dsp2即可(未经验证,我教育网登陆不了skype)。

如果安装了alsaplayer,这里就可以用

aplay -D plughw:1,0 xx2.wav

向蓝牙耳机播放音乐;

arecord -d 10 -f cd -t wav -D plughw:1,0 bt0.wav

录制一段10s长的录音。
如果没有录下声音请检查一下mic的音量设置(通过gnome-volume-control)。

以上操作出现任何问题都可以借助

sudo hcidump

协助诊断。

参考资料:
http://www.uplinux.com/www/sys/03/518.shtml


http://www.stcore.com/linux/2006-06/1149492505d12045_5.html


http://www.linuxsir.org/bbs/showthread.php?t=238547


http://sourceforge.net/mailarchive/forum.php?forum_id=1883&max_rows=25&style=nested&viewmonth=200310

 

 

 



TAG: Linux

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-09-07  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 89945
  • 日志数: 252
  • 图片数: 1
  • 书签数: 7
  • 建立时间: 2007-03-30
  • 更新时间: 2008-07-07

RSS订阅

Open Toolbar