Ubuntu 蓝牙全攻略
{ 撰文/ivan_wl }
Ubuntu 的蓝牙支持相信很多同学都在使用吧,插上就用,连个手机传个文件啊什么的非常方便。但是你有没有想过压榨出其更大的潜能呢?有没有想过坐到电脑前,打开蓝牙连上手机,戴上耳麦,直接就通过电脑来接打电话了呢?或者连上你的 iPod touch,音乐声就从电脑的音箱中飘出了呢?当然,Windows 系统下有诸如 IVT 之类的商业驱动和配套软件可以实现,而在 Linux 下呢?当然也是可以的,而且都是自由免费的哦!
下面就跟我来,压榨下 Ubuntu 的潜能吧!我使用的是 Ubuntu 9.10,其他的版本没有测试过,大家可以自己试试。另外先说明一点,Ubuntu 自带的 gnome-bluetooth 工具不是很好用,而且后面设置蓝牙立体声支持的时候用 gnome-bluetooth 会非常的不方便,所以建议大家安装使用 Blueman 这个管理工具。当然不要在新立德中直接安装 Blueman,直接装的话它不会替换 gnome-bluetooth,结果两个冲突起来会很悲剧的…建议添加 Blueman 的 PPA 源
https://launchpad.net/~blueman/+archive/ppa
然后安装 Blueman 就好了,它会自动替换掉 gnome-bluetooth。然后建议也更新一下与蓝牙有关的所有软件包,经我测试,更新后的兼容性和性能都会更好一些。当然,如果你不想使用 Blueman,也是完全可以的,就是麻烦一些。后面我会详细说明。
另外如果你是外置的 USB 蓝牙适配器的话,插在电脑上开机可能会出现蓝牙管理器无法管理的情况,解决的办法就是拔了再插一下,或者终端中运行
sudo /etc/init.d/bluetooth restart
来重启蓝牙服务即可。
首先让我们来看如何把 Ubuntu 打造成一个蓝牙免提设备。这里就要请出我们的主角 - HFP for Linux 了。
HFP for Linux 是一个在 Linux 下提供蓝牙 HFP(就是免提支持)的工具。看一眼主页中的图片大家就明白是怎么回事了。
下面我们就来编译安装。首先安装编译时需要的一些包
sudo apt-get install subversion g++ autoconf libtool libspeexdsp-dev libasound2-dev libbluetooth-dev libaudiofile-dev libdbus-1-dev
然后用 svn 获得源代码
svn co https://nohands.svn.sourceforge.net/svnroot/nohands/trunk
进入源代码的文件夹下,就可以开始编译安装了。
./autogen.sh
./configure
make
sudo make install
编译安装完成。然后运行 hfconsole,一个拨号盘的界面就出现了。我们在里面配对好手机,等界面上的信号和电量指示出现,就成功了!
拨个电话试试?怎么,电脑的喇叭中没有声音?别急,点右下角的设置按钮,Audio device 选项卡,Driver 中换 OSS 试试。可以点下面的 Feedback test,如果能传出话筒的声音,那就正常了。如果 OSS 没有弹出什么错误提示,但是仍然没有声音怎么办啊?别急,首先到声音设定程序中去,确定你的话筒设置好了么?打开录音机程序,录一段试试看?也可能是话筒音量太小了,运行 alsamixer,把 mic boost 调大些。至于 alsamixer 可能无法保存音量设置,下次开机就没了,解决方法大家就自己 Google 下吧。不知道为什么,我这儿只有 OSS 能用。但是 OSS 是独占声卡的,所以,用的时候,把你的那些音乐播放器什么的都退了吧……或者你也可以尝试用 aoss 包裹一下,我就不多废话了。
如果一切正常的话,我们就可以把手机扔一边,用电脑来打电话了!如果你是强人,可以试试利用平板电脑啊上网本啊高级MP4啊什么的打造一个自己的车载蓝牙免提系统。折腾 Linux 真是其乐无穷啊~
~~~~~~~~~~~~~分割线~~~~~~~~~~~~~
接下来我们来开启 Ubuntu 中的 A2DP audio source stream 支持。就是把电脑打造成一个立体声蓝牙耳机。
这里有一个详细的英文说明,洋文好且翻墙能力高的同学可以直接去看看~
进入正题。首先要确定你的系统中有 pulseaudio-module-bluetooth 模块,没有的话自行 apt-get 新立得安装。然后加载模块
pactl load-module module-bluetooth-discover
Ubuntu 9.10 中好像默认就有这个模块,而且是自动加载的,这部分就略过吧。
然后修改 /etc/bluetooth/audio.conf 文件,打开 audio source 支持。在
# If we want to disable support for specific services
# Defaults to supporting all implemented services
#Disable=Control,Source
这几行字下,加入一行
Enable=Source
保存,关闭。重启蓝牙服务,就是 sudo /etc/init.d/bluetooth restart 了。
然后,如果你使用的是 Blueman 的话,效果就立竿见影了。重新搜索、配对一下你的手机啊什么的,如果你的手机支持蓝牙立体声耳机的话,在你的设备列表上点右键,你就会看到 Connect to 下有 Audio source 的字样。点上去连接,用手机放首音乐,怎么样,电脑的喇叭响起来了吧~下面是连接到我的 iPod touch 上的效果。
但是如果你实在不想用 Blueman,执意要用 Ubuntu 默认的蓝牙管理器呢?好吧,也不是没有办法……首先你可能需要 d-feet 这个 d-bus 调试工具。apt-get 或新立得安装。
在蓝牙管理器中重新配对好你的设备,运行 d-feet,左侧栏中点 org.bluez,右侧找到和你的蓝牙设备 mac 地址对应的项目,展开 org.bluez.AudioSource / Methods 项,双击 Connect(),如图。
接下来出现一个框,点 execute。你可能需要多试几次。然后打开声音设置,看硬件一栏,是不是有个 A2DP 设备出来了?
蓝牙 A2DP 流已经成功输入到 Pulseaudio 中了,接下来你可以把这个选作输入设备,然后录一段音看看…但是如何让声音直接从喇叭中播放出来呢?让你用 Blueman 来着,要不然会有这么麻烦么…
打开 pacmd,进入 pulseaudio 控制台。用命令 list-sources
找到你蓝牙设备对应的输入源,注意 mac 地址,记下名字。然后用 list-sinks
找出你需要的输出设备的名字。一般情况下只有一个,就是它了。然后用命令
load-module module-loopback source=<输入源的名字> sink=<输出设备的名字> 将其连接,这回出声了吧!费这么大劲,还是赶快换 Blueman 吧,都自动帮你做好了!
另外说一点,蓝牙立体声的音质可能不像你想象的那么好,有点破音…可能是因为我用的是几十块的杂牌蓝牙适配器的原因吧。另外,我的电脑的蓝牙立体声和黑莓手机的兼容极差,完全无法使用,不知道为什么…
怎么样,一个小小的蓝牙,我们就压榨出了 Ubuntu 这么多的潜能。还有,如果你是强人的话,可以试试用平板电脑啊上网本啊高级 MP4 啊什么的打造一个自己的蓝牙车载娱乐系统。怎么样,折腾 Linux 是不是其乐无穷啊~
本文作者:ivan_wl ( twitter: @ivan_wl )
投递并授权 linuxtoy.org 网站发表,欢迎转载,转载请保留作者信息。
{ Thanks ivan_wl. }
Read More:
很强的思路,很实用的文章,强力支持!
很强的思路,很有价值的文章,强力支持!
杀发~
好文~
不错,支持一个……
对于将电脑当蓝牙音响的举动十分敬仰……
嗯……没有蓝牙设备……
wordpress那篇关于a2dp的文章我没翻墙就可以打开,教育网。
木有蓝牙
13块钱的蓝牙适配器,没发现破音……有破音可能是因为把免提电话也开了,这样就会有麦克的声音……
以后就会有人拿着手机当话筒,k歌~
本本没蓝牙,手机没蓝牙的飘过……
@Iven: 应该不是这个原因吧,ipod touch只支持蓝牙立体声,再说它也没有麦克风…而且我的蓝牙连黑莓和M8的蓝牙立体声时几乎完全不能用…应该还是有兼容性的问题。
@razu: 我是沙发啊,这个1楼和2楼是怎么回事哦?穿越了?时区问题?
好文,但把电脑打造成一个立体声蓝牙耳机,不解?
mv -f .deps/objects.Tpo .deps/objects.Po /bin/bash ../libtool --tag=CXX --mode=link g++ -Wshadow -fno-exceptions -g -O2 -Wall -o hfpd hfpd.o dbus.o util.o configfile.o objects.o -L../libhfp -lhfp -lbluetooth -lasound -laudiofile -lspeexdsp -L/lib -ldbus-1 -lpthread -lrt
libtool: link: cannot find the library
' or unhandled argumentfor' make[2]: *** [hfpd] 错误 1加了--enable-alsa过去了
其实 gnome-phone-manager 是个不错的软件,通过蓝牙链接手机后可以显示手机收到的短信,以及在电脑端编辑短信然后通过手机发送。还有一个 gnome-phone-manager-telepathy 的扩展,可以和 Empathy 合用。
blueproximity 通过蓝牙探测你的手机离你的电脑多远,然后执行相应指令. 例如探测到手机离电脑超过10米就锁住屏幕,如果手机离电脑小于10米就解锁
我想用冰箱、电视、热水器、电灯、电脑都连在一起,通过手机来控制,然后手机上要加装投影仪,就是MIT的那个印度天才演示的那种,那才是幸福生活
相当好的文章!很实用!
@黑日白月: 可惜gnome-phone-manager不支持黑莓手机啊~ @hmy: 那个blueproximty挺神奇的,而且ubuntu的源里竟然就有
hfconsole能发短信么? svn上的代码貌似bug很多,设置界面打不开:
(hfconsole:24946): libglade-WARNING **: could not find glade file './hfconsole.glade'
(hfconsole:24946): libglade-WARNING **: could not find glade file './data/hfconsole.glade' Traceback (most recent call last): File "/usr/local/bin/hfconsole", line 2135, in barconfigclicked self.configopen() File "/usr/local/bin/hfconsole", line 2449, in configopen savecfg = self.configgetvals() File "/usr/local/bin/hfconsole", line 2554, in configgetvals vals['denoise'] = spr['Denoise'] KeyError: 'Denoise'
Bluemanl连上手机,可HFP检测不到?
高手,赞一个
@KDr2: hfconsole不能发短信,可以使用gnome-phone-manager来发短信。
@eagle: 不要连接blueman,直接在HFP里面搜索和配对手机试试。
前天花15买了个蓝牙适配器,被Linux搞得蛋疼了:\ (很繁琐)
好文。。。未认真玩过蓝牙。。。
@ivan_wl: gnome-phone-manager,blueproximity都可连上,就是hfconsole连不上,但终端是有显示手机信息。
狗了下,也有这现像http://www.mp3car.com/vbulletin/linux/125997-hfp-linux-bluetooth-hands-free-4.html,作者
@ivan_wl: gnome-phone-manager,blueproximity都可连上,就是hfconsole连不上,但终端是有显示手机信息。
狗了下,也有这现像作者
我在安装过程中现遇到一些问题,在最后一步执行 “sudo /etc/init.d/bluetooth restart” 时弹出一对话框提示“设备管理器需要开启蓝牙才能工作”,接着我点击对话框上的“启动蓝牙”按钮,紧接着又弹出一对话框提示“Failed to set bluetooth power-The error reported is: Connection timed out”。现在情况是蓝牙不能用了:-( Google后没找到答案,所以特贴上来请大家帮忙看看。
上述问题在关机再开机后得到解决,重启几次还不行。
@Bane 你的是USB蓝牙还是内置的蓝牙?用的是blueman还是默认的gnome-bluetooth工具?安装blueman的时候不要直接装,源里的那个有bug,先添加ppa源再安装。还有就是插着外置蓝牙开机的时候可能就会出现无法管理蓝牙的情况,拔了再插上或者运行命令重启蓝牙服务就行了。
内置的,Blueman。是通过ppa安装的。
@bane 看这里,好像是blueman的一个bug https://bugs.launchpad.net/blueman/+bug/496733 给出了一个解决方法 sudo gedit /etc/bluetooth/main.conf 将 RememberPowered 的值从 true 改为 false ,你可以试试
用blueman配对headset,开启headset服务之后,pulseaudio挂了。首先pactl load-module module-bluetooth-discover要么fail,要么timeout。看pulseaudio属性,半天没有反应,最后弹出一条说"failed to initialize,bluetooth audio will not work over pulseaudio",pulseaudio当中完全没有蓝牙耳机出现。
google了半天,无解。无语呀,天杀的pulseaudio...
10.04功能不错,blueman 配对好以后修改 /etc/bluetooth/audio.conf 加入[General]
Disable=Control,Source
Enable=Source 重启,在声音选项输入输出就能直接看到蓝牙耳机了
我使用的是基于ubuntu的mint linux 10系统。 我一直对源的问题没有搞清楚
我按照你的说法,在sources.list中加入了下面这句,算作是添加源,但不知道对不对,至少我在update时显示“忽略” :deb https://launchpad.net/~blueman/+archive/ppa/ubuntu maverick main
正确的方式应该是什么样的?
svn co https://nohands.svn.sourceforge.net/svnroot/nohands/trunk 这个命令会把源码下载到系统的哪个位置?
administrator@linuxmint ~/桌面/trunk $ hfconsole
(hfconsole:7163): libglade-WARNING **: could not find glade file './hfconsole.glade' 这是什么意思? 输入hfconsole 运行不了哇
38楼 我来回答你 需要 sudo hfconsole 我也遇到许多问题,我已经看到了声音选项中的手机输入了,可是手机放歌电脑没反应,手机也没声了,但打电话还是在手机了,奇怪!
第一个 我还是和很多童鞋一样 hfconsole连不上手机,但blueman能连上
37楼 是这样的一般下载在当前目录下
好多问题啊…… 先说HFP,blueman开启时就无法启动hfconsole,弹错could not find glade file './hfconsole.glade'; 还有Audio source,连接都是正常的,只是打开音乐后,手机电脑都没声音……
忘了说,我用10.10的