蓝牙BlueZ验证使用记录

最近使用的一款AICSemi AIC8800D8芯片做的WiFi+BT二合一模组,该模组WiFi使用SDIO通信,BT使用UART通信,供应商丢了一份驱动,包含了三个目录:aic8800_bsp、aic8800_fdrv和aic8800_btlpm,而蓝牙部分提供了lbh_server和lbh_client两个程序(未提供源码)。

首先,需要至少加载aic8800_bsp和aic8800_fdrv两份源码编译出来的KO文件(采用动态识别USB、SDIO、PCIE总线上的设备PID和VID来匹配加载KO),先加载bsp后加载fdrv,然后WiFi就能使用,而BT依赖这,这加载起来后,就可以通过UART操作BT了,使用lbh_server和lbh_client可以跑BLE模式下的GATT Server和Client,是可以让手机nRF Connect应用搜索并连接上的。(默认设备名字为BLE_SMARTCONFIG_TEST_CASE,广播设备名字为nooie-000b-01d)

但BLE不满足我们需求,我们还是想运行经典蓝牙模式,于是想到了BlueZ(板卡使用Buildroot构建文件系统,很轻松就可以使用其工具)的hciattach工具,验证后果然可以,下面是相应的使用过程:

hciattach -s 1500000 /dev/ttyS3 any 1500000 noflow nosleephciconfig set name AIC_BTTEST
hciconfig set class 0x100
hciconfig hci0 down
hciconfig hci0 upbluetoothctl power on
bluetoothctl pairable on
bluetoothctl discoverable on
bluetoothctl agent on
bluetoothctl default-agent

至此,蓝牙设备就可以被搜索到了(手机等发起配对连接时,需要进入bluetoothctl交互窗口按提示操作即可,我们只想用obex来接收文件,故上面执行后就能满足,如果不想进入bluetoothctl交互窗口来操作配对连接,也可以通过bt-agent -c NoInputNoOutput命令设置配对连接验证方式)。接下来就在板端做如下操作就可以接收Android手机通过蓝牙发过来的文件:

将bluez5_utils/obex-dbus.conf文件复制到板端/etc/dbus-1/system.d/目录下,或者编译时将其编译到根文件系统,可以修改buildroot/package/bluez5_utils/bluez5_utils.mk文件,在相应位置添加如下语句:

$(INSTALL) -D -m 0644 -D package/bluez5_utils/obex-dbus.conf $(TARGET_DIR)/etc/dbus-1/system.d/

接下来在板端执行如下命令:

export DBUS_SESSION_BUS_ADDRESS="unix:path=/var/run/dbus/system_bus_socket"
/usr/libexec/bluetooth/obexd -r /userdata -n -a

