一文看懂BT5.2 LE Audio新特性

------------------------------------------------------------------------------------------------------------

文章版权归为微信公众号 Wireless Inside (前身  无线技术联盟),转载请注明出处.

XCODER.

技术博客:www.iotbzw.com

------------------------------------------------------------------------------------------------------------

目录

一. BT 5.2 LE AUDIO市场

二. BT 5.2 LE Audio传输原理

三. BT5.2 基于LE连接的同步数据流传输

四. BT5.2 基于无连接广播数据流同步传输

五. BT5.2 LE AUDIO新特性小结:

. 后记


蓝牙技术联盟(Bluetooth Special Interest Group,简称SIG)在拉斯维加斯举办的CES2020上发布了新一代蓝牙技术标准BT5.2,包括LE ISOCHRONOUS,LE PWOER CONTROL, LE ATTRIBUTE PROTOCOL,今天只谈LE ISOCHRONOUS,其他特性详解后续会持续更新,记得点击关注公众号哟。

一. BT 5.2 LE AUDIO市场

众所周知,BT5.2之前,蓝牙音频传输采用经典蓝牙A2DP模式进行点对点数据传输,现在低功耗音频LE Audio的出现,打破了经典蓝牙垄断音频市场的地位。在2020CES展会上,SIG官方宣布BT5.2新的标准支持基于连接的一主多从音频流应用,比如TWS耳机,多房间音响同步,以及基于广播数据流的传输,可广泛用于候机室、体育馆、会议厅、电影院等有公共屏幕音频接收场合。可以说蓝牙5.2的出现,既打破了Apple tws专利权,又给多声道同步音频传输提供了支持。

Caption

二. BT 5.2 LE Audio传输原理

蓝牙LE同步通道功能是一种使用蓝牙LE在设备之间传输数据的新方法,叫LE Isochronous Channels 。它提供了一种算法机制,可以确保多个接收器设备能同步接收到主设备数据。其协议规定蓝牙发射机发送的每帧数据会带有一个时间期限,从设备在时间窗之后接收到的数据将被丢弃。这意味着接收器设备仅接收有效时间窗口内的数据,从而保证多个从设备接收数据的同步。

为了实现该新功能,BT5.2在协议栈Controller和Host之间增加ISOAL同步适配层(The Isochronous Adaptation Layer),提供数据流分段,重组服务。

Caption

ISOAL层将上层LE服务数据SDU(Service data unit)转换为基带传输需要的协议数据PDU(protocol data unit),反之亦然。ISOAL控制器通过支持的1M,2M,编码PHY接受或生成SDU,每个SDU的长度最大为最大长度(Max_SDU)。使用HCI ISO数据包将SDU传输到上层或从下层传送到空中。

Caption

针对于LE连接模式和非连接模式的应用场景需求,BT5.2 LE AUDIO协议规定了两套数据流传输框架模型。

三. BT5.2 基于LE连接的同步数据流传输

面向连接的同步信道使用LE-CIS(LE连接的同步数据流,LE Connected Isochronous Stream)传输方式,支持双向通信。 在LE-CIS传输中,规定时间窗内未传输的任何数据包将被丢弃。面向连接的同步信道数据流传输规定设备之间提供点对点同步通信。 

Caption

Connected Isochronous Groups (CIG)模式可以支持一主多从的多连接数据流传输。每个组可以包含多个CIS实例。 在一个小组内,对于每个CIS,都有一个时间表发送和接收时隙,称为事件和子事件。

Caption

每个事件的发生间隔,称为一个ISO间隔,时间范围规定在5ms至4s,每个事件被划分进入一个或多个子事件,在基于同步数据流传输模式的子事件中,主机(M)发送一次与从机(S)回应为如图所示

Caption

四. BT5.2 基于无连接广播数据流同步传输

