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.
