OFFO蓝牙耳机电脑能连接蓝牙耳机电脑吗

立体声蓝牙耳机使用蓝牙适配器连接电脑后,听音乐正常但是不能语音。连接手机时,耳机是正常的。
16-06-09 &匿名提问蓝牙耳机无法与电脑连接是什么原因?
答案长度必须超过10个字,请勿发布无效或违法言论。
(共有3个回答)
360安全卫士----优化加速----优化记录与恢复----在里面找到一个蓝牙控制服务,图标是键盘上面放一个鼠标(你用鼠标放在上面提示是:用于支持电脑连接蓝牙设备),把他恢复。电脑重启一次,就时可以双向收发数据了
原因: &&1,蓝牙驱动有版本的,可能是蓝牙适配器不支持。 &&2,电脑没有正确安装蓝牙驱动和蓝牙软件。 &&3,安装后却没有保证开机启动,也没有手动启动。 &&解决方案: &&重新下载已经安装的蓝牙驱动和软件。
是电脑没有正确安装蓝牙驱动和蓝牙软件,或者安装后却没有保证开机启动,也没有手动启动,所以有的情况是无法搜索到蓝牙耳机,有的情况是搜索到蓝牙耳机却不能配对连接,还有的是配对连接后无法使用蓝牙耳机播放声音
希望对您有帮助
你好,原因1.在计算机图标上右键选择“管理”,然后选择“服务和应用程序”——“服务”——找到bluetooth &&
service,bl
电脑耳机不能用:音量设置可能有误
1、一般情况下,驱动程序的修复可以解决大部分耳机不能用的问题。但如果驱动程序正常,音频设备也没有禁用,但耳机不能用,则考虑电
苹果4s蓝牙无法连接电脑可能是系统版本BUG问题。
建议恢复系统版本以修复UG问题。
第一步:电脑登陆苹果官网下载itunes软件,安装完毕后打
首先安装好蓝牙驱动IVT &&BlueSoleil,剩下就是设置,也就是最容出现错误的地方
把手机蓝牙打开,点解中间小红太阳,自动搜索周围
控制面板——声音和音频——音频——录音,默认设备选择蓝牙,语声选项里也选择蓝牙
原因是ntfs逻辑硬盘格式是windows下专有的格式(mac日志式格式也是mac专有的,两者都是互不兼容的)
mac如果想读写ntfs格式的移动硬盘有两种方
自己手动设置一个本地IP和当地的DNS试试,要么你宽带欠费,要么你网卡有问题。能上网打开网页显示无法解析DNS的话要么他网站问题。希望我的回答可以帮助到您。
电脑桌面文件无法复制粘贴是什么原因:
先重启一下电脑试试
clipbrd.exe这是剪贴板,如果你的电脑没有了这个文件,可以到别的电脑复制一个,如果你是XP
你好,这是由于硬盘的耗电量比较大,不同于MP4等便携产品,某些电脑前端USB插孔供电量不足所以系统无法识别硬盘,解决的方法有两个,1,最简单的插在电脑后面的主板
1、桌面-网络-右键-属性
2、点击&更改适配器设置&
3、本地连接-右键-属性
4、双击&qu
大家都关注
(C)2017 列表网&琼ICP备号-12&增值电信业务经营许可证B2-&Edison 蓝牙模块 学习笔记Edison
固定链接:
本笔记基于Intel Edison Bluetooth Guide官方手册完成,如有错误敬请指出。
由于个人能力有限,到最后几节内容一直拖着没有翻译,以后会补上,自己也是边学习边翻译的,还请见谅。
1. 基本介绍Edison中包含一个蓝牙模块,蓝牙芯片是BCM43340(注:这个芯片是WIFI蓝牙一体芯片),与主芯片通过UART和一部分IO连接,UART使用的是/dev/MFD0,额外的GPIO口包括如启动蓝牙,复位蓝牙,主设备唤醒,从设备唤醒,低功耗模式等。选用的是BlueZ,一个开源的Linux蓝牙软件协议栈。这个包提供了一些DBUS API接口,可以用于开发,但是并没有公开内部工作机理,Edison上对Yocto进行了一些更改来适应BlueZ 5.24版本。。
BlueZ, an open source project, is the official Linux Bluetooth protocol stack.
2. Linux集成蓝牙首先聊了他们是如何把BlueZ添加到Edison中的。BlueZ提供了一些接口(API),如
rfkill(用于开启或关闭蓝牙)、hcitools(用于配置蓝牙)。通常来说,当一个蓝牙模块连接到USB并rfkill启用Bluetooth时,hciattach会自动启动并接管蓝牙,同时其他命令也会自动开始运行。但是Edison的蓝牙是连接到UART的,所以即使rfkill启用了Bluetooth,hciattch不能自动加载。于是想了个办法,新写了一个Bluetooth_rfkill_event程序,这个程序在系统启动时加载运行,用来监听Bluetooth接口的rfkill事件,可以工作来代替hciattch。故而,当我们在使用Edison上的蓝牙时,必须让Bluetooth_rfkill_event在操作系统后台运行。准确的说,rfkill并不属于BlueZ的一部分,rfkill是linux内核中的一个子系统,它是加到内核中的,可以用来查询、激活或取消激活计算机系统中的无线电传输,蓝牙作为一种无线电通信方式,自然也可以被rfkill控制。原文是这样说的:
Bluetooth controlers are handled in Linux via interfaces accessible by the rfkill and hci utilities (rfkill, hcidump, hciconfig, hcitools, etc.). These utilities, which are provided in the BlueZ package, include the following: rfkill, hcitools
BlueZ中包含hcitools和bluetoothd等系统程序,可以与外部的rfkill通信,bluetoothd程序的外部用户应用接口有:BlueZ python scripts, bluetoothctl, connman2.1 The bluetoothd daemon关于bluetoothd。它是一个在系统启动时就运行加载的daemon,他会初始化相关的plugins,
并在内核中监听硬件事件,当一个HCI设备发出MGMT_EV_INDEX_ADDED响应时,这个daemon会开始初始化蓝牙的相关程序和控制。Plugin是一系列可以表征特性(features)或规范(profile),BlueZ本身包含了一系列的规范,这些规范会在系统启动时一并启动。另外,BlueZ也支持加载和初始化用户定义的plugins,从而来开发第三方的程序,路径是/usr/lib/bluetooth/plugins,基本上,当bluetoothd daemon初始化后,某个plugin可以实现一部分功能。这些设置存储在/var/lib/bluetooth路径下。这部分的说明在BlueZ协议栈&buez_package&/doc/settings-storage文件路径下。2.2 Configuration默认的bluetoothd daemon将会加载和初始化所有的plugins,但是我们可以通过手动命令行选项开启或关闭plugin,命令选项指令为-plugin和-noplugin,(当然,我还不清楚怎么使用)。当关闭某个plugin时,对应的profile将不会工作,有关于这个service的注册和广播也就不会工作,可以通过修改BlueZ的systemd来做这个工作,路径是/etc/systemd/system/bluetooth.target.wants/bluetooth.service,可以在ExecStart中增加命令行参数。BlueZ可以修改一些特殊的profile特性,如input.conf network.conf proximity.conf以及更加常规的main.conf,可以完成一些修改蓝牙名字、可发现性、匹配时间等设置参数,这些文件的路径在/etc/bluetooth/,如果修改了这些参数,需要重启bluetooth,重启命令:root@edison:~# systemctl stop bluetoothroot@edison:~# systemctl start bluetooth2.3 Application interface应用层接口,可以使用BlueZ协议栈提供的DBUS API接口来使用蓝牙服务,在BlueZ的协议栈说明文档中描述了这些接口,路径&bluez_package&/doc。包括adapter agent device profile等配置接口。3. 基本蓝牙操作当开始蓝牙操作时,我们必须保证Bluetooth_rfkill_event服务在edison后台运行,当我们使用rfkill命令来开启或关闭蓝牙时,该服务会监听发生的rfkill事件,当触发到开启蓝牙时,该服务会开始下载一个新的固件包、配置BCM43340芯片以及注册HCI设备(hci0)。下载固件包和注册HCI设备的是该服务下的brcm_patchram_plus,它将操作hciattach等来配置蓝牙选项。3.1 Enable and disable Bluetooth* on Intel Edison开启或关闭蓝牙的命令是:root@edison:~# rfkill unblock bluetoothroot@edison:~# rfkill block bluetooth当蓝牙使能时,可以通过rfkill列出可以使用的接口,命令是:root@edison:~# rfkill block bluetoothroot@edison:~# rfkill list以及root@edison:~# rfkill unblock bluetoothroot@edison:~# rfkill listbcm43xx Bluetooth: bluetooth是被增加到蓝牙控制器的电源驱动中的,通过rfkill block和rfkill unblock可以直接驱动芯片的开启与关闭;rfkill unblock bluetooth可以同时起到systemctl start connman和connmanctl enable bluetooth的作用。hci0: bluetooth是当串口设备与BlueZ协议栈建立连接后添加的,如果内核已经配置了相关驱动,则它将始终存在。3.2 Bluetooth* status control via connmanConnman是一个连接管理工具,属于一个Bluetooth plugin。它可以管理网络连接,可以获取已连接或已匹配设备的信息。connman不会自动启动,需要手动启动。root@edison:~# systemctl start connmanroot@edison:~# connmanctl enable bluetooth关于蓝牙启动这块,我实际尝试了一下,因为rfkill block/unblock bluetooth可以取代掉systemctl start connman和connmanctl enable bluetooth的功能,所以我尝试rfkill block/unblock和systemctl stop/start bluetooth。结论:systemctl stop/start bluetooth是系统级的蓝牙控制,当在这里关闭蓝牙时,无法对蓝牙进行任何操作,包括bluetoothctl等程序,这时打开该程序显示的[bluetooth]是灰色的;rfkill block/unblock bluetooth是管理蓝牙控制的,如果阻塞后,无法控制蓝牙进行指定的任务,bluetoothctl可以正常进入,[bluetooth]显示是正常的蓝色,但是无法进行设备搜索等功能,提示No default controller available3.3 The bluetoothctl utilitybluetoothddaemon 通过 DBUS接口来工作,输入:root@edison:~# bluetoothctl可以进入蓝牙的基本配置中。通过键入help可以查看所有可以用的命令。3.4 Device identification (DI) profile该profile用于提供有关于蓝牙设备的额外信息,可以通过在bluetoothctl程序下输入:[bluetooth]# show来显示相关的信息。主要信息有供应商编号源(VendorID)、供应商编号(VendorID)、设备编号(DeviceID)、版本号(Version)等。可以通过在edison的/etc/f文件中取消注释并修改信息。4. 搜索与连接设备讲解了如何通过传统蓝牙配置edison蓝牙的搜索和匹配过程。root@edison:~# systemctl start bluetoothroot@edison:~# rfkill unblock bluetoothroot@edison:~# bluetoothctl[bluetooth]# agent KeyboardDisplay[bluetooth]# default-agent[bluetooth]# scan on[bluetooth]# pair 40:2C:F4:DB:EF:AA[bluetooth]# connect 40:2C:F4:DB:EF:AA[bluetooth]# info 40:2C:F4:DB:EF:AA[bluetooth]# discoverable on[bluetooth]# exit5. 修改蓝牙MAC地址MAC地址存放在/factory/bluetooth_address,修改后需要重新启动。root@edison:~# mount -v | grep factoryroot@edison:~# mount -o remount, rw /dev/mmcblk0p5 /factoryroot@edison:~# vi /factory/bluetooth_addressroot@edison:~# reboot6. 蓝牙配置文件蓝牙配置文件定义了可能的应用和特殊常见的蓝牙行为,从而可以允许设备通过蓝牙互相通信,每个蓝牙配置文件都包含这样的信息:
- 有关于其他配置文件的依赖;
- 用户接口格式建议;
- 特殊的蓝牙协议栈接口;
Edison支持所有的BlueZ配置文件。6.1 Bluetooth* Low Energy (BLE) profileBLE是什么我就不说了,BlueZ协议栈包含着GATT配置文件在Edison上均支持,并通过C API接口与内部连接,但是也许还需要我们写自己的配置文件,因为大多数GATT配置文件,如心率计、体温计、报警等功能,均是全功能集成的BlueZ例子,但是DBUS接口API已经过时了。Edison上的BlueZ是按照默认的全功能例子编译的,这些配置文件默认是存在的。
有关协议栈的层次也不说了。6.1.1 Verifying BLE plugin compilationBlueZ软件为了允许BLE配置文件,在Edison上是按测试模式编译的,可以重新按BLE plugins编译,下列操作使能所有logs。
1. 首先关闭bluetoothd:root@edison:~# systemctl stop bluetooth;
2. 修改蓝牙系统服务文件,路径在/etc/systemd/system/bluetooth.target.wants/bluetooth.service,增加-d参数:ExecStart=/usr/lib/bluez5/bluetooth/bluetoothd -d;
3. 重启bluetoothd:root@edison:~# systemctl start bluetooth;
4. 加载蓝牙logs:journalctl --unit=bluetooth,可以查看所有在Edison上支持的蓝牙plugings,以及bluetoothd是否开启。注释一下:我的Edison和这个略有不同,我是在/lib/systemd/system/bluetooth.service找到的bluetooth.service文件的。
测试蓝牙配置文件可以通过BlueZ测试脚本,也可以通过常规的Python脚本,后者需要进行一些额外的配置,需要把以下内容写入DBUS policy file,路径为/etc/dbus-1/system.d/bluetooth.conf: send_interface=“org.bluez.ThermometerWatcher1” send_interface=“org.bluez.AlertAgent1” send_interface=“org.bluez.HeartRateWatcher1” send_interface=“org.bluez.CyclingSpeedWatcher1”6.1.2 preparing to test Bluetooth* profiles文档中说做profile test之前,应该先运行两个命令:root@edison:~# rfkill unblock bluetoothroot@edison:~# hciconfig hci0通过这两句命令可以确保蓝牙被打开而且HCI接口正在工作。HCI接口就是控制器(Edison核心)和蓝牙模块的接口,通过UART通信。
可以通过如下指令查看链接管理器支持的状态:root@edison:~# hciconfig hci0 lestates这句指令不能用于测试profile,但可以检查蓝牙控制器支持的状态,包括:可连接、未广播、可搜索广播、激活搜索等。从显示的内容来看,仅支持蓝牙4.0。
蓝牙4.0是蓝牙3.0+HS规范的补充,专门面向对成本和功耗都有较高要求的无线方案。它支持梁总部署方式:双模式和单模式。双模式中,低功耗蓝牙功能集成在现有的蓝牙控制器中,在现有的经典蓝牙技术芯片上增加低功耗功能,整体架构基本不变。单模式只能与蓝牙4.0设备相互连接而无法向下兼容,双模式可以向下兼容,与3.0、2.1/2.0设备通信。
单模式面向高度集中、紧凑的设备,使用一个轻量级连接层提供超低功耗的待机模式操作、简单设备恢复和可靠的点对多点数据传输、具有高级节能和安全加密连接。
6.2 scan and connectedison作为主机搜索和连接其他设备,使用命令行或脚本来使用bluetoothd daemon。命令行模式包括bluetoothctl和一系列的扩展工具,像hcitool和btmgmt,推荐使用bluetoothctl,因为它不需要通过hcidump来检测通信踪迹从而检测到从设备地址是静态的还是动态的。6.2.1 bluetoothctlroot@edison:~# bluetoothctlroot@edison:~# scan on//会开始搜索设备,直到搜索到想匹配的设备时root@edison:~# scan offroot@edison:~# connect 00:22:D0:3B:2F:2A注:搜索可以发现所有的传统蓝牙和低功耗蓝牙设备,没有区分。BlueZ daemon 也会隐藏搜索设备类型,所以不需要在乎这个或者不要用这个工具。6.2.2 hcitool这个命令行工具主要用于将蓝牙指令包(raw packets这个不知道怎么翻译)从用户空间发向蓝牙控制器,从而来初始化LE设备。这个实验,需要用两个终端,我当时就呆了,一个串口只能被一个PUTTY占用,不过后来解决了。其中一个用于执行命令,另一个通过hcidump来显示log信息。
在命令终端中:root@edison:~# hcitool lescan这句指令搜索附近的LE设备,如果搜索到会显示MAC地址和设备名称。
可以通过按Ctrl+C来终止搜索,不要用Ctrl+Z,一旦搜索到设备就可以终止搜索,如果命令执行失败,则运行:root@edison:~# hciconfig hci0 downroot@edison:~# hciconfig hci0 up来重新启动hciconfig。
在监控终端中:root@edison:~# hcidump -X这个监控窗口会不断自动刷新,并接收控制器与BlueZ栈之间的交换数据。
当设备被发现后,在命令终端中:root@edison:~# hcitool lecc 00:22:D0:3B:2F:2A这句指令会初始化设备并将一个连接handler返回显示出来。通过监控终端中可以发现被连接设备的MAC地址类型(动态的或静态的),如果需要连接动态地址的设备,需要在hcitool lecc中增加--random参数。
监控窗口中只能监控链路层的连接过程,而不能不过GATT程序的交换数据,即读写数据。
This is just a connecti no GATT procedures are exchanged to browse peer device services and eventually read/write or register to indications/notifications for exposed characteristics.
6.2.3 btmgmt这个指令存在于BlueZ协议包里,需要手动下载。
Use the btmgmt code in the BlueZ 5.24 package downloaded by the Yocto recipe. You can also find the btmgmt source from the BlueZ git repository at
可以发现设备并配对设备,使用方法:root@edison:~# ./btmgmt find -lroot@edison:~# ./btmgmt find -broot@edison:~# ./btmgmt find寻找设备,-l参数说明只寻找le设备,-b参数说明只寻找传统蓝牙设备,不加参数将寻找所有蓝牙设备。root@edison:~# ./btmgmt pair -t 1 00:22:D0:3B:2F:2A这个指令配对一个设备,通过SMP配对,-t参数说明连接的类型,后边接1为le设备,地址公开,接0为传统设备,2为le设备,地址随机。可以通过监控窗口查看。6.2.4 Python test scripts还可以通过Python脚本调试蓝牙,和bluetoothctl的效果一样,需要下载这部分的程序代码。使用test-discovery程序可以发现设备,使用simple-agent程序可以配对设备。
Python脚本可以让用户自定义用户软件,提高了灵活性。6.2.5 AGTTtool当我们通过hcitool工具连接了一个蓝牙时,可以通过gatttool工具测试BlueZ协议栈的GATT客户端(不是服务器),这个工具也是包含在BlueZ协议栈中,并不在Edison镜像中,下载地址:
通过命令:root@edison:~# ./gatttool -I -b 20:CD:39:A5:3B:62启动gatttool程序。
可以通过:root@edison:~# ./gatttool -help来获取帮助。6.3 Advanced audio distribution profile (A2DP)Edison平台支持A2DP profile,这个配置文件可以规定音频流如何通过蓝牙从一个设备向另一个设备传输。A2DP服务是单方向的音频流传输,存在传输源和传输目的设备(原文中是sink),最多2通道的立体声,而Edison可以两者中的任何一者。将Edison作为传输源的操作:root@edison:~# bluetoothctl[bluetooth]# scan on[bluetooth]# trust 00:18:6B:4E:A4:B8[bluetooth]# pair 00:18:6B:4E:A4:B8[bluetooth]# connect 00:18:6B:4E:A4:B8[bluetooth]# scan off在Edison上修改一个文件,定义A2DP设备为一个sink设备,同时定义设备名和MAC地址。
查看默认的未定义设备ID:root@edison: /usr/lib/bluez/test# pactl list sinks修改设备:root@edison: /usr/lib/bluez/test# pactl set-default-sink bluez_sink.00_18_6b_4e_a4_b8然后,通过SCP将音频文件复制到Edison,用mplayer播放,就可以在一个蓝牙音频播放设备上播放了。6.4 Device identification (DI) profile这个配置文件用于查询蓝牙的相关信息,包括:
- VendorID source: VendorID的制定者,0x0001为bluetooth SIG组织,0x0002为USB Group。
- VendorID (16位)
- DeviceID (16位)
- Version (16位)6.4.1 Reading and Changing the local device identification通过bluetoothctl 程序中的show命令可以查看这些信息:[bluetooth]# show通过修改`/etc/bluetooth/main.conf文件,可以修改部分参数,必须重启蓝牙服务和bluetoothctl程序。可以通过两种方式来查询匹配设备的DI信息:
- sdptool: 存在于Edison和Ubuntu电脑上的工具,支持bluez4.x和5.x。通过与匹配设备建立SDP服务来查询;
- bluetoothctl: 存在于Edison中,支持bluez5.x。通过查询匹配设备发来的EIR包来查询。root@edison: ~# sdptool browse --tree --uuid 0x1200 98:0d:2e:c8:bd:2c[bluetooth]# info 98:0D:2E:C8:BD:2C6.5 Human interface device (HID) profile通过HID配置文件,可以连接到任意的人机接口设备,如蓝牙鼠标、蓝牙键盘等。在Edison上不需要注册任何服务。root@edison:~# rfkill unblock bluetoothroot@edison:~# bluetoothctl[bluetooth]# agent DisplayYesNo[bluetooth]# default-agent[bluetooth]# scan on[bluetooth]# pair [MAC地址][bluetooth]# scan off[bluetooth]# connect [MAC地址][bluetooth]# info [MAC地址][bluetooth]# quit通过more指令可以查看是否连接成功,因为当连接后,一个/dev/input/eventX文件将会被建立,X为任意数字,通过more指令可以检查这个文件,从而确定设备被正确连接。
打开是乱码,可以通过evtest解码,下载http://cgit.freedesktop.org/~whot/evtest。6.6 Personal area networking (PAN) profile个人局域网(简称个域网,英文名PAN),可以用来定义两个或多个蓝牙设备组成网络,并通过一个网络连接点连接到其他网络。个域网配置文件定义了怎样来使用蓝牙网络封装协议(BNEP——Bluetooth Network Encapsulation Protocol)来给蓝牙设备提供网络兼容性。个域网配置文件角色包括:
- NAP: Network access point,网络节点
- GN: Group ad-hoc network,群无线自组织网络
- PANU: Personal area network user,个域网用户NAP和GN提供了不同的网络需求服务。NAP提供了每个蓝牙设备的连接服务,而GN允许两个或多个设备组成自组织网络。
Edison中对PAN中的NAP和GN有一些修改,需要下载测试脚本来调试PAN服务,这个测试脚本是BlueZ的一部分,并不包括在Edison镜像中,可以通过http://git.kernel.org/cgit/bluetooth/bluez.git/tree/test的test文件夹内找到。
通过-s参数选择不同的角色。(没看懂。。。)
压缩并且复制BlueZ测试包,通过SCP传输到Edison。
解压并且复制BlueZ测试包到Edison。 (什么鬼?,下边附原文,自己理解)
使能蓝牙。
Select the role with the -s option.
Compress and copy the BlueZ test package into the Intel Edison board via scp.
Unzip and copy BlueZ test package into the Intel Edison board.
Enable Bluetooth as described in chapter 4 Scanning and Connecting Device.
完成这些步骤,就可以通过一个Linux主机和一个Edison设备之间建立PAN网络,或者在两个Edison设备之间建立PAN网络。6.6.1 PAN test between Linux host PC and Intel Edison device
在Edison设备上打开connman并允许蓝牙。
在Linux主机上查看PC Bluetooth地址。
匹配设备。
在Edison上创建一个桥接并配置地址。
root@edison:~# brctl addbr br0root@edison:~# ip addr add 192.168.10.1 dev br0root@edison:~# ip link set br0 uproot@edison:~# ifconfig显示的结果是:UP BROADCAST RUNNING MULTICAST MTU:1500
Metric:1,然后可以通过ifconfig命令检查桥接状态。
5. 在Edison上加载PAN测试脚本,将会注册一个NAP服务。root@edison:~/test-bluez# ./test-pan -s nap br0root@edison:~/test-bluez# ./test-nap br0在第一步中建立的bnep0接口将会添加到br0桥接中。
备注:这个脚本中只允许几分钟的网络连接状态,如果需要长时间连接,则需要修改脚本内容。
6. Linux主机作为一个PANU设备,需要在Linux主机上安装BlueZ包,通过pand:
备注:在BlueZ4中,pand服务接口是允许的,但在BlueZ5中则不允许。user@peter:~/$ sudo apt-get install bluez-compat通过pand命令来绑定:user@peter:~/$ sudo pand -n --connect 00:11:22:33:55:77 --service NAP7.在Edison上通过ifconfig -a查看网络状态。
8.在Linux主机上通过ifconfig -a查看网络状态。
此时如果一切顺利,bnep接口将会增加到桥接中。
有时bnep不会显示,需要执行:sudo ip link set bnep0 up9.用一个IP地址来配置接口,并ping:user@peter:~/$ sudo ip link set bnep0 upuser@peter:~/$ sudo ip addr add 192.168.10.10 dev bnep0user@peter:~/$ sudo ip route add 192.168.10.0/24 via 192.168.10.10root@edison:~# ip addr add 192.168.10.2 dev bnep0root@edison:~# ip route add 192.168.10.0/24 via 192.168.10.110.最后就可以互相ping通了。我没有尝试这个实验,仅仅是看了看。6.6.2 PAN test between two Intel Edison devices (未完成)暂不看,因为没有两个Edison。6.7 Serial port profile (SPP)SPP(Serial port profile 串口协议)是基于ETSI 07.10 和 RFCOMM 协议,定义了两个蓝牙设备之间如何通过创建一个虚拟/仿真串口连接来进行通信。
SDP(Bluetooth Service Discovery Protocol 蓝牙服务发现协议),允许蓝牙设备之间搜索服务。
设备通过RFCOMM协议接收到一个传入的连接,在SPP协议中在SDP发现一个记录表明,RFCOMM通道处于接听状态。(@~@)
设备初始化一个连接时,首先在设备数据库中搜索SPP记录,然后才可能初始化一个连接到对应匹配设备的RFCOMM服务通道。(@~@)
SDP is the Bluetooth Service Discovery Protocol, which allows devices to provide browsing services to each other.
Devices accepting an incoming connection over RFCOMM expose a record in SDP for SPP indicating that the RFCOMM channel is listening.
Devices iniltiating a connection will first search for SPP records on the peer device database and in turn may initiate a connection to the RFCOMM server channel on a peer device.
我们可以通过创建一个在两个设备之间通过蓝牙传输的虚拟串口来测试这个功能。使用SPP从一个蓝牙设备到另一个蓝牙设备之间发送信息。我们可以修改:
通过DBUS APIs验证SPP。推荐。
通过RFCOMM工具来验证SPP。
之所以推荐DBUS APIs来验证SPP,是因为它可以将文件描述符(file descriptor)提供给用户来用于连接,可以直接使用发送和接收数据。RFCOMM工具在fd可行时是不允许的。RFCOMM用于设置开始、维持以及检查在Linux内核蓝牙子系统中的RFCOMM配置。(一个模拟串口设备文件被创建并通过SPP被打开来读写数据,并不需要使用DBUS接口打开一个文件设备,因为在用户空间下,fd连接在DBUS接口下已经建立)。(@~@)
an emulated TTY device file is created and it has to be opened to read/write data over SPP, whereas when using DBUS interfaces opening of the device file is not needed as fd connection is already available with DBUS interfaces in userspace.
测试脚本中有连接方法,可以修改这个配置脚本:root@edison:~# vi /etc/dbus-1/system.d/bluetooth.conf如果这个文件中没有一行: send_interface="org.bluez.Profile1"就在文件中添加这一行,保存文件。6.7.1 SPP verification using DBUS APIs很容易可以通过使用test-profile python脚本来在RFCOMM socket文件的应用层上实现验证,test-profile python脚本在BlueZ协议栈的文件夹内:http://git.kernel.org/cgit/bluetooth/bluez.git/tree/test。英特尔修改了最初的源文件,提供了一个循环接收数据的脚本,并且重命名文件为SPP-loopback.py。这个文件在附录中,也可以在:下载。将这个脚本下载到Edison中,比较与test-profile.py脚本的区别。在运行SPP-loopback.py脚本前,先通过bluetoothctl -& show命令检查是否存在。
运行SPP-loopback.py脚本:root@edison:~# chmod +x SPP-loopback.pyroot@edison:~# ./SPP-loopback.py &注意,通过SCP传送到Edison上的文件默认都是没有文件执行权限的,所以要手动添加执行权限。&符号是说让程序运行到后台,释放当前命令行。然后搜索匹配设备,并保证自身可被发现:[bluetooth]# scan on[bluetooth]# discoverable on搜索到设备后,与该设备配对,并信任该设备:[bluetooth]# pair 00:11:22:33:55:77[bluetooth]# trust 00:11:22:33:55:77Edison上设置完毕。
在安卓手机上下载一个软件:Bluetooth spp pro,确保手机上打开蓝牙,通过该软件搜索蓝牙设备,找到Edison设备,并建立连接。在Edison终端上可以发现已经打印出了建立连接的文字,然后通过手机字符流的方式给Edison蓝牙发送文本,可以在Edison上接收到。成功实现通过DBUS APIs来测试SPP 验证。当时参考了一篇文章:6.7.2 SPP verification using the RFCOMM tool (未完成)Edison必须要监听前来的连接信号。可以通过RFCOMM工具来设置、保持或者是检查处于Linux内核中的蓝牙子系统的RFCOMM配置信息。
当成功连接了一个Edison设备与一个Linux设备或是一个安卓设备时,我们也应该去匹配其他的蓝牙设备。
6.7.2.1 Edison配置
1.对RFCOMM通道增加SDP接口root@edison:/usr/lib/bluez/test# ./test-profile -u 1101 -n edisonSpp -s -P 3 -C 22 serial222.打开RFCOMM来监听发送连接请求的匹配设备root@edison:~# rfcomm listen 0 220是指/dev/rfcommX设备将会被创建,22是指RFCOMM通道。
Android设备连接到了RFCOMM通道1,所以这里选择了22通道,为了不造成冲突。
3.使用bluetoothctl的scan on命令,来发现一个设备
4.配对该被发现的设备
6.7.2.2 Android 设备
在Android设备上下载一个APP:Bluetooth SPP Pro或者BlueTerm/BlueTerm+,然后匹配Edison设备。
1.在Edison设备上启用RFCOMM,监听匹配设备上的请求信息
2.通过手机上的APP连接Edison的蓝牙设备,在Edison上:root@edison:~# rfcomm listen 0 13.手机上发送测试文本到Edison
4.Edison上查看手机发来的测试文本root@edison:~# cat /dev/rfcomm0Linux电脑设备
这部分内容原文中乱糟糟的,好多话都重复着说
1.使用RFCOMM工具连接Edison设备与Linux PC
在Linux PC上:user@peter:~$ sudo rfcomm connect 0 00:11:22:33:55:77 22在Edison设备上:root@edison:~# rfcomm listen 0 222.连接建立以后,在两个设备上都会出现/dev/rfcommX设备,X为普通数字。如果看到"NewConnection"描述出现时(说明当时运行有test-profile脚本),说明当前脚本不是RFCOMM工具的文件,这时,需要停止test-profile脚本然后重新做第1步。
3.在Linux电脑上,验证/dev/rfcommX:
----(Linux收,方法1)user@peter:~$ sudo cat /dev/rfcommX里边的内容,或者加载Minicom,然后进入cat /dev/rfcommX验证。----(Linux收,方法2)user@peter:~$ sudo minicom -D /dev/rfcomm0在Edison上,验证/dev/rfcommX: ----(Edison收)root@edison:~# cat /dev/rfcomm0添加内容: ----(Edison发)root@edison:~# echo '&text&' & /dev/rfcommX4.在linux电脑上进入minicom程序,检查窗口,发新消息。----(Linux收发)
5.在Edison上,通过cat检查/dev/rfcommX内容。----(Edison收)
6.在Edison上,通过echo命令发送消息。----(Edison发)
7.在Linux电脑上,使用cat命令查看信息。 ----(linux收)6.8 HID over GATT profile (HOGP)从这节开始,和原文相差了一个序号单位,原文的这一节是6.9,如果问我为什么少了一节,能先找到原文中6.8节的请联系我。6.9 Heart rate profile (HRP)6.10 Proximity profile (PXP)6.10.1 PXP service6.10.2 PXP test6.10.3 Proximity monitor6.10.4 Proximity reporter6.12 File transfer protocol (FTP) profile6.12.1 FTP server6.12.2 FTP clientAppendix A: SPP-loopback.py
添加新批注
在作者公开此批注前,只有你和作者可见。
查看更早的 5 条回复}

我要回帖

更多关于 电脑连接蓝牙耳机 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信