Bluetooth
来源:互联网 发布:网络质量 编辑:程序博客网 时间:2024/05/01 02:52
In this document
- Porting
- Compiling
- Troubleshooting
- Tools
- Feature Support
Android's Bluetooth stack uses BlueZ version 3.36 for GAP, SDP, and RFCOMM profiles, and is a SIG-qualified Bluetooth 2.0 + EDR host stack.
Bluez is GPL licensed, so the Android framework interacts with userspace bluez code through D-BUS IPC to avoid proprietary code.
Headset and Handsfree (v1.5) profiles are implemented in the Android framework and are both tightly coupled with the Phone App. These profiles are also SIG qualified.
The diagram below offers a library-oriented view of the Bluetooth stack. ClickBluetooth Process Diagram for a process-oriented view.
Solid elements represent Android blocks and dashed elements represent partner-specific blocks.Porting
BlueZ is Bluetooth 2.0 compatible and should work with any 2.0 chipset. There are two integration points:
- UART driver
- Bluetooth Power On / Off
UART Driver
The BlueZ kernel sub-system attaches to your hardware-specific UART driver using thehciattach
daemon.
For example, for MSM7201A, this is drivers/serial/msm_serial.c
. You may also need to edit command line options tohciattach
via init.rc
.
Bluetooth Power On / Off
The method for powering on and off your bluetooth chip varies from Android V 1.0 to post 1.0.
- 1.0: Android framework writes a 0 or 1 to
/sys/modules/board_[PLATFORM]/parameters/bluetooth_power_on
. - Post 1.0: Android framework uses the linux
rfkill
API. Seearch/arm/mach-msm/board-trout-rfkill.c
for an example.
Compiling
To compile Android with Bluetooth support enabled, add the following line to BoardConfig.mk
.
BOARD_HAVE_BLUETOOTH := true
Troubleshooting
Debugging
To debug your bluetooth implementation, start by reading the logs (adb logcat
) and look for ERRROR and WARNING messages regarding Bluetooth. Andoird uses Bluez, which comes with some useful debugging tools. The snippet below provides examples in a suggested order:
hciconfig -a # print BT chipset address and features. Useful to check if you can communicate with your BT chipset.hcidump -XVt # print live HCI UART traffic.hcitool scan # scan for local devices. Useful to check if RX/TX works.l2ping ADDRESS # ping another BT device. Useful to check if RX/TX works.sdptool records ADDRESS # request the SDP records of another BT device.
Deamon Logs
Deamon logs for hcid
(STDOUT
) and hciattach
(STDERR
) are sent to/dev/null
by default. Edit init.rc
and init.PLATFORM.rc
to run these daemons underlogwrapper
, which redirects output to logcat
.
hciconfig -a and hcitool
If you compile your own system.img for Android, and hciconfig -a
works buthcitool
scan doesn't, try installing the firmware for the Bluetooth chipset. This firmware isn't yet available in the open source codebase, but you canadb pull
and then adb push
it from a stock T-Mobile G1 (located in/etc/firmware/brf6300.bin
).
Tools
BlueZ provides a rich set of command line tools for debugging and interacting with the Bluetooth sub-system, including:
hciconfig
hcitool
hcidump
sdptool
dbus-send
dbus-monitor
Feature Support
This section provides a change history of Bluetooth features added in each Android release and provides some rough guidance as to future features.
Android 1.0 release
Platform features
- Based on Bluez 3.36 and Linux Kernel 2.6.25
- Bluetooth 2.0+EDR host stack
- Headset Profile 1.0 in Audio Gateway role
- Handsfree Profile 1.5 in Audio Gateway role
- Three-way calling
- Phonebook over AT commands
Qualifications
- QDID B014524: Host stack (SDP, L2CAP, GAP, RFCOMM, SPP)
- QDID B014624: EPL for HTC Dream (HSP, HFP)
Example products
- HTC Dream / T-Mobile G1
Android 1.1 release
No Bluetooth changes since 1.0
Android 1.5 release (cupcake)
Platform features
- Based on Bluez 3.36 with Linux Kernel 2.6.27
- Bluetooth 2.0+EDR host stack
- Support for auto-pairing with '0000' devices
- Headset Profile 1.1 in Audio Gateway role
- Handsfree Profile 1.5 in Audio Gateway role
- Three-way calling
- Phonebook over AT commands
- Volume synchronization
- eSCO
- Extensive bug fixes and compatibility improvements
- Stereo Bluetooth (A2DP 1.2) in Source role
- AVDTP 1.2 in Acceptor and Initiator roles
- GAVDTP 1.0 in Acceptor and Initiator roles
- 44.1 khz, stereo, software SBC codec
- Remote Control (AVRCP 1.0) in Target role
- AVCTP 1.3 in Target role
- play/pause/stop/prev/next
Qualifications
- QDID B015261: Host stack (SDP, L2CAP, GAP, RFCOMM, SPP, AVCTP, AVRCP, GAVDP, AVDTP, A2DP)
- QDID B015262: EPL for HTC Sapphire (HSP, HFP)
Future releases
This section offers a rough guide of which features the team is developing for the next release. This feature list may change without notice. It isn't possible to post scheduling advice to the mailing lists.
- Java Bluetooth API
- Bluez 4.x with Linux Kernel 2.6.29
- More profiles...
- Bluetooth 2.1+EDR
Development Notes
- HID Support
Cupcake features some early work—Bluez has an HID plugin,external/bluez/utils/input/Android.mk
, which gets compiled.
You can interact directly with this plugin usingdbus-send
anddbus-monitor
. While not officially supported, you should be able to connect and use a HID keyboard and mouse using the Bluez HID plugin API. Next steps include plumbing the plugin API in the Android Java framework and offering better support for HID input methods (new keymaps and mouse support). - Tethering - DUN and PAN Support
Cupcake features some early work—Bluez has has DUN and PAN daemons which get compiled andexternal/bluez/utils/dun/Android.mk external/bluez/utils/pan/Android.mkBNEP
support is compiled into the kernel with cupcake.
While not officially supported, you should be able to rundund
orpand
daemons and, usingpppd
oriptables
, test tethering support. Next steps include plubming the DBUS APIs to these daemons up into the Android Java framework and adding code to setup the network paths viapppd
and / oriptables
. - Emulator Support
The Android emulator does not support Bluetooth at this time and there currently aren't any plans for its support. - Bluetooth 2.1 and Simple Pairing Support
In order to support these features, Android needs to move to a Bluez 4.x version. This change is not scheduled at this time.
- Bluetooth
- bluetooth
- Bluetooth
- bluetooth
- Bluetooth
- bluetooth
- Bluetooth
- Bluetooth
- Bluetooth
- Bluetooth
- Bluetooth
- bluetooth
- bluetooth
- Bluetooth
- Bluetooth
- Bluetooth
- Bluetooth
- [Bluetooth] Android Bluetooth
- Linux下SVN命令使用大全
- Jquery里的鼠标事件弹层特效
- svn大批量改动,提交办法
- iphone ios layer 教程应用
- Datalist翻页(不用第三方控件,自己写翻页代码)
- Bluetooth
- multiple keyboard shortcuts
- Changes to the Meta-Object System in Qt 5
- 使用Quartz绘制带阴影的圆角图
- 客户端操作,实现文件的上传、下载、和删除
- HDU 3518
- SQL server语言基础(三)
- paip.vs2010 开发ASP浏览时的设置
- GPS