环境:ubuntu 14.04

目标:arm板

使用IMX6的arm板,接了一个USB外接蓝牙,使用的是bluz 5.50版本协议栈,使用USB蓝牙连接蓝牙耳机,最终要能通过蓝牙耳机录音。

安装 bluez,这个软件包提供蓝牙的协议栈

安装 bluez-utils, 其提供 bluetoothctl 工具

插入USB蓝牙后之后,可以使用lsusb命令查看USB设备

运行hciconfig可以看到USB蓝牙

第一步,先确保pulseaudio已经启动

# 查看pulseaudio是否在运行
pgrep -af pulseaudio
# 或者
ps -A |grep pulseaudio
# 如果没运行以前要先启动pulseaudio,如果连接蓝牙耳机时,就会直接返回连接失败
# 参数说明:--start   Start the daemon if it is not running
# pulseaudio -h    可以查看帮助
/usr/bin/pulseaudio --start#
pulseaudio --kill

PulseAudio 5.x 开始默认支持 A2DP。 确保这些包已经安装Install: pulseaudio-alsa, pulseaudio-bluetooth, bluez, bluez-libs, bluez-utils, bluez-firmwareAUR. 如果没有安装 pulseaudio-bluetooth,蓝牙设备在配对完成后,连接会失败,而且你不会得到任何有用的提示。

第二步,启动bluetoothd服务

# 我使用的arm板是通过如下命令启动bluetoothd
/etc/init.d/bluetooth start

/etc/init.d/bluetooth文件内容如下:

#!/bin/shPATH=/sbin:/bin:/usr/sbin:/usr/bin
DESC=bluetoothDAEMON=/usr/libexec/bluetooth/bluetoothd# If you want to be ignore error of "org.freedesktop.hostname1",
# please enable NOPLUGIN_OPTION.
# NOPLUGIN_OPTION="--noplugin=hostname"
NOPLUGIN_OPTION=""
SSD_OPTIONS="--oknodo --quiet --exec $DAEMON -- $NOPLUGIN_OPTION"test -f $DAEMON || exit 0# FIXME: any of the sourced files may fail if/with syntax errors
test -f /etc/default/bluetooth && . /etc/default/bluetooth
test -f /etc/default/rcS && . /etc/default/rcSset -ecase $1 instart)echo "Starting $DESC"if test "$BLUETOOTH_ENABLED" = 0; thenecho "disabled. see /etc/default/bluetooth"exit 0fistart-stop-daemon --start --background $SSD_OPTIONSecho "${DAEMON##*/}";;stop)echo "Stopping $DESC"if test "$BLUETOOTH_ENABLED" = 0; thenecho "disabled."exit 0fistart-stop-daemon --stop $SSD_OPTIONSecho "${DAEMON}";;restart|force-reload)$0 stopsleep 1$0 start;;status)pidof ${DAEMON} >/dev/nullstatus=$?if [ $status -eq 0 ]; thenecho "bluetooth is running."elseecho "bluetooth is not running"fiexit $status;;*)N=/etc/init.d/bluetoothecho "Usage: $N {start|stop|restart|force-reload|status}" >&2exit 1;;
esacexit 0# vim:noet

第三步,使能USB蓝牙设备

hciconfig hci0 up

可以试一下扫描蓝牙设备

# 可以使用如下命令扫描当前可见的蓝牙,不过似乎看到有人说这个命令有些过时,但是我觉得挺好用的
hcitool scan
# 使用l2ping可以像ping命令一样检查蓝牙是否能在线
# 蓝牙地址比如:E3:28:E9:24:21:07
l2ping 蓝牙地址
# sdptool browse查看蓝牙可用服务
sdptool browse E3:28:E9:24:21:07

第四步,使用bluetoothctl连接蓝牙耳机

# 进入bluetoothctl命令行
bluetoothctl
# 进入bluetoothctl命令行后,类似:[bluetooth]#
# Controller代表arm板上的蓝牙设备,Device代表蓝牙耳机
# 按如下步骤初始化蓝牙设备,并连接蓝牙耳机
# 查看帮组
help
#
power on
agent on
default-agent
# 启动扫描
scan on
# 假如蓝牙耳机地址为:E3:28:E9:24:21:07
trust E3:28:E9:24:21:07
# 配对
pair E3:28:E9:24:21:07
# 连接
connect E3:28:E9:24:21:07# 查看蓝牙耳机信息
info E3:28:E9:24:21:07# 断开连接
disconnect E3:28:E9:24:21:07
# 不想自动连接上蓝牙耳机,可以删除配对信息
remove E3:28:E9:24:21:07

