Android bluetooth 模块架构

Android连接蓝牙设备问题(android.permission.BLUETOOTH) 蓝牙连接失败的原因。 阅读详情

android bluetooth系统自上而下包含了 驱动程序和协议,Bluez库,Bluetooth的android适配库,java中的bluetooth类等几部分:

1. 内核层:
蓝牙系统的内核部分,有两个层次,分别是蓝牙的驱动程序和蓝牙的协议层。

2. Bluez库:
代码路径:/external/bluetooth/*
生成libbluetooth.so, bluetoothd, 及hcidump等众多工具和库。

I checked the Bluetooth subsystem in our baseline code.
 
1. I found that maybe we didn't have WL1271 BT  driver. There is only a CONFIG_BT_WL1271 in omap3_adlink_android_defconfig.  
 
CONFIG_BT_WL1271 is only used in /drivers/tty/tty_io.c to control the power of BT_EN. Here I corrected the OMAP3_EVEM_BT_PWR_GPIO from 136 to 65.
 
2.  And I have configed BT protocols as follow:
 
CONFIG_BT=y
CONFIG_BT_L2CAP=y
CONFIG_BT_SCO=y
CONFIG_BT_RFCOMM=y
CONFIG_BT_RFCOMM_TTY=y
CONFIG_BT_BNEP=y
CONFIG_BT_BNEP_MC_FILTER=y
CONFIG_BT_BNEP_PROTO_FILTER=y
CONFIG_BT_HIDP=y
#
# Bluetooth device drivers
#
# CONFIG_BT_HCIBTUSB is not set
# CONFIG_BT_HCIBTSDIO is not set
CONFIG_BT_HCIUART=y
CONFIG_BT_HCIUART_H4=y
# CONFIG_BT_HCIUART_BCSP is not set
# CONFIG_BT_HCIUART_ATH3K is not set
CONFIG_BT_HCIUART_LL=y
# CONFIG_BT_HCIBCM203X is not set
# CONFIG_BT_HCIBPA10X is not set
# CONFIG_BT_HCIBFUSB is not set
# CONFIG_BT_HCIVHCI is not set
# CONFIG_BT_MRVL is not set
CONFIG_BT_WL1271=y
# CONFIG_AF_RXRPC is not set
     
 
3. In hardware/ti/wlan/WL1271_COMPAT,  it only installed the firmwares and wl1271bt_enable . I think TIInit_7.2.31.bts is the firmware for BT. But I don't know how it loaded. And I don't sure whether it is loaded or not when open bluetooth in Setting.
 
    @# Installing WLAN/BT firmwares and tools to rootfs..
    @echo "Installing WLAN/BT firmwares and tools to rootfs.."
    @install ../firmwares/TIInit_7.2.31.bts                    $(DESTDIR)/system/lib/firmware/
    @install ../firmwares/ti-connectivity/wl1271-fw-2.bin      $(DESTDIR)/system/etc/firmware/ti-connectivity/
    @install ../firmwares/ti-connectivity/wl1271-nvs.bin       $(DESTDIR)/system/etc/firmware/ti-connectivity/
    @install ../tools/wl1271bt_enable                          $(DESTDIR)/root/
 
4. In root/init.rc,  the services are running well:
 
service dbus /system/bin/dbus-daemon --system --nofork
    socket dbus stream 660 bluetooth bluetooth
    user bluetooth
    group bluetooth net_bt_admin
 
service bluetoothd /system/bin/bluetoothd -n
    socket bluetooth stream 660 bluetooth bluetooth
    socket dbus_bluetooth stream 660 bluetooth bluetooth
 
# init.rc does not yet support applying capabilities, so run as root and
# let bluetoothd drop uid to bluetooth with the right linux capabilities
    group bluetooth net_bt_admin misc
    disabled
 
service hfag /system/bin/sdptool add --channel=10 HFAG
    user bluetooth
    group bluetooth net_bt_admin
    disabled
    oneshot
 
service hsag /system/bin/sdptool add --channel=11 HSAG
    user bluetooth
    group bluetooth net_bt_admin
    disabled
    oneshot
 
service opush /system/bin/sdptool add --channel=12 OPUSH
    user bluetooth
    group bluetooth net_bt_admin
    disabled
    oneshot
 
service pbap /system/bin/sdptool add --channel=19 PBAP
    user bluetooth
    group bluetooth net_bt_admin
    disabled
    oneshot
# rfkill is not supported, use this instead                             
service btpwr /wl1271bt_enable /dev/ttyO1               // here it seems using btpwr to replace rfkill.
    disabled
    oneshot
 
service hciattach /system/bin/hciattach -n /dev/ttyO1 texas 3000000
    user root
 
# changing user to root from bluetooth is a potential security issue
    group bluetooth net_bt_admin misc
    disabled
    oneshot
 
5. When I open the bluetooth in Setting, it reports logs as follow:
 
D/BluetoothService( 1221): Bluetooth state 10 -> 11
V/BluetoothEventRedirector( 1595): Received android.bluetooth.adapter.action.STATE_CHANGED
D/bluedroid( 1221): bt_enable
D/bluedroid( 1221): defined OMAP3EVM_BTPWR
[   62.133941] Set BT_EN of WL1271
[   62.137207] WL1271: Powering on
I/bluedroid( 1221): Starting hciattach daemon                                
E/bluedroid( 1221): bt_enable: Timeout waiting for HCI device to come up
D/BluetoothService( 1221): Bluetooth state 11 -> 10
V/BluetoothEventRedirector( 1595): Received android.bluetooth.adapter.action.STATE_CHANGED
D/dalvikvm( 1459): GC_EXPLICIT freed 495K, 52% free 2783K/5703K, external 716K/1038K, paused 24ms



【android bluetooth 框架分析 02】【Module详解 2】【gd_shim_module 模块介绍】 gd_shim_module 模块介绍 阅读详情

相关推荐

【android bluetooth 框架分析 02】【Module详解 1】【Module介绍】

介绍 蓝牙协议栈 Module 框架

奔跑吧 android 的博客 1688

Android bluetooth介绍(二): android 蓝牙代码架构及其uart 到rfcomm流程

关键词:蓝牙blueZ  UART  HCI_UART H4  HCI  L2CAP RFCOMM  版本:基于android4.2之前版本 bluez内核:linux/linux3.08系统:android/android4.1.3.4作者:xubin341719(欢迎转载,请注明作者,请尊重版权谢谢)欢迎指正错误,共同学习、共同进步!!一、Android Bluetooth Architect

CLK 4万+

Android Bluetooth 架构

中)被打包为 Android 应用,并在 Android 框架层实现蓝牙服务和配置文件。API 和蓝牙进程会调用的标准接口,并且您必须实现该接口才能使蓝牙硬件正常工作。蓝牙 HAL 的头文件是。当发生特定蓝牙操作时(例如发现设备时),JNI 代码会调用 HAL 层并从 HAL 接收回调。该堆栈会实现常规蓝牙 HAL,并通过扩展程序和更改配置对其进行自定义。5. Driver 包括蓝牙驱动,硬件接口(蓝牙和主CPU硬件连接)驱动。4.3 Vendor HAL为蓝牙芯片厂商提供的操作驱动的接口。

无线互联&网络介绍 3274

Android Bluetooth(一) — 蓝牙模块代码整体架构

Android Bluetooth(一) — 蓝牙模块代码整体架构0. 前言1. 代码分布2. 整体结构3. 常用类和名词解释4. 以蓝牙 打开 enable 为例简单说明下蓝牙工作的整个过程:5. 后续分析 0. 前言   我之前提过,我目前接触的最多的Android 版本是 Android kk(4.4)与Android P(9.0),因为最近在Android kk上做了一个wifi模组的移植适配工作,因此对WiFi&BT模块有了些了解,本系列主要基于Android kk进行了解分析,也许其他版

一只立志于养老婆的程序猿 3950

Android Kotlin蓝牙控制实战:开关、扫描、配对全流程代码包

一套开箱即用的Android蓝牙功能实现方案,用Kotlin编写,支持动态开启/关闭蓝牙模块,实时扫描周边BLE与经典蓝牙设备,触发配对流程,读取并展示已配对设备名称、MAC地址及绑定状态。项目结构完整,包含app主模块和独立blueTooth业务模块,集成标准Android构建配置(build.gradle、settings.gradle)、Gradle wrapper脚本(gradlew/gradlew.bat)、混淆规则(proguard-rules.pro)和权限管理基础框架。适配Android 6

e6f7g8h9i的博客 200

从Microchip SDK到STM32实战:手把手教你移植LAN9252 EtherCAT从站驱动(含EEPROM配置避坑)

本文详细介绍了如何将Microchip SDK中的LAN9252 EtherCAT从站驱动移植到STM32F407平台,包括FSMC接口配置、中断处理适配和EEPROM配置等关键步骤。通过实战指南和避坑技巧,帮助开发者快速实现高性能EtherCAT从站设备的开发,适用于工业自动化领域。

weixin_29197835的博客 446

ANDROID的 BLUETOOTH 实现机制与架构

ANDROID的 BLUETOOTH 实现机制与架构http://blog.youkuaiyun.com/GooHong/article/details/8005925

mingtiannihao623的博客 489

开关变换器小信号建模实战:从理论到环路设计

本文深入探讨了开关变换器小信号建模的实战技巧,从理论基础到环路设计全面解析。通过Buck和Boost变换器的具体案例,详细介绍了状态空间平均法、扰动法等关键建模技术,并分享环路补偿设计和实际调试中的宝贵经验。文章特别强调了小信号建模在电源设计中的重要性,为工程师提供了从理论到实践的完整解决方案。

weixin_29290259的博客 376

Android Bluetooth架构

Android Bluetooth架构 Android系统蓝牙的整体架构 Applications:Android蓝牙应用程序,就是使用蓝牙的API的程序; Framework:提供给应用使用的API,我们平时使用的BluetoothAdapter,BluetoothDevice,BluetoothSocket等; Bluetooth Service:即Bluetooth APP(Bluetooth.apk)这个应该也是属于java framework范畴,不过由于它比较特殊,所以独立出来,提供所有的上层

kv110的专栏 2578

开关电源环路学习笔记(1)-为啥要知道传递函数?

做硬件都会接触到开关电源,或多或少会接触到环路补偿。很多兄弟们也提出来让我说说这个,说明大家也都很关心,也说明这个好像有点难。 就我个人而言,我也想搞明白环路这一块,也查了一些资料,视频,不过说实话,一直都还是懵的,感觉很困难。 具体感觉就是,看资料或视频的时候,感觉好像是那么回事。但是撇开之后,就又云里雾里的感觉,总有一些想法没有找到答案。 问题 比如下面我想过的问题: 开关电源有开关,根本就不是一个线性系统,传递函数是咋弄出来的? 系统环路框图的输入量为什么不是Vin,而是参考电压V

weixin_42005993的博客 1万+

Linux DRM驱动实战:手把手教你用drmModeSetCrtc显示纯色画面(附完整代码)

本文提供了一份完整的Linux DRM驱动实战指南,手把手教你使用drmModeSetCrtc在屏幕上显示纯色画面。文章详细解析了从打开设备、获取资源、创建帧缓冲区到最终提交画面的完整调用流程,并附带了可直接编译运行的完整代码示例,帮助开发者快速上手Linux图形底层开发。

weixin_29216353的博客 512

Android13-Bluetooth-代码目录介绍

Android 13 中 Bluetooth 模块的代码路径主要位于 packages/modules/Bluetooth(原 AOSP 中为system/bt,从 Android 12 开始迁移到新路径)。

summerkissyou1987的专栏 797

Android11,无障碍服务模拟多手势使用dispatchGesture时总是onCancelled

AccessibilityService的dispatchGesture去模拟多手势,总是onCancelled的一种解决办法

m0_49953943的博客 2102

Android 4.2蓝牙介绍 Android 4.4.2 bluetooth解析(一)

点击打开链接   Android 4.2蓝牙介绍 点击打开链接 Android 4.4.2 bluetooth解析(一)

wocao1226的专栏 2981

如何在NVIDIA CX6 网卡和华为CE交换机上为RDMA协议使能DCQCN和PFC

【代码】如何在NVIDIA CX6 网卡和华为CE交换机上使能DCQCN和PFC。

Markchen7788的博客 5090

华硕笔记本+Ubuntu 20.04:用cpupower解决Intel CPU频率上不去/功耗墙问题实战

本文详细介绍了在华硕笔记本Ubuntu 20.04系统下使用cpupower工具解决Intel CPU频率受限和功耗墙问题的实战方法。通过禁用Intel P-State驱动、配置userspace模式以及高级调优技巧,帮助用户突破性能瓶颈,提升编译和计算效率。

weixin_42561476的博客 523

Android HAL架构

现有HAL架构由Patrick Brady (Google) 在2008 Google  I/O演讲中提出的。Android HAL模块实现- https://my.oschina.net/haomcu/blog/473919> HAL是为了隔离Android Framework和Linux内核;内核空间和用户空间。libhardware_legacy/ - 旧的架构、采取链接库模块的模式进行。l

ShareUs的专栏 1779

YOLOv8改进策略【Neck】| CVPR 2024 MFM(Modulation Fusion Module,调制融合模块):动态特征加权融合,突出关键特征抑制冗余

本文主要利用DCMPNet中的 MFM 模块优化 YOLOv8 的目标检测网络模型。模块通过动态调制特征融合过程,实现了对多尺度、跨层级特征的智能聚合。将其应用于的改进过程中,针对目标检测中边界特征与语义信息的互补性需求,缓解网络中浅层细节与深层语义融合不足的问题。Depth Information Assisted Collaborative Mutual Promotion Network for Single Image Dehazing在图像去雾网络中,不同层级和类型的特征包含着互补的信息(如浅层的

Limiiiing的博客 351

RK3588 Android12调试USB 蓝牙模块

system/bt目录下,蓝牙协议栈代码和加载libbt-vendor.so库的代码,通常情况下建议使用原生的蓝牙协议栈【在system/bt目录】,如果有厂商的协议栈对原生协议栈做过较大的修正而必须使用厂商自己的协议栈的情况下在 jni 层完成对不同厂商协议栈【一般在hardware目录下】的加载。在device/rockchip/common/wifi_bt_common.mk文件(一般rk平台代码已经添加),这个先关闭BCM的芯片,防止BCM的影响。强制使能A2DP,则将上述接口屏蔽即可。

franc521的博客 8859

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

如何利用Bluetooth-LE-Spam进行安全研究:BLE协议安全验证与防护

蓝牙低功耗(BLE)技术在现代物联网设备中广泛应用,但同时也带来了新的安全挑战。Bluetooth-LE-Spam是一款专为BLE安全研究设计的开源工具,能够模拟各类蓝牙设备的配对广告,帮助安全研究人员验证协议安全性并制定防护措施。本文将为您详细介绍这款强大工具的功能特性、使用方法和安全防护策略。 ## BLE安全研究工具的核心功能 ### 广告包生成与设备模拟 Bluetooth-LE-Sp

gitblog_00216的博客 504

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

初识android系统,五层系统架构详解

有时间了,就整理一下这几年下来android的基础知识,希望可以帮到需要的人和影响到一些开发者,然后也希望自己也能从中有一个更深的理解,android的一个很好的理念就是开源,但好像最新几年开发者不像前几年在网上开源自己,整个氛围感觉不太好,一个很大的感觉就是以前开发的问题都能再网上找到解决方案,现在很难找到了,或许是大家都没有时间,或许是知识付费的体系问题。如果有说的不对的地方,请评论上指正。 Android 是一套基于linux内核的开源系统,主要应用于移动端,在移动互联网时代,应运而生。要详细了解它

门徒07的博客 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

AOSP15音频HAL库全解析:从HIDL到so文件,一次搞懂audio.bluetooth.default.so的来龙去脉

本文深入解析了AOSP15音频硬件抽象层(HAL)的实现机制,特别是聚焦于蓝牙音频库audio.bluetooth.default.so的完整技术链路。文章详细阐述了从HIDL接口定义到so库编译、加载与调用的全过程,并结合实战案例,为开发者定制音频HAL、优化蓝牙音频延迟提供了清晰的实现路线图。

embedding5hiker的博客 773

Android 13蓝牙绝对音量功能详解:从系统属性persist.bluetooth.disableabsvol到实际控制逻辑

本文深入解析Android 13中蓝牙绝对音量功能的实现机制,重点探讨系统属性persist.bluetooth.disableabsvol的控制逻辑及其对AVRCP协议的影响。通过分析底层代码架构和开发者选项定制,为系统开发者提供蓝牙音频同步问题的解决方案和调试技巧,帮助优化蓝牙设备兼容性。

weixin_30666401的博客 174

Bluetooth-LE-Spam项目结构解析:模块划分与代码组织最佳实践

Bluetooth-LE-Spam是一个专业的蓝牙低功耗广告模拟工具,采用清晰的模块化架构设计,为蓝牙安全研究和设备兼容性测试提供完整解决方案。该项目通过合理的代码组织和分层设计,实现了复杂BLE功能的高度可维护性和扩展性。 ## 🏗️ 项目架构概览 Bluetooth-LE-Spam采用**分层架构**设计,将核心业务逻辑、数据持久化、用户界面等不同关注点分离。项目主要分为以下几个层次:

gitblog_00745的博客 397

Bluetooth-LE-Spam社区贡献指南:如何参与项目开发与功能扩展

Bluetooth-LE-Spam是一个功能强大的开源项目,专注于蓝牙低功耗(BLE)广告协议的研究与实验。这个项目允许开发者模拟各种设备的配对过程,同时具备检测恶意BLE广告的能力。如果你对蓝牙技术充满热情,想要参与到这个有趣的项目中来,这份完整的社区贡献指南将为你提供详细的参与路径。 ## 🚀 项目概述与核心价值 Bluetooth-LE-Spam项目通过Android设备的原生BLE功

gitblog_00596的博客 411
上一篇: libbluedroid.so
下一篇: PCI总线信号定义
lamdoc
博客等级 码龄18年 155粉丝 655原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值