Linux蓝牙系统(3) Linux 命令

2023-11-09

Linux蓝牙系统(3) Linux 命令  2010-09-27 10:45:44

分类: LINUX

Andrew Haung  bluedrum@163.com
 
一.Linux对于蓝牙的支持
--------------------------------------------------------------
参见如下协议图,在HCI界面之上需要软件来实现。
 
1.Linux 内核对蓝牙支持
 
在Linux 2.6内核已经实现如下协议。
   串口形式蓝牙设备驱动( HCI UART driver)
   USB蓝牙棒驱动(HCI USB driver)
 
  内核也实现了L2CAP,RFCOMM串口接口,以及SCO链路支持.
 
 
 
 
另外内核也直接支持BNEP(Bluetooth Network Encapsulation Protocol ),即把蓝牙网络当成一个无线局域网操作。
 
Linux也带了蓝牙输入设备的相关支持。
需要打开 HIDP 和HID2HCI两个选项都要打开.
 
DUND 把蓝牙网络当成一个拨号网络来处理。
.
2.蓝牙协议栈
   在实现了L2CAP后,也需要一个蓝牙协议栈处理。它起什么作用呢? 我的理解是内核封装到RFCOMM的层次,即只负责的蓝牙的包的封装与收发。至于包收上来,在蓝牙的四个阶段,如何应用的状态影响,以及如何响应正确的包,这一些事情由蓝牙协议栈来完成的。
 
   在Linux实现蓝牙功能有多个互相竞争的蓝牙协议栈,但是影响最大是bluez.几乎已经成为Linux下的标准协议栈的代名词。它的官网是 http://www.bluez.org。在内核已经内置了bluez蓝牙协议栈。
  还有一个协议栈是 Affix  不过用的人比较少
 
在应用程序级,它主要由两部分组成,一个是bluez的应用程序库,主要负责与内核的bluez通信,和bluez-util工具。即完成蓝牙四阶段处理的一些命令行工具。
 
3.蓝牙的概念。
   配对由一方发起即可,如果本设备需要被其它设备搜索,需要有被发现功能。 
 
二.Linux关于蓝牙命令
-------------------------------------------------
 在Linux使用蓝牙最方便是使用bluez-util自带向个命令来测试。
 我们这里采用市面最容易找到的蓝牙棒来做物理层设备与手机进行通讯测试。把蓝牙棒插LINUX下的USB口后,在dmesg我们会看到提示
Bluetooth: Core ver 2.10
NET: Registered protocol family 31
Bluetooth: HCI device and connection manager initialized
Bluetooth: HCI socket layer initialized
Bluetooth: L2CAP ver 2.8
Bluetooth: L2CAP socket layer initialized
Bluetooth: RFCOMM socket layer initialized
Bluetooth: RFCOMM TTY layer initialized
Bluetooth: RFCOMM ver 1.8
Bluetooth: HIDP (Human Interface Emulation) ver 1.1
eth1: no IPv6 routers present
usb 1-1: new full speed USB device using uhci_hcd and address 2
usb 1-1: configuration #1 chosen from 1 choice
usb 1-2: new full speed USB device using uhci_hcd and address 3
Bluetooth: HCI USB driver ver 2.9
usb 1-2: configuration #1 chosen from 1 choice
hub 1-2:1.0: USB hub found
hub 1-2:1.0: 7 ports detected
usbcore: registered new driver hci_usb
hci_scodata_packet: hci0 SCO packet for unknown connection handle 20480
hci_scodata_packet: hci0 SCO packet for unknown connection handle 43088
hci_acldata_packet: hci0 ACL packet for unknown connection handle 0
hci_acldata_packet: hci0 ACL packet for unknown connection handle 0
hci_scodata_packet: hci0 SCO packet for unknown connection handle 20480
hci_scodata_packet: hci0 SCO packet for unknown connection handle 43088
hci_scodata_packet: hci0 SCO packet for unknown 

hci_scodata_packet: hci0 SCO packet for unknown connection handle 53248
usb 1-1: USB disconnect, address 2
usb 1-1: new full speed USB device using uhci_hcd and address 4
usb 1-1: configuration #1 chosen from 1 choice
表示USB蓝牙棒已经被识别了。如果
 
   操作系统自带HCI工具主要来自bluez-util.
 
 