不出什么问题,则已经连接上蓝牙耳机了。

如果发现连接上了但是蓝牙耳机的音频用不了要做如下检查。

# 查看当前音频卡,是否有蓝牙的耳机,蓝牙耳机对应设备一般以蓝牙地址作为名称的一部分,
# 比如:name: <bluez_card.E3_28_E9_24_21_07>
pacmd list-cards
# 查看音频输入源,是否有蓝牙的耳机
pacmd list-sources
# 比如:name: <bluez_source.E3_28_E9_24_21_07>
# 如果发现有name: <bluez_sink.E3_28_E9_24_21_07.monitor>
# 但是没有bluez_source.E3_28_E9_24_21_07
# 说明蓝牙配置不对
# bluez_sink.E3_28_E9_24_21_07.monitor是不能用于录音的

蓝牙耳机设置设置如下类型:

a2dp_sink          -- High Fidelity Playback (A2DP Sink) (sinks: 1, sources: 0, priority: 10, available: yes)
headset_head_unit  -- Headset Head Unit (HSP/HFP) (sinks: 1, sources: 1, priority: 20, available: yes)
off                -- Off (sinks: 0, sources: 0, priority: 0, available: yes)

这里可选择"a2dp_sink"或"headset_head_unit"两种配置,其中"headset_head_unit"可以支持音频输入/输出,"a2dp_sink"只支持输出。

所以设置为headset_head_unit才能有蓝牙输入

# 修改配置为:headset_head_unit
pacmd set-card-profile bluez_card.E3_28_E9_24_21_07 headset_head_unit
# 查看可用于播放的音频设备
pacmd list-sinks
# 查看帮助
pacmd help
# 查看状态,包括默认输入输入音频,默认采样等
pacmd stat# 设置默认音频输出设备
pacmd set-default-sink bluez_sink.E3_28_E9_24_21_07
# 设置默认音频输入设备,默认麦克风
pacmd set-default-source bluez_source.E3_28_E9_24_21_07

参考:

https://wiki.archlinux.org/index.php/Bluetooth_headset_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

https://www.cnblogs.com/zjutlitao/p/9576589.html

https://wiki.archlinux.org/index.php?title=PulseAudio_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)&oldid=349911

http://blog.lujun9972.win/blog/2017/07/18/%E5%9C%A8archlinux%E4%B8%AD%E4%BD%BF%E7%94%A8%E8%93%9D%E7%89%99%E8%80%B3%E6%9C%BA/

https://blog.csdn.net/chenjk10/article/details/89283578