就这样就能满足蓝牙广播并启用obexd服务,接收手机等设备发过来的文件。(注意启动obexd时有可能导致广播被关闭了,需要使用如下命令再开启广播:

bluetoothctl discoverable on

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/877332.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Vue】权限控制

权限管理 分类: 页面权限功能(按钮)权限接口权限 vue3-element-admin 的实现方案 一般我们在业务中将 路由可以分为两种,constantRoutes 和 asyncRoutes。 constantRoutes: 代表那些不需要动态判断权限的路由,如登录页、404(或…

标题:“八股文”在实际工作中是助力、阻力还是空谈?

标题:“八股文”在实际工作中是助力、阻力还是空谈? “八股文”,在程序员的面试和工作中一直是一个备受争议的话题。它既是许多程序员进入职场的敲门砖,也被一些人认为是脱离实际的空谈。本文将从“八股文”对招聘过程的影响、在…

【echarts】 柱状图,最后带“竖线”

具体: https://echarts.zhangmuchen.top/#/detail?cid28ea6-0601-e9f5-9cc29-c022b758 let data [{value: 0,name: 数据格式一},{value: 55,name: 数据格式二},{value: 66,name: 数据格式三},{value: 75,name: 数据格式四},{value: 20,name: 数据格式五}];getAr…

2、Flink 在 DataStream 和 Table 之间进行转换

1.概述 Table API 和 DataStream API 都可以处理有界流和无界流。 DataStream API 提供了流处理的基础(时间、状态和数据流管理);Table API 抽象了许多内部内容,并提供了一个结构化和声明性的 API;在处理历史数据时,需要管理有边界的流;无边界流出现在实时处理场景中,…

wordpress调用栏目最新内容、调用栏目推荐内容、调用栏目随机内容

想要在首页调用wordpress某个栏目的内容,可以按照分类ID来调用,调用出来的内容一般有:调用栏目最新内容、调用栏目推荐内容、调用栏目随机内容这三种形式。简站wordpress小编在此为大家放出三种不同方式调用的代码如下: 通过指定…

盘点.软件测试模型

软件开发模型   软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。软件开发包括需求、设计、编码和测试等阶段,有时也包括维护阶段。 软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动…

云计算day15

⼀、web基本概念和常识 Web:为⽤户提供的⼀种在互联⽹上浏览信息的服务,Web 服 务是动态的、可交 互的、跨平台的和图形化的。 Web 服务为⽤户提供各种互联⽹服务,这些服务包括信息浏览 服务,以及各种交互式服务,…

C++类与对象-六大成员函数

默认成员函数就是用户没有显式实现,编译器会⾃动⽣成的成员函数称为默认成员函数。⼀个空类编译器会默认⽣成8个默认成员函数。本文只介绍其中6个,C11增加两个函数见后续博客。 目录 一、构造函数 1.1 概念 1.2 特性 1.3 使用举例 1.4 初始化列表 1…

探索LLM编程新纪元:AI赋能的编程之旅

探索LLM编程新纪元:AI赋能的编程之旅 引言 在人工智能(AI)的浪潮中,大型语言模型(LLM)作为自然语言处理(NLP)领域的璀璨明珠,正逐步渗透到编程的每一个角落。从代码自动…

【C#】文件流和文本处理

1. 文件流的基本概念 文件流是C#中处理文件读写的抽象,它提供了对文件内容进行顺序访问的能力。在文件流中,数据按照字节或块的方式传输,而不受文件中数据的格式影响。文件流通常与System.IO命名空间中的类一起使用,包括FileStrea…

如何通过前端表格控件实现自动化报表?

背景 最近伙伴客户的项目经理遇见一个问题,他们在给甲方做自动化报表工具,项目已经基本做好了,但拿给最终甲方,业务人员不太买账,项目经理为此也是天天抓狂,没有想到合适的应对方案。 现阶段主要面临的问…

geotools 读取shape文件

对于GIS开发者而言,矢量数据是我们经常要用到的,而shape数据是矢量数据中最常用的格式,因此解析shape数据也是作为GIS软件开发人员必备的基础技能,而GeoTools无疑是Java最好用来处理GIS数据的三方库,下面例子是简单的g…

算法训练(leetcode)第三十四天 | 56. 携带矿石资源(第八期模拟笔试)、198. 打家劫舍、213. 打家劫舍 II、337. 打家劫舍 III

刷题记录 *56. 携带矿石资源(第八期模拟笔试)198. 打家劫舍213. 打家劫舍 II*337. 打家劫舍 III解法一 (记忆化递推)*解法二 (动态规划) *56. 携带矿石资源(第八期模拟笔试) leetco…

防火墙USG2000USG5000配置nat server 时 no-reverse的含义

防火墙USG2000&USG5000配置nat server 时 no-reverse的含义 https://forum.huawei.com/enterprise/zh/thread/580888066099396608?page2 多次执行带参数no-reverse的nat server命令,可以为该内部服务器配置多个公网地址;未配置参数no-reverse则表…

实现代码灵活性:用Roslyn动态编译和执行存储在数据库中的C#代码

在许多现代应用程序中,动态编译和执行代码是提升灵活性和功能的一种强大技术。本文将介绍如何使用Roslyn编译器平台动态编译和执行存储在数据库中的C#代码,并结合实际公司案例来说明这些技术的应用场景。 1. 引言 在很多应用场景中,我们可能…

牛客周赛53---DEF

D.小红组比赛 题目描述 \,\,\,\,\,\,\,\,\,\,小红希望出一场题目,但是他的实力又不够,所以他想到可以从以前的比赛中各抽一题,来组成一场比赛。不过一场比赛的难度应该是有限制的,所以所以这一场比赛会给一个目标难度分数 target…

docker笔记7-dockerfile

docker笔记7-dockerfile 一、dockerfile介绍二、dockerfile指令三、构建自己的镜像 一、dockerfile介绍 Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。 以下是常用的 Dockerfile 关键字的完整列表和说明: 二、docker…

Vue3自研开源Tree组件 - Vitepress文档功能演示

基于自己学习的一点Vue3和ts的知识,写的一个企业级的开源Tree组件,给大伙儿演示下组件功能和API的使用,如果您喜欢,不妨点赞和关注下,后续会继续分享源码教程,感谢支持! 演示视频地址&#xff…

【计算机毕业设计】838装修公司CRM系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…