无连接同步通信使用广播同步(BIS Broadcast Isochronous Streams )传输方式,只支持单向通信。接收机同步需要先侦听主机AUX_SYNC_IND广播数据,广播中包含一个称为BIG Info的字段,该字段包含的数据将用于与所需的BIS进行同步。新的LEB-C广播控制逻辑链路用于LL层链路控制,例如信道更新更新,LE-S(STREAM)或者LE-F(FRAME)同步信道逻辑链路将用于用户数据流和数据。 BIS方式最大的优势可以将数据同步传输到多个接收机。

Caption

Broadcast isochronous stream and group模式支持非连接的多接收机数据流同步传输,可以看到它和CIG模式最大的不同在于该模式只支持单向通信。

Caption
Caption

五. BT5.2 LE AUDIO新特性小结:

  • BT5.2新添加控制器ISOAL同步适配层支持LE AUDIO数据流传输。

  • BT5.2支持新传输体系结构以支持面向连接和无连接同步通信。

  • 有一种新的LE安全模式3,该模式基于广播方式,允许在广播同步组中使用数据加密。

  • HCI层添加了许多新命令和事件,这些命令和事件允许同步需要的配置和通信。

  • 链路层增加了新的PDU,包括连接的同步PDU和广播同步PDU。 LL_CIS_REQ和LL_CIS_RSP用于创建连接,控制同步流。

  • LE AUDIO 支持 1M, 2M, CODED 多种PHY速率。

6. 后记

从BT5.2规范可见,LE AUDIO功能是纯软件协议栈层面的更新,和需要硬件支持的BT5.1的CODER PHY, LE 2M PHY不一样,也就是说,各大原厂可以直接通过更新sdk即可支持蓝牙LE AUDIO功能,这无疑是个振奋人心的消息。

「Wireless Inside 微信公众号 (原无线技术联盟微信公众号) 微信交流群」
助力IoT行业朋友打通短距离无线通信圈的行业小社区。

集高通,Broadcom,TI,Nordic,Dialog,ST,Silicon lab, NXP, AMBIQ等蓝牙芯片原厂技术,市场,销售

集华为,MTK,泰凌微,凌思微,盛源达,ASR,华普微,中颖电子,百瑞互联,Realtek 国产芯片原厂技术,市场,销售

集Arrow,北高智,迅通,世强,利尔达,科通,全科等一线原厂代理商技术,市场,销售

集小米,华米,绿米,涂鸦,雅观,百度,阿里,Oppo,Vivo,京东互联网公司,品牌客户,方案公司技术,市场,销售,创始人

集蓝牙认证机构,被动器件,射频公司,以及SIG大佬

申请流程:

① 因群人数已超过限制人,请先微信扫描以下微信二维码或添加Xcoder微信号(blecoder),添加微信时请将您的个人信息进行备注(名字 公司 职位),以便登记,同时也欢迎同行和我进行交流。

② 由于需要我逐个邀请入群,所以请大家耐心等待!谢谢理解与支持!
 

衍生阅读:

从Nordic财报看低功耗蓝牙龙头老大的产业布局

Dialog 0.5美金BLE芯片DA14531背后的布局

苹果新手机低调的植入UWB技术,消费级UWB技术能否兴起?

