热门标签 | 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

协助诊断。
推荐阅读
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • Node.js在服务器上的多种部署策略
    本文探讨了Node.js应用程序在服务器上部署的几种有效方法,包括使用Screen、PM2以及通过宝塔面板进行简易管理。 ... [详细]
  • HTML前端开发:UINavigationController与页面间数据传递详解
    本文详细介绍了如何在HTML前端开发中利用UINavigationController进行页面管理和数据传递,适合初学者和有一定基础的开发者学习。 ... [详细]
  • 本文介绍了如何在不同操作系统上安装Git,以及一些基本和高级的Git操作,包括项目初始化、文件状态检查、版本控制、分支管理、标签处理、版本回退等,并简要提及了开源许可协议的选择。 ... [详细]
  • 如何在Mozilla Firefox中调整GIF动画的循环次数
    本文介绍了如何通过调整Mozilla Firefox的高级设置来控制GIF动画的播放次数,帮助用户根据个人喜好自定义浏览体验。 ... [详细]
  • 提升工作效率:掌握15个键盘快捷键
    在日常工作中,熟练掌握计算机操作技巧能够显著提升工作效率。本文将介绍15个常用的键盘快捷键,帮助用户更加高效地完成工作任务。 ... [详细]
  • 本文分享了作者在不同版本的Ubuntu系统上尝试编译VLC for Android的经历,包括遇到的技术难题及解决方案,旨在帮助开发者避免常见的编译问题。 ... [详细]
  • 在Ubuntu 16.10 (x86) 上安装 WordPress 4.7.115
    本文介绍如何在Ubuntu 16.10 (x86) 系统上安装WordPress 4.7.115,包括下载、解压、配置等步骤,确保安装过程顺利进行。 ... [详细]
  • 在 Ubuntu 22.04 LTS 上部署 Jira 敏捷项目管理工具
    Jira 敏捷项目管理工具专为软件开发团队设计,旨在以高效、有序的方式管理项目、问题和任务。该工具提供了灵活且可定制的工作流程,能够根据项目需求进行调整。本文将详细介绍如何在 Ubuntu 22.04 LTS 上安装和配置 Jira。 ... [详细]
  • 在Ubuntu 18.04上使用Nginx搭建RTMP流媒体服务器
    本文详细介绍了如何在Ubuntu 18.04上使用Nginx和nginx-rtmp-module模块搭建RTMP流媒体服务器,包括环境搭建、配置文件修改和推流拉流操作。适用于需要搭建流媒体服务器的技术人员。 ... [详细]
  • AcetoneISO:Ubuntu Linux下的全能虚拟光驱工具
    AcetoneISO 是一款功能强大的虚拟光驱软件,适用于 Linux 和 Mac 系统。它支持多种映像文件格式的挂载和转换,并提供丰富的文件管理功能。 ... [详细]
  • 本文介绍了在 Ubuntu 系统中通过终端打开各种图形界面应用程序的常用命令,包括系统设置、文件管理器和系统监视器等。 ... [详细]
  • 本文详细介绍了在 Ubuntu 系统上安装和配置 MySQL、Tomcat 和 JDK 的步骤。通过本文,您将了解如何顺利安装这些组件,并确保它们能够正常协同工作。 ... [详细]
  • Java中的引用类型详解
    本文详细介绍了Java中的引用类型,包括强引用、软引用、弱引用和虚引用的特点和应用场景。 ... [详细]
  • MySQL Administrator: 监控与管理工具
    本文介绍了 MySQL Administrator 的主要功能,包括图形化监控 MySQL 服务器的实时状态、连接健康度、内存健康度以及如何创建自定义的健康图表。此外,还详细解释了状态变量和系统变量的管理。 ... [详细]
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社区 版权所有