mini2440 蓝牙驱动移植

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

原文地址:mini2440 蓝牙驱动移植


我的蓝牙设备是:USB蓝牙,芯片制造商: CSR,  芯片型号:41B14。芯片上贴的是AS6320QA。可见是水货。但在windows下测试可以使用。

Linux2.6版本之后的内核一般都有蓝牙模块的配置,所以不用再打补丁了。一般在配置内核的时候选择如下选项:

[*] Networking support --->               

<*>  Bluetooth subsystem support --->   //蓝牙子系统必须选择

<*>  L2CAP protocolsuppor      //逻辑链路控制和适配协议。

<*>  SCO linkssupport          //蓝牙语音和耳机支持

<*>  RFCOMM protocolsuppor     //面向流的传输协议,支持拨号网络等

[*]   RFCOMM TTYsupport         //

<*>  BNEP protocolsupport      //蓝牙网络封装协议,自组网支持

[*]   Multicastfiltersupport   //蓝牙多播,支持支持BNEP

[*]   Protocolfilter support //蓝牙多播,支持支持支持BNEP

<*>  HIDP protocolsupport      //基本支持协议

Bluetooth device drivers --->

<*> HCI USBdriver             //USB蓝牙模块支持

<M>HCI UARTdriver             //基于串口,CF卡或PCMCIA的蓝牙

<*> HCI BlueFRITZ!USB driver

<*> HCI VHCI (VirtualHCI device) driver

其余的选项,根据自己的蓝牙设备进行调整。

           [B]    蓝牙协议栈移植

a)        需要的软件包

可以在http://sourcearchive.com/下载多用到的所有软件包

                        (1)D-Bus library提供简单的应用程序互相通讯

下载地址:http://www.freedesktop.org/wiki/Software/dbus#Download

                        (2)GLiblibrary         GLib是GTK+和GNOME工程的基础底层核心程序库,是一个综合用途的实用的轻量级的C程序库,它提供C语言的常用的数据结构的定义、相关的处理函数,有趣而实用的宏,可移植的封装和一些运行时机能,如事件循环、线程、动态调用、对象系统等的API。它能够在类UNIX的操作系统平台(如LINUX,HP-UNIX等),WINDOWS,OS2和BeOS等操作系统台上运行。

下载地址:http://ftp.gnome.org/pub/gnome/sources/glib/2.26/

                        (3)USB library (optional)是一个用C语言开发的跨平台的USB设备访问接口库。

下载地址:http://www.libusb.org/

                        (4)Lexical Analyzer (flex或lex)         词法分析器

下载地址:http://linux.softpedia.com/get/Programming/Interpreters/Flex-23296.shtml

                        (5)YACC (yacc, bison,byacc)          Unix/Linux上一个用来生成编译器的编译器(编译器代码生成器)

下载地址:http://invisible-island.net/byacc/byacc.html

                        (6)alsa-libALSA 应用

下载地址:http://www.alsa-project.org/

b)       解压编译

在编译之前,首先将下载的所有包都放在bluetooth文件夹下。并在该文件夹下建立bluetooth-build文件夹,并将其输出到环境变量。

#cd  Bluetooth

#mkdir  bluetooth-build

#blue=$PWD/bluetooth-build

#export blue

#export                            //检查是否包含blue环境变量

              (1)    编译alsa-lib库

#tar  -jxvf alsa-lib-1.0.24.1.tar.bz2

#cd alsa-lib-1.0.24.1

#./configure --prefix=$blue CC=arm-linux-gcc --host=arm-linux--disable-python

#make

#make install

              (2)    编译expat

#tar –zxvf expat-2.0.1.tar.gz

#cd expat-2.0.1

#./configure --prefix=$blue CC="arm-linux-gcc -I$blue/include-L$blue/lib " --host=arm-linux

#make

#make install

              (3)    D-Bus

#tar  dbus-1.4.1.tar.gz

#cd  dbus-1.4.1

