bluetooth - 蓝牙中的 SCO 环回

标签 bluetooth fedora bluez

<分区>

描述:

我有一个带蓝牙功能的小型内部设备。目前,其他设备连接到那个盒子。我们在我们的盒子里播放音乐,并通过蓝牙在连接的设备上播放它。我们用 “aplay -D btheadset”命令播放音乐。

要求:
我想知道我sco loopback是什么?以及如何检查我的蓝牙是否支持它?

我的调查:
我所知道的是我们可以通过 SCO 链接或 ACL 流式传输音乐。我如何确定它的 SCO?我对环回没有任何想法。

附加信息: 该应用程序使用 Bluez 库向固件/硬件发送命令,我们广泛使用 HCItool。

操作系统: 软呢帽。

任何帮助都会对我们有益。 谢谢

最佳答案

SCO 代表面向同步连接。 SCO 链路主要为音频设计,并为数据包到达提供专用时隙。这就是它适合音频的原因(记住 - BT 是基于数据包的传输)。

SCO Loopback 是一个为自身播放音频的设备,需要更好的描述。就其本质而言,我怀疑这是否可能。不过,我认为您想要的是 SCO 链接

现在,当一个设备发起与另一个设备的SCO连接时,它必须首先通过发送ACL数据包来发起连接。这是为了让两个设备都知道对方。

ACL 是面向主从的。这意味着两个设备都不期望任何特定帧中的数据包。

现在,关于确保在SCO模式下播放:
这很可能已经是这种情况。现在我们正在使用更高质量的音频,BT 设备已经变得非常依赖于固定时间间隔的恒定数据包流。 SCO 链接是确保这一点的好方法。

编辑:This是对SCO的考验。任何不支持它的设备都将被跳过。
Edit2:在 Fedora 中,禁用 <*>SCO links support (CONFIG_BT_SCO) (很抱歉,我不知道 Fedora 中要禁用的参数)并查看您的工作设备现在是否出现故障。

至于将音频文件传入和传出设备,设备是否能够播放自己的音频?如果是这样,将其挂载为 USB 设备(记住,蓝牙使用 USB 总线(我认为))

Emerge 或 apt-get bluez-utils 和 obexfs。应该将所有其他库作为依赖项拉取。

#emerge bluez-utils obexfs

像这样修改/etc/bluetooth/hcid.conf

options {
autoinit yes"
security user
pairing multi
pin_helper /usr/bin/bluepin
}
device {
name testname
class 0x3e0100
iscan enable
pscan enable
lm accept
lp rswitch,hold,sniff,park 
}

加载模块:

# modprobe fuse
# modprobe bluetooth
# modprobe ehci-hcd
# modprobe uhci-hcd
# modprobe hci_usb
# modprobe l2cap
# modprobe rfcomm

激活BT,启动,获取设备MAC

# echo enable >/proc/acpi/ibm/bluetooth
# /etc/init.d/bluetooth start
# hcitool scan

并安装你的设备:

# mkdir /mnt/player
# mount -t fuse "obexfs#-b<MAC address> -B6" /mnt/player

如果您想要一个更加用户友好的界面,请尝试启动
kbtobexclient
并在位置放
obex://[00:01:02:03:04:05]

希望这能满足您的要求。

关于bluetooth - 蓝牙中的 SCO 环回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24651750/

相关文章:

linux - Caffe编译失败: make: *** [. build_release/src/caffe/data_transformer.o] 错误1

android - 尽管默认为 1234 或 0000,我们能否在 Android 中以编程方式更改蓝牙密码?如果是,如何?

Android - Activity 之外的 startActivityForResult?

tomcat6 - 我不明白 #service tomcat6 status 的结果

node.js - BLE外设: scanning while connected

bluetooth-lowenergy - BLE Smart 4.2 自动化 - 如何绕过安全层(如果可能)[用于测试自动化]

Linux,BlueZ,启动隐藏蓝牙连接

ios - 在核心蓝牙框架中创建可写特性的问题

BluetoothAdapter.isEnabled() 上的 Java NullPointerException

linux - 在 BASH 中,如何从使用 HTML &lt;textarea&gt;&lt;/textarea&gt; 编写的文件中存在的变量替换\r