Bluedroid 4.2 battle
Перейти к навигации
Перейти к поиску
Make 4.2+ Android Bluedroid work with USB HCI
- Current status
- Now Android Bluedroid have USB Hci support, thanks to intel, here cm patches:
http://review.cyanogenmod.org/#/c/45535/ http://review.cyanogenmod.org/#/c/45536/ http://review.cyanogenmod.org/#/c/45537/ http://review.cyanogenmod.org/#/c/45538/
- Bluedroid fail to identify our usb device as bt device
- Fixed
- Disable all kernel bluetooth drivers or remove modules on system start (bluetooth.ko & btusb.ko)
- Compile bluedroid without rfkill support, as without btusb module no rfkill created for usb bt device
- Fixed
- Bluedroid fail to identify our usb device as bt device
# Bluetooth BOARD_HAVE_BLUETOOTH := true BLUETOOTH_HCI_USE_USB := true BOARD_HAVE_BLUETOOTH_BCM := true BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := device/toshiba/paz00-common/bluetooth BOARD_BLUETOOTH_DOES_NOT_USE_RFKILL := true
' Add system property to disable rfkill for bt_upio, do ween this?
#disable rfkill for upio ro.rfkilldisabled=1
' Set correct permissions (bluetooth:bluetooth) on devices on /dev/uhid' and /dev/bus/usb/001/004 in ueventd.rc
# for bluetooth nodes #/dev/uhid 0660 bluetooth bluetooth # bt device /dev/bus/usb/001/004 0660 bluetooth bluetooth
* Bt turns on, can scan devices, pair and even data transfer happen in log, but it seems no uinput device created
- Yongbing helped to get rid of last problem with no input device created, here in comments http://yongbingchen.github.io/blog/2013/05/25/bluedroid-bug-fix/
- Final patch which fix input device creation here http://review.cyanogenmod.org/#/c/51931/
- Probably will not land into mainline cm, no one reviews it.
- Final patch which fix input device creation here http://review.cyanogenmod.org/#/c/51931/
- Yongbing helped to get rid of last problem with no input device created, here in comments http://yongbingchen.github.io/blog/2013/05/25/bluedroid-bug-fix/
Add debug to LibUsb (the one cm-10.1 use)
diff --git a/config.h b/config.h
index e251d64..29aba07 100644
--- a/config.h
+++ b/config.h
@@ -4,7 +4,7 @@
#define API_EXPORTED __attribute__((visibility("default")))
/* Debug message logging */
-/* #undef ENABLE_DEBUG_LOGGING */
+#define ENABLE_DEBUG_LOGGING 1
/* Message logging */
#define ENABLE_LOGGING 1
diff --git a/libusb/Android.mk b/libusb/Android.mk
index c437a87..9e0c1c7 100644
--- a/libusb/Android.mk
+++ b/libusb/Android.mk
@@ -14,7 +14,8 @@ LOCAL_C_INCLUDES += \
external/libusb/libusb/ \
external/libusb/libusb/os
-LOCAL_CFLAGS := -D_SHARED_LIBRARY_
+LOCAL_CFLAGS := -D_SHARED_LIBRARY_
+LOCAL_SHARED_LIBRARIES := liblog
LOCAL_MODULE_TAGS:= optional
LOCAL_MODULE:= libusb
include $(BUILD_SHARED_LIBRARY)
diff --git a/libusb/core.c b/libusb/core.c
index 7e4fd24..e22c6ad 100644
--- a/libusb/core.c
+++ b/libusb/core.c
@@ -29,6 +29,10 @@
#include <sys/types.h>
#include <unistd.h>
+#if defined(__ANDROID__)
+#include <android/log.h>
+#endif
+
#include "libusb.h"
#include "libusbi.h"
@@ -1538,7 +1542,12 @@ void usbi_log(struct libusb_context *ctx, enum usbi_log_level level,
{
va_list args;
FILE *stream = stdout;
+#if defined(__ANDROID__)
+ int prio;
+#else
const char *prefix;
+#endif
+
#ifndef ENABLE_DEBUG_LOGGING
USBI_GET_CONTEXT(ctx);
@@ -1550,6 +1559,29 @@ void usbi_log(struct libusb_context *ctx, enum usbi_log_level level,
return;
#endif
+#if defined(__ANDROID__)
+ switch (level) {
+ case LOG_LEVEL_INFO:
+ prio = ANDROID_LOG_INFO;
+ break;
+ case LOG_LEVEL_WARNING:
+ prio = ANDROID_LOG_WARN;
+ break;
+ case LOG_LEVEL_ERROR:
+ prio = ANDROID_LOG_ERROR;
+ break;
+ case LOG_LEVEL_DEBUG:
+ prio = ANDROID_LOG_DEBUG;
+ break;
+ default:
+ prio = ANDROID_LOG_UNKNOWN;
+ break;
+ }
+
+ va_start (args, format);
+ __android_log_vprint(prio, "LibUsb", format, args);
+ va_end (args);
+#else
switch (level) {
case LOG_LEVEL_INFO:
prefix = "info";
@@ -1579,5 +1611,6 @@ void usbi_log(struct libusb_context *ctx, enum usbi_log_level level,
va_end (args);
fprintf(stream, "\n");
+#endif
}
Find the reason of ev.u.create.bus mystic
Everybody lucky with BUS_BLUETOOTH but why? Maybe they have some extra patch or config option?
./kernel/toshiba/ac100/samples/uhid/uhid-example.c:124: ev.u.create.bus = BUS_USB; ./external/bluetooth/bluedroid/btif/co/bta_hh_co.c:423: ev.u.create.bus = BUS_BLUETOOTH;