日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

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

發(fā)布時(shí)間:2025/7/14 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux 蓝牙脚本,arm linux串口蓝牙工具移植及使用(示例代码) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

ap6212中串口藍(lán)牙在linux下的使用記錄

一、linux藍(lán)牙工具移植

主要使用到的工具及相關(guān)庫如下:

bluez-libs-3.36

libxml2-2.7.4

dbus-1.0.2

glib-2.24.2

bluez-utils-3.36

openobex-1.5

下載相應(yīng)的源碼解壓,按照上面的順序進(jìn)行編譯.

bluez-libs-3.36中增加mk.sh內(nèi)容如下

#!/bin/sh

./configure --prefix=/usr/bluez --host=arm-linux --target=arm-linux CC=arm-cortex_a9-linux-gnueabi-gcc

make

make install修改mk.sh權(quán)限直接運(yùn)行,完成編譯與安裝,下同

libxml2-2.7.4中增加mk.sh內(nèi)容如下

#!/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內(nèi)容如下

#!/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內(nèi)容如下

#!/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內(nèi)容如下

#!/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內(nèi)容如下

#!/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同時(shí)需要修改configure文件11311行將

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

{ (echo 1); echo 1; }; }將上面的exit 1這一行注釋增加下面echo 1這行,忽悠掉這個(gè)錯(cuò)誤

所有文件都會(huì)安裝在/usr/bluez目錄下??截?usr/bluez目錄下所有文件到目標(biāo)板/usr目錄下

對(duì)于我使用的這個(gè)模塊wifi和bt是一起的,在android下能正常使用,在linux下bt要正常識(shí)別還需要另一個(gè)工具brcm_patchram_plus最后我會(huì)給下載地址,同時(shí)還需要固件文件bcm43438a0.hcd這個(gè)可以直接從android文件系統(tǒng)下拷貝過來.

二、使用說明加載完ap6212模塊驅(qū)動(dòng)后,因?yàn)檫@個(gè)有電源控制,所以首先要給bt上電,執(zhí)行rfkill list查看bt對(duì)應(yīng)的控制節(jié)點(diǎn),如下圖

可以看到bt對(duì)應(yīng)的是0節(jié)點(diǎn)

在/usr/sbin下新建一個(gè)腳本命名為btstart內(nèi)容如下:

#!/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上電

后面這個(gè)是加載固件,這里我的bt接的是串口1對(duì)應(yīng)的串口設(shè)備節(jié)點(diǎn)是/dev/ttyAMA1,波特率設(shè)置為3M

保存這個(gè)腳本,修改權(quán)限后執(zhí)行

等待幾秒會(huì)出現(xiàn)Done setting line discpline說明設(shè)置已經(jīng)完成,此時(shí)就可以查看到bt設(shè)備了,執(zhí)行hciconfig -a

正常識(shí)別到后,接著就來看怎么使用.

首先需要開啟dbus守護(hù)進(jìn)程,hcid需要這個(gè)

前面已經(jīng)將安裝到的/usr/bluez下的文件全部拷貝到了目標(biāo)板的/usr目錄下,此時(shí)在目標(biāo)板會(huì)有/usr/etc/dbus-1/system.conf文件

修改system.conf文件第18行

messagebus將messagebus改為root或者已經(jīng)存在的用戶名.

然后修改/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"改成簡(jiǎn)單點(diǎn)的

其中name "BlueZ (%d)";后的"BlueZ (%d)"將會(huì)成為其它設(shè)備識(shí)別到本設(shè)備時(shí)的bt的名字

passkey為其它設(shè)備主動(dòng)發(fā)起配對(duì)時(shí)需要的密碼,security設(shè)置為auto后,其它設(shè)備輸入密碼正常,就會(huì)自動(dòng)與本設(shè)備進(jìn)行配對(duì),并顯示配對(duì)成功.如果本設(shè)備主動(dòng)發(fā)起配對(duì),此時(shí)密碼就不是這里設(shè)置的這個(gè)密碼了.

修改完成后,還需要做一些鏈接,新建btup腳本,內(nèi)容如下

#!/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 &上面的這些鏈接的創(chuàng)建是為了下面這兩條命令能正常執(zhí)行,也可以先不創(chuàng)建先一條一條命令執(zhí)行后面會(huì)報(bào)錯(cuò),然后根據(jù)錯(cuò)誤來創(chuàng)建鏈接.

最后一條命令

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

中的-n -d可以去掉,這里方便調(diào)試我才加上

執(zhí)行btup腳本,此時(shí)會(huì)有很多打印信息輸出如下圖:

此時(shí)打開手機(jī)藍(lán)牙進(jìn)行掃描,就可以看到我們的設(shè)備了,如下圖

點(diǎn)擊我們的設(shè)備進(jìn)行配對(duì),輸入前面我們?cè)O(shè)置好的密碼0000就可以配對(duì)成功,如下圖:

此時(shí)我們?cè)诒驹O(shè)備端進(jìn)行掃描如下圖:

以下把我移植的設(shè)備稱為我的設(shè)備,其它帶藍(lán)牙的設(shè)備稱為其它設(shè)備

我們需要通過其它設(shè)備的OBEX Object Push信道才能正常向其它設(shè)備發(fā)送文件

我們通過sdptool查看其它設(shè)備的具體信息如下圖是查看的123(68:DF:DD:49:87:AF)設(shè)備的具體信息:

或者可以使用sdptool search OPUSH查找周圍設(shè)備的具有OPUSH功能的設(shè)備

可以看到設(shè)備123(68:DF:DD:49:87:AF)中OBEX Object Push功能所在通道是4

此時(shí)我們可以通過這個(gè)通道給123設(shè)備發(fā)送文件,執(zhí)行如下命令

接著輸入c進(jìn)行連接

這里會(huì)超時(shí),不用管,然后輸入p 1.png 1.png

這里p后面第一個(gè)參數(shù)1.png是我的設(shè)備上已經(jīng)存在的在根目錄下的1.png文件后面的1.png是以什么名字發(fā)送給其它設(shè)備,輸入后回車,123設(shè)備上就會(huì)有相關(guān)提示

選擇接收后,我的設(shè)備會(huì)輸出很多信息,如下圖

傳送完成后,就可以在123設(shè)備上查看文件內(nèi)容了

上面是發(fā)送,接下來是接收, 輸入q退出剛才的obex_test命令

執(zhí)行sdptool brower local查看我的設(shè)備bt下的OBEX Object Push所對(duì)應(yīng)的通道

默認(rèn)情況是沒有這個(gè)功能的,增加這OPUSH功能

在執(zhí)行sdptool brower local查看,此時(shí)就會(huì)出現(xiàn)這個(gè)功能

對(duì)應(yīng)的是通道9

通過查看local可以看到對(duì)應(yīng)的地址是FF:FF:FF:00:00:00

這里我們執(zhí)行如下

然后輸入s,輸入s后,馬上在123設(shè)備端,通過bt給我的設(shè)備發(fā)送文件

如果能正常接收調(diào)試信息輸出如下:

接收完成后會(huì)保存在根目錄下.

============================================

作者:hclydao

http://blog.csdn.net/hclydao

版權(quán)沒有,但是轉(zhuǎn)載請(qǐng)保留此段聲明

============================================

brcm_patchram_plus工具及源碼下載地址:

參考文章:

總結(jié)

以上是生活随笔為你收集整理的linux 蓝牙脚本,arm linux串口蓝牙工具移植及使用(示例代码)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。