• 2009-08-02

    use bluetooth keyboard on the adp1 - [电路与驱动]

    Tag:

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://hunbalo.blogbus.com/logs/43387105.html

    HOWTO: Bluetooth Keyboard/Mouse working with "Master" on ADP1 Howard M. Harte Mon Jan 19 03:02:49 2009

    I've been wanting to be able to use a Bluetooth Keyboard and Mouse
    with my Android Phone for a while now. I was able to get it to work
    for an ADP1 phone, using the master branch. The RC29 kernel does not
    have proper support compiled in for this to work, so you'll have to
    follow the instructions for installing "Master" on your ADP1. Note
    the warnings in the following link, and note that "Master" has some
    bugs, so this is only for experimentation, and I wouldn't recommend it
    if you use your G1 as your primary phone.

    You may also need to do some tricks to get BT running on Master:

    1. preserve the BT firmware (brf6300.bin) from your G1:

    2. while the phone is booting, "adb shell" and issue the following:
    # echo 1 > /sys/class/rfkill/rfkill0/state

    How to get HID Keyboard/Mouse working with G1/ADP1 and Master Branch

    0. get and build the latest Master version of Android for your ADP1:
    http://groups.google.com/group/android-platform/browse_thread/thread/d71fdb6e896a128c
    http://andblogs.net/2009/01/cupcake-on-g1adp1/

    1. Create Android.mk in <droid>/external/bluez/hidd:

    LOCAL_PATH:= $(call my-dir)

    #
    # hidd
    #

    include $(CLEAR_VARS)

    LOCAL_SRC_FILES:= \
    main.c \
    sdp.c \
    fakehid.c

    LOCAL_CFLAGS:= \
    -DVERSION=\"3.36\" \
    -DSTORAGEDIR=\"/tmp\" \
    -DNEED_PPOLL

    LOCAL_C_INCLUDES:= \
    $(call include-path-for, bluez-libs) \
    $(call include-path-for, bluez-utils)/common

    LOCAL_SHARED_LIBRARIES := \
    libbluetooth

    LOCAL_STATIC_LIBRARIES := \
    libbluez-utils-common-static

    LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
    LOCAL_MODULE_TAGS := eng
    LOCAL_MODULE:=hidd

    include $(BUILD_EXECUTABLE)

    2. Then, make, and download to your ADP1:
    $ make
    $ fastboot -w -p dream flashall

    Note: to get back to RC29, you need an RC29 update.zip on a MicroSD
    card, and you need to fastboot -w (to wipe all local data) before
    using the recovery mode to re-flash update.zip. If you don't wipe the
    local data, Android will get stuck at the robot screen.

    Boot up the phone, and ADB shell into it.
    ==================================================
    $ adb shell
    # hcitool scan
    Scanning ...
    00:23:6C:C2:AA:BB Mighty Mouse
    00:1B:63:FA:CC:DD Apple keyboard

    Now, in the Settings->Wireless Controls->Bluetooth Menu, pair with
    your keyboard and mouse. Then,

    # hidd --connect 00:23:6C:C2:AA:BB
    # hidd --connect 00:1B:63:FA:CC:DD
    # hcitool con
    Connections:
    < ACL 00:1B:63:FA:CC:DD handle 2 state 1 lm MASTER
    < ACL 00:23:6C:C2:AA:BB handle 1 state 1 lm MASTER

    # cat /proc/bus/input/devices
    I: Bus=0000 Vendor=0000 Product=0000 Version=0000
    N: Name="h2w headset"
    P: Phys=
    S: Sysfs=/devices/virtual/input/input0
    U: Uniq=
    H: Handlers=event0
    B: EV=3
    B: KEY=4 0 0 0 0 0 0 0

    I: Bus=0000 Vendor=0000 Product=0000 Version=0000
    N: Name="synaptics-rmi-touchscreen"
    P: Phys=
    S: Sysfs=/devices/virtual/input/input1
    U: Uniq=
    H: Handlers=event1
    B: EV=b
    B: KEY=400 0 4 0 0 0 0 0 0 0 0
    B: ABS=11030003

    I: Bus=0000 Vendor=0000 Product=0000 Version=0000
    N: Name="trout-nav"
    P: Phys=
    S: Sysfs=/devices/virtual/input/input2
    U: Uniq=
    H: Handlers=event2 keyreset
    B: EV=7
    B: KEY=10000 0 0 0 0 0 0 0 0
    B: REL=3

    I: Bus=0000 Vendor=0000 Product=0000 Version=0000
    N: Name="trout-keypad-v3"
    P: Phys=
    S: Sysfs=/devices/virtual/input/input3
    U: Uniq=
    H: Handlers=event3 keyreset
    B: EV=23
    B: KEY=80 980000 0 40000800 800c0850 0 b5ff47f d3ff4ffc
    B: SW=1

    I: Bus=0000 Vendor=0000 Product=0000 Version=0000
    N: Name="compass"
    P: Phys=
    S: Sysfs=/devices/virtual/input/input4
    U: Uniq=
    H: Handlers=event4
    B: EV=9
    B: ABS=307ff

    I: Bus=0005 Vendor=0000 Product=0000 Version=0000
    N: Name="Bluetooth HID Boot Protocol Device"
    P: Phys=
    S: Sysfs=/devices/virtual/bluetooth/hci0/hci0:1/input5
    U: Uniq=
    H: Handlers=event5 keyreset
    B: EV=7
    B: KEY=1f0000 0 0 0 0 0 0 0 0
    B: REL=103

    I: Bus=0005 Vendor=0000 Product=0000 Version=0000
    N: Name="Bluetooth HID Boot Protocol Device"
    P: Phys=
    S: Sysfs=/devices/virtual/bluetooth/hci0/hci0:2/input6
    U: Uniq=
    H: Handlers=event6 keyreset
    B: EV=120003
    B: KEY=7 ff87207a c14057ff febeffdf ffefffff ffffffff fffffffe
    B: LED=1f

    Note the two new input devices on event5 and event6! The keyboard and
    mouse should now work.

    TODO: create keyboard map for the keyboard, so all the keys work as
    expected.
    TODO: Mouse pointer. It would be really nice if Android supported a
    mouse pointer, to emulate a touchscreen, sort of like the emulator
    does.

    -Howard



    收藏到:Del.icio.us