第一篇:蓝牙综合介绍 ,主要介绍蓝牙的一些概念,产生背景,发展轨迹,市面蓝牙介绍,以及蓝牙开发板介绍。
随着蓝牙技术的不断普及发展,蓝牙已然成为了许多设备不可或缺的功能。如今的手机和平板电脑几乎都已具备了蓝牙的功能。但在为我们带来极大方便的同时,蓝牙也成正成为一个泄露我们隐私数据的切入口!一旦黑客破解了我们的蓝牙连接,那么我们存储在手机上的大量隐私数据将会被黑客毫无保留的窃取走。
蓝牙芯片,一般都是属于SOC级别的芯片,区别于传统的MCU以及射频芯片,可以简单的理解为单颗芯片实现了MCU+射频。其中MCU负责蓝牙的协议栈的处理,比如蓝牙的各个物理层的数据传输,数据编码,数据解码等等
蓝牙,是一种支持设备短距离通信(一般 10m 内)的无线电技术,能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。优点是方便快捷、灵活安全、低成本、低功耗的数据通信和语音通信。
前篇博文Bluetooth 协议栈设计与演进[1]已经分别介绍了蓝牙协议的四大应用场景及对应的技术解决方案,为满足物联网设备的需求,蓝牙协议新增了室内精准定位技术、基于MESH 的大规模自组网技术和基于6LoWPAN 的IPv6 组网技术,逐渐在物联网无线技术中占稳短距离低速率无线通信的生态位,未来前景可期。
本章介绍蓝牙协议(重点介绍:BLE)的基本特点、版本演进、协议的构成、等基础知识,本章重在了解,目的是对BLE协议有个大概的认知,即了解BLE协议栈的全貌。后续的章节会对每一部分单独进行详细的讲解。
一般而言,我们把某个协议的实现代码称为协议栈(protocol stack),BLE协议栈就是实现低功耗蓝牙协议的代码,理解和掌握BLE协议是实现BLE协议栈的前提。在深入BLE协议栈各个组成部分之前,我们先看一下BLE协议栈整体架构。
这篇文章主要介绍llsync SDK的移植到其他协议栈需要理解的部分。属于移植到其他协议栈或者其他芯片的时候,需要做的前期的预习准备工作。理解本文,基本上可以知道新的协议栈如何移植。
Access Address:接入地址,广播通道的时候使用0x8E89BED6这个固定值,数据通道的时候使用随机值;
上文介绍了蓝牙基本原理和潜在的攻击面,但实现部分介绍不多。本文作为补充,以 Android 中的蓝牙协议栈为例,学习并了解在实际系统中蓝牙的工程实现。
常见开源蓝牙协议栈有btstack、zephyr、nimble、bluez、BlueDroid等,而在安卓4.2后,原先内置的BlueZ被BlueDroid取代,但linux上仍旧是BlueZ协议栈。BlueZ上有常见btmon、btmgmt、bluetoothctl、hciattach、hciconfig、hcidump、hcitool、gatttool、bluetooth-meshd等工具。蓝牙控制器和主机通过H2(USB)、H4(UART)、H5(UART)、BCSP(BlueCore Serial Port)、SDIO来构建HCI来进行数据传递。D1-H的tina-linux内核是5.4,内置bluez 5.54:
AVRCP全称:The Audio/Video Remote Control Profile (AVRCP) 翻译成中文就是:音视频远程控制协议。 概念:AVRCP定义了蓝牙设备之间的音视频传输的特点和流程,来确保不同蓝牙设备之间音视频传输控制的兼容。一般包括暂停,停止,播放,音量控制等远程控制操作。例如,使用蓝牙耳机可以暂停,切换下一曲等操作来控制音乐播放器。
HCI 是 Host Controller Interface 的缩写,是Host和Controller之间的桥梁,在蓝牙 Core Specification 5.3 的 vol4
本文是 2020 年中旬对于蓝牙技术栈安全研究的笔记,主要针对传统蓝牙和低功耗蓝牙在协议层和软件安全性上攻击面分析,并介绍了一些影响较大的蓝牙漏洞原理,比如协议层的 KNOB、BIAS 漏洞,软件实现上的 BlueBorne、SweynTooth 以及 BlueFrag 漏洞等。
大家在IoT平台上创建产品时,在通讯协议中会看到蓝牙(Bluetooth,或简写BT)、BLE、MESH(SIG)的字样,这几个名称分别代表什么,有什么关联和差别,在此给大家做个简要的说明。
为了方便,将物联网通信协议分为两大类,一类是接入协议,一类是通讯协议。接入协议一般负责子网内设备间的组网及通信;通讯协议主要是运行在传统互联网TCP/IP协议之上的设备通讯协议,负责设备通过互联网进行数据交换及通信。本文介绍以通讯协议为主。
关注 RT-Thread 的同学肯定知道,RT-Thread为了向众多开发者展示RT-Thread的最新开发和生态建设成果,每年都会举办一场开发者大会(简称:RDC — RT-Thread Developer Conference),在 2020 年度的开发者大会上,我们 RT-Thread 给到现场的每个开发者们都发放了一个电子胸牌,胸牌的名称起名为 ART-Bagde。
连接成功提示Device 30:21:23:6F:18:E2 Connected: yes
要弄一个mp3音频硬件。没有接触过,所以开始找了好多方案,by8001+51(stm32),vs1003+51(stm32)。后来发现stm32太贵了。所以开始琢磨51+vs1003,电路图找了好多。基本上就确定了vs1003+51+sd模块,开发板买了不少,代码也写好。后来又想加入wifi功能。感觉51就费劲了。偶然机会看到了乐鑫的esp32,于是又乐鑫网站翻资料。发现它是一款集成度很高的模块。双mcu,可以自己写代码,内置mp3解码,有sdio,gpio,spi,i2c,adc,dac,内置蓝牙,wifi,运行freertos,内置wifi,蓝牙协议栈。开发环境也挺好配置。于是就决定试试看esp32了。能省不少事。另外该琢磨哪里去找做玩具外壳,或者音箱外壳,或者mp3外壳的注塑厂了。。。
在这个智能加无线的时代,人们早已习惯于使用一些智能设备进行学习丶生活等等。可是你手中的智能设备安全吗?今天我们将使用无线的一些技术来带大家夺取手环的控制权。
往期周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 本周更新了两期视频:
在Linux的广阔世界中🌌,与各式各样的硬件设备进行互动和协作是一项不断进行的挑战🔧。硬件厂商和Linux社区的紧密合作,通过制定一系列标准和协议📜,使得从键盘🎹和鼠标🖱到复杂的网络连接设备🌐,所有硬件设备都能以一种统一的方式与Linux内核交互。这篇文章将探讨硬件厂商和Linux社区如何联手标准化硬件,以及他们为实现这一目标所做的努力🛠️。
蓝牙技术最初是由爱立信创制的。技术始于爱立信公司 1994 方案,它是研究在移动电话和其他配件间进行低功耗、低成本无线通信连接的方法。发明者希望为设备间的通讯创造一组统一规则(标准化协议)用来解决用户间相互不兼容的移动电子设备。
蓝牙低功耗无线电的调制速率由规范规定为恒定的1Mbps(兆比特每秒)。当然,这是理论上的上限。在实践中,根据所使用设备的限制,您可以期望每秒5- 10kb。就距离而言,BLE专注于非常短的距离通信。可以创建和配置一个BLE设备,该设备可以可靠地传输30米或30米以上的视线范围内的数据,但典型的操作范围可能更接近2到5米。当然,续航里程越高,电池消耗就越多,所以在调整你的设备以适应更高的续航里程时要小心。 蓝牙BLE组成 BLE由三个主要构建模块组成:应用程序、主机和控制器。顾名思义,应用程序块是与蓝牙协议栈交互的用户应用程序。主机覆盖蓝牙协议栈的上层。控制器覆盖下层。主机可以通过添加一个我们称为HCI的东西与BLE模块通信——主机控制器接口。显然,HCI的目的是将控制器与主机接口,而这个接口使控制器与各种主机接口成为可能。在本例中,单片机运行应用程序,与连接设备进行通信,连接设备由主机和控制器组成。为此,我们使用SPI进行通信,但是也可以使用不同的接口。
打电话时:说话产生模拟信号---》转化为数字信号---》放大-----》传输---》反转化为模拟 蓝牙的电话:蓝牙收模拟信号--》转为数字--》协议栈--》手机--》反向处理--》数字信号--》传输,因此延迟
网络协议是连接不同设备的信息交互手段。根据网络连接范围的大小,可以分为5类:个人域网络(PAN),局域网(LAN),城市网(MAN),广域网(WAN),互联网。
TWS蓝牙耳机体积小,重量轻,使用携带方便,佩戴时间久了也不会因为耳机重量的问题而感到难受。特别是在越来越多的手机取消了3.5mm的耳机孔后,选择使用TWS蓝牙耳机的用户也越来越多了。每当有新款TWS蓝牙耳机上市时,很多有购买需求的用户最关心的问题是:游戏体验如何?玩“吃鸡”延迟大不大?本篇就这些用户关注的问题来重点探讨下TWS蓝牙耳机游戏时延评测(音画同步)及测试方法。
KT6368A芯片是一款支持蓝牙双模的纯数据芯片,蓝牙5.1版本。芯片的亮点在超小尺寸SOP8封装,性价高。以及简单明了的透传和串口AT控制功能。大大降低了嵌入蓝牙在其它产品的开发难度和成本
谷歌周二(2021-04-06)宣布,其开源版本的 Android 操作系统,将增加对 Rust 编程语言的支持,以防止内存安全漏洞。
btsnoop 是用来抓取 host 和 controller 之间的交互数据,用来分析蓝牙的问题比较常用。btsnoop 文件存储形式是大端存储,所以直接读就行了
蓝牙4.1,是一个大杂烩:BR/EDR沿用旧的蓝牙规范;LE抄袭802.15.4;AMP直接使用802.11。而这一切的目的,就是以兼容性和易用性为基础,在功耗和传输速率之间左右为难。
Bccmd是用来和CSR的芯片进行BCCMD(Bluecore command protocol)通讯的一个工具。BCCMD并非蓝牙协议栈的标准,而是CSR芯片的专属协议
之前使用沁恒公司的一款BLE芯片CH573,随着代码量的增多,开发到后期时遇到了RAM空间不够用的问题,当时吓了我一跳,以为需要重新换更大RAM的芯片。后来经过一番分析,优化之后省出来一部分空间,解决了RAM危机。
开发一款软件产品或一款应用,按照以往的经验,就是要做一个 App,或者一个网站、一个服务。但随着云服务、低代码平台的出现,产品的业态也发生着变化。比如最近大热的 AIGC 公司 Midjourney,进入官网,没有 App 需要下载,也没有传统的网页服务。
作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载。
libcrypt-2.23.so glibc glibc中的包含的库,现代哈希加解密
先前分析了 Linux 入口地址和 Linux 系统启动流程,本文详细分析一下 Linux 启动流程中的 console_init 终端初始化函数。
蓝牙是一个使用广泛的无线通信协议,这两年又随着物联网概念进一步推广。我将介绍蓝牙协议,特别是低功耗蓝牙,并用树莓派来实践。树莓派3中内置了蓝牙模块。树莓派通过UART接口和该模块通信。树莓派1和树莓派2中没有内置的蓝牙模块,不过你可以通过USB安装额外的蓝牙适配器。 蓝牙介绍 蓝牙最初由爱立信创制,旨在实现可不同设备之间的无线连接。蓝牙无线通信的频率在2.4GHz附近,和WiFi一样,都属于特高频。相对于低频信号来说,高频传输的速度比较快,穿透能力强,但传输距离比较受限。在没有遮蔽和干扰的情况下,蓝牙设备
本文是一篇翻译,翻译自https://software.intel.com/en-us/blogs/2015/06/12/user-space-networking-fuels-nfv-performance,文章有点老了,15年写的,但是文章总结了一些用户态的协议栈,很有学习参考的意义。 如今,作为一个网络空间的软件开发人员是非常激动人心的,因为工程师的角色随着这个世界的规则在逐渐改变。 过去这 15 年来,人们对高性能网络做了很多努力,网络模型也发生了很多改变,起初,数据包的收发都要推送到内核才能完成
Q1:F-Stack有中断模式吗,有计划支持吗?在计算密集型的应用中,轮询模式会占用更多的CPU资源? A1:F-Stack暂时只支持轮询模式,后续会支持中断+轮询模式,避免与计算密集型业务抢占CPU及节省能源。 Q2:F-Stack如何实现zerco copy? A2:目前F-Stack尚未做到完全零拷贝。在收包时使用FreeBSD的mbuf ext add可以避免拷贝。在发包时尚存在拷贝,后续会优化为无拷贝,主要的方案是自己实现内存管理,完全使用hugepage。 Q3:F-Stack的运行环境有何
在CC1310空中升级笔记01中,TI员工提到了CC26系列已经有实现的OAD的例程。本文大部分资料参考了《CC2640 Over-the-Air Download User’s Guide.pdf》,就先从这个文档下手,安装了TI协议栈之后就可以看到了。
KT6368A蓝牙芯片也是基于 HID 开发,主要用于浏览当下火爆的抖音等小视频的上下翻页、左右菜单切换、暂停等操作。打开手机蓝牙进行连接,进入视频浏览界面操作对应按键即可。包含一个蓝牙的指示灯,表示是否连接 。同时支持adkey按键,这个按键就可以根据需求来进行裁剪。产品最终选用CR3032的电池,所以非常的在意功耗。
本文是蓝牙协议分析的第二篇文章,在“蓝牙协议分析(1)_基本概念”的基础上,从整体架构的角度,了解蓝牙协议的组成,以便加深对蓝牙的理解。
本文是将知乎网友的提问 《如何评价腾讯开源的基于 DPDK 和 BSD 协议栈的网络框架 f-stack?》,将回答讨论内容和我们的一些想法进行了整理。 项目背景 F-Stack 这个项目起始于DNSPod的授权DNS项目,当时是12年,DPDK还未开源的时候,我们就基于DPDK做了授权DNS,做完的时候正好DPDK也开源了,正式上线后10GE单网卡性能达到1100万qps,后面又实现了一个简易的TCP协议栈用于支持TCP DNS。 后来DNSPod合并进入腾讯云,腾讯云有大量业务需要高性能的接入服务,而D
Linux内核主要由 进程管理、内存管理、设备驱动、文件系统、网络协议栈 外加一个 系统调用。
过去几十年互联网呈爆发式的增长,内容的丰富以及层出不穷的DDoS攻击等,对网络性能提出了极大的挑战,也同样促进了网络基础设施的快速发展。运营商的带宽越来越大,CPU/网卡等硬件的性能也会越来越强。但在很长时间内,软件的性能提升落后于硬件的性能提升,并严重限制了应用程序的性能,大部分时间不得不依靠堆机器来应对,造成了大量的资源浪费和成本提高。 随着软件的不断发展,在新世纪的第一个10年时,通过多线程和事件驱动(kqueue/epoll等)解决了C10K的问题。但是在第二个10年却不堪重负,亟需新的解
本文介绍了 F-Stack 框架,它是一个基于 FreeBSD 内核的用户态协议栈实现,解决了传统内核协议栈在高性能、可扩展、兼容性、功能完备等方面的问题。F-Stack 提供了丰富的功能,包括零拷贝、无锁队列、内存池、红黑树等,支持多种调度算法,并提供了易用的接口。在性能测试中,F-Stack 的表现优异,最高达到了 2000 万 QPS,并支持多种网络协议,包括 HTTP、TCP、UDP、IPX 等。同时,F-Stack 也提供了丰富的开发文档和示例代码,方便开发者进行二次开发和功能扩展。
领取专属 10元无门槛券
手把手带您无忧上云