蓝牙协议分析(1)基本概念 蓝牙4.1,是一个大杂烩:BR/EDR沿用旧的蓝牙规范;LE抄袭802.15.4;AMP直接使用802.11。...1.蓝牙技术的概述 1.1 两种蓝牙技术:经典蓝牙(检称 BT)和低功耗蓝牙(简称BLE) 蓝牙协议包括两种技术:经典蓝牙(简称BT)和低功耗蓝牙(简称BLE)。...而蓝牙协议所描述的这些“逻辑实体”,不一定会和物理实体一一对应,如在实际应用中,Host和Bluetooth Application可能会位于同一个物理实体中(主控CPU),而Controller单独位于另一个物理实体中...2)蓝牙协议规定了两个层次的协议,分别为蓝牙核心协议(Bluetooth Core)和蓝牙应用层协议(Bluetooth Application)。...蓝牙核心协议关注对蓝牙核心技术的描述和规范,它只提供基础的机制,并不关心如何使用这些机制;蓝牙应用层协议,是在蓝牙核心协议的基础上,根据具体的应用需求,百花齐放,定义出各种各样的策略,如FTP、文件传输
当然一项技术如果想要广泛的流传下去并保证所有蓝牙设备间的兼容性,那必须要求各个实现蓝牙的设备遵循一个规则,参考网络协议结构,蓝牙也构建了自己的协议体系。...所以为实现这一目的,蓝牙sig小组有几个任务: 制定蓝牙技术规范,协调各国蓝牙使用的频段(有的国家蓝牙开放频段不一致) 蓝牙SIG制定了从底层到应用层的各种协议的具体要求,也制定了profile来规范如何使用应用层的协议来实现功能...其实意思就相当于类似网络协议模型有很多层各个层都有很多协议,蓝牙sig就是模仿网络协议制定了蓝牙各种协议。...2,蓝牙电缆替代协议:RFCOMM协议 3,蓝牙电话控制协议:电话通信协议TCS协议,AT命令集 4,蓝牙选用协议:PPP,obex,Vcard(卡片传输),Vcal(日历传输)等等。...蓝牙协议体系暂时就这么多,简单理解就是有一个叫做sig的组织,规定了一些蓝牙的基本协议,然后为了实现某个功能比如文件传输,你需要从这些协议中挑出需要用哪些协议,以及这些协议如何进行协作,于是文件传输的应用
前言 本文是蓝牙协议分析的第二篇文章,在“蓝牙协议分析(1)_基本概念”的基础上,从整体架构的角度,了解蓝牙协议的组成,以便加深对蓝牙的理解。 2....协议层次 蓝牙协议是通信协议的一种,为了把复杂问题简单化,任何通信协议都具有层次性,特点如下: 从下到上分层,通过层层封装,每一层只需要关心特定的、独立的功能,易于实现和维护; 在通信实体内部,下层向上层提供服务...蓝牙协议也不例外,其协议层次如下: 从OSI(Open System Interconnection)模型的角度看,蓝牙是一个比较简单的协议,它仅仅提供了物理层(Physical Layer)和数据链路层...但由于蓝牙协议的特殊性、历史演化因素等原因,其协议层次又显的不简单,甚至晦涩难懂(如上面图片所示的Physical Link、Logical Transport等)。...Profile是蓝牙协议的特有概念,为了实现不同平台下的不同设备的互联互通,蓝牙协议不止规定了核心规范(称作Bluetooth core),也为各种不同的应用场景,定义了各种Application规范,
上图是一个典型的蓝牙耳机应用场景。手机上的音频信息经过编码以后通过蓝牙协议被蓝牙耳机接收,经过解码以后,蓝牙耳机成功获取手机上的音频信息,然后再转化为振动被人耳识别。 这是一个典型的数字通信系统。...蓝牙耳机信号传输过程 对于典型的蓝牙耳机应用场景来说,信源就是PCM数据,信道编解码的方法由蓝牙协议来指定,信道即耳机和手机之间的电磁空间。...蓝牙协议规定所有的蓝牙设备都必须支持SBC编解码,并提供了其他一些可选的编解码方法,如AAC。由此可知,SBC和AAC、MP3类似,都是对音频数据进行编码的方法,目的都是数据压缩。...即经过SBC编解码以后,PCM数据发生了变化,这也是蓝牙耳机音质不是很好的一个原因。 SBC支持的采样率 包括44.1kHz、48kHz、32kHz、16kHz。
/configure --prefix=/opt/bluez/bluez-libs-3.36 --host=arm-linux --target=arm-linux CC=arm-linux-gnueabihf-gcc.../configure --prefix=/opt/bluez/expat-2.5.0 --host=arm-linux --target=arm-linux CC=arm-linux-gnueabihf-gcc.../configure --prefix=/opt/bluez/dbus-1.15.2 --host=arm-linux --target=arm-linux CC="arm-linux-gnueabihf-gcc.../configure --prefix=/opt/bluez/glib-2.26.1 --host=arm-linux --target=arm-linux CC="arm-linux-gnueabihf-gcc.../configure --prefix=/opt/bluez/bluez-utils-3.36 --host=arm-linux --target=arm-linux CC="arm-linux-gnueabihf-gcc
概述 主要介绍下蓝牙协议栈开发板跑传统蓝牙搜索AT指令以及上位机操作步骤,以及原理 一....第二篇:Transport层介绍,主要介绍蓝牙协议栈跟蓝牙芯片之前的硬件传输协议,比如基于UART的H4,H5,BCSP,基于USB的H2等 第三篇:传统蓝牙controller介绍,主要介绍传统蓝牙芯片的介绍...另外,开发板如下所示,对于想学习蓝牙协议栈的最好人手一套。...以便更好的学习蓝牙协议栈,相信我,学完这一套视频你将拥有修改任何协议栈的能力(比如Linux下的bluez,Android下的bluedroid)。...,这样就实现了AT command或者json上位机跟蓝牙协议栈的对接。
普通网络协议 大家熟知的网络协议主要是指局域网的连接协议,抽象的模型有OSI模型的7层协议和TCP/IP模型的4层协议。...在连接层也有一些协议,其中802.11协议(WiFi)和蓝牙类似,都是无线连接协议。 蓝牙 蓝牙协议是个人域网络中的一个具体实现。...虽然上图的蓝牙协议结构和802.11协议的结构图类似,都包括最下的物理层和中间的数据链路层,但是蓝牙协议还包括了一个中间层协议和最后的应用层协议。...从TCP/IP模型的设计思路比照蓝牙 考虑TCP/IP模型中的网络层,主要是为了解决在一个单一网络上传输数据包的问题。而蓝牙协议就不需要考虑这样的问题。...总结 协议类型 网络层 传输层 TCP/IP模型 复杂网络的点对点传输 可靠性和数据顺序控制(TCP有,UDP无) 蓝牙协议 由于是简单的点对点传输,中间无其他节点,所以无专门网络层
因为毕设做了蓝牙通信相关的,所以工作后让我负责蓝牙模块。...但是有bug的时候才发现对蓝牙协议的了解少之又少,现在先分析一个文件传输协议 Chapter One,简单介绍 1,OPP:Object push profile 面向对象传输协议,用于传输文件。...对于手机是否支持OPP,目前我所接触到的有3处 第一,首先系统方案提供商的蓝牙文档是否支持OPP,OPP有client和server之分 第二,在底层代码中修改,禁止掉该协议。...,本机手机会显示是否接收文件,然后显示进度,之后可以在蓝牙传输历史中看到该文件,过程如下: ?...蓝牙传输历史界面为BluetoothOppTransferHistory.java ? 界面信息是依靠sdk下的工具hierarchyviewer获取到的,该工具对更改ui有很大的帮助。
1.Ubuntu和Windows双系统蓝牙键盘配对——2014 2.Ubuntu和Windows双系统蓝牙设备共享配对——2018 3.WIN10和Ubuntu共享蓝牙4.0连接配对,鼠标键盘等,罗技M720...a.搜索蓝牙,添加蓝牙设备。...我的电脑自带蓝牙服务,上面三篇文章都有介绍在命令行删除和安装蓝牙的步骤,如果有需要可以参考(个人感觉是没必要删除重新安装的)。...但是我们一般不知道电脑蓝牙地址,可以直接打开到Bluetooth文件夹后输入ls,便可看到电脑的蓝牙地址。...5.重启蓝牙服务或重启系统 使修改生效的方法有三种: a.重启电脑; b.在终端输入service bluetooth restart; c.点击右上角蓝牙图标,关闭蓝牙。
蓝牙技术的概述 2.1 两种蓝牙技术:Basic Rate(BR)和Low Energy(LE) 蓝牙协议包括两种技术:Basic Rate(简称BR)和Low Energy(简称LE)。...这也是蜗蜗抱怨蓝牙协议不优雅的原因之一。 厂商要么实现这两种技术中的一种,这时就只能和同样实现了这个技术的设备互通,而不能和实现另外一种技术的设备互通。...2)蓝牙协议规定了两个层次的协议,分别为蓝牙核心协议(Bluetooth Core)和蓝牙应用层协议(Bluetooth Application)。...蓝牙核心协议关注对蓝牙核心技术的描述和规范,它只提供基础的机制,并不关心如何使用这些机制;蓝牙应用层协议,是在蓝牙核心协议的基础上,根据具体的应用需求,百花齐放,定义出各种各样的策略,如FTP、文件传输...我们暂时在这篇文章中对蓝牙技术做一个感性认识,在后续的文章中,会基于各个层次的协议,一步一步展开、推进,争取能把蓝牙技术分析透彻。
encode(char *filename, int subbands, int bitpool, int joint, int dualchannel, in...
Linux 端蓝牙调试 @(嵌入式)[BLE] 毕业大半年一直从事Ble外设开发,发现linux上可以使用bluez进行蓝牙开发,更加便捷的是,有一个python模块对bluez接口进行封装,叫bluepy...使用 hcitool & gatttool 安装了bluez协议栈后提供的工具,简单操作如下。...查看蓝牙pc的设备 hcitool dev 扫描ble hcitool lescan 设置gatttool gatttool -b 76:66:44:33:22:72 -I -I : 进入交互模式
协议栈框架 一般而言,我们把某个协议的实现代码称为协议栈(protocol stack),BLE协议栈就是实现低功耗蓝牙协议的代码,理解和掌握BLE协议是实现BLE协议栈的前提。...HCI是可选的(具体请参考文章:三种蓝牙架构实现方案(蓝牙协议栈方案)),HCI主要用于2颗芯片实现BLE协议栈的场合,用来规范两者之间的通信协议和通信命令等。...现在我们看看连接状态下是如何把数据0x53发送出去的,从中大家可以体会到蓝牙协议栈分层的妙处。...通道编号 1B–notify command 0x0013–电量数据handle 0x53–真正要发送的电量数据 0xF650D5–CRC24值 虽然开发者只调用了 send(0x53),但由于低功耗蓝牙协议栈层层打包...BLE应用是实打实的东西,不能像上面讲述协议栈一样泛泛而谈,必须结合具体的蓝牙芯片和蓝牙协议栈来讲解,为此后面将以Nordic芯片及协议栈作为范例,来具体讲解如何开发BLE应用,以及如何通过代码去理解BLE
本章介绍蓝牙协议(重点介绍:BLE)的基本特点、版本演进、协议的构成、等基础知识,本章重在了解,目的是对BLE协议有个大概的认知,即了解BLE协议栈的全貌。...我们常说的蓝牙4.0不等同于BLE,BLE只是蓝牙4.0的子集;蓝牙4.0是一个综合性协议规范。...蓝牙芯片的三种功能配置: 图片 01-蓝牙协议栈 蓝牙协议栈由主机 + HCI(可选) + 控制器三大块组成,其中对于单芯片方案是没用HCI的。...图片 03-链路层(LL) 低功耗蓝牙参考 《Core_v5.3.pdf》中 Part B: Link Layer Specification 章节部分,LL层是整个BLE协议栈的核心,也是BLE协议栈的难点和重点...参考: 蓝牙协议学习入门 - SeeDeer的博客 蓝牙技术联盟核心规范: http://www.bluetooth.com
最近研究人员发现蓝牙协议中有 8 个 0-day 漏洞,其中有 3 个被列为严重级别。...研究人员表示,这些漏洞是目前为止最严重的蓝牙漏洞。之前识别到的蓝牙漏洞只存在于协议层面,但 BlueBorne 却存在于实行层面,能够绕过各种认证机制,实现对目标设备的彻底接管。...影响范围广,尽快打补丁 据研究员披露,这 8 个漏洞分别是: Android 蓝牙网络封装协议中的远程代码执行漏洞(CVE-2017-0781) Android 蓝牙网络封装协议个人局域(PAN)协议文件中的远程代码执行漏洞...(CVE-2017-1000250) Linux 蓝牙堆栈(BlueZ) 信息泄露漏洞(CVE-2017-1000250) Windows 蓝牙 Pineapple 逻辑漏洞(CVE-2017-8628...) 苹果低功耗音频协议远程代码执行漏洞(CVE Pending) 发现漏洞后,研究人员第一时间上报给了所有可能受影响的大公司,包括谷歌、苹果、微软、三星和 Linux 基金会。
边界网关协议 (BGP) 就是互联网的邮政服务。当有人把一封信投进邮筒时,邮政服务就会处理这封邮件,并选择一条快速、高效的路线将这封信投递给收件人。...BGP 是通过启用数据路由来使互联网正常工作的协议。当一位在新加坡的用户加载一个源服务器位于阿根廷的网站时,BGP 就是使这种通信快速、高效地进行的协议。 什么是自治系统?...这是通过对等会话完成的,其中,每一个自治系统都会通过 TCP/IP 协议连接到相邻的自治系统,以共享路由信息。通过这些信息,每个自治系统都能够正确地路由出站数据。 在这里,我们上面所做的比喻不再成立。...自治系统可从多种内部协议中选择,来连接内部网络上的路由器。 外部 BGP 就像国际运输。在国际上运送邮件时,需要遵循特定的标准和规则。...同样,每个自治系统都可以有自己的内部路由协议,用于路由自身网络内部的数据。
这三种协议有相同的地方,也有不同的地方,使用范围相互覆盖,密不可分。...就一块单片机来讲: 其板子上主控芯片(MCU)和其他芯片之间,通信属于用的是串口UART、SPI、IIC等协议,如:因为MCU内存不够扩展一个外部Flash可以用SPI协议或者IIC协议。...(你可以理解为硬件协议,PCB板子上用的) 当WiFi模块被MCU控制后,连入此WiFi的其他设备就可以继续其他操作了,其他设备与WIFI模块的通信属于WIFI协议。...(蓝牙和Zigbee同理)(市面上WiFi模块(如ESP8266)使用之前可以用AT指令配置好,然后MCU可以正常控制它)(在WIFI连接后,线路上可以使用TCP/IP通信,设置客户端和服务器端,让上位机和硬件板子通信...) TCP/IP/UDP/HTTP/NFS大概上属于上位机通信协议,大部分用在纯软件通信上面,比如网页、前端和服务器访问、远程访问等,他们有一个协议栈,如图: ?
Linux网络-MAC协议 零、前言 一、数据链路层 二、以太网协议 1、认识以太网 2、以太网原理 3、以太网格式 4、MAC地址 5、认识MTU 三、ARP协议 四、RARP协议 零、前言 本章主要讲解...Linux网络中的数据链路层-以太网协议 一、数据链路层 示图: 数据传输大部分是跨网段进行的,而多个主机共同组成一个网段,不同的网段通过路由器连接(路由器同样也是主机),所以数据跨网段传输实质就是数据在主机间传输...ARP不是一个单纯的数据链路层的协议, 而是一个介于数据链路层和网络层之间的协议 示图: ARP协议的作用: ARP协议建立了主机 IP地址 和 MAC地址 的映射关系 在网络通讯时,源主机的应用程序知道目的主机的...IP地址和端口号,却不知道目的主机的硬件地址 数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃,因此在通讯前必须获得目的主机的硬件地址 ARP协议的工作流程...地址的一个TCP/IP协议 也就是说,某些情况下我们可能只知道一台主机的MAC地址,此时要得知该主机的IP地址就可以使用RARP协议 理论上来说,RARP协议一定比ARP协议简单,因为既然我们已经知道一台主机的
图片来源自网络,保持更新;更多内容请关注 cnblogs.com/xuyaowen
Linux网络:HTTP协议 零、前言 HTTP协议 1、认识URL 2、urlencode和urldecode 3、HTTP协议格式 1)HTTP请求 2)HTTP响应 4、HTTP的方法 5、HTTP...的状态码 6、HTTP常见的Header 7、Cookie和Session 零、前言 在此之前我们对网络套接字编程有了一定的基础和了解,接下来我们将自顶向下学习Linux网络分层协议栈,透过对协议栈的深入学习从而加深我们对网络的理解...HTTP协议 概念及介绍: HTTP(Hyper Text Transfer Protocol)协议又叫做超文本传输协议,是一个简单的请求-响应协议,HTTP通常运行在TCP之上 在编写网络通信代码时...,我们可以自己进行协议的定制,但实际有很多优秀的工程师早就已经写出了许多非常成熟的应用层协议,其中最典型的就是HTTP协议 1、认识URL URL(Uniform Resource Lacator...,而不叫做文本传输协议,就是因为有很多资源实际并不是普通的文本资源 从这里的路径分隔符,我们可以分辨服务器的平台:Linux的路径分隔符是/,Windows的路径分隔符是\ 查询字符串 用于获取资源时
领取专属 10元无门槛券
手把手带您无忧上云