arm 使用bluetoothctl连接蓝牙耳机相关推荐

  1. 嵌入式linux开发板使用pulseaudio连接蓝牙耳机播放音频文件

    pulseaudio基于a2dp音频架构,其使用流程如下: 首先需要一直bluez5及pulseaudio,此处关于一直pulseaudio详见其他博客. 配置使用流程: 1.开启蓝牙设备 //此处与 ...

  2. win10连接蓝牙耳机_苹果手机蓝牙耳机无法连接怎么办?

    大家平时在使用苹果手机时,可能会遇到蓝牙耳机无法连接的情况.蓝牙耳机不能于手机连接,有多种因素,小编在这里为大家介绍一些常用解决无法连接蓝牙耳机的方法,希望可以帮到你. 重启设备 如果苹果手机和蓝牙耳 ...

  3. Linux学习之ARM开发板连接ubuntu18.04LTS及NFS相关配置

    Linux学习之ARM开发板连接ubuntu18.04LTS及NFS相关配置 第一步:在PC机安装Ubuntu18.04LTS 具体安装步骤参见上一篇文章 第二步:安装arm-linux-gcc交叉编 ...

  4. 联想蓝牙没有连接的地方计算机,联想笔记本连不上蓝牙怎么办 笔记本连接蓝牙耳机没声音解决方法...

    很多笔记本电脑用户使用的大多数都是知名品牌,联想是笔记本电脑中较为有名的,今天小编为大家带来的便是关于联想笔记本连接不了蓝牙的解决方法,相信有很多联想笔记本电脑用户遇到过,下面让我们看看教程了解下吧! ...

  5. windows 连接蓝牙耳机失败 解决方法

    windows 连接蓝牙耳机失败 解决方法 如果我们在windows7或windows10电脑中连接蓝牙却出现了连接失败的状况,这要怎么办呢,可能是我们没有打开电脑的蓝牙功能,这时我们点击打开蓝牙网络 ...

  6. win7笔记本蓝牙连接蓝牙耳机设备,无法播放音乐,听不见声音

    环景: 惠普笔记本 win7旗舰版 问题描述: win7笔记本蓝牙连接蓝牙耳机设备,无法播放音乐,听不见声音 解决方案: 先检查计算机管理,蓝牙相关服务是否开启. 卸载现在的蓝牙驱动安装相关计算机品牌 ...

  7. 电脑连接蓝牙耳机还是外放,输出设备只有扬声器怎么解决?

    1. 问题描述 电脑连接蓝牙耳机耳机后,声音依然外放,输出设备只有扬声器,添加输出设备也找不到蓝牙耳机. 2. 排查问题 右键计算机图标->管理->设备管理器->声音.视频和游戏控制 ...

  8. 台式机怎样连接连接蓝牙耳机?搜索不到蓝牙耳机?

    需要的设备: 1.usb蓝牙适配器 2.蓝牙耳机 详细步骤: 步骤1.把USB蓝牙适配器插到电脑主机的任意一个USB接口上: 步骤2.可以在电脑右下角看到蓝牙图标--右键打开[显示蓝牙设备],或者打开 ...

  9. win10系统怎么连接蓝牙耳机 旧时光 oldtimeblog

    很多装有win10的笔记本电脑都是有蓝牙的,那么怎么用蓝牙连接蓝牙耳机呢,让我们一起来看一下 装有win10的电脑,并且有蓝牙功能,或者使用了usb蓝牙接收器 蓝牙耳机 方法/步骤 点击开始,选择设置 ...

最新文章

  1. 毕业设计记录(二)配置mysql5.0数据库的问题
  2. linux下指数函数,用GeoGebra画指数函数图像、查看函数变化轨迹
  3. linux cut 命令(转)
  4. boost::hana::basic_tuple用法的测试程序
  5. PC817/TLP2309/TLP291/AQY280S主要参数对比
  6. android陀螺仪轨迹,陀螺仪轨迹法长距离管道测量精度实测分析
  7. GRUB中硬盘和分区编号,UUID
  8. linq学习笔记(1):c#3.0新特性(2)
  9. Kubernetes架构及相关服务详解
  10. pip install numpy 安装numpy失败
  11. WCF+SQL Server 2008 明源售楼系统项目解析
  12. vue使用百度地图 图标自定义 之 本地图标显示问题
  13. linux shell fflush,強制shell腳本fflush
  14. windows10下使用DNW下载
  15. rand、randn和randi的区别
  16. 正片叠底(Multiply)和滤色(Screen)是两种基本的混合模式
  17. Linux源码编译安装apache httpd2.4.48
  18. 计算机专业大学生应该买什么样的电脑?
  19. Kyro - To register this class use: kryo.register
  20. 成都c++语言青少年培训,成都小孩学信息学奥赛的好处-成都童程童美少儿编程培训金沙校区...

热门文章

  1. Unity 之 虚拟现实的UI制作和交互
  2. VUE项目打包(解决背景图片不显示问题)
  3. PC端酷狗音乐自带的皮肤获取方式
  4. 职称计算机考试如何复习,全国职称计算机考试复习方法详解(一次性过关秘籍...
  5. jquery电商分类导航js特效
  6. Fedora23下安装Fuji Xeron DocuPrint-M218-fw驱动
  7. DEFAULT.DTF问题
  8. [个人小记]什么是APT攻击
  9. 云片采用http(https)协议发送短信过程详解
  10. php获取汉字音调,PHP拼音去音调,遇到轻音(没有声调)怎么处理?