查看: 490|回复: 0

[应用笔记] UB61 Ubuntu调试BT应用笔记

[复制链接]

21

主题

21

帖子

67

积分

利尔达员工

Rank: 9Rank: 9Rank: 9

积分
67
发表于 2023-4-24 14:54:12 | 显示全部楼层 |阅读模式
  1 蓝牙简介

  蓝牙是一种支持设备短距离通信的无线电技术,使用 2.4GHz 频段,数据速率为1Mbps 。采用时分复用方案实现全双工传输。

  蓝牙技术将设备分为两种,主设备和从设备。

  蓝牙主设备特点:主设备是扫描-和发起连接的设备端,也具有输入窗口。在进行蓝牙匹配操作时,用户通过输入端可输入随机的匹配密码来将两个设备匹配。蓝牙手机、安装有蓝牙模块的 PC 等都是主设备。

  蓝牙从设备特点:从设备一般不具备输入端。因此从设备在出厂时,在其蓝牙芯片中,固化有一个4位或6位数字的匹配密码。蓝牙耳机等都是从设备。

  蓝牙设备的连接过程:
  1. 蓝牙主设备发起呼叫,先是查找,找出周围处于可被查找的蓝牙设备,此时从端设备需要处于可被查找状态——广播状态。
  2. 主设备找到从设备后,与从蓝牙设备进行配对,此时需要输入从设备的 PIN 码。
  3. 配对完成后,从设备会记录主设备的信任信息,此时主设备即可向从设备发起呼叫,根据应用不同,可能是ACL数据链路呼叫或SCO语音链路呼叫,已配对的设备在下次呼叫时,不再需要重新配对。
  4. 已配对的设备,做为从端的蓝牙耳机也可以发起建链请求,但做数据通讯的蓝牙模块一般不发起呼叫。
  5. 链路建立成功后,主从两端之间即可进行双向的数据通讯。在通信状态下,主端和从端设备都可以发起断链,断开蓝牙链路。

  2 安装BlueZ

  2.6 之后的内核都提供了蓝牙支持,通常都已经是默认的设置。Linux 官方的蓝牙协议栈是 BlueZ ,所以需要到官网去下载BlueZ
  官网链接: http://www.bluez.org/download/.
  github链接: https://github.com/bluez/bluez.

  2.1 下载/解压BlueZ
  wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.60.tar.xz
  tar xvf bluez-5.60.tar.xz

  2.2  配置环境
  进入到bluez目录下,执行./configure文件
  ./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var
图2.1

  最后成功创建出makefile,表示配置成功
  config.status: creating Makefile
  config.status: creating src/bluetoothd.rst
  config.status: creating lib/bluez.pc
  config.status: creating mesh/bluetooth-meshd.rst
  config.status: creating config.h
  config.status: executing depfiles commands
  config.status: executing libtool commands
图2.2

  注:ERROR:执行./configure文件如果报错,根据提示安装对应软件包

  1.error: GLib >= 2.28 is required
  sudo apt install libglib2.0-dev

  2.error: D-Bus >= 1.6 is required
  sudo apt install libdbus-1-dev

  3.error: libudev >= 172 is required
  sudo apt install libudev-dev

  4.error: libical is required
  sudo apt install libical-dev

  5.error: readline header files are required
  sudo apt install libreadline-dev

  6.error: rst2man is required
  sudo apt install python-docutils
  sudo which rst2man

  2.3  编译和安装
  sudo make
  sudo make install

  3 配置蓝牙

  3.1 查看设备

  显示连接到USB总线上的设备信息和驱动信息:8801表示驱动加载成功
  lsusb
  Bus 001 Device 023: ID a69c:8801 aicsemi AIC Wlan
  Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
  Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
  Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
  Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

  3.2 查询蓝牙设备状态

  UP RUNNING:设备状态 UP RUNNING表示蓝牙启动成功

  hciconfig -a
  hci0: Type: Primary  Bus: USB
   BD Address: AE:AE:77:AE:EE:77  ACL MTU: 1021:9  SCO MTU: 255:4
   UP RUNNING PSCAN ISCAN INQUIRY
   RX bytes:145331 acl:0 sco:0 events:3007 errors:0
   TX bytes:4758 acl:0 sco:0 commands:78 errors:0
   Features: 0xbf 0xee 0xcd 0xfe 0xd8 0x3f 0x7b 0x87
   Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV3
   Link policy: RSWITCH SNIFF
   Link mode: SLAVE ACCEPT
   Name: 'ubuntu'
   Class: 0x3c0000
   Service Classes: Rendering, Capturing, Object Transfer, Audio
   Device Class: Miscellaneous,
   HCI Version:  (0xb)  Revision: 0x14
   LMP Version:  (0xb)  Subversion: 0x14
   Manufacturer: RivieraWaves S.A.S (96)

  注:如果查询的设备状态为DOWN,可以用指令”sudo hciconfig hci0 up“手动启动一下

  4 连接蓝牙设备

  连接设备名称为”GGMM_E3“的蓝牙音响

  4.1 扫描周围蓝牙设备

  hcitool scan指令不会一直打印扫描到的设备信息,所以先用这条命令来看蓝牙设备的MAC信息
  hcitool scan
图4.1

  4.2 启动交互式命令

  进入bluetoothctl命令行
  bluetoothctl
图 4.2

  4.3 初始化
  power on
  agent on
  default-agent
图4.3

  4.4 开启扫描——配对——连接

  连接成功的时候这里的[bluetooth]#命令行变为连接设备名称,这里是[GGMM_E3]
  scan on
  pair FC:58:FA:B1:EA:CF
  connect FC:58:FA:B1:EA:CF
图4.4

  4.5 退出bluetoothctl

  连接之后就可以关闭扫描或者退出bluetoothctl
  exit

选择播放速率:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表