蓝牙5.2与LEAudio深度解析:开启物联网音频新时代

需积分: 50 66 下载量 118 浏览量 更新于2024-07-15 1 收藏 1.3MB PDF 举报
"本文主要解读蓝牙5.2协议的新特性,特别是LEAudio,以及Enhanced ATT的改进。蓝牙5.2的核心规范引入了LEAudio,它不仅支持连接和广播状态下的立体声,还通过LC3编码提升音质,降低延迟,预示着蓝牙在物联网时代的崭新发展。Enhanced ATT在蓝牙协议栈中对MTU进行了优化,允许动态调整,提高了数据传输效率。" 蓝牙5.2协议的发布是蓝牙技术的一次重大升级,其中LEAudio的引入是对蓝牙音频性能的一次革命性提升。LEAudio不仅支持在连接状态下提供立体声音频,还能在广播模式下工作,这意味着可以实现一对多的音频传输,比如无线耳机分享或者公共广播系统。它引入了新的低复杂度通信编码标准LC3,这一编码器能在较低比特率下保持高质量音频,降低了对电池寿命的影响,同时也显著减少了音频传输的延迟,提升了用户体验。 此外,LEAudio的另一大亮点是支持蓝牙音频的多种应用场景,如助听器、无线麦克风和音频流服务等,这极大地拓宽了蓝牙在医疗、教育和娱乐等领域的应用潜力。 在蓝牙协议栈的改进方面,Enhanced ATT(EATT)是蓝牙5.2中的一个重要变化。传统的ATT层与L2CAP层的MTU(最大传输单元)是固定的,而在EATT中,这一限制被打破。EATT允许在连接建立后动态调整ATT和L2CAP之间的MTU,不再需要一对一的对应关系。这意味着数据处理变得更加灵活,可以根据实际需求调整数据包大小,提高数据传输效率,减少等待时间,从而优化整体的蓝牙设备通信性能。 EATT的另一个改进是支持并发处理,不再按照顺序处理不同业务的MTU,这将使数据传输更加高效,特别是在需要快速响应和高数据吞吐量的应用场景下,如实时游戏或高质量音频传输,这些改变将显著提升蓝牙设备的性能和用户满意度。 蓝牙5.2协议通过引入LEAudio和Enhanced ATT等新特性,不仅提升了音频体验,也增强了蓝牙在物联网中的连接效率,为蓝牙技术的未来发展奠定了坚实基础。对于开发者和制造商来说,这些更新提供了更多创新和优化产品的机会,同时也为消费者带来了更优质、更高效的无线音频体验。
2021-07-21 上传
ble audio补丁原理是利用hidraw节点捕捉协议栈发送的语音数据,目前Android Blueroid将ble语音数据和按键信息通过hid发送出去,通过建立hidraw节点,可以从中捕捉到语音数据。目前通过ble hal实现从hidraw中读取遥控器语音数据,在Android框架层上就通过配置文件将ble hal导入到音频框架中,并通过绑定Android原生已有的耳麦设备来完成audio音频策略选择,通过apk检测ble连接状态,通知audio服务耳麦设备的状态就可以使得录音通路切换至ble hal,实现从ble获取录音数据功能。 打补丁前最好使用干净的环境,不要有别家方案ble补丁,否则可能会有不兼容问题。 补丁如若不能使用首先检查节点是否存在和其权限,正常节点权限如下: ls -l /dev/hidraw* crw-rw---- 1 system audio 241, 0 2018-12-18 13:42 /dev/hidraw0 audio用户组有读写权限。 2、如果selinux模式为Enforcing,可以通过logcat搜索avc关键字。有如下类似提示则为异常,提示进程没有权限,检查sepolicy是否设置正常: avc: denied { read } for name="/" dev="tmpfs" ino=6145 scontext=u:r:mediaserver:s0 tcontext=u:object_r:device:s0 tclass=dir permissive=0 //Android 5.0和6.0版本,audio hal被mediaserver进程加载 avc: denied { read } for name="/" dev="tmpfs" ino=8125 scontext=u:r:audioserver:s0 tcontext=u:object_r:device:s0 tclass=dir permissive=0 //Android 7.0版本,audio hal被audioserver进程加载 avc: denied { read } for name="hidraw" dev="sysfs" ino=16332 scontext=u:r:hal_audio_default:s0 tcontext=u:object_r:sysfs:s0 tclass=dir permissive=0 //Android 8.0和9.0版本,audio hal被android.hardware.audio@2.0-service进程加载 3、检查audio的配置,打上patch后,首先确认小机上文件是否有修改到,目前文件可能位于/vendor/etc或/system/etc目录下,其中/vendor/etc下的配置文件是优先解析的。确保文件无误后,通过dumpsys media.audio_policy查看ble hal是否正常加载。 以下是相关说明: AudioPolicyManager: 0xf20c5200 Command Thread: 0xf20af140 Tones Thread: 0xf20af020 ... - Available input devices: Device 1: - id: 3 - type: AUDIO_DEVICE_IN_BUILTIN_MIC - Profiles: Profile 0: - format: AUDIO_FORMAT_PCM_16_BIT - sampling rates:8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 - channel masks:0x000c, 0x0010 Device 2: - id: 20 - type: AUDIO_DEVICE_IN_WIRED_HEADSET //对应的数值是0x80000010 - name: RemoteDM1204 - Profiles: Available input devices指示当前可用设备,目前ble hal是和AUDIO_DEVICE_IN_WIRED_HEADSET设备绑定,如果需要录音走ble hal,AUDIO_DEVICE_IN_WIRED_HEADSET设备必须出现在可用设备中,如果没有,就可能是补丁中hidaudio.apk的问题。 HW Modules dump: ... - H