EPox Presenter
==============

# hcitool inq
Inquiring ...
        00:04:61:aa:bb:cc       clock offset: 0x1ded    class: 0x004000

# hcitool info 00:04:61:aa:bb:cc
Requesting information ...
        BD Address:  00:04:61:aa:bb:cc
        OUI Company: EPOX Computer Co., Ltd. (00-04-61)
        Device Name: EPox BT-PM01B aabbcc
        LMP Version: 1.1 (0x1) LMP Subversion: 0xf78
        Manufacturer: Cambridge Silicon Radio (10)
        Features: 0xff 0xff 0x0f 0x00 0x00 0x00 0x00 0x00
                <3-slot packets> <5-slot packets> <encryption> <slot offset> 
                <timing accuracy> <role switch> <hold mode> <sniff mode> 
                <park state> <RSSI> <channel quality> <SCO link> <HV2 packets> 
                <HV3 packets> <u-law log> <A-law log> <CVSD> <paging scheme> 
                <power control> <transparent SCO> 

# sdptool records --raw 00:04:61:aa:bb:cc
Sequence
        Attribute 0x0000 - ServiceRecordHandle
                UINT32 0x00010000
        Attribute 0x0001 - ServiceClassIDList
                Sequence
                        UUID16 0x1101 - SerialPort
        Attribute 0x0004 - ProtocolDescriptorList
                Sequence
                        Sequence
                                UUID16 0x0100 - L2CAP
                        Sequence
                                UUID16 0x0003 - RFCOMM
                                UINT8 0x01
        Attribute 0x0100
                String Cable Replacement


J-Three Keyboard
================

# hcitool inq
Inquiring ...
        00:0A:3A:aa:bb:cc       clock offset: 0x3039    class: 0x001f00

# hcitool info 00:0A:3A:aa:bb:cc
Password:
Requesting information ...
        BD Address:  00:0A:3A:aa:bb:cc
        OUI Company: J-THREE INTERNATIONAL Holding Co., Ltd. (00-0A-3A)
        Device Name: KEYBOARD
        LMP Version: 1.1 (0x1) LMP Subversion: 0x2c2
        Manufacturer: Cambridge Silicon Radio (10)
        Features: 0xbc 0x06 0x07 0x00 0x00 0x00 0x00 0x00
                <encryption> <slot offset> <timing accuracy> <role switch> 
                <sniff mode> <RSSI> <channel quality> <CVSD> <paging scheme> 
                <power control> 

# sdptool records --raw 00:0A:3A:aa:bb:cc
Sequence
        Attribute 0x0000 - ServiceRecordHandle
                UINT32 0x00010000
        Attribute 0x0001 - ServiceClassIDList
                Sequence
                        UUID16 0x1101 - SerialPort
        Attribute 0x0004 - ProtocolDescriptorList
                Sequence
                        Sequence
                                UUID16 0x0100 - L2CAP
                        Sequence
                                UUID16 0x0003 - RFCOMM
                                UINT8 0x01
        Attribute 0x0006 - LanguageBaseAttributeIDList
                Sequence
                        UINT16 0x656e
                        UINT16 0x006a
                        UINT16 0x0100
        Attribute 0x0100
                String SPP slave


Celluon Laserkey Keyboard
=========================

# hcitool inq
Inquiring ...
       00:0B:24:aa:bb:cc       clock offset: 0x3ab6    class: 0x400210

# hcitool info 00:0B:24:aa:bb:cc
Requesting information ...
       BD Address:  00:0B:24:aa:bb:cc
       OUI Company: AirLogic (00-0B-24)
       Device Name: CL800BT
       LMP Version: 1.1 (0x1) LMP Subversion: 0x291
       Manufacturer: Cambridge Silicon Radio (10)
       Features: 0xff 0xff 0x0f 0x00 0x00 0x00 0x00 0x00
               <3-slot packets> <5-slot packets> <encryption> <slot offset>
               <timing accuracy> <role switch> <hold mode> <sniff mode>
               <park state> <RSSI> <channel quality> <SCO link> <HV2 packets>
               <HV3 packets> <u-law log> <A-law log> <CVSD> <paging scheme>
               <power control> <transparent SCO>

# sdptool records --raw 00:0B:24:aa:bb:cc
Sequence
         Attribute 0x0000 - ServiceRecordHandle
                 UINT32 0x00010000
         Attribute 0x0001 - ServiceClassIDList
                 Sequence
                         UUID16 0x1101 - SerialPort
         Attribute 0x0004 - ProtocolDescriptorList
                 Sequence
                         Sequence
                                 UUID16 0x0100 - L2CAP
                         Sequence
                                 UUID16 0x0003 - RFCOMM
                                 UINT8 0x01
         Attribute 0x0100
                 String Serial Port

Packet format is as follows (all fields little-endian):
     0 uint16  magic            # 0x5a5a
     2 uint32  unknown          # ???
     6 uint8   action           # 0 = keyup, 1 = keydown, 2 = repeat
                                # 3, 4, 5, 6 = ??? (Mouse mode)
     7 uint8   unknown[9]       # ???
    16 uint8   action2          # ??? same as action
    17 uint16  x                # Horizontal coordinate
    19 uint16  y                # Vertical coordinate
    21 uint16  time             # Some sort of timestamp
    23 uint8   unknown[5]       # ???
    28 uint8   key[]            # single byte keycode or 0xff byte
                                # follwed by special keycode byte.
    Each packet followed by a checksum byte.