ap6212中串口蓝牙在linux下的使用记录

ap6212中串口蓝牙在linux下的使用记录

一、linux蓝牙工具移植

主要使用到的工具及相关库如下:

bluez-libs-3.36

libxml2-2.7.4

dbus-1.0.2

glib-2.24.2

bluez-utils-3.36

openobex-1.5

下载相应的源码解压,按照上面的顺序进行编译.

bluez-libs-3.36中增加mk.sh内容如下

#!/bin/sh
./configure --prefix=/usr/bluez --host=arm-linux --target=arm-linux CC=arm-cortex_a9-linux-gnueabi-gcc
make 
make install

修改mk.sh权限直接运行,完成编译与安装,下同

libxml2-2.7.4中增加mk.sh内容如下

#!/bin/sh
./configure --prefix=/usr/bluez --host=arm-linux --target=arm-linux CC=arm-cortex_a9-linux-gnueabi-gcc
make 
make install

dbus-1.0.2中增加mk.sh内容如下

#!/bin/sh
echo ac_cv_have_abstract_sockets=yes>arm-linux.cache
./configure --prefix=/usr/bluez --host=arm-linux --target=arm-linux CC="arm-cortex_a9-linux-gnueabi-gcc -I/usr/bluez/include -L/usr/bluez/lib" --cache-file=arm-linux.cache --with-x=no
make 
make install

glib-2.24.2中增加mk.sh内容如下

#!/bin/sh
echo ac_cv_type_long_long=yes>arm-linux.cache
echo glib_cv_stack_grows=no>>arm-linux.cache
echo glib_cv_uscore=no>>arm-linux.cache
echo ac_cv_func_posix_getpwuid_r=yes>>arm-linux.cache
echo ac_cv_func_posix_getgrgid_r=yes>>arm-linux.cache
#echo gt_cv_have_gettext=no>>arm-linux.cache
export NM=nm
./configure --prefix=/usr/bluez --host=arm-linux --target=arm-linux CC="arm-cortex_a9-linux-gnueabi-gcc -I/usr/bluez/include -L/usr/bluez/lib" --cache-file=arm-linux.cache
make 
make install

bluez-utils-3.36中增加mk.sh内容如下

#!/bin/sh
./configure --prefix=/usr/bluez --host=arm-linux --target=arm-linux CC="arm-cortex_a9-linux-gnueabi-gcc -I/usr/bluez/include -L/usr/bluez/lib" --enable-test
make 
make install

openobex-1.5中增加mk.sh内容如下

#!/bin/sh
./configure --prefix=/usr/bluez --host=arm-linux --enable-apps --enable-bluetooth CFLAGS=-I/usr/bluez/include LDFLAGS=-L/usr/bluez/lib CC=arm-cortex_a9-linux-gnueabi-gcc
make 
make install

同时需要修改configure文件11311行将

 #  { (exit 1); exit 1; }; }
	{ (echo 1); echo 1; }; }

将上面的exit 1这一行注释增加下面echo 1这行,忽悠掉这个错误

所有文件都会安装在/usr/bluez目录下。拷贝/usr/bluez目录下所有文件到目标板/usr目录下

对于我使用的这个模块wifi和bt是一起的,在android下能正常使用,在linux下bt要正常识别还需要另一个工具brcm_patchram_plus最后我会给下载地址,同时还需要固件文件bcm43438a0.hcd这个可以直接从android文件系统下拷贝过来.

二、使用说明
加载完ap6212模块驱动后,因为这个有电源控制,所以首先要给bt上电,执行rfkill list查看bt对应的控制节点,如下图
在这里插入图片描述

可以看到bt对应的是0节点
在这里插入图片描述

在/usr/sbin下新建一个脚本命名为btstart内容如下:

#!/bin/sh
echo 1 > /sys/class/rfkill/rfkill0/state
brcm_patchram_plus --patchram /etc/firmware/bcm43438a0.hcd --baudrate 3000000 --enable_lpm --enable_hci --no2bytes /dev/ttyAMA1 &