配置configure:

#echoac_cv_have_abstract_sockets=yes>arm-linux.cache

#./configure --prefix=$blue CC="arm-linux-gcc -I$blue/include-L$blue/lib " --host=arm-linux--cache-file=arm-linux.cache--with-x=no

              (4)    编译glib库

#vi arm-linux.cache

在其中输入如下内容:

glib_cv_long_long_format=ll

glib_cv_stack_grows=no

glib_cv_working_bcopy=no

glib_cv_sane_realloc=yes

glib_cv_have_strlcpy=no

glib_cv_va_val_copy=yes

glib_cv_rtldglobal_broken=no

glib_cv_uscore=no

ac_cv_func_posix_getpwuid_r=yes

ac_cv_func_nonposix_getpwuid_r=no

ac_cv_func_posix_getgrgid_r=no

glib_cv_use_pid_surrogate=no

ac_cv_func_printf_unix98=no

ac_cv_func_vsnprintf_c99=no

ac_cv_path_GLIB_COMPILE_SCHEMAS=yes

或者不建立arm-linux.chach文件,直接输入如下命令也可以:

echoglib_cv_long_long_format=ll>arm-linux.cache

echoglib_cv_stack_grows=no>>arm-linux.cache

echoglib_cv_working_bcopy=no>>arm-linux.cache

echoglib_cv_sane_realloc=yes>>arm-linux.cache

echoglib_cv_have_strlcpy=no>>arm-linux.cache

echoglib_cv_va_val_copy=yes>>arm-linux.cache

echoglib_cv_rtldglobal_broken=no>>arm-linux.cache

echoglib_cv_uscore=no>>arm-linux.cache

echoac_cv_func_posix_getpwuid_r=yes>>arm-linux.cache

echoac_cv_func_nonposix_getpwuid_r=no>>arm-linux.cache

echoac_cv_func_posix_getgrgid_r=no>>arm-linux.cache

echoglib_cv_use_pid_surrogate=no>>arm-linux.cache

echoac_cv_func_printf_unix98=no>>arm-linux.cache

echoac_cv_func_vsnprintf_c99=no>>arm-linux.cache

echoac_cv_path_GLIB_COMPILE_SCHEMAS=yes>>arm-linux.cache

 

然后保存退出。如果不创建该文件,编译总出现…can’t run test program …错误

#./configure --prefix=$blue CC="arm-linux-gcc -I$blue/include-L$blue/lib " --host=arm-linux --cache-file=arm-linux.cache

如果继续出错,记录下提示error错误行的上一行,如:

checking abstract socket namespace...

configure: error: cannot run test program while crosscompiling

注意到abstract socket namespace在configure中查找abstractsocket可以看到类似这样的结构

echo "$as_me:$LINENO: checking abstract socket namespace">&5

echo $ECHO_N "checking abstract socket namespace... $ECHO_C">&6

if test "${ac_cv_have_abstract_sockets+set}" = set; then

echo $ECHO_N "(cached) $ECHO_C">&6

其中ac_cv_have_abstract_sockets是我们要查找的变量。然后在当前目录下的arm-linux.cache中加入:echoac_cv_have_abstract_sockets=yes

 

#make

出现如下错误:

(process:18811): GLib-Genmarshal-WARNING **: unknown type:VARIANT

make[2]: *** [stamp-gmarshal.h] 错误 1

make[2]: Leaving directory`/root/mywork/mini2440/bluetooth/glib-2.26.0/gobject'

make[1]: *** [all-recursive] 错误 1

make[1]: Leaving directory`/root/mywork/mini2440/bluetooth/glib-2.26.0'

make: *** [all] 错误 2

出现如上错误好像是文件格式错误引起的。解决办法如下:

第一次出错:将其中唯一的一行注释掉!

#vi gobject/stamp-gmarshal.h

第二次出错:将如下文件的开头空行删除。

#vi gobject/gmarshal.c

