偷看干草
我对蓝牙和它的内部工作原理比较陌生,还在努力理解其中的一些概念和过程。我的问题与蓝牙协议栈有关。
我知道在操作系统端有一个蓝牙协议栈,比如Linux Bluez,Windows,Androids Bluedroid等等……但是,外围设备是否在自身内部实现了堆栈?例如,我将蓝牙鼠标连接到Linux系统,当然,Linux实现了Bluez堆栈,它们实现了蓝牙堆栈吗?
我正在尝试理解在这种情况下,哪种设备将实现安全性,是带有Bluez的Linux还是鼠标外围设备。
谢谢
发布于 2018-07-03 19:38:12
是的,但不同的是,与Linux或android等操作系统中的蓝牙堆栈相比,外围设备不会支持所有的配置文件和功能。
蓝牙是一种无线协议。协议是要遵循的规则的程序或系统。因此,两个设备应该遵循相同的通信协议。如果其中一台设备未遵循所需的协议,则另一台设备无法与其通信。这就像是两个人之间的共同语言。为了遵循这些协议,所有设备都应该有堆栈。蓝牙鼠标和键盘也将有蓝牙堆栈。
蓝牙分为核心协议和profiles。所有扫描、配对等设备都需要核心和一些配置文件,例如GAP、GATT。一些配置文件用于特定用例。键盘和鼠标是HID配置文件。对于流媒体HiFi音频,它是A2DP。对于语音通信,它是HFP。由于内存和成本的限制,每个外围设备将仅实现其使用情形所需的配置文件。
操作系统通常会实现所有配置文件,因为它需要连接到大多数外围设备。例如A2DP用于连接蓝牙耳机,HID/HOGP用于连接鼠标,SPP/OBEX用于通过蓝牙进行文件传输。
BREDR中的GAP和BLE中的SMP实现了安全性。这些都在所有设备中实现。
蓝牙协议栈也有不同的实现方式。有些地方它完全是在蓝牙控制器中实现的(大部分都是在单芯片上应用程序),但有些地方它是由主机CPU(操作系统中)和蓝牙控制器(固件中)分开实现的。Bludroid和Bluez是运行在主机CPU(在HCI之上)的上层部分。在连接到设备的蓝牙控制器中,将运行堆栈的较低部分(在HCI之上)。
开始学习蓝牙的最好地方是Bluetooth SIG website
https://stackoverflow.com/questions/49353372
复制相似问题