echo 1 >xxxx是给bt上电

后面这个是加载固件,这里我的bt接的是串口1对应的串口设备节点是/dev/ttyAMA1,波特率设置为3M

保存这个脚本,修改权限后执行
在这里插入图片描述

等待几秒会出现Done setting line discpline说明设置已经完成,此时就可以查看到bt设备了,执行hciconfig -a

正常识别到后,接着就来看怎么使用.

首先需要开启dbus守护进程,hcid需要这个

前面已经将安装到的/usr/bluez下的文件全部拷贝到了目标板的/usr目录下,此时在目标板会有/usr/etc/dbus-1/system.conf文件

修改system.conf文件第18行

  <!-- Run as special user -->
  <user>messagebus</user>

将messagebus改为root或者已经存在的用户名.

然后修改/usrc/etc/bluetooth/hcid.conf

#
# HCI daemon configuration file.
#
 
# 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";
}
 
# Default settings for HCI devices
device {
	# Local device name
	#   %d - device id
	#   %h - host name
	name "BlueZ (%d)";
 
	# Local device class
	class 0x000100;
 
	# Default packet type
	#pkt_type DH1,DM1,HV1;
 
	# Inquiry and Page scan
	iscan enable; pscan enable;
 
	# Default link mode
	#   none   - no specific policy 
	#   accept - always accept incoming connections
	#   master - become master on incoming connections,
	#            deny role switch on outgoing connections
	lm accept;
 
	# Default link policy
	#   none    - no specific policy
	#   rswitch - allow role switch
	#   hold    - allow hold mode
	#   sniff   - allow sniff mode
	#   park    - allow park mode
	lp rswitch,hold,sniff,park;
}

将security后的user改为auto 将passkey后的 "BlueZ"改为 "0000"改成简单点的

其中name “BlueZ (%d)”;后的"BlueZ (%d)"将会成为其它设备识别到本设备时的bt的名字

passkey为其它设备主动发起配对时需要的密码,security设置为auto后,其它设备输入密码正常,就会自动与本设备进行配对,并显示配对成功.如果本设备主动发起配对,此时密码就不是这里设置的这个密码了.

修改完成后,还需要做一些链接,新建btup脚本,内容如下

#!/bin/sh
hciconfig hci0 up
hciconfig hci0 iscan
 
if [ ! -d /usr/bluez/etc/dbus-1 ]; then
	if [ ! -d /usr/bluez/etc ]; then
		mkdir -p /usr/bluez/etc
	fi
	ln -s /usr/etc/dbus-1 /usr/bluez/etc/dbus-1
fi
 
#for dbus
if [ ! -d /usr/bluez/var/run/dbus ]; then
	if [ ! -d /var/run/dbus ]; then
		mkdir -p /var/run/dbus
	fi
 
	if [ ! -d /usr/bluez/var/run ]; then
		mkdir -p /usr/bluez/var/run
	fi
 
	ln -s /var/run/dbus /usr/bluez/var/run/dbus
fi
 
if [ ! -d /usr/bluez/lib/bluetooth/plugins ]; then
	if [ ! -d /usr/bluez/lib/bluetooth ]; then
		mkdir -p /usr/bluez/lib/bluetooth
	fi
	ln -s /usr/lib/bluetooth/plugins /usr/bluez/lib/bluetooth/plugins
fi
 
dbus-daemon --system
hcid -f /usr/etc/bluetooth/hcid.conf -n -d &

上面的这些链接的创建是为了下面这两条命令能正常执行,也可以先不创建先一条一条命令执行后面会报错,然后根据错误来创建链接.

最后一条命令

hcid -f /usr/etc/bluetooth/hcid.conf -n -d &

中的-n -d可以去掉,这里方便调试我才加上