/usr/sbin/hciattach :  attach serial devices via UART HCI to BlueZ stack
 /usr/sbin/hcid     : Bluetooth Host Controller Interface Daemon
/usr/sbin/hciemu    : HCI emulator 
/usr/sbin/hciconfig :   configure Bluetooth devices
 /usr/sbin/hcidump  :  Parse HCI data
 /usr/bin/hcitool   :  configure Bluetooth connections
/usr/bin/sdptool    :  control and interrogate SDP servers

 
hciconfig类似于 hciconfig.类似的操作可以参见是 http://www.thinkwiki.org/wiki/How_to_setup_Bluetooth
 
 
1.检测USB设备,lsusb
   
 #lsusb
Bus 001 Device 004: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Bus 001 Device 003: ID 0e0f:0002
Bus 001 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
2.查看hci设备,hciconfig
 

[root@huisen ~]# hciconfig
hci0:   Type: USB
        BD Address: 00:1F:81:00:01:1C ACL MTU: 1021:4 SCO MTU: 180:1
        UP RUNNING PSCAN
        RX bytes:632 acl:0 sco:0 events:17 errors:0
        TX bytes:313 acl:0 sco:0 commands:16 errors:0

 
 激活设备
     hciconfig hci0 up
 
3.修改蓝牙配置文件
 蓝牙采用/etc/bluetooth/
hcid.conf  rfcomm.conf
 
   其中hcid.conf有关配对信息。其中security user;表示每次配对询问用户对方PIN,而auto则直接采用passkey中的PIN码。
 

# HCId options
options {
        # Automatically initialize new devices
        autoinit yes;

        # Security Manager mode
        #   none - Security manager disabled
        #   auto - Use local PIN for incoming connections
        #   user - Always ask user for a PIN
        #
        security user;

        # Pairing mode
        #   none  - Pairing disabled
        #   multi - Allow pairing with already paired devices
        #   once  - Pair once and deny successive attempts
        pairing multi;

        # Default PIN code for incoming connections
        passkey "BlueZ";
}


4.重启蓝牙服务
   如果修改了蓝牙配置后,需要重启蓝牙服务
   service bluetooth stop
   service bluetooth start 
 
5.扫描设备
 
hcitool scan
Scanning ...
        00:21:19:A4:E0:F1       Meizu M8
 
6.增加自动配对设置
  修改 /etc/bluetooth/rfcomm.conf
   增加扫描蓝牙地址
       
rfcomm0{
        bind no;
        device 00:21:19:A4:E0:F1;
        channel 1;
        comment "Meizu M8";
}
7.创建设备结点(只合适于第一次)
    rfcomm create dev #它将创建于/dev/rfcomm0 设备结点
  它等同于如下命令系列
      mknod /dev/rfcomm0 c 216 1
   chmod 666 /dev/rfcomm0
   rfcomm bind /dev/rfcomm0 00:21:19:A4:E0:F1-1

 
8.增加SDP消息信息
  为了减少麻烦,把所有支持的蓝牙服务都加上.
   sdptool add --channel=1 DID SP DUN LAN FAX OPUSH FTP HS HF SAP NAP GN PANU HID CIP CTP A2SRC A2SNK SYNCML NOKID PCSUITE SR1
 
9.增加蓝牙串口绑定
rfcomm bind /dev/rfcomm0 00:21:19:A4:E0:F1 1
 #rfcomm bind /dev/rfcomm0 蓝牙设备地址  通道,这个命令可选
  
10.解除蓝牙绑定 
 格式:rfcomm unbind /dev/rfcomm0 蓝牙设备地址   通道
 
11.联接蓝牙设备
   hcitool cc 00:21:19:A4:E0:F1

三.关于蓝牙配置文件
-------------------------------------------
 蓝牙的配置文件主要是 /etc/bluetooth目录下的hcid.conf和rfcomm.conf.