这时候,继续编译就通过了。!

#vi tests/gobject/stamp-testmarshal.h

什么也不输入,保存退出即可。

              (5)    编译bluez

#tar  -zxvf bluez-4.87.tar.gz

#cd  bluez-4.87

# ./configure --prefix=$blue CC="arm-linux-gcc -I$blue/include-L$blue/lib " --host=arm-linux

#make

#make  install

编译顺利,没初现错误。

              (6)    编译YACC

#tar  -zxvf  byacc.tar.gz

#cd  byacc-20101127

# ./configure --prefix=$blue CC="arm-linux-gcc -I$blue/include-L$blue/lib " --host=arm-linux

#make

#make  install

              (7)    编译USB library

#tar  -zxvf libusb-1.0.8.tar.bz2

#cd  libusb-1.0.8

# ./configure --prefix=$blue CC="arm-linux-gcc -I$blue/include-L$blue/lib " --host=arm-linux

#make

#make  install

至此,所有的软件包都编译完成!

              (8)    复制生成的软件到开发板

1)     将bluetooth-build/sbin下的文件复制到开发板的/sbin下

#cp bluetooth-build/sbin/*   ROOTFS/sbin              //ROOTFS自己指定

#cp bluetooth-build/bin/hcitool        ROOTFS/bin/

#cp bluetooth-build/bin/rfcomm             ROOTFS/bin/

#cp bluetooth-build/bin/sdptool             ROOTFS/bin/

 

2)     复制相关的库到开发板的/lib下

#cp Bluetooth-build/lib/libbluetooth*   ROOTFS/lib        //ROOTFS自己指定

3)     复制配置文件到开发板的/etc目录下

#cp  -arfbluetooth-build/etc/bluetooth/   ROOTFS/etc/         //ROOTFS自己指定

 

            [C]    蓝牙测试

1.检查是否有蓝牙设备

在插入蓝牙到到USB口前后,用lsusb命令可以发现输出内容不一样。即插入蓝牙设备后lsusb输出多了一行。然后,运行hciconfig可以看到:

#hciconfig

hci0:      Type: BR/EDR  Bus: USB

      BD Address: 00:00:00:00:00:00  ACL MTU:0:0  SCO MTU: 0:0

      DOWN

      RX bytes:0 acl:0 sco:0 events:0 errors:0

      TX bytes:0 acl:0 sco:0 commands:0 errors:0

上面的信息说明检测到了蓝牙设备hci0。

2.激活蓝牙设备

#hciconfig hci0 up

可以激活借口(这一步不做,hcitool scan无法运行)。这时候如果再次执行hciconfg命令,可以发现蓝牙以及激活(UP RUNNING):

hci0:      Type: BR/EDR  Bus: USB

      BD Address: 00:1F:81:00:02:DD  ACL MTU:1021:4  SCO MTU: 180:1

      UP RUNNING

      RX bytes:342 acl:0 sco:0 events:10 errors:0

      TX bytes:33 acl:0 sco:0 commands:11 errors:1

3.扫描设备

#hcitool scan

可以得到:

Scanning ...

      00:23:7A:F3:66:8D    BlackBerry9000               这就是搜索到的设备(提前打开哦)

4.修改配置文件:

修改/etc/bluetooth/rfcomm.conf

将里面的:device 11:22:33:44:55:66;

修改成hcitool scan的结果,也就是:

device 00:23:7A:F3:66:8D

保存退出。

rfcomm_create_dev。

5.创建蓝牙设备

运行:

#rfcomm_create_dev。

 

3,配置bluez

默认的配置文件放在/etc/bluetooth目录

hcid.conf和pin不需要修改,安全方式已经被设置成auto,这是为了方便连接,用户可以自己修改,推荐不做修改,以防止有些设备连接不上。

4,重启bluetooth服务。

  /etc/rc.d/init.d/bluetooth stop

  /etc/rc.d/init.d/bluetooth start