执行btup脚本,此时会有很多打印信息输出如下图:
在这里插入图片描述

此时打开手机蓝牙进行扫描,就可以看到我们的设备了
————————————————
版权声明:本文为CSDN博主「红尘六欲」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hclydao/article/details/51451725

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Linux ap6212驱动是用于支持ap6212芯片在Linux操作系统上正常工作的驱动程序。ap6212是一种集成了Wi-Fi和功能的无线通信芯片,常用于嵌入式系统和物联网设备。 在Linux操作系统,内核提供了通用的子系统,但由于不同的硬件芯片和设备有不同的特性和规范,就需要针对具体的硬件芯片编写相应的驱动程序,以确保硬件的正常工作和系统的兼容性。 对于ap6212芯片来说,需要专门编写驱动程序来与Linux内核进行交互,以让操作系统能够正确地识别和管理ap6212芯片的功能。这个驱动程序通常包括了与ap6212硬件通信的底层代码和与Linux子系统集成的间层代码。 通过这个驱动程序,Linux系统可以通过协议与其他设备进行通信、配对和传输数据。用户可以使用适当的工具和应用程序来管理和操作ap6212芯片,例如配对和连接其他设备、传输文件等。 总之,Linux ap6212驱动是为了确保ap6212芯片在Linux操作系统上正常工作而编写的驱动程序,使得用户可以方便地使用和管理ap6212芯片的功能。 ### 回答2: AP6212是一种支持和Wi-Fi功能的芯片,常用于嵌入式Linux设备。在Linux系统AP6212的驱动需要通过加载内核模块的方式来实现。 要在Linux系统使用AP6212的功能,首先需要编译和安装相应的内核模块。通常情况下,内核已经存在了对AP6212芯片的支持,所以只需要在编译内核时选择相应的驱动选项即可。如果是使用已经编译好的内核,可以通过modprobe命令来加载相应的驱动模块。 加载驱动后,可以使用hciconfig命令来查看已经连接的设备。如果没有找到设备,可能是由于无线电频率设置的问题,可以使用hcitool和hciconfig命令来设置设备的频率和功率等参数。 另外,还可以使用rfcomm命令来设置和管理串口连接。通过rfcomm命令可以将设备与其他设备建立串口连接,从而实现数据的传输和通信。 总之,要在Linux系统使用AP6212芯片的功能,需要先加载相应的内核模块,然后通过一系列命令来设置和管理设备。这样就可以实现功能的使用和交互了。 ### 回答3: Linux ap6212驱动是用于支持ap6212芯片上的功能的驱动程序。ap6212是一种集成了Wi-Fi和功能的无线通信芯片,在Linux操作系统使用该芯片进行通信时,需要安装相应的驱动程序来实现功能的正常运作。 ap6212驱动提供了与该芯片上的硬件模块进行通信的接口和功能。该驱动程序允许Linux操作系统与ap6212芯片上的模块进行连接和通信,实现设备之间的数据传输和通信功能。 安装ap6212驱动需要根据具体的Linux发行版和内核版本进行操作。一般来说,可以通过以下步骤来安装: 1. 确认Linux内核版本:使用命令`uname -r`可以查看当前Linux系统的内核版本。 2. 下载ap6212驱动:可以从类似Github等开源软件平台上找到适用于自己内核版本的ap6212驱动源码。 3. 编译和安装驱动:根据源码的说明文档,进入驱动源码目录,执行编译和安装操作,通常是使用`make`和`make install`命令完成。 4. 加载驱动模块:在安装完成后,使用`modprobe`命令加载驱动模块,例如`modprobe ap6212`。 5. 配置设备:根据具体情况,可能需要进行一些额外的配置,如设置设备的名称、配对密码等。 以上是大致的安装步骤,具体细节可能因系统版本、内核版本和驱动源码的不同而有所差异。在安装过程可能会遇到一些问题,可以参考相关的文档和社区讨论来解决。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值