原文地址:mini2440
我的蓝牙设备是:USB蓝牙,芯片制造商: CSR,
Linux2.6版本之后的内核一般都有蓝牙模块的配置,所以不用再打补丁了。一般在配置内核的时候选择如下选项:
[*] Networking support
<*>
<*>
<*>
<*>
[*]
<*>
[*]
[*]
<*>
Bluetooth device drivers
<*> HCI USBdriver
<M>HCI UARTdriver
<*> HCI BlueFRITZ!USB driver
<*> HCI VHCI (VirtualHCI device) driver
其余的选项,根据自己的蓝牙设备进行调整。
a)
可以在http://sourcearchive.com/下载多用到的所有软件包
下载地址:http://www.freedesktop.org/wiki/Software/dbus#Download
下载地址:http://ftp.gnome.org/pub/gnome/sources/glib/2.26/
下载地址:http://www.libusb.org/
下载地址:http://linux.softpedia.com/get/Programming/Interpreters/Flex-23296.shtml
下载地址:http://invisible-island.net/byacc/byacc.html
下载地址:http://www.alsa-project.org/
b)
在编译之前,首先将下载的所有包都放在bluetooth文件夹下。并在该文件夹下建立bluetooth-build文件夹,并将其输出到环境变量。
#cd
#mkdir
#blue=$PWD/bluetooth-build
#export blue
#export
#tar
#cd alsa-lib-1.0.24.1
#./configure --prefix=$blue CC=arm-linux-gcc --host=arm-linux--disable-python
#make
#make install
#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
#tar
#cd
配置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
#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
什么也不输入,保存退出即可。
#tar
#cd
# ./configure --prefix=$blue CC="arm-linux-gcc -I$blue/include-L$blue/lib " --host=arm-linux
#make
#make
编译顺利,没初现错误。
#tar
#cd
# ./configure --prefix=$blue CC="arm-linux-gcc -I$blue/include-L$blue/lib " --host=arm-linux
#make
#make
#tar
#cd
# ./configure --prefix=$blue CC="arm-linux-gcc -I$blue/include-L$blue/lib " --host=arm-linux
#make
#make
至此,所有的软件包都编译完成!
1)
#cp
#cp
#cp
#cp
2)
#cp
3)
#cp
1.检查是否有蓝牙设备
在插入蓝牙到到USB口前后,用lsusb命令可以发现输出内容不一样。即插入蓝牙设备后lsusb输出多了一行。然后,运行hciconfig可以看到:
#hciconfig
hci0:
上面的信息说明检测到了蓝牙设备hci0。
2.激活蓝牙设备
#hciconfig hci0 up
可以激活借口(这一步不做,hcitool scan无法运行)。这时候如果再次执行hciconfg命令,可以发现蓝牙以及激活(UP RUNNING):
hci0:
3.扫描设备
#hcitool scan
可以得到:
Scanning ...
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服务。
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,连接手机:
也就是
这时候,可以看到手机上的蓝牙连接呈联通状态。
10,从计算机发送文件:
操作系统会弹出提示框,让你选择要发送的目标。
同时可以看到手机会弹出提示框,询问是否接受文件。
11,手机的配置:
需要在手机上进行一下配置:
连接->蓝牙->匹配装置->添加装置。
会自动扫描到PC上的适配器。
如果需要填入识别码就填写123。上面已经设置了。
这时候,可以看到手机已经成功的添加蓝牙装置。
12,从手机发送文件。
在PC机上启动obex-server,会看到系统托盘出现一个小图标。
完成上面的工作后,可以进入手机的:
多媒体->我的影集
选择一张图片。
然后,“发送”->“通过蓝牙”
看到有刚才扫描到的蓝牙适配器。
然后,就可以发送文件了。
13,使用软件管理手机信息。
参考gnokii软件的文档
二、蓝牙耳机。
1,同时按住jabra 250上面的“电话键”和“音量增大键”,大约8秒,看到蓝灯常亮
2,扫描耳机,得到bdaddress
3,配置工作:
4,建立联接后,设备被映射成/dev/dsp1。
以beep为例,
插件->输出,选择使用alsa驱动,点开“首选项”,音频设置部分就可以看到btsco:hw0,1之类的信息,选择这个即可。
然后播放一首歌,尝试一下无线的快乐吧。
然后适当的配置你所要使用的播放器之类的就可以了。