Return-Path: From: Szymon Janc To: Keith Conger Cc: linux-bluetooth@vger.kernel.org Subject: Re: android-bluez with usb adapter Date: Tue, 17 Feb 2015 22:47:28 +0100 Message-ID: <4717325.0Njt2iLfvL@athlon> In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Sender: linux-bluetooth-owner@vger.kernel.org List-ID: Hi Keith, On Tuesday 17 February 2015 14:16:37 Keith Conger wrote: > I'm trying to swap out bluedroid with android-bluez to add bluetooth > usb adapter support into KitKat for my Beaglebone Black(ARM). Should > this be possible? Yeap, this is possible. > > I followed this guide, > http://forum.xda-developers.com/showthread.php?t=2640723 skipping the > CSR parts. > > Here is a logcat with debugging enabled. I've googled the errors and > have had no luck. Does anyone have any ideas? > > I/bluetoothd( 1072): Bluetooth daemon 5.28 > > D/bluetoothd( 1072): > external/bluetooth/bluez/android/main.c:set_capabilities() Caps: eff: > 0x3400, perm: 0x3400, inh: 0x0 > > D/bluetoothd( 1072): > external/bluetooth/bluez/android/bluetooth.c:bt_bluetooth_start() > index -1 > > I/bluetoothd( 1072): Starting SDP server > > D/bluetoothd( 1072): external/bluetooth/bluez/android/main.c:main() > Entering main loop > > I/bluetoothd( 1072): mgmt_if: [0xffff] command 0x0001 > > I/bluetoothd( 1072): mgmt_if: < 01 00 ff ff 00 00 > ..??.. > > I/bluetoothd( 1072): mgmt_if: > 01 00 ff ff 06 00 01 00 00 01 07 00 > ..??........ > > I/bluetoothd( 1072): mgmt_if: [0xffff] command 0x0001 complete: 0x00 > > D/bluetoothd( 1072): > external/bluetooth/bluez/android/bluetooth.c:read_version_complete() > > I/bluetoothd( 1072): Bluetooth management interface 1.7 initialized > > I/bluetoothd( 1072): Kernel connection control will be used > > I/bluetoothd( 1072): mgmt_if: [0xffff] command 0x0003 > > I/bluetoothd( 1072): mgmt_if: < 03 00 ff ff 00 00 > ..??.. > > I/bluetoothd( 1072): mgmt_if: > 01 00 ff ff 07 00 03 00 00 01 00 00 00 > ..??......... > > I/bluetoothd( 1072): mgmt_if: [0xffff] command 0x0003 complete: 0x00 > > D/bluetoothd( 1072): > external/bluetooth/bluez/android/bluetooth.c:read_index_list_complete() > > D/bluetoothd( 1072): > external/bluetooth/bluez/android/bluetooth.c:read_index_list_complete() > Number of controllers: 1 > > I/bluetoothd( 1072): mgmt_if: [0x0000] command 0x0004 > > I/bluetoothd( 1072): mgmt_if: < 04 00 00 00 00 00 > ...... > > I/bluetoothd( 1072): mgmt_if: > 01 00 00 00 1b 01 04 00 00 e9 36 36 e7 > 18 00 03 .........?66?... > > I/bluetoothd( 1072): mgmt_if: 0f 00 bf 10 00 00 90 00 00 00 00 00 00 > 42 43 4d ..?..........BCM > > I/bluetoothd( 1072): mgmt_if: 32 30 34 35 42 33 00 00 00 00 00 00 00 > 00 00 00 2045B3.......... > > I/bluetoothd( 1072): mgmt_if: 00 00 00 00 00 00 00 00 00 00 00 00 00 > 00 00 00 ................ > > I/bluetoothd( 1072): mgmt_if: 00 00 00 00 00 00 00 00 00 00 00 00 00 > 00 00 00 ................ > > I/bluetoothd( 1072): mgmt_if: 00 00 00 00 00 00 00 00 00 00 00 00 00 > 00 00 00 ................ > > I/bluetoothd( 1072): mgmt_if: 00 00 00 00 00 00 00 00 00 00 00 00 00 > 00 00 00 ................ > > I/bluetoothd( 1072): mgmt_if: 00 00 00 00 00 00 00 00 00 00 00 00 00 > 00 00 00 ................ > > I/bluetoothd( 1072): mgmt_if: 00 00 00 00 00 00 00 00 00 00 00 00 00 > 00 00 00 ................ > > I/bluetoothd( 1072): mgmt_if: 00 00 00 00 00 00 00 00 00 00 00 00 00 > 00 00 00 ................ > > I/bluetoothd( 1072): mgmt_if: 00 00 00 00 00 00 00 00 00 00 00 00 00 > 00 00 00 ................ > > I/bluetoothd( 1072): mgmt_if: 00 00 00 00 00 00 00 00 00 00 00 00 00 > 00 00 00 ................ > > I/bluetoothd( 1072): mgmt_if: 00 00 00 00 00 00 00 00 00 00 00 00 00 > 00 00 00 ................ > > I/bluetoothd( 1072): mgmt_if: 00 00 00 00 00 00 00 00 00 00 00 00 00 > 00 00 00 ................ > > I/bluetoothd( 1072): mgmt_if: 00 00 00 00 00 00 00 00 00 00 00 00 00 > 00 00 00 ................ > > I/bluetoothd( 1072): mgmt_if: 00 00 00 00 00 00 00 00 00 00 00 00 00 > 00 00 00 ................ > > I/bluetoothd( 1072): mgmt_if: 00 00 00 00 00 00 00 00 00 00 00 00 00 > 00 00 00 ................ > > I/bluetoothd( 1072): mgmt_if: 00 00 00 00 00 00 00 00 00 00 00 00 00 > 00 00 00 ................ > > I/bluetoothd( 1072): mgmt_if: 00 > . > > I/bluetoothd( 1072): mgmt_if: [0x0000] command 0x0004 complete: 0x00 > > D/bluetoothd( 1072): > external/bluetooth/bluez/android/bluetooth.c:read_info_complete() > > D/bluetoothd( 1072): > external/bluetooth/bluez/src/sdpd-service.c:register_device_id() > Adding device id record for 0002:1d6b:0247:051c > > D/bluetoothd( 1072): > external/bluetooth/bluez/src/sdpd-service.c:add_record_to_server() > Adding record with handle 0x10001 > > D/bluetoothd( 1072): > external/bluetooth/bluez/src/sdpd-service.c:add_record_to_server() > Record pattern UUID 00001002-0000-1000-8000-00805f9 > > D/bluetoothd( 1072): > external/bluetooth/bluez/src/sdpd-service.c:add_record_to_server() > Record pattern UUID 0000113a-0000-1000-8000-00805f9 > > D/bluetoothd( 1072): > external/bluetooth/bluez/src/sdpd-service.c:add_record_to_server() > Record pattern UUID 0000113b-0000-1000-8000-00805f9 > > D/bluetoothd( 1072): > external/bluetooth/bluez/android/bluetooth.c:load_ltks() ltks 0 > > D/bluetoothd( 1072): > external/bluetooth/bluez/android/bluetooth.c:load_irks() irks 0 > > D/bluetoothd( 1072): > external/bluetooth/bluez/android/bluetooth.c:load_link_keys() keys 0 > > I/bluetoothd( 1072): mgmt_if: [0x0000] command 0x000e > > I/bluetoothd( 1072): mgmt_if: < 0e 00 00 00 02 00 02 0c > ........ > > I/bluetoothd( 1072): mgmt_if: > 01 00 00 00 06 00 0e 00 00 00 00 00 > ............ > > I/bluetoothd( 1072): mgmt_if: [0x0000] command 0x000e complete: 0x00 > > I/bluetoothd( 1072): mgmt_if: [0x0000] command 0x0011 > > I/bluetoothd( 1072): mgmt_if: < 11 00 00 00 10 00 00 00 00 00 00 00 00 > 00 00 00 ................ > > I/bluetoothd( 1072): mgmt_if: 00 00 00 00 00 00 > ...... > > I/bluetoothd( 1072): mgmt_if: > 01 00 00 00 06 00 11 00 00 00 00 00 > ............ > > I/bluetoothd( 1072): mgmt_if: [0x0000] command 0x0011 complete: 0x00 > > I/bluetoothd( 1072): mgmt_if: [0x0000] command 0x0034 > > I/bluetoothd( 1072): mgmt_if: < 34 00 00 00 07 00 00 00 00 00 00 00 00 > 4............ > > I/bluetoothd( 1072): mgmt_if: > 01 00 00 00 0a 00 34 00 00 00 00 00 00 > 00 00 00 ......4......... > > I/bluetoothd( 1072): mgmt_if: [0x0000] command 0x0034 complete: 0x00 > > I/bluetoothd( 1072): mgmt_if: [0x0000] command 0x0018 > > I/bluetoothd( 1072): mgmt_if: < 18 00 00 00 01 00 01 > ....... > > I/bluetoothd( 1072): mgmt_if: > 01 00 00 00 03 00 18 00 00 > ......... > > I/bluetoothd( 1072): mgmt_if: [0x0000] command 0x0018 complete: 0x00 > > I/bluetoothd( 1072): mgmt_if: [0x0000] command 0x0028 > > I/bluetoothd( 1072): mgmt_if: < 28 00 00 00 08 00 02 00 6b 1d 47 02 1c > 05 (.......k.G... > > I/bluetoothd( 1072): mgmt_if: > 01 00 00 00 03 00 28 00 00 > ......(.. > > I/bluetoothd( 1072): mgmt_if: [0x0000] command 0x0028 complete: 0x00 > > I/bluetoothd( 1072): mgmt_if: [0x0000] command 0x0010 > > I/bluetoothd( 1072): mgmt_if: < 10 00 00 00 11 00 fb 34 9b 5f 80 00 00 > 80 00 10 ......?4._...... > > I/bluetoothd( 1072): mgmt_if: 00 00 00 12 00 00 00 > ....... > > I/bluetoothd( 1072): mgmt_if: > 01 00 00 00 06 00 10 00 00 00 00 00 > ............ > > I/bluetoothd( 1072): mgmt_if: [0x0000] command 0x0010 complete: 0x00 > > I/bluetoothd( 1072): mgmt_if: [0x0000] command 0x0010 > > I/bluetoothd( 1072): mgmt_if: < 10 00 00 00 11 00 fb 34 9b 5f 80 00 00 > 80 00 10 ......?4._...... > > I/bluetoothd( 1072): mgmt_if: 00 00 3b 11 00 00 00 > ..;.... > > I/bluetoothd( 1072): mgmt_if: > 01 00 00 00 06 00 10 00 00 00 00 00 > ............ > > I/bluetoothd( 1072): mgmt_if: [0x0000] command 0x0010 complete: 0x00 > > I/bluetoothd( 1072): mgmt_if: [0x0000] command 0x0013 > > I/bluetoothd( 1072): mgmt_if: < 13 00 00 00 02 00 00 00 > ........ > > I/bluetoothd( 1072): mgmt_if: > 02 00 00 00 03 00 13 00 0c > ......... > > I/bluetoothd( 1072): mgmt_if: [0x0000] command 0x13 status: 0x0c > > I/bluetoothd( 1072): Failed to load LTKs: Not Supported (0x0c) > > I/bluetoothd( 1072): mgmt_if: [0x0000] command 0x0030 > > I/bluetoothd( 1072): mgmt_if: < 30 00 00 00 02 00 00 00 > 0....... > > I/bluetoothd( 1072): mgmt_if: > 02 00 00 00 03 00 30 00 0c > ......0.. > > I/bluetoothd( 1072): mgmt_if: [0x0000] command 0x30 status: 0x0c > > I/bluetoothd( 1072): Failed to load IRKs: Not Supported (0x0c) > > I/bluetoothd( 1072): mgmt_if: [0x0000] command 0x0012 > > I/bluetoothd( 1072): mgmt_if: < 12 00 00 00 03 00 00 00 00 > ......... > > I/bluetoothd( 1072): mgmt_if: > 01 00 00 00 03 00 12 00 00 > ......... > > I/bluetoothd( 1072): mgmt_if: [0x0000] command 0x0012 complete: 0x00 > > D/bluetoothd( 1072): > external/bluetooth/bluez/android/bluetooth.c:load_link_keys_complete() > status 0 > > I/bluetoothd( 1072): Adapter initialized > > D/bluetoothd( 1072): external/bluetooth/bluez/android/ipc.c:cmd_connect_cb() > > E/bluetoothd( 1072): IPC: command socket connect failed > > I/bluetoothd( 1072): Switching controller off > > I/bluetoothd( 1072): mgmt_if: [0x0000] command 0x0005 > > I/bluetoothd( 1072): mgmt_if: < 05 00 00 00 01 00 00 > ....... > > I/bluetoothd( 1072): mgmt_if: > 01 00 00 00 07 00 05 00 00 90 00 00 00 > ............. > > I/bluetoothd( 1072): mgmt_if: [0x0000] command 0x0005 complete: 0x00 > > D/bluetoothd( 1072): > external/bluetooth/bluez/android/main.c:cleanup_services() > > I/bluetoothd( 1072): Stopping SDP server > > I/bluetoothd( 1072): Exit This log looks OK. Adapter was found and initialized. Only problem is that there was no IPC socket listening for it to connect. On Android bluetoothd is not suppose to be started 'by hand'. It needs to be started as service defined in init.rc (check android/README and android/init.bluetooth.rc). This service is started via bluetooth.default.so provided by BlueZ (this is implementation ofn Android Bluetooth HAL interface). When bluetoothd starts and initializes adapter it tries to connect IPC to this library. If lib is not loaded (and there is no socket to connect to) bluetoothd shuts down. This library is loaded by Android Framework and when you enable BT from UI lib will be initialized and daemon will be started. Other option for testing is our test tool called haltest. This is command line tool that will load bt lib and allow you to play with bt stack (this tool doesn't use Android Framework). So what you should check: - you have init.bluetooth.rc in / - this file is included from your board init.foo.rc file - daemon and bluetooth.default.so are installed on system (this should be handled just fine by Android.mk provided by BlueZ) - you don't need hciattach service - this is not needed with btusb -- Szymon K. Janc szymon.janc@gmail.com