2019年物联网无线市场供给侧观察

  • 18
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
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 halaudioserver进程加载 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 halAUDIO_DEVICE_IN_WIRED_HEADSET设备必须出现在可用设备中,如果没有,就可能是补丁中hidaudio.apk的问题。 HW Modules dump: ... - H
<h3>回答1:</h3><br/>Linux内核是操作系统的核心部分,它负责管理系统资源并维护系统的稳定运行。它主要由三部分组成:内存管理、进程管理和文件系统。内存管理负责管理系统的内存使用,包括分配和回收内存。进程管理负责管理系统中的进程,包括创建、撤销和调度进程。文件系统管理系统中的文件和目录。内核还提供了许多其他的功能,如网络协议栈和设备驱动程序。学习Linux内核需要有一定的编程基础和对操作系统原理的了解。 <h3>回答2:</h3><br/>Linux内核是操作系统的核心部分,主要负责管理计算机的硬件资源和提供系统调度、管理、安全与稳定性等核心功能。作为一个开源软件,Linux内核不断地得到开发者们的改进和完善,同时也成为了大量不同操作系统的基础。在本文中,我们将会讨论Linux内核的架构、进程管理、内存管理、驱动程序以及调试等一些基础概念。 架构 Linux内核的总体架构可以看做是分层结构。从最底层到最上面依次是: 硬件层(Hardware Layer):主要进行I/O操作和系统调用,以及一些I/O设备驱动。 内核层(Kernel Layer):主要负责内存和驱动管理。 进程管理层(Process Management Layer):负责进程、线程等程序的管理。 文件系统层(File System Layer):负责文件系统和存储设备的管理。 用户空间(User Space Layer):系统内重要的子系统,负责处理系统中进程的上下文切换、调度、同步与通信。 进程管理 内核使用进程对计算机的各项任务进行管理和调度。每个进程都有独立的内存空间,由内核进行分配和管理。进程的状态有“运行”、“阻塞”和“挂起”三种,它们的转换会受到各种条件和操作的影响,比如时间片、信号、资源的请求等。 内存管理 Linux内核采用虚拟内存管理的方式来管理内存。虚拟内存中,实际的物理内存被映射到虚拟地址空间中,每个进程都拥有独立的虚拟地址空间,这样就避免了进程之间的内存冲突。当进程需要访问虚拟地址空间中的某个内存页面时,内核会将其映射到物理内存中,并且决定在何时将其清空回收。 驱动程序 Linux内核中的驱动程序主要负责各种硬件设备的控制和管理。它们与内核紧密结合,可以通过内核函数或者系统调用来与硬件进行交互,完成一些特定的任务。Linux内核提供了丰富的驱动程序支持,包括网络设备、磁盘设备、USB设备、声卡、显卡等等。驱动程序的实现依赖于底层硬件的特性,因此需要不断更新和维护,以确保系统稳定性。 调试 调试是软件开发过程中的重要环节之一。Linux内核的调试主要通过打印信息、跟踪、性能度量等方式实现。内核中包括了许多内置的调试工具,如KDB (Kernel Debugger)、KGDB (Kernel GDB)、Ktrace、Sysprof等。调试时需要注意到内核会不断地占用CPU资源,给系统带来较大的压力,需谨慎使用。 通过以上的简要介绍,相信读者已经对Linux内核有了一个大致的了解。了解Linux内核的基础知识不仅可以帮助我们有效地设计、编写和调试软件,也可以进一步深入了解操作系统和计算机系统的工作原理。 <h3>回答3:</h3><br/>Linux内核是Linux操作系统最核心的部分,它提供了操作系统的基本功能和服务,例如文件管理、进程和内存管理等。本文将从六个方面来介绍Linux内核,帮助读者了解Linux内核的基本结构和功能。 一、内核基本结构:由多个模块构成,包括进程管理、内存管理、文件系统和驱动程序等。这些模块之间通过一系列的接口来进行通信和协作,从而提供基本的操作系统服务。 二、进程管理:进程是指正在运行的程序实例,进程管理模块负责创建、销毁和调度进程,以及提供进程间通信和同步等功能。 三、内存管理:内存管理模块负责分配和管理内存资源,包括虚拟内存管理、物理内存管理和缓存管理等功能。 四、文件系统:文件系统模块提供文件管理功能,可以将数据存储在硬盘上并进行读写操作,同时提供了文件访问控制和权限管理等功能。 五、驱动程序:驱动程序模块负责管理硬件设备,如网卡、显卡和打印机等,可以与硬件设备进行通信和控制。 六、系统调用:系统调用是Linux内核对外提供的API,可以通过系统调用接口来访问内核提供的功能。例如,用户可以通过系统调用来创建进程、读写文件或打开设备等。 总之,Linux内核是操作系统的基础,它为上层应用和服务提供了基本的支持和保障。了解和理解Linux内核的结构和功能,可以帮助开发者更好地掌握Linux操作系统和编写高质量的软件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BLECODER

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值