options {

  # Automatically initialize new devices

  autoinit yes;
  security user;

这里的security 是表示配对的认证模式,user表示由用户输入密码。这个需要在后面用
      pin_helper 指明用哪一个程序输入密码,这程序可以是图形界面程序,或者是字符界面程序。
常见的pin_helper有
    
/usr/bin/bluez-pin : bluez自带的pin输入界面


kbluepin


 passkey 配置项指明请求联接的设备的pin码。当采用auto模式时,将采用这个密码来联接.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux蓝牙系统(3) Linux 命令 的相关文章

  • 蓝牙模块AT模式AT指令

    文章目录 进入AT模式的两种方法 HC 05的AT指令 HC 06的AT指令 进入AT模式的两种方法 经过摸索 这里总结两种进入AT模式的方法 与USB转TTL相连后接入电脑 将波特率设置成9600 模块指示灯快闪 这时再按下模块的按钮便进
  • nRF52832学习记录(四、定时器)

    一 nRF52832 定时器基本介绍 nRF52832 包含了 5个定时器模块 定时器有着不同的位宽选择 8 16 24 32位 通过BITMODE 寄存器的 第 0 1 位 选择 nRF52832 的定时器的内部结构 1 时钟源 定时器工
  • JavaSE + bluecove 蓝牙连接

    最近公司准备将旧系统的 NET部分翻版 项目除了有后台的还有个与设备对接的客户端用蓝牙连接的 所有这周对相关技术做了一个验证 搜了一下Java 蓝牙相关信息 我去资料也太少了 少也就算了连bluecove库也是有问题的 经过艰难的查找 最终
  • 蓝牙AVRCP协议解析

    在这里讨论蓝牙的AVRCP协议 要理解AVRCP 需要先了解AVCTP 我们分两个部分来进行 1 AVCTP协议 2 AVRCP协议 下面先来看AVRCp协议 一 概述 1 定义 AVCTP Audio Video Control Tran
  • Matter (CHIP) 从入门到入土 (一)

    文章目录 前言 架构 规范 网络拓扑结构 Single network Star network topology matter 设备发现 using BLE using WIFI Using Existing IP bearing Net
  • 蓝牙之六-A2dp代码调用流程

    上图描述的是蓝牙协议栈 通过该图 查看A2dp的代码在协议栈的调用流程 其分层架构如下 1 蓝牙的系统服务service通过JNI与bluedroid协议栈进行通信 协议栈分为两层 Bluetooth Embedded System BTE
  • 【经典蓝牙】 蓝牙HFP层协议分析

    HFP 概述 HFP概念介绍 HFP Hands Free Profile 是蓝牙免提协议 可以让蓝牙设备对对端蓝牙设备的通话进行控制 例如蓝牙耳机控制手机通话的接听 挂断 拒接 语音拨号等 HFP中蓝牙两端的数据交互是通过定义好的AT指令
  • Ble Mesh的Generic Model ID&Opcode

    MODEL ID 标准的为16为 自定义的Vendor Model ID为32位 Model Group Model Name SIG Model ID Generic Generic OnOff Server 0x1000 Generic
  • Uni-App开发BLE低功耗蓝牙流程

    Uni App开发BLE低功耗蓝牙步骤 示例文件已上传gitee https gitee com yan rookie uniapp bluetooth git 如果对你有记得点个赞哦 注 微信小程序同样适用 只需吧前缀uni 修改为wx
  • 蓝牙的知识总结(1)

    1 SoC System on Chip 称为系统级芯片 一个产品 是一个有专用目标的集成电路 其中包含完整系统并有嵌入软件的全部内容 同时它又是一种技术 用以实现从确定系统功能开始 到软 硬件划分 并完成设计的整个过程 从狭义角度讲 它是
  • Bluetooth 蓝牙介绍(七):逻辑链路控制和适配协议规范(L2cap 协议)

    文章目录 前言 L2CAP 特性 前提 术语 常规操作 通道标识符 操作模式 数据包格式 CONNECTION ORIENTED CHANNELS IN BASIC L2CAP MODE CONNECTIONLESS DATA CHANNE
  • nRF52832学习记录(九、SAADC)

    nRF52xx 处理器中的ADC为一个逐次逼近的模拟数字转换器 所有nRF52xx 系列处理器的内部 ADC 称为 SAADC 目录 nRF52xx SAADC基础介绍 SAADC采样示例 SAADC EasyDMA 缓冲采样示例 SAAD
  • BLE MESH组网(五)配置BLE MESH

    BLE MESH 五 配置BLE MESH 前言 概述 配置协议 供应程序 信标 邀请 交换公钥 前言 2017 年 5 月 全球最臭名昭著的勒索软件 WannaCry 在全球范围内积极攻击计算机 劫持用户数据索要赎金 这次攻击影响了 15
  • windows10连接小米耳机Redmi AirDots 2

    1 控制面板 2 添加蓝牙设备 3 搜索 4 下一步 如果链接不上 请删除已有设备从第一步开始重新做
  • Uniapp低功耗蓝牙操作实例

    uniapp低功耗蓝牙在移动端使用较为平常 本文相较于官方文档介绍一下低功耗蓝牙的操作案例 即取即用 低功耗蓝牙虽工作原理与经典蓝牙类似 但是有着独特的架构体系 所以LE独立出来成为一种蓝牙形态 不过LE和经典蓝牙使用相同的2 4G无线电频
  • 安卓蓝牙广播大全

    android bluetooth 提供了皆如扫描设备 连接设备以及对设备间的数据传输进行管理的类 这些类对蓝牙设备进行功能性管理 蓝牙模块API提供的应用包括了 扫描其它蓝牙设备 通过查询本地蓝牙适配器来匹配蓝牙设备 建立RFCOMM 无
  • [Filco]蓝牙连接键盘

    第一次用蓝牙键盘 断连后的重连太痛苦了 蓝牙里搜不到键盘 搜到了PIN码不知道输入什么 不输入PIN码连接 Filco方法 控制面板 设备和打印机 点击 添加设备 搜索到 Filco 点击下一步 尝试从设备输入 对着数字敲 然后Enter就
  • nRF52832学习记录(一、外设初识之 GPIOTE)

    添加GPIO和GPIOTE寄存器表 对于应用的理解对着寄存器查看会比较明了 这个不管是在哪款芯片上都是如此 2021 9 27 这些年蓝牙5 0的应用越来越多 最近也是想着把以前Enocean的低功耗设备有过的产品 用蓝牙做一套匹配的版本
  • 蓝牙设备中的Device UUID 与 Service UUID

    Device UUID也可以被称作为DeviceID Android 设备上扫描获取到的 deviceId 为外围设备的 MAC 地址 相对固定 iOS 设备上扫描获取到的 deviceId 是系统根据外围设备 MAC 地址及发现设备的时间
  • 毕业设计 江科大STM32的智能温室控制蓝牙声光报警APP系统设计

    基于STM32的智能温室控制蓝牙声光报警APP系统设计 1 项目简介 1 1 系统构成 1 2 系统功能 2 部分电路设计 2 1 stm32f103c8t6单片机最小系统电路设计 2 2 LCD1602液晶显示电路设计 2 2 风

随机推荐

  • 对象的实例化

    对象的实例化 创建对象的方式 new Class的newInstance 只能调用空参的构造器 权限必须是public Constructor的newInstance Xxx 可以调用空参 带参的构造器 权限没有要求 使用clone 需要实
  • python进阶知识点汇总

    一 函数 1 函数的传参 1 值传递 将实际的参数复制一份传递给形参 函数中修改形参时 不会影响到实际参数 def a b c 2 return b c print a 10 print a 123 2 print a 2 2 引用传递 将
  • 一张图看懂区块链

    要逐步了解区块链 我们需要一步步了解如下东西 去中心化 先来考虑一个中心化集中式处理的过程 你要在某宝上买一部手机 交易流程是 你将钱打给支付宝 支付宝收款后通知卖家发货 卖家发货 你确认收货 支付宝把钱打给卖家 在这个过程中 虽然你是在和
  • Vert.x的TCP服务端和客户端配置

    Vert x系列 Vert x介绍 https blog csdn net haoranhaoshi article details 89279096 Vert x实战一 Vert x通过Http发布数据 https blog csdn n
  • 蓝桥杯2020省赛单词分析

    题目描述 小蓝正在学习一门神奇的语言 这门语言中的单词都是由小写英文字母组 成 有些单词很长 远远超过正常英文单词的长度 小蓝学了很长时间也记不住一些单词 他准备不再完全记忆这些单词 而是根据单词中哪个字母出现得最多来分辨单词 现在 请你帮
  • RHEL/CentOS 7中的网络暨network.service与NetworkManager.service详解

    在RHEL CentOS 6及以前的版本中 网络功能是通过一系列网络相关的脚本文件实现 如 etc init d network文件 及如下 sbin if 文件等 root myserver ll sbin if rwxr xr x 1
  • ESP32s3 MSC/U盘 虚拟串口

    ESP32s3 MSC U盘 虚拟串口 开发环境是 IDF4 4 芯片 esp32s3 在项目中想要用到把内部的FLASH做成U盘 但是在idf4 4中没有找到MSC相关例程 如图 1 我在网上只找到esp32s2的例程 https git
  • 英国第七批36颗互联网卫星升空

    导读 英国卫星通信公司OneWeb 36颗卫星从俄东方航天发射场点火升空 累计在轨卫星218颗 据外媒 英国卫星通信公司OneWeb 36颗卫星从俄东方航天发射场点火升空 累计在轨卫星218颗 根据OneWeb的说法 只需要再发射一批36颗
  • 解决“unable to access ‘https://github.com...”

    前提 我在操作的时候做了https授权 但是密码输入错误了 再找想改也找不到了 搞半天都会报这个错 甚至我想用秘钥的方式都不行 万恶的git 解决方法 git config global http sslVerify false 然后正常操
  • STM32F103ZET6【HAL函开发】STM32CUBEMX------USART串口实验(DMA)

    printf重定义 需要将下面的代码插入到usart c里面 USER CODE BEGIN 1 if 1 include
  • hive集群安装,连接mysql

    1 linux安装mysql 并且生成hive用户 密码为Abc 123D 权限为所有权限 请看 这点很重要 http blog csdn net qq 21383435 article details 76573955 2 我的hadoo
  • JAVA中的目录指什么_默认情况下,Java listFiles()读取目录中的文件的顺序是什么? - java...

    我编写了以下程序 该程序读取目录中的所有文件 所有文件名均由数字组成 例如10023134 txt File dir new File directoryPath File files dir listFiles for File file
  • 内存管理实战案例分析3:为何分配不出一个页面?

    微信公众号 奔跑吧linux社区本文节选自 奔跑吧Linux内核 第二版卷1第6 3 3章 1 问题描述 下面是有问题的OOM Killer内核日志 其中空闲页面为86048KB 最低警戒水位为22528KB 低水位为28160KB 读者可
  • 如何使用iMazing监督、配置器功能

    监督功能是一种移动设备管理技术 使得Apple设备所有人具有最高管理权 设备受到监督之后 仅仅可以在监督人设定的模式下运行Apple设备 如单应用运行模式 权限限制模式 禁用配对模式等 最近很火的网剧 你安全了吗 就是宣传网络安全的 利用i
  • 【mySQL】MySQL JOIN原理

    MySQL JOIN原理 先看一下实验的两张表 表comments 总行数28856 表comments for 总行数57 comments id是有索引的 ID列为主键 以上两张表是我们测试的基础 然后看一下索引 comments fo
  • Nginx+Keepalived双机热备(主主模式)

    Keepalived介绍 Keepalived是一个基于VRRP协议来实现的服务高可用方案 可以利用其来避免IP单点故障 类似的工具还有heartbeat corosync pacemaker 但是它一般不会单独出现 而是与其它负载均衡技术
  • Mybatis 返回对象中包含 List集合

    遇到这种情况的实体类 需要在mapper xml文件里使用 resultMap标签以及其他子标签 先贴代码 实体类 UserEntity类 private Long id 用户id private String username 用户名 p
  • http请求忽略证书、单向认证、双向认证、连接池范例(httpclient 4.3.x以上版本)

    目录 加载证书单向认证 忽略证书 双向认证 连接池 加载证书单向认证 import org apache http HttpEntity import org apache http client methods CloseableHttp
  • 数据库小白入门最简易版

    一 数据库是什么 数据库的基本概念 1 数据 data 定义 描述事物的符号记录称为数据 不严格的说就是我们平时接触到的一切可视化信息 数据的集合构成了表 表的集合构成了数据库 2 数据库 DB DataBase 定义 是存放数据的仓库 这
  • Linux蓝牙系统(3) Linux 命令

    Linux蓝牙系统 3 Linux 命令 2010 09 27 10 45 44 分类 LINUX Andrew Haung bluedrum 163 com 一 Linux对于蓝牙的支持 参见如下协议图 在HCI界面之上需要软件来实现 1