大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
切换到Arch也有一段时间了,一直在用的QC35也又一次遇到了蓝牙配对的问题。以前都是用Blueman,或者直接连接有线,但是问题只是被隐藏了,这次还是好好把这个问题解决了一下。
成都创新互联公司-专业网站定制、快速模板网站建设、高性价比兴平网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式兴平网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖兴平地区。费用合理售后完善,10年实体公司更值得信赖。
Linux下连接蓝牙设备的方法可以参照 Arch Wiki:Bluetooth ,我使用的蓝牙设备是USB CSR8510蓝牙适配器,按页面说明安装好软件包后,启动蓝牙服务,进入bluetoothctl,耳机打开配对模式,scan on查找到我的耳机的MAC,pair 04:52:C7:5B:CB:65,出现问题:
如果你在蓝牙设置界面进行配对尝试,不同桌面也有不同的错误提示,反正就是无法完成配对。如果使用Blueman等软件,有机会可以通过多次重试成功连接,但是问题还是间歇出现,并不能治本。
百度是找不到什么好解决方案的,直接Google,不一会就找到了有用的解决方法, Pairing Bose QC 35 over Bluetooth on Fedora ,问题上看基本就是我的问题,最高票的回答也很简单,QC35声称支持低功耗蓝牙(LE)但不支持低功耗模式下的配对,Bluez也还不支持明明配对一个LE设备,却要切换到BR模式来配对(大概是这个意思),除非你在配置文件里指定所有设备都应该工作在BR模式,所以打开配置文件/etc/bluetooth/main.conf(没有的话新建一个),找到下面的
将 # ControllerMode = dual改为ControllerMode = bredr,然后保存,对于新建的文档,直接输入下面的然后保存
然后重启bluetooth服务
现在你应该能在bluetooth里愉快地配对了----才怪,你还需要删除以前的配对设置,否则会出现org.bluez.Error.AuthenticationRejected错误
再次尝试配对,信任,连接,如果连接时出现Failed to connect: org.bluez.Error.Failed错误,那是你没装pulseaudio-bluetooth包,无法支持A2DP协议,装一个再试就可以了。
成功连接后声音输出可能会默认走的是HSP/HFP,音质会极差,在音频设置里切换到A2DP就正常了。更多蓝牙音频设备的设置可以查看 Arch Wiki:Bluetooth headset
关于蓝牙协议可以查看百科,或者这里有简短的科普 蓝牙协议分析(1)_基本概念
关于这里bluetooth和QC35在配对时鸡同鸭讲的问题,给出解决问题的人也表示自己的蓝牙鼠标是LE,为了使用他后来把配置文件里的ControllerMode删掉了,但是耳机和鼠标都没受影响,他猜想可能配对后的设备是不受配置文件的影响的。
注:以下内容主要来自
1、lsusb看看能不能找到本机的蓝牙/USB蓝牙
2、 bluetoothctl -a
注意,这个指令用root权限,否则可能会找不到设备
进入[bluetooth]#提示符
[bluetooth]# power on激活蓝牙
[bluetooth]# agent KeyboardOnly
[bluetooth]# default-agent
告诉主机去找蓝牙键盘设备
[bluetooth]# pairable on进入配对模式,第一次才需要
[bluetooth]# scan on 开始扫描
[bluetooth]# pair 01:02:03:04:05:06 后面的mac地址是你的键盘mac地址
[bluetooth]# trust 01:02:03:04:05:06 把键盘设置为可信设备
[bluetooth]# connect 01:02:03:04:05:06 进行对接
显示yes就对接成功了。
补充:以下内容针对罗技K系列蓝牙,如k380这种可以对接多个蓝牙设备的
这类设备有多个蓝牙服务,但是mac地址只有一个
因此,如果不是默认连接的linux主机,则每次都需要重新去连接。也就是第一次配对成功之后,每次power on一下,然后scan on,然后键盘切换到对应的F2或者F3。具体原因我也不明白为什么。
如果是一对一的蓝牙键盘,就不会出现这个问题。
运行hciconfig查看蓝牙信息,
运行hcitool dev可以看到我们的蓝牙设备的硬件地址
运行hcitoo --help 可以查看更多相关命令
然后我们激活它:sudo hciconfig hci0 up
然后我们开始扫描了:hcitool scan
运行rfcomm --help 可以查看用法
接着我们连接它:sudo cat /dev/rfcomm0
自从安装了Deepin Linux,并 采用自己编译的内核 后,笔者的ThinkPad X200笔记本体验可谓是上升了一个非常重要的层次。后来有一天,笔者想用蓝牙耳机听音乐,然而在使用过程中发现,这台笔记本虽然自带蓝牙,屏幕下的蓝牙指示灯一直点亮着,系统中却看不到与蓝牙有关的设置选项。
出现这样的问题,多半就是因为系统中对蓝牙的支持没有启用,主要包括系统组件和内核两个层面。下面把我的经验总结如下。
默认地,Deepin并没有在系统中装上蓝牙组件,须用户手动安装。在终端中运行:
其中, bluetooth 是Linux蓝牙的核心组件,而 blueman 则是基于GTK+的一个全功能蓝牙管理器。把它们一齐装上,即可为Deepin启用全面的蓝牙支持。
笔者本以为安装了蓝牙组件后,蓝牙功能就能正常使用(因为之前在解决WLAN问题时,WLAN驱动未配置的情况下无线网卡灯是不会亮的,然而蓝牙灯始终会常亮),但是当打开蓝牙管理器时,竟然报错,提示蓝牙服务未启动。这不得不让我想到,内核中的蓝牙支持是否没有启用。
果不其然。在内核源码目录下运行 make menuconfig ,打开内核配置界面,依次对内核进行以下配置。
内核中的蓝牙选项位于【Network Settings】 -- 【Bluetooth subsystem support】。先选中【Bluetooth subsystem support】,然后按”Y“,勾选它。
【Bluetooth subsystem support】中有子菜单,按回车进入,如下所示:
其中有几个选项,控制特定类型蓝牙设备协议的支持,一般全部启用。它们包括:
最为重要的一步,就是将蓝牙适配器驱动编译入内核当中。 进入最下方子菜单【Bluetooth device drivers】,如下所示:
菜单中根据接口和特定型号设备,列出了相应的支持选项,有些选项在勾选后还会展开新的选项。典型的接口有USB、SDIO、UART,按需要勾选。
笔者X200笔记本的蓝牙适配器是Broadcom BCM2045B,走的是USB通道,因此先勾选【HCI USB driver】,随后会在该项下面出现三个新的选项,再进一步勾选【Broadcom protocol support】。不过,在得知适配器信息之前,笔者拿捏蓝牙适配器可能也走了UART通道,所以也将【HCI UART driver】勾上,再进一步勾选下面的【Intel AG6XX protocol support】。但实际使用时发现,X200的蓝牙适配器的确走的是USB而非UART。若不能确定自己的蓝牙适配器类型,可以一并选上,也不占用太多空间。
上述配置完成后,按左右方向键选择”Save“,保存内核配置,然后选”Exit“退出。使用下面的命令重新编译内核并安装:
重启后,蓝牙功能即被激活。
在内核中启用蓝牙支持,并在系统中安装蓝牙组件后,Deepin发生了翻天覆地的变化。Deepin下蓝牙的体验非常出色。
Blueman管理器默认开机启动,会在托盘区域出现一个蓝牙图标,在其中可以很方便地管理蓝牙设备。
在Blueman管理器中可以搜索到各种蓝牙设备,包括各种手机、电脑,以及笔者的蓝牙耳机。与蓝牙耳机配对后,Deepin即刻将声音通过蓝牙进行播放,无需再进行进一步的配置,尤其方便。此外,Blueman还有其他有趣的玩法,比如文件传输、浏览设备文件,其中对设备文件的浏览功能与当年的MTK功能机类似。
以X200为代表的ThinkPad早期机型有一项设计非常出彩,就是它屏幕下的灯条,系统运行状态一目了然。其中正包括了蓝牙指示灯,当有数据传输时(如正使用蓝牙音频),指示灯会闪烁,如此就能知道蓝牙设备是否正常工作。可谓匠心。
要想让使用Deepin的笔记本支持蓝牙,需要做两项工作——
由此,Deepin下设备的价值就能被进一步挖掘,体验自会更上一层楼。
1,开启手机蓝牙
2,运行hcitool scan,找到自己的手机,记住蓝牙地址
3,sdptool browser 并将输出导入文件中。
4,找到sdptool输出中的Service Name: Dial-up Networking
其中有Channel:记住这个数字,比如,我的是4.
5,编辑/etc/bluetooth/rfcomm.conf,填写:
rfcomm0 {
bind yes;
device 蓝牙地址;
channel 上面的rfcomm Channel;
comment "Phone Dun Connection";
}
6,重新启动bluetooth服务,/etc/rc.d/init.d/bluetooth restart
###############配置kppp######################
7,配置kppp帐号
a,在主界面,点击"配置"
b,在"帐户"页,点击"新建",选择"手工设置",会弹出一个对话框
c,在"拨号"页,"连接名称",随便填写,比如GPRS,然后点"添加",填入电话号码"*99***1#"
d,点击确定,完成配置。
8,配置"调制解调器"
a,切换到"调制解调器"页,选择"新建"
b,调制解调器名称随便填写,比如Phone.
c,设备选择为/dev/rfcomm0
d,确定
9,拨号,直接在主界面点击"连接"即可。
###################配置wvdial##################
将以下内容写入/etc/wvdial.conf
[Dialer gprs]
Modem = /dev/rfcomm0
Phone = *99***1#
Username = cmnet
Password = cmnet
然后,wvdial gprs即可。
他不会自动更新/etc/resolv.conf,可以把/var/run/ppp/resolv.conf拷贝到/etc
一,蓝牙存储设备
蓝牙适配器: ISSC芯片, USB接口(市面上还有其他的一些品牌,大多没有问题)
蓝牙手机:索爱T628
蓝牙耳机:Jabra BT250(大陆地区型号是FS258,大概照顾中国人对BT的特殊理解和258的吉利数字)
1,加载蓝牙适配器
插入USB口之后,可以使用lsusb命令,看到:
Bus 004 Device 003: ID 1131:1001 Integrated System Solution Corp.
这是,运行hciconfig可以看到:
hci0: Type: USB
BD Address: 00:11:67:02:1A:03 ACL MTU: 678:8 SCO MTU: 48:5
DOWN
RX bytes:142289 acl:884 sco:0 events:823 errors:0
TX bytes:13302 acl:494 sco:0 commands:151 errors:0
运行:
hciconfig hci0 up
可以激活借口(这一步不做,hcitool scan无法运行)
3,配置bluez
默认的配置文件放在/etc/bluetooth目录
hcid.conf和pin不需要修改,安全方式已经被设置成auto,这是为了方便连接,用户可以自己修改,推荐不做修改,以防止有些设备连接不上。
4,重启bluetooth服务。
/etc/rc.d/init.d/bluetooth stop
/etc/rc.d/init.d/bluetooth start
5,扫描设备
运行hcitool scan可以得到:
Scanning ...
00:01:EC:0C:D2:00 Tree's T628
6,修改配置文件:
修改/etc/bluetooth/rfcomm.conf
将里面的:
device 11:22:33:44:55:66;
修改成hcitool scan的结果,也就是:
device 00:01:EC:0C:D2:00
保存退出。
7,创建设备:
运行
rfcomm_create_dev。
8,添加通道:
sdptool add --channel=1 DID SP DUN LAN FAX OPUSH FTP HS HF SAP NAP GN PANU HID CIP CTP A2SRC A2SNK SYNCML NOKID PCSUITE SR1
后面的参数不一定被支持,但是以防有些服务没有被打开,所以,干脆全部打开了。
rfcomm bind /dev/rfcomm0 电话的地址 通道(在rfcomm.conf中配置)
这里的命令应该写成:
rfcomm bind /dev/rfcomm0 00:01:EC:0C:D2:00 1
9,连接手机:
hcitool cc 电话的地址
也就是
hcitool cc 00:01:EC:0C:D2:00
这时候,可以看到手机上的蓝牙连接呈联通状态。
10,从计算机发送文件:
obex-send abc.jpg
操作系统会弹出提示框,让你选择要发送的目标。
同时可以看到手机会弹出提示框,询问是否接受文件。
11,手机的配置:
需要在手机上进行一下配置:
连接-蓝牙-匹配装置-添加装置。
会自动扫描到PC上的适配器。
如果需要填入识别码就填写123。上面已经设置了。
这时候,可以看到手机已经成功的添加蓝牙装置。
12,从手机发送文件。
在PC机上启动obex-server,会看到系统托盘出现一个小图标。
完成上面的工作后,可以进入手机的:
多媒体-我的影集
选择一张图片。
然后,“发送”-“通过蓝牙”
看到有刚才扫描到的蓝牙适配器。
然后,就可以发送文件了。
13,使用软件管理手机信息。
参考gnokii软件的文档
二、蓝牙耳机。
1,同时按住jabra 250上面的“电话键”和“音量增大键”,大约8秒,看到蓝灯常亮
1,扫描耳机,得到bdaddress
hcitool scan
3,配置工作:
modprobe snd_bt_sco
hciconfig hci0 void 0x0060
btsco bdaddress (这里的bdaddress就是扫描出来的结果)
btsco运行后,会弹出对话框,要求输入耳机的pin,jabra 250为0000,可以在说明书上找到。
4,建立联接后,设备被映射成/dev/dsp1。
以beep为例,
插件-输出,选择使用alsa驱动,点开“首选项”,音频设置部分就可以看到btsco:hw0,1之类的信息,选择这个即可。
然后播放一首歌,尝试一下无线的快乐吧。
然后适当的配置你所要使用的播放器之类的就可以了。