热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

在Linux系统中征服蓝牙

在Linux系统中征服蓝牙--Linux通用技术-Linux技术与应用信息,下面是详情阅读。
本文是本人在ubuntu下安装使用蓝牙耳机的笔记。

蓝牙的内核支持不在本文讨论范围,系统的默认配置已满足要求。有兴趣的可以看参考资料中的相关文章。

先来看一下涉及到的各个软件包。

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;
# # Description 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 Descriptor 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 Descriptor 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 Descriptor 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 Descriptor 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使用蓝牙耳机呢?

依次点Tools>>Options>> Sound Devices;

在audio system to use处选择ALSA;

把下面所有的都选成Bt Headset。

如果安装了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

协助诊断。
推荐阅读
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 可能原因是需要dash执行输入:sudodpkg-reconfiguredash并在出现的界面选择no或 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • 本文介绍了在Docker容器技术中限制容器对CPU的使用的方法,包括使用-c参数设置容器的内存限额,以及通过设置工作线程数量来充分利用CPU资源。同时,还介绍了容器权重分配的情况,以及如何通过top命令查看容器在CPU资源紧张情况下的使用情况。 ... [详细]
  • 本文讨论了在Linux系统中,使用chown命令将django项目目录下的static目录的拥有者从root改为eureka的问题。作者尝试了多种命令,包括chown和sudo chown等,但都没有成功修改拥有者。文章提供了相关目录的权限信息,并补充了项目所在磁盘和操作系统的信息。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • 在ubuntu服务器上安装vscode,但是目前使用的方法都无法成功。第一次安装经历:安装完anaconda后有自动安装vscode的选项,输入yes后,没有出现错误,但是在终端输 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • STM32与FPGA的对比及学习建议
    本文对比了野火STM32F103指南针板和Xilinx的PYNQ-Z2板(ZYNQ-7020),介绍了野火STM32F103指南针板的学习资料和讲解视频的详细程度,建议初学者学习野火的资料。同时,介绍了STM32开发所用的Keil程序和C指针的重要性。对于ZYNQ-7020的开发,提到了其自带的Linux、Ubuntu18.4系统以及使用SD卡烧入镜像的方法。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • 本文介绍了如何在使用emacs时去掉ubuntu的alt键默认功能,并提供了相应的操作步骤和注意事项。 ... [详细]
  • 本文介绍了在Ubuntu下制作deb安装包及离线安装包的方法,通过备份/var/cache/apt/archives文件夹中的安装包,并建立包列表及依赖信息文件,添加本地源,更新源列表,可以在没有网络的情况下更新系统。同时提供了命令示例和资源下载链接。 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • 本文介绍了在Web应用系统中,数据库性能是导致系统性能瓶颈最主要的原因之一,尤其是在大规模系统中,数据库集群已经成为必备的配置之一。文章详细介绍了主从数据库架构的好处和实验环境的搭建方法,包括主数据库的配置文件修改和设置需要同步的数据库等内容。MySQL的主从复制功能在国内外大型网站架构体系中被广泛采用,本文总结了作者在实际的Web项目中的实践经验。 ... [详细]
author-avatar
我并没有你们想象P的坚强
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有