目标:使用 BlueZ 和蓝牙 4LE 加密狗创建一个外设,宣传蓝牙等效的“Hello World”。
我在哪里:我目前已经安装并下载了 BlueZ 堆栈,我可以使用 hci 工具来识别和查看蓝牙加密狗。我已经修改了 hciconfig Leadv,但我只是不太明白/不了解发生了什么。
我认为我需要什么帮助:我需要把它带到下一步。如果有人可以将我指向一个好的资源,请引导我完成此操作或其他任何内容,将不胜感激。如果我需要做额外的腿部(搜索)工作,我可以,但我已经用我能想到的尽可能多的这个问题的不同衍生品搜索了谷歌和 SO。
*我也将其标记为 CoreBluetooth,希望 iOS 开发人员在某个时候对此进行了修补。
编辑:在回应评论时,陈述我的最终目标似乎是谨慎的。我最终想通过加密狗发布最简单的简单消息/信号,并在 iOS 设备(CoreBluetooth)上获取。我已经能够让 iOS 方面运行良好(与 Linux 方面相比,有大量文档),但对我来说,最困难的部分是将这个适配器设置为外围设备。 BlueZ 堆栈对我来说是一个可怕的谜。
编辑:经过更多挖掘,我最终偶然发现了这篇文章:Raspberry Pi Bluetooth 4.0 Connection . 这让我想到了 GATT 服务器这个话题,我会继续研究这个话题。
编辑:好的,所以我继续学习。在过去的几天里,我深入研究了 hci*、sdptool 和 gatttool 工具。我已经能够将适配器设置为广告“hciconfig hci0 Leadv”。在这一点上,我可以成功地“看到”适配器,但实际上我无法从中读取任何内容。我什至没有看到友好的名字。我会继续努力,但一如既往,我们非常欢迎任何帮助/建议。
编辑:相关链接,与 iOS 相关的蓝牙 LE 的可靠概述。 https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/AboutCoreBluetooth/Introduction.html#//apple_ref/doc/uid/TP40013257-CH1-SW1
最后编辑:大家好,此链接介绍了如何使用 Raspberry Pi + BlueZ 创建 iBeacon... http://www.wadewegner.com/2014/05/create-an-ibeacon-transmitter-with-the-raspberry-pi/
最佳答案
插入蓝牙加密狗后,运行以下命令将告诉您设备名称并提供其状态:
$ hciconfig
输出应该是这样的:
hci0: Type: BR/EDR Bus: USB
BD Address: 00:01:02:aa:bb:cc ACL MTU: 1021:8 SCO MTU: 64:1
DOWN
RX bytes:1000 acl:0 sco:0 events:47 errors:0
TX bytes:1072 acl:0 sco:0 commands:47 errors:0
这表明设备被称为 hci0 处于关闭状态。发出以下命令将其启动:
$ sudo hciconfig hci0 up
现在应该是这样的:
$ hciconfig
hci0: Type: BR/EDR Bus: USB
BD Address: 00:01:02:aa:bb:cc ACL MTU: 1021:8 SCO MTU: 64:1
UP RUNNING
RX bytes:1000 acl:0 sco:0 events:47 errors:0
TX bytes:1072 acl:0 sco:0 commands:47 errors:0
接下来,执行以下示例命令来配置要发送的广告数据。
$ sudo hcitool -i hci0 cmd 0x08 0x0008 1e 02 01 1a 1a ff 4c 00 02 15 e2 c5 6d b5 df fb 48 d2 b0 60 d0 f5 a7 10 96 e0 00 00 00 00 c5 00 00 00 00 00 00 00 00 00 00 00 00 00
您可以更改十六进制字节(从 1e 开始)为您的广告发送不同的字节序列。一个字面上发送“HELLO WORLD”的 ASCII 代码的人会使用:48 45 4c 4c 4f 57 4f 52 4c 44(EDIT:但是你还必须在这个前面加上前缀带有有效 header 的消息,请参阅 here. )
现在,使用以下命令激活加密狗上的广告,这将开始发送“Helo World”数据包。
$ sudo hciconfig hci0 Leadv 0
编辑: 上述命令使广告服务可连接。如果您不想允许连接,请将其更改为 $ sudo hciconfig hci0 Leadv 3
您还可以使用以下命令禁用广告:
$ sudo hciconfig hci0 noleadv
关于linux - 将 BlueZ Stack 用作外设(广告商),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16151360/
我怎样才能使下面的代码工作,以便两个puts都显示1?video=[]name="video"name[0]=1putsname[0]#givesme1putsvideo[0]#givesmenil 最佳答案 您可以使用eval使其工作:eval"#{name}[0]=1"不过我强烈反对这样做。在大多数情况下,你认为你需要做类似的事情,你应该使用HashMap。喜欢:context={"video"=>[]}name="video"context[name][0]=1 关于ruby-如何
Linux操作系统——网络配置与SSH远程安装完VMware与系统后,需要进行网络配置。第一个目标为进行SSH连接,可以从本机到VMware进行文件传送,首先需要进行网络配置。1.下载远程软件首先需要先下载安装一款远程软件:FinalShell或者xhell7FinalShellxhell7FinalShell下载:Windows下载http://www.hostbuf.com/downloads/finalshell_install.exemacOS下载http://www.hostbuf.com/downloads/finalshell_install.pkg2.配置CentOS网络安装好
文章目录一基础定义二创建逻辑卷2-1准备物理设备2-2创建物理卷2-3创建卷组2-4创建逻辑卷2-5创建文件系统并挂载文件三扩展卷组和缩减卷组3-1准备物理设备3-2创建物理卷3-3扩展卷组3-4查看卷组的详细信息以验证3-5缩减卷组四扩展逻辑卷4-1检查卷组是否有可用的空间4-2扩展逻辑卷4-3扩展文件系统五删除逻辑卷5-1备份数据5-2卸载文件系统5-3删除逻辑卷5-4删除卷组5-5删除物理卷六LVM逻辑卷缩容6-1缩容注意事项6-2标准缩容步骤一基础定义LVM,LogicalVolumeManger,逻辑卷管理,Linux磁盘分区管理的一种机制,建立在硬盘和分区上的一个逻辑层,提高磁盘分
如何在Ruby中获取linux系统(这必须适用于Fedora、Ubuntu等)的软件/硬件信息? 最佳答案 Chef背后的优秀人才,拥有一颗名为Ohai的优秀gemhttps://github.com/opscode/ohai以散列形式返回系统信息,例如操作系统、内核、规范、fqdn、磁盘、空间、内存、用户、接口(interface)、sshkey等。它非常完整,非常好。它还会安装命令行二进制文件(也称为ohai)。 关于ruby-如何在Ruby中获取linux系统信息,我们在Stack
我在LinuxMint17.2上。我最近使用apt-getpurgeruby删除了ruby。然后我安装了rbenv然后rbenvinstall2.3.0所以现在,~/.rbenv/versions/2.3.0/bin/ruby存在。但是现在,我无法执行geminstallrubocop。我明白了:$geminstallrubocoprbenv:gem:commandnotfoundThe`gem'commandexistsintheseRubyversions:2.3.0但是我可以~/.rbenv/versions/2.3.0/bin/geminstallrubocop。但是,
我是Ruby和RoR的新手。我有一个带有Ubuntu镜像的干净Linode实例,我想从源代码编译Ruby而不是使用apt-get。我已经在谷歌上搜索了执行此操作的说明,但经过一些尝试后,当我尝试运行一些教程示例时,我不断收到有关缺少zlib和其他一些包的错误。任何人都可以给我详细的说明(或链接),教我如何在从源代码编译Ruby之前安装必要的必备包吗?我的目的是编译Ruby的最新稳定版本,然后安装Rubygems和Rails。提前感谢您的帮助!!! 最佳答案 Thisblogpost涵盖从源代码编译ruby所需的包和安装过程;它引
目录POSIXAPI大集合五元组三次握手的过程,内核协议栈分析listen函数DDOS攻击,洪水攻击DDOS攻击的应对措施数据发送 怎么保证顺序?如何保证包地顺序到达(序号+确认应答机制+重传)TCP断开连接的过程问题1.大量的CLOSE_WAIT+FIN_WAIT2是为啥?time_wait状态存在的原因?POSIXAPI大集合五元组(sip,sport,dip,dport,protocol)三次握手的过程,内核协议栈分析内核协议栈中是有内核数据结构的. 我们send/write数据,都是先发送到内核协议栈中,然后由内核协议栈封装发送到物理介质中传输到对端的对端的接收过程也是经有内核协议栈
背景:Linuxexport命令用于设置或显示环境变量。在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅限于该次登陆操作。语法:export[-fnp][变量名称]=[变量设置值]参数说明:-f 代表[变量名称]中为函数名称。-n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。-p 列出所有的shell赋予程序的环境变量。实例:列出当前所有的环境变量#export-p//列出当前的环境变量值定义环境变量赋值#exportMYENV=7//定义环境变量并赋值添加环境变量:默认保存在
Nginx安装1.官网下载Nginx2.使用XShell和Xftp将压缩包上传到Linux虚拟机中3.解压文件nginx-1.20.2.tar.gz4.配置nginx5.启动nginx6.拓展(修改端口和常用命令)(一)修改nginx端口(二)常用命令1.官网下载Nginxhttp://nginx.org/en/download.html这里我下载的是1.20.2版本,大家按需下载对应稳定版即可2.使用XShell和Xftp将压缩包上传到Linux虚拟机中没有XShell可以参考《Linux操作系统CentOS7连接XShell》3.解压文件nginx-1.20.2.tar.gz1)检查是否存
Halo,这里是Ppeua。平时主要更新C语言,C++,数据结构算法,Linux…感兴趣就关注我吧!你定不会失望。目录1.ls显示当前目录下的文件内内容2.pwd-显示用户当前所在的目录3.cd-改变工作目录。将当前工作目录改变到指定的目录下1.cd-回到上一次待的工作空间2.cd..返回上一层目录1.相对路径:cd../aurora2.绝对路径:cd/home/aurora/lesson1/aurora3.cd~进入用户家目录4.cd/进入root目录4.mkdir-新建目录5.rmdir/rm-删除1.rmdir删除空文件夹2.rm删除1.rm-f2.rm-i3.rm-r1.ls显示当前目