7,创建设备:

#rfcomm

cat /dev/rfcomm0

8,添加通道:

#sdptool add --channel=1 DID SP DUN LAN FAX OPUSH FTP HS HF SAPNAP GN PANU HID CIP CTP A2SRC A2SNK SYNCML NOKID PCSUITE SR1

后面的参数不一定被支持,但是以防有些服务没有被打开,所以,干脆全部打开了。

rfcomm bind /dev/rfcomm0 电话的地址通道(在rfcomm.conf中配置)

这里的命令应该写成:

#rfcomm bind /dev/rfcomm0 00:23:7A:F3:66:8D 1

9,连接手机

  hcitool cc 电话的地址

也就是

  hcitool cc 00:23:7A:F3:66:8D

这时候,可以看到手机上的蓝牙连接呈联通状态。

10,从计算机发送文件:

  obex-send abc.jpg

操作系统会弹出提示框,让你选择要发送的目标。

同时可以看到手机会弹出提示框,询问是否接受文件。

11,手机的配置:

需要在手机上进行一下配置:

连接->蓝牙->匹配装置->添加装置。

会自动扫描到PC上的适配器。

如果需要填入识别码就填写123。上面已经设置了。

这时候,可以看到手机已经成功的添加蓝牙装置。

12,从手机发送文件。

在PC机上启动obex-server,会看到系统托盘出现一个小图标。

完成上面的工作后,可以进入手机的:

多媒体->我的影集

选择一张图片。

然后,“发送”->“通过蓝牙”

看到有刚才扫描到的蓝牙适配器。

然后,就可以发送文件了。

13,使用软件管理手机信息。

参考gnokii软件的文档

二、蓝牙耳机。

1,同时按住jabra 250上面的“电话键”和“音量增大键”,大约8秒,看到蓝灯常亮

2,扫描耳机,得到bdaddress

  hcitool scan

3,配置工作:

  modprobe snd_bt_sco

  hciconfig hci0 void 0x0060

  btsco bdaddress (这里的bdaddress就是扫描出来的结果)

  btsco运行后,会弹出对话框,要求输入耳机的pin,jabra250为0000,可以在说明书上找到。

4,建立联接后,设备被映射成/dev/dsp1。

以beep为例,

插件->输出,选择使用alsa驱动,点开“首选项”,音频设置部分就可以看到btsco:hw0,1之类的信息,选择这个即可。

然后播放一首歌,尝试一下无线的快乐吧。

然后适当的配置你所要使用的播放器之类的就可以了。

关于mini2440蓝牙驱动BLUEZ的移植 以上是个坑!!今天终于弄好了 能配对了!!!!方法如下 --------------------------------------------------------------------------------------------------- 其实只是为了注册一个agent而已 这个方法我之前在别的博客还是什么上边已经看到过了 只不过我当时实验了之后发现并没有效果 今天偶然在自己的/home/目录下发现了安装的时候的目录 我才发现当时我安装的时候的目录居然是var/bluetooth目录的真正 阅读详情

相关推荐

基于CoreXY结构与Arduino的桌面写字机DIY全攻略

步进电机作为实现精准位置控制的核心执行元件,其工作原理是通过接收电脉冲信号,按固定角度(步距角)旋转,从而将数字指令转化为精确的机械位移。这种开环控制方式结构简单、可靠性高,在数控机床、3D打印机和自动化设备中广泛应用。其技术价值在于能以较低成本实现高精度的定位与轨迹控制,是创客项目和桌面自动化设备的理想动力源。典型的应用场景包括3D打印机的喷头定位、激光雕刻机的焦点移动以及绘图仪的笔迹控制。本文聚焦于如何利用常见的42步进电机和Arduino Uno开发板,结合成熟的GRBL固件与CoreXY机械结构,构

weixin_33843409的博客 369

hciconfig 源码

hciconfig命令 – 配置蓝牙设备

嵌入式移植bluez搭建蓝牙SPP通讯环境

环境: HI3559/3519 内核:4.9.37 蓝牙芯片:USB 8723bu 1.驱动添加 8723bu驱动。 内核自带,不过在热插拔时提示找不到bin文件,需要在/lib/firmware/rtl_bt路径放了两个rtl8723b_config.bin rtl8723b_fw.bin文件,插入USB在驱动probe时需要这两个文件。 内核:蓝牙相关功能打开、蓝牙USB支持。 2.bluez编译 Bluez编译资源列表: drwxr-xr-x 23 hi3559av100.

Yangquot的博客 3061

hciconfig hcitool

adb remount adb push hciconfig /system/xbin adb push hcitool /system/xbin adb shell chmod -R 777 /system/xbin

BlueZ A2DP Sink功能验证

嵌入式Linux Bluetooth A2DP Sink

阿xin*的嵌入式AI 1034

linux4.6内核移植蓝牙和音频

第1章 RTL8723BU蓝牙模块驱动移植 1.1. 硬件方案 1.2. 蓝牙驱动移植 1.3. 蓝牙耳机规格要求 第2章 Linux音频框架 2.1. ALSA 2.2. Pulseaudio 2.3. GStreamer 2.4. Jack 2.5. FFADO 2.6. Xine 2.7. Phonon 2.8. 其他分支 第3章 蓝牙协议栈Bluez 3.1. Bluez5版本介绍 3.2. Bluez与Linux内核版本 3.3. Bluez蓝牙音频 第4章 蓝牙音频协议 4.1. A2DP协议

wangjie36的博客 4398

hciconfig代码分析及应用

Linux蓝牙hciconfig代码分析

Linux柒匠心 1360

最新的hciconfig和hcitool使用说明

hciconfig 和 hcitool 是 Linux 中的命令行工具,用于管理 Bluetooth 设备。下面是这两个工具的常用用法: hciconfig hciconfig -a:显示所有可用的 Bluetooth 设备的详细信息。 hciconfig hci0 up:启用 hci0 设备。 hciconfig hci0 down:禁用 hci0 设备。 hciconfig hci0 res...

weixin_35755562的博客 4729

【转载】mini2440 SPI驱动移植

按照下面帖子的方法,本人试验成功,只需按照下面步骤进行就行了。 原帖地址: http://blog.csdn.net/lxmky/article/details/6858322 注:原文最后短接的MISO和MOSI指的是SPI1的,区别于SPI0 mini2440中,SPI0和SPI1的四个功能引脚均接有上拉电阻10K到3.3V。 引脚 SPICL

feiniao1221的专栏 1548

mini2440移植USB Wi-Fi模块成功

前段时间移植了U-boot和linux2.6.27.9到mini2440上,最近有点空,手头有一个usb接口的zd1211b芯片的wifi无线网卡(PSP和NDSL玩家都知道的神卡),于是决定进行wifi无线网卡在嵌入式中的移植。要在内核中加入此无线网卡的驱动。我是在我移植的linux2.6.27.9内核上移植的。关于内核移植,请看我的这篇文章。http://blog.chinaunix.net/u2/75270/showart.php?id=1796658新版的linux2.6.27.9已自带zd1211

lxmky的专栏 4403

【RV1103/RV1106】使用Buildroot构建文件系统支持Bluetooth--交叉编译Bluez5

Bluez的依赖:fill:#333;color:#333;color:#333;fill:none;BluezglibdbusreadlineBluezlibffizlibgettextlibiconvexpatncursesBuildroot源码地址:https://buildroot.org/downloads/buildroot-2023.02.6.tar.gzBuildroot仓库下载地址:http://sources.buildroot.net。

似水流年 5880

CSR蓝牙芯片选型参考

The BlueCore line of Bluetooth products for CSR integrate a radio and baseband along with peripherals to match your application requirements. Variants are available with integrated ROM or flash, Multimedia versions with integrated DSP and stereo codec, or Plug-n-Go with integrated balun, filter and matching. BlueCore 3: CSR’s complete v1.2 Bluetooth solution including eSCO (extended Synchronous Connections), which allows for retransmissions of dropped packets, allowing for a cleaner, better sound out of your Bluetooth device. BlueCore 4: CSRs EDR (Enhanced Data Rate) v2.0 Bluetooth solution, it offers backwards compatibility with v1.1 and v1.2 Bluetooth devices. External Flash, ROM, Plug-n-Go and Headset versions are available to match your application. Offers up to 3 times the data rate as previous versions of Bluetooth with lower power consumption. BlueCore 5: series offers the latest generation technology, offering compatibility with the next generation Bluetooth spec,

Android blueZ HCI(一):hciconfig实现及常用方法

关键词:hciconfighcitool  hcidump作者:xubin341719(欢迎转载,请注明作者,请尊重版权,谢谢!)欢迎指正错误,共同学习、共同进步!!Android blueZ HCI(一):hciconfig实现及常用方法Android blueZ hci(二):hcitool hcidump常用方法一、Hciconfig1、adb shell 下,hciconfig 执行文件的

CLK 2万+

Linux Deepin蓝牙更新内核后无法使用的问题的各种方法尝试-service\heitool\hciconfig\blueman

参考 蓝牙升级后才消失的有可能解决的方法 - caoayu:开启蓝牙服务 Deepin 升级后蓝牙消失问题 - caoayu: sudo service bluetooth start sudo systemctl enable bluetooth.service #开启开机自启 系统及压缩软件问题求助 - 棒棒糖 :学校的台式机升级了没有蓝牙,我是用的lspci看的硬件信息,然后去github找的硬件驱动安装的,能解决蓝牙的问题, ...

Kearney 2737

【Linux C】基于树莓派/香橙派的蓝牙服务端——支持多蓝牙设备接入

本文主要通过Linux C编程,实现在树莓派或香橙派等开发板上的蓝牙服务端,允许多个蓝牙设备接入进行通信

Rio小哥的博客 5812

Linux 内核蓝牙驱动移植

Linux 内核蓝牙驱动移植

weixin_51332399的博客 1405

linux 蓝牙脚本,arm linux串口蓝牙工具移植及使用(示例代码)

ap6212中串口蓝牙在linux下的使用记录一、linux蓝牙工具移植主要使用到的工具及相关库如下:bluez-libs-3.36libxml2-2.7.4dbus-1.0.2glib-2.24.2bluez-utils-3.36openobex-1.5下载相应的源码解压,按照上面的顺序进行编译.bluez-libs-3.36中增加mk.sh内容如下#!/bin/sh./configure --...

weixin_30550287的博客 760

linux下蓝牙BLE(rtl8821)开发

在Linux下使用蓝牙的资料很多,但大部分都是以前的蓝牙2.0,自己这个蓝牙也是搞了很长时间,中间听过一段时间,现在回过头来才搞定,接下来我将从以下几个方面介绍如何在linux下使用蓝牙BLE设备(arm-linux) 一、开发环境AM335X RTL8821AU(此为一个WiFi蓝牙二合一设备) linux内核4.1 bluez5.25(这个后面讲) 二、驱动移植下载驱动:http://down

lixiaojie123123的博客 9775

性能测试命令

1.查看cpu温度 cat /sys/class/hwmon/hwmon0/temp1_input 2.gpio测试 1)查看gpio组:gpiodetect 2)查看指定gpio9信息:gpioinfo gpiochip9 即查看gpio9的详细信息 3)读取某个gpio9 第0个引脚状态:gpioget gpiochip9 0 4)设置gpio9第0个引脚状态:gpioset...

qq_34031123的博客 2202
上一篇: VMware下 Ubuntu 看不到共享文件夹之解决办法
下一篇: linux蓝牙驱动成功安装
_修_
博客等级 码龄15年 49粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值