Skip to content

Instantly share code, notes, and snippets.

@Q-Bert-Reynolds
Last active May 25, 2024 18:24
Show Gist options
  • Save Q-Bert-Reynolds/3ae3d151bd17cf5ac7bfc689159b716a to your computer and use it in GitHub Desktop.
Save Q-Bert-Reynolds/3ae3d151bd17cf5ac7bfc689159b716a to your computer and use it in GitHub Desktop.
Dec 09 00:12:12.597 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Exchange MTU Request - MTU: 527 56 00 07 00 03 00 04 00 02 0F 02
Dec 09 00:12:12.686 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Read By Group Type Request - Start Handle: 0x0001 - End Handle: 0xFFFF - UUID: GATT Primary Service Declaration 56 00 0B 00 07 00 04 00 10 01 00 FF FF 00 28
Dec 09 00:12:12.746 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Read By Group Type Request - Start Handle: 0x0035 - End Handle: 0xFFFF - UUID: GATT Primary Service Declaration 56 00 0B 00 07 00 04 00 10 35 00 FF FF 00 28
Dec 09 00:12:12.806 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Read By Group Type Request - Start Handle: 0xFF06 - End Handle: 0xFFFF - UUID: GATT Primary Service Declaration 56 00 0B 00 07 00 04 00 10 06 FF FF FF 00 28
Dec 09 00:12:12.866 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Read By Type Request - Start Handle: 0x0010 - End Handle: 0x0013 - UUID: GATT Characteristic Declaration 56 00 0B 00 07 00 04 00 08 10 00 13 00 03 28
Dec 09 00:12:12.926 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Find Information Request - Handle: 0x0013 - Service Changed 56 00 09 00 05 00 04 00 04 13 00 13 00
Dec 09 00:12:12.986 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle: 0x0013 - Service Changed - Configuration - Indication 56 00 09 00 05 00 04 00 12 13 00 02 00
Dec 09 00:12:13.109 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Read By Type Request - Start Handle: 0x0070 - End Handle: 0x007B - UUID: GATT Characteristic Declaration 56 00 0B 00 07 00 04 00 08 70 00 7B 00 03 28
Dec 09 00:12:13.167 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Read By Type Request - Start Handle: 0x0020 - End Handle: 0x0022 - UUID: GATT Characteristic Declaration 56 00 0B 00 07 00 04 00 08 20 00 22 00 03 28
Dec 09 00:12:13.226 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Read By Type Request - Start Handle: 0x0060 - End Handle: 0x0067 - UUID: GATT Characteristic Declaration 56 00 0B 00 07 00 04 00 08 60 00 67 00 03 28
Dec 09 00:12:13.288 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Find Information Request - Handle: 0x0065 - BBE87709-5B89-4433-AB7F-8B8EEF0D8E39 56 00 09 00 05 00 04 00 04 65 00 65 00
Dec 09 00:12:13.346 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle: 0x0065 - BBE87709-5B89-4433-AB7F-8B8EEF0D8E39 - Configuration - Notification 56 00 09 00 05 00 04 00 12 65 00 01 00
Dec 09 00:12:13.407 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Read Request - Handle:0x0067 - BBE87709-5B89-4433-AB7F-8B8EEF0D8E3A 56 00 07 00 03 00 04 00 0A 67 00
Dec 09 00:12:13.467 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0062 - BBE87709-5B89-4433-AB7F-8B8EEF0D8E38 - Value: 0400 0000 CEDF 030C 7FFB BCE1 7047 8268… 56 00 1B 00 17 00 04 00 12 62 00 04 00 00 00 CE DF 03 0C 7F FB BC E1 70 47 82 68 EB 46 70 38
Dec 09 00:12:13.527 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0062 - BBE87709-5B89-4433-AB7F-8B8EEF0D8E38 - Value: 0500 0000 D828 9402 C7C8 D7B0 BE1F 1646… 56 00 2B 00 27 00 04 00 12 62 00 05 00 00 00 D8 28 94 02 C7 C8 D7 B0 BE 1F 16 46 15 0E 87 9C 3B FC F4 E5 FC BA 2F 24 01 16 BF EA 73 AC 26 6C
Dec 09 00:12:13.587 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Read Request - Handle:0x0067 - BBE87709-5B89-4433-AB7F-8B8EEF0D8E3A 56 00 07 00 03 00 04 00 0A 67 00
Dec 09 00:12:13.647 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0062 - BBE87709-5B89-4433-AB7F-8B8EEF0D8E38 - Value: 0300 0000 01 56 00 0C 00 08 00 04 00 12 62 00 03 00 00 00 01
Dec 09 00:12:13.736 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Read Request - Handle:0x007B - 21C50462-67CB-63A3-5C4C-82B5B9939AF0 56 00 07 00 03 00 04 00 0A 7B 00
Dec 09 00:12:13.796 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Read Request - Handle:0x0022 - Battery Level 56 00 07 00 03 00 04 00 0A 22 00
Dec 09 00:12:15.688 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Read By Type Request - Start Handle: 0x0001 - End Handle: 0x0005 - UUID: Device Name 56 00 0B 00 07 00 04 00 08 01 00 05 00 00 2A
Dec 09 00:14:14.304 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Read Request - Handle:0x0022 - Battery Level 56 00 07 00 03 00 04 00 0A 22 00
Dec 09 00:15:16.300 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0072 - 21C50462-67CB-63A3-5C4C-82B5B9939AEC - Value: 0000 001B 02CC F002 0000 03CC F002 0000… 56 00 5C 00 58 00 04 00 12 72 00 00 00 00 1B 02 CC F0 02 00 00 03 CC F0 02 00 00 03 CC F0 02 00 00 0C CC F0 09 00 00 02 CC F0 02 00 00 03 CC F0 02 00 00 03 CC F0 02 00 00 0C CC F0 09 00 00 02 CC F0 02 00 00 03 CC F0 02 00 00 03 CC F0 02 00 00 0C CC F0 02 00 00 40 88 80 FF 88 80 B7 88 80
Dec 09 00:15:16.350 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Find Information Request - Handle: 0x0075 - 21C50462-67CB-63A3-5C4C-82B5B9939AED 56 00 09 00 05 00 04 00 04 75 00 75 00
Dec 09 00:15:16.409 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle: 0x0075 - 21C50462-67CB-63A3-5C4C-82B5B9939AED - Configuration - Notification 56 00 09 00 05 00 04 00 12 75 00 01 00
Dec 09 00:15:30.271 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0072 - 21C50462-67CB-63A3-5C4C-82B5B9939AEC - Value: 0000 0001 0A00 00 56 00 0E 00 0A 00 04 00 12 72 00 00 00 00 01 0A 00 00
Dec 09 00:15:30.948 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0072 - 21C50462-67CB-63A3-5C4C-82B5B9939AEC - Value: 0000 0006 020F F00A 0080 020F F00A 0080… 56 00 1D 00 19 00 04 00 12 72 00 00 00 00 06 02 0F F0 0A 00 80 02 0F F0 0A 00 80 02 0F F0 0A 00 80
Dec 09 00:15:46.307 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0072 - 21C50462-67CB-63A3-5C4C-82B5B9939AEC - Value: 0000 001B 02CC F002 0000 03CC F002 0000… 56 00 5C 00 58 00 04 00 12 72 00 00 00 00 1B 02 CC F0 02 00 00 03 CC F0 02 00 00 03 CC F0 02 00 00 0C CC F0 09 00 00 02 CC F0 02 00 00 03 CC F0 02 00 00 03 CC F0 02 00 00 0C CC F0 09 00 00 02 CC F0 02 00 00 03 CC F0 02 00 00 03 CC F0 02 00 00 0C CC F0 02 00 00 40 88 80 FF 88 80 B7 88 80
Dec 09 00:15:53.281 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0072 - 21C50462-67CB-63A3-5C4C-82B5B9939AEC - Value: 0000 0001 0A00 00 56 00 0E 00 0A 00 04 00 12 72 00 00 00 00 01 0A 00 00
Dec 09 00:15:53.960 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0072 - 21C50462-67CB-63A3-5C4C-82B5B9939AEC - Value: 0000 0006 020F F00A 0080 020F F00A 0080… 56 00 1D 00 19 00 04 00 12 72 00 00 00 00 06 02 0F F0 0A 00 80 02 0F F0 0A 00 80 02 0F F0 0A 00 80
Dec 09 00:16:16.306 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0072 - 21C50462-67CB-63A3-5C4C-82B5B9939AEC - Value: 0000 001B 02CC F002 0000 03CC F002 0000… 56 00 5C 00 58 00 04 00 12 72 00 00 00 00 1B 02 CC F0 02 00 00 03 CC F0 02 00 00 03 CC F0 02 00 00 0C CC F0 09 00 00 02 CC F0 02 00 00 03 CC F0 02 00 00 03 CC F0 02 00 00 0C CC F0 09 00 00 02 CC F0 02 00 00 03 CC F0 02 00 00 03 CC F0 02 00 00 0C CC F0 02 00 00 40 88 80 FF 88 80 B7 88 80
Dec 09 00:16:18.782 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0072 - 21C50462-67CB-63A3-5C4C-82B5B9939AEC - Value: 0000 0001 0A00 00 56 00 0E 00 0A 00 04 00 12 72 00 00 00 00 01 0A 00 00
Dec 09 00:16:19.487 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0072 - 21C50462-67CB-63A3-5C4C-82B5B9939AEC - Value: 0000 0006 020F F00A 0080 020F F00A 0080… 56 00 1D 00 19 00 04 00 12 72 00 00 00 00 06 02 0F F0 0A 00 80 02 0F F0 0A 00 80 02 0F F0 0A 00 80
Dec 09 00:16:47.319 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0072 - 21C50462-67CB-63A3-5C4C-82B5B9939AEC - Value: 0000 001B 02CC F002 0000 03CC F002 0000… 56 00 5C 00 58 00 04 00 12 72 00 00 00 00 1B 02 CC F0 02 00 00 03 CC F0 02 00 00 03 CC F0 02 00 00 0C CC F0 09 00 00 02 CC F0 02 00 00 03 CC F0 02 00 00 03 CC F0 02 00 00 0C CC F0 09 00 00 02 CC F0 02 00 00 03 CC F0 02 00 00 03 CC F0 02 00 00 0C CC F0 02 00 00 40 88 80 FF 88 80 B7 88 80
Dec 09 00:16:55.323 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0072 - 21C50462-67CB-63A3-5C4C-82B5B9939AEC - Value: 0000 0001 0A00 00 56 00 0E 00 0A 00 04 00 12 72 00 00 00 00 01 0A 00 00
Dec 09 00:16:56.005 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0072 - 21C50462-67CB-63A3-5C4C-82B5B9939AEC - Value: 0000 0006 020F F00A 0080 020F F00A 0080… 56 00 1D 00 19 00 04 00 12 72 00 00 00 00 06 02 0F F0 0A 00 80 02 0F F0 0A 00 80 02 0F F0 0A 00 80
Dec 09 00:17:18.303 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0072 - 21C50462-67CB-63A3-5C4C-82B5B9939AEC - Value: 0000 001B 02CC F002 0000 03CC F002 0000… 56 00 5C 00 58 00 04 00 12 72 00 00 00 00 1B 02 CC F0 02 00 00 03 CC F0 02 00 00 03 CC F0 02 00 00 0C CC F0 09 00 00 02 CC F0 02 00 00 03 CC F0 02 00 00 03 CC F0 02 00 00 0C CC F0 09 00 00 02 CC F0 02 00 00 03 CC F0 02 00 00 03 CC F0 02 00 00 0C CC F0 02 00 00 40 88 80 FF 88 80 B7 88 80
Dec 09 00:17:21.304 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0072 - 21C50462-67CB-63A3-5C4C-82B5B9939AEC - Value: 0000 0001 0A00 00 56 00 0E 00 0A 00 04 00 12 72 00 00 00 00 01 0A 00 00
Dec 09 00:17:21.993 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0072 - 21C50462-67CB-63A3-5C4C-82B5B9939AEC - Value: 0000 0006 020F F00A 0080 020F F00A 0080… 56 00 1D 00 19 00 04 00 12 72 00 00 00 00 06 02 0F F0 0A 00 80 02 0F F0 0A 00 80 02 0F F0 0A 00 80
Dec 09 00:17:48.308 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0072 - 21C50462-67CB-63A3-5C4C-82B5B9939AEC - Value: 0000 001B 02CC F002 0000 03CC F002 0000… 56 00 5C 00 58 00 04 00 12 72 00 00 00 00 1B 02 CC F0 02 00 00 03 CC F0 02 00 00 03 CC F0 02 00 00 0C CC F0 09 00 00 02 CC F0 02 00 00 03 CC F0 02 00 00 03 CC F0 02 00 00 0C CC F0 09 00 00 02 CC F0 02 00 00 03 CC F0 02 00 00 03 CC F0 02 00 00 0C CC F0 02 00 00 40 88 80 FF 88 80 B7 88 80
Dec 09 00:17:52.805 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0072 - 21C50462-67CB-63A3-5C4C-82B5B9939AEC - Value: 0000 0001 0A00 00 56 00 0E 00 0A 00 04 00 12 72 00 00 00 00 01 0A 00 00
Dec 09 00:17:53.500 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0072 - 21C50462-67CB-63A3-5C4C-82B5B9939AEC - Value: 0000 0006 020F F00A 0080 020F F00A 0080… 56 00 1D 00 19 00 04 00 12 72 00 00 00 00 06 02 0F F0 0A 00 80 02 0F F0 0A 00 80 02 0F F0 0A 00 80
Dec 09 00:18:19.304 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0072 - 21C50462-67CB-63A3-5C4C-82B5B9939AEC - Value: 0000 001B 02CC F002 0000 03CC F002 0000… 56 00 5C 00 58 00 04 00 12 72 00 00 00 00 1B 02 CC F0 02 00 00 03 CC F0 02 00 00 03 CC F0 02 00 00 0C CC F0 09 00 00 02 CC F0 02 00 00 03 CC F0 02 00 00 03 CC F0 02 00 00 0C CC F0 09 00 00 02 CC F0 02 00 00 03 CC F0 02 00 00 03 CC F0 02 00 00 0C CC F0 02 00 00 40 88 80 FF 88 80 B7 88 80
Dec 09 00:18:21.785 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0072 - 21C50462-67CB-63A3-5C4C-82B5B9939AEC - Value: 0000 0001 0A00 00 56 00 0E 00 0A 00 04 00 12 72 00 00 00 00 01 0A 00 00
Dec 09 00:18:22.466 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0072 - 21C50462-67CB-63A3-5C4C-82B5B9939AEC - Value: 0000 0006 020F F00A 0080 020F F00A 0080… 56 00 1D 00 19 00 04 00 12 72 00 00 00 00 06 02 0F F0 0A 00 80 02 0F F0 0A 00 80 02 0F F0 0A 00 80
Dec 09 00:18:50.304 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0072 - 21C50462-67CB-63A3-5C4C-82B5B9939AEC - Value: 0000 001B 02CC F002 0000 03CC F002 0000… 56 00 5C 00 58 00 04 00 12 72 00 00 00 00 1B 02 CC F0 02 00 00 03 CC F0 02 00 00 03 CC F0 02 00 00 0C CC F0 09 00 00 02 CC F0 02 00 00 03 CC F0 02 00 00 03 CC F0 02 00 00 0C CC F0 09 00 00 02 CC F0 02 00 00 03 CC F0 02 00 00 03 CC F0 02 00 00 0C CC F0 02 00 00 40 88 80 FF 88 80 B7 88 80
Dec 09 00:18:56.286 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0072 - 21C50462-67CB-63A3-5C4C-82B5B9939AEC - Value: 0000 0001 0A00 00 56 00 0E 00 0A 00 04 00 12 72 00 00 00 00 01 0A 00 00
Dec 09 00:18:56.961 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0072 - 21C50462-67CB-63A3-5C4C-82B5B9939AEC - Value: 0000 0006 020F F00A 0080 020F F00A 0080… 56 00 1D 00 19 00 04 00 12 72 00 00 00 00 06 02 0F F0 0A 00 80 02 0F F0 0A 00 80 02 0F F0 0A 00 80
Dec 09 00:19:20.301 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0072 - 21C50462-67CB-63A3-5C4C-82B5B9939AEC - Value: 0000 001B 02CC F002 0000 03CC F002 0000… 56 00 5C 00 58 00 04 00 12 72 00 00 00 00 1B 02 CC F0 02 00 00 03 CC F0 02 00 00 03 CC F0 02 00 00 0C CC F0 09 00 00 02 CC F0 02 00 00 03 CC F0 02 00 00 03 CC F0 02 00 00 0C CC F0 09 00 00 02 CC F0 02 00 00 03 CC F0 02 00 00 03 CC F0 02 00 00 0C CC F0 02 00 00 40 88 80 FF 88 80 B7 88 80
Dec 09 00:19:23.766 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0072 - 21C50462-67CB-63A3-5C4C-82B5B9939AEC - Value: 0000 0001 0A00 00 56 00 0E 00 0A 00 04 00 12 72 00 00 00 00 01 0A 00 00
Dec 09 00:19:24.445 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0072 - 21C50462-67CB-63A3-5C4C-82B5B9939AEC - Value: 0000 0006 020F F00A 0080 020F F00A 0080… 56 00 1D 00 19 00 04 00 12 72 00 00 00 00 06 02 0F F0 0A 00 80 02 0F F0 0A 00 80 02 0F F0 0A 00 80
Dec 09 00:19:50.307 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0072 - 21C50462-67CB-63A3-5C4C-82B5B9939AEC - Value: 0000 001B 02CC F002 0000 03CC F002 0000… 56 00 5C 00 58 00 04 00 12 72 00 00 00 00 1B 02 CC F0 02 00 00 03 CC F0 02 00 00 03 CC F0 02 00 00 0C CC F0 09 00 00 02 CC F0 02 00 00 03 CC F0 02 00 00 03 CC F0 02 00 00 0C CC F0 09 00 00 02 CC F0 02 00 00 03 CC F0 02 00 00 03 CC F0 02 00 00 0C CC F0 02 00 00 40 88 80 FF 88 80 B7 88 80
Dec 09 00:19:54.787 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0072 - 21C50462-67CB-63A3-5C4C-82B5B9939AEC - Value: 0000 0001 0A00 00 56 00 0E 00 0A 00 04 00 12 72 00 00 00 00 01 0A 00 00
Dec 09 00:19:55.465 ATT Send 0x0056 B8:8A:EC:E9:2D:8D Write Request - Handle:0x0072 - 21C50462-67CB-63A3-5C4C-82B5B9939AEC - Value: 0000 0006 020F F00A 0080 020F F00A 0080… 56 00 1D 00 19 00 04 00 12 72 00 00 00 00 06 02 0F F0 0A 00 80 02 0F F0 0A 00 80 02 0F F0 0A 00 80
WINDOWS:
service 1 00001800-0000-1000-8000-00805f9b34fb Generic Access Profile
characteristic 2 00002a00-0000-1000-8000-00805f9b34fb Device Name ['read']
characteristic 4 00002a01-0000-1000-8000-00805f9b34fb Appearance ['read']
service 16 00001801-0000-1000-8000-00805f9b34fb Generic Attribute Profile
characteristic 17 00002a05-0000-1000-8000-00805f9b34fb Service Changed ['read', 'indicate']
descriptor 00002902-0000-1000-8000-00805f9b34fb (Handle: 19): Client Characteristic Configuration
service 32 0000180f-0000-1000-8000-00805f9b34fb Battery Service
characteristic 33 00002a19-0000-1000-8000-00805f9b34fb Battery Level ['read']
service 48 0000180a-0000-1000-8000-00805f9b34fb Device Information
characteristic 49 00002a29-0000-1000-8000-00805f9b34fb Manufacturer Name String ['read']
characteristic 51 00002a28-0000-1000-8000-00805f9b34fb Software Revision String ['read']
service 64 6675e16c-f36d-4567-bb55-6b51e27a23e5 Unknown
characteristic 65 6675e16c-f36d-4567-bb55-6b51e27a23e6 Unknown ['read', 'notify']
descriptor 00002902-0000-1000-8000-00805f9b34fb (Handle: 67): Client Characteristic Configuration
descriptor 00002908-0000-1000-8000-00805f9b34fb (Handle: 68): Report Reference
characteristic 69 6675e16c-f36d-4567-bb55-6b51e27a23e7 Unknown ['write-without-response']
descriptor 00002908-0000-1000-8000-00805f9b34fb (Handle: 71): Report Reference
characteristic 72 6675e16c-f36d-4567-bb55-6b51e27a23e8 Unknown ['read', 'notify', 'indicate']
descriptor 00002902-0000-1000-8000-00805f9b34fb (Handle: 74): Client Characteristic Configuration
descriptor 00002908-0000-1000-8000-00805f9b34fb (Handle: 75): Report Reference
service 80 addc3e26-4aa5-4c1a-8a6a-735db4e01c6c Unknown
characteristic 81 addc3e26-4aa5-4c1a-8a6a-735db4e01c6d Unknown ['write-without-response']
characteristic 83 addc3e26-4aa5-4c1a-8a6a-735db4e01c6e Unknown ['write']
characteristic 85 addc3e26-4aa5-4c1a-8a6a-735db4e01c6f Unknown ['read']
characteristic 87 addc3e26-4aa5-4c1a-8a6a-735db4e01c70 Unknown ['read']
characteristic 89 addc3e26-4aa5-4c1a-8a6a-735db4e01c71 Unknown ['read', 'notify', 'indicate']
descriptor 00002902-0000-1000-8000-00805f9b34fb (Handle: 91): Client Characteristic Configuration
service 96 bbe87709-5b89-4433-ab7f-8b8eef0d8e37 Unknown
characteristic 97 bbe87709-5b89-4433-ab7f-8b8eef0d8e38 Unknown ['write']
characteristic 99 bbe87709-5b89-4433-ab7f-8b8eef0d8e39 Unknown ['read', 'notify']
descriptor 00002902-0000-1000-8000-00805f9b34fb (Handle: 101): Client Characteristic Configuration
characteristic 102 bbe87709-5b89-4433-ab7f-8b8eef0d8e3a Unknown ['read']
service 112 21c50462-67cb-63a3-5c4c-82b5b9939aeb Unknown
characteristic 113 21c50462-67cb-63a3-5c4c-82b5b9939aec Unknown ['write']
characteristic 115 21c50462-67cb-63a3-5c4c-82b5b9939aed Unknown ['notify']
descriptor 00002902-0000-1000-8000-00805f9b34fb (Handle: 117): Client Characteristic Configuration
characteristic 118 21c50462-67cb-63a3-5c4c-82b5b9939aee Unknown ['write']
characteristic 120 21c50462-67cb-63a3-5c4c-82b5b9939aef Unknown ['write']
characteristic 122 21c50462-67cb-63a3-5c4c-82b5b9939af0 Unknown ['read']
service 128 2bbe7f7c-7304-4466-8407-8eaf89f8ce45 Unknown
characteristic 129 2bbe7f7c-7304-4466-8407-8eaf89f8ce46 Unknown ['read', 'notify', 'indicate']
descriptor 00002902-0000-1000-8000-00805f9b34fb (Handle: 131): Client Characteristic Configuration
characteristic 132 2bbe7f7c-7304-4466-8407-8eaf89f8ce47 Unknown ['read', 'notify', 'indicate']
descriptor 00002902-0000-1000-8000-00805f9b34fb (Handle: 134): Client Characteristic Configuration
characteristic 135 2bbe7f7c-7304-4466-8407-8eaf89f8ce49 Unknown ['read']
service 65280 c7261110-f425-447a-a1bd-9d7246768bd8 Unknown
characteristic 65281 a3dd50bf-f7a7-4e99-838e-570a086c661b Unknown ['write', 'notify', 'indicate']
descriptor 00002902-0000-1000-8000-00805f9b34fb (Handle: 65283): Client Characteristic Configuration
characteristic 65284 a2e86c7a-d961-4091-b74f-2409e72efe26 Unknown ['write']
OSX:
service 32 0000180f-0000-1000-8000-00805f9b34fb Battery Service
characteristic 33 00002a19-0000-1000-8000-00805f9b34fb Battery Level ['read']
service 48 0000180a-0000-1000-8000-00805f9b34fb Device Information
characteristic 49 00002a29-0000-1000-8000-00805f9b34fb Manufacturer Name String ['read']
characteristic 51 00002a28-0000-1000-8000-00805f9b34fb Software Revision String ['read']
service 64 6675e16c-f36d-4567-bb55-6b51e27a23e5 Unknown
characteristic 65 6675e16c-f36d-4567-bb55-6b51e27a23e6 Unknown ['read', 'notify']
descriptor 00002902-0000-1000-8000-00805f9b34fb (Handle: 67): Client Characteristic Configuration
descriptor 00002908-0000-1000-8000-00805f9b34fb (Handle: 68): Report Reference
characteristic 69 6675e16c-f36d-4567-bb55-6b51e27a23e7 Unknown ['write-without-response']
descriptor 00002908-0000-1000-8000-00805f9b34fb (Handle: 71): Report Reference
characteristic 72 6675e16c-f36d-4567-bb55-6b51e27a23e8 Unknown ['read', 'notify', 'indicate']
descriptor 00002902-0000-1000-8000-00805f9b34fb (Handle: 74): Client Characteristic Configuration
descriptor 00002908-0000-1000-8000-00805f9b34fb (Handle: 75): Report Reference
service 80 addc3e26-4aa5-4c1a-8a6a-735db4e01c6c Unknown
characteristic 81 addc3e26-4aa5-4c1a-8a6a-735db4e01c6d Unknown ['write-without-response']
characteristic 83 addc3e26-4aa5-4c1a-8a6a-735db4e01c6e Unknown ['write']
characteristic 85 addc3e26-4aa5-4c1a-8a6a-735db4e01c6f Unknown ['read']
characteristic 87 addc3e26-4aa5-4c1a-8a6a-735db4e01c70 Unknown ['read']
characteristic 89 addc3e26-4aa5-4c1a-8a6a-735db4e01c71 Unknown ['read', 'notify', 'indicate']
descriptor 00002902-0000-1000-8000-00805f9b34fb (Handle: 91): Client Characteristic Configuration
service 96 bbe87709-5b89-4433-ab7f-8b8eef0d8e37 Unknown
characteristic 97 bbe87709-5b89-4433-ab7f-8b8eef0d8e38 Unknown ['write']
characteristic 99 bbe87709-5b89-4433-ab7f-8b8eef0d8e39 Unknown ['read', 'notify']
descriptor 00002902-0000-1000-8000-00805f9b34fb (Handle: 101): Client Characteristic Configuration
characteristic 102 bbe87709-5b89-4433-ab7f-8b8eef0d8e3a Unknown ['read']
service 112 21c50462-67cb-63a3-5c4c-82b5b9939aeb Unknown
characteristic 113 21c50462-67cb-63a3-5c4c-82b5b9939aec Unknown ['write']
characteristic 115 21c50462-67cb-63a3-5c4c-82b5b9939aed Unknown ['notify']
descriptor 00002902-0000-1000-8000-00805f9b34fb (Handle: 117): Client Characteristic Configuration
characteristic 118 21c50462-67cb-63a3-5c4c-82b5b9939aee Unknown ['write']
characteristic 120 21c50462-67cb-63a3-5c4c-82b5b9939aef Unknown ['write']
characteristic 122 21c50462-67cb-63a3-5c4c-82b5b9939af0 Unknown ['read']
service 128 2bbe7f7c-7304-4466-8407-8eaf89f8ce45 Unknown
characteristic 129 2bbe7f7c-7304-4466-8407-8eaf89f8ce46 Unknown ['read', 'notify', 'indicate']
descriptor 00002902-0000-1000-8000-00805f9b34fb (Handle: 131): Client Characteristic Configuration
characteristic 132 2bbe7f7c-7304-4466-8407-8eaf89f8ce47 Unknown ['read', 'notify', 'indicate']
descriptor 00002902-0000-1000-8000-00805f9b34fb (Handle: 134): Client Characteristic Configuration
characteristic 135 2bbe7f7c-7304-4466-8407-8eaf89f8ce49 Unknown ['read']
service 65280 c7261110-f425-447a-a1bd-9d7246768bd8 Unknown
characteristic 65281 a3dd50bf-f7a7-4e99-838e-570a086c661b Unknown ['write', 'notify', 'indicate']
descriptor 00002902-0000-1000-8000-00805f9b34fb (Handle: 65283): Client Characteristic Configuration
characteristic 65284 a2e86c7a-d961-4091-b74f-2409e72efe26 Unknown ['write']
import math
import asyncio
from bleak import *
from random import *
BYTE_ORDER = 'big'
#known characteristic handles
DEVICE_NAME = 2#missing on OSX
APPEARANCE = 4
BATTERY_LEVEL = 33
MANUFACTURER_NAME = 49
SOFTWARE_REVISION = 51
INPUT = 65
#input
topIsPressed = 0
topWasPressed = 0
joyIsPressed = 0
joyWasPressed = 0
joystick = (0,0)
gyroscope = (0,0,0,1)
accelerometer = (0,0,0)
JOY_X_MIN = 7980
JOY_X_MAX = 49620
JOY_Y_MIN = 13350
JOY_Y_MAX = 50280
def toHex(bytes):
return ':'.join('{:02x}'.format(x) for x in bytes)
def toInt(bytes):
return int.from_bytes(bytes, BYTE_ORDER, signed=True)
def quaternionToEuler(qX, qY, qZ, qW):
qX = max(min(qX, 1), -1)
qY = max(min(qY, 1), -1)
qZ = max(min(qZ, 1), -1)
qW = max(min(qW, 1), -1)
sinr_cosp = 2.0 * (qW * qX + qY * qZ)
cosr_cosp = 1.0 - 2.0 * (qX * qX + qY * qY)
roll = math.atan2(sinr_cosp, cosr_cosp)
roll = math.degrees(roll)
t = 2.0 * (qW * qY - qX * qZ)
t = 1.0 if t > 1.0 else t
t = -1.0 if t < -1.0 else t
pitch = math.asin(t)
pitch = math.degrees(pitch)
siny_cosp = 2.0 * (qW * qZ + qX * qY)
cosy_cosp = 1.0 - 2.0 * (qY * qY + qZ * qZ)
yaw = math.atan2(siny_cosp, cosy_cosp)
yaw = math.degrees(yaw)
return [pitch, yaw, roll]
def inputHandler(sender, bytes):
# print(toHex(bytes))
global topIsPressed, topWasPressed
global joyIsPressed, joyWasPressed
global joystick, gyroscope, accelerometer
time = int.from_bytes(bytes[0:1], BYTE_ORDER)
joyWasPressed = joyIsPressed
topWasPressed = topIsPressed
buttonState = int.from_bytes(bytes[1:2], BYTE_ORDER)
topIsPressed = buttonState & 1 != 0
joyIsPressed = buttonState & 2 != 0
joyX = bytes[2:4].hex()
joyX = joyX[3] + joyX[0] + joyX[2] + joyX[1] #WTF
joyX = int(joyX, 16) - JOY_X_MIN
joyX = joyX / (JOY_X_MAX - JOY_X_MIN)
joyX = 2 * joyX - 1
joyY = int.from_bytes(bytes[4:6], BYTE_ORDER)
joyY = joyY - JOY_Y_MIN
joyY = joyY / (JOY_Y_MAX - JOY_Y_MIN)
joyY = -2 * joyY + 1
joystick = (joyX, joyY)
gyroX = toInt(bytes[6:8]) / 5600.0
gyroY = toInt(bytes[8:10]) / 5600.0
gyroZ = toInt(bytes[10:12]) / 5600.0
gyroW = toInt(bytes[12:14]) / 32767.0
angles = quaternionToEuler(gyroX, gyroY, gyroZ, gyroW)
gyroscope = (gyroX, gyroY, gyroZ, gyroW)
accelX = toInt(bytes[-1:]) / 127.0
accelY = toInt(bytes[-2:-1]) / 127.0
accelZ = toInt(bytes[-3:-2]) / 127.0
accelerometer = (accelX, accelY, accelZ)
inputStrFormat = "t:{:3}, btn1:{}, btn2:{}, joy:({:5.2f},{:5.2f}), gyro:({:7.2f},{:7.2f},{:7.2f}) acc:({:5.2f},{:5.2f},{:5.2f})"
inputStr = inputStrFormat.format(time, topIsPressed, joyIsPressed, joyX, joyY, angles[0], angles[1], angles[2], accelX, accelY, accelZ)
print(inputStr)
def characterHandler(sender, bytes):
print(sender, toHex(bytes))
async def listServices(address):
async with BleakClient(address) as client:
if (not client.is_connected):
raise 'client not connected'
for service in client.services:
print('\nservice', service.handle, service.uuid, service.description)
for char in service.characteristics:
print(' characteristic', char.handle, char.uuid, char.description, char.properties)
for desc in char.descriptors:
print(' descriptor', desc)
async def readDescriptor(client:BleakClient, handle, name):
bytes = await client.read_gatt_descriptor(handle)
print(name, toHex(bytes))
return bytes
async def readString(client:BleakClient, handle):
bytes = await client.read_gatt_char(handle)
text = bytearray.decode(bytes)
return text
async def readInt(client:BleakClient, handle):
bytes = await client.read_gatt_char(handle)
num = int.from_bytes(bytes, BYTE_ORDER)
return num
async def writeBytes(client:BleakClient, handle, bytes):
try:
await client.write_gatt_char(handle, bytes)
print(f'wrote to {handle}: {toHex(bytes)}')
except BleakError as e:
print(f'failed to write to {handle}')
async def findDevice():
async with BleakScanner() as scanner:
print("searching for devices")
device = await scanner.find_device_by_name('Pokemon PBP', timeout=60)
if device is not None:
print("device found at " + device.address)
# await listServices(device.address)
await readData(device.address)
light1 = b'\x00\x00\x00\x01\x0A\x00\x00'
light2 = b'\x00\x00\x00\x1B\x02\xCC\xF0\x02\x00\x00\x03\xCC\xF0\x02\x00\x00\x03\xCC\xF0\x02\x00\x00\x0C\xCC\xF0\x09\x00\x00\x02\xCC\xF0\x02\x00\x00\x03\xCC\xF0\x02\x00\x00\x03\xCC\xF0\x02\x00\x00\x0C\xCC\xF0\x09\x00\x00\x02\xCC\xF0\x02\x00\x00\x03\xCC\xF0\x02\x00\x00\x03\xCC\xF0\x02\x00\x00\x0C\xCC\xF0\x02\x00\x00\x40\x88\x80\xFF\x88\x80\xB7\x88\x80'
async def readData(address):
async with BleakClient(address) as client:
if not client.is_connected:
raise 'client not connected'
manufacturer = await readString(client, MANUFACTURER_NAME)
device = "Pokeball Plus"#await readString(client, DEVICE_NAME) #doesn't work on osx
software = await readString(client, SOFTWARE_REVISION)
battery = await readInt(client, BATTERY_LEVEL)
print(f'{manufacturer} {device} {software}\nBattery:{battery}%\n')
# await client.start_notify(INPUT, inputHandler)
# await asyncio.sleep(60)
# await client.stop_notify(INPUT)
while True:
await asyncio.sleep(1)
await client.write_gatt_char(113, light1)
await asyncio.sleep(1)
await client.write_gatt_char(113, light2)
if __name__ == '__main__':
asyncio.run(findDevice())
"""
NOTES:
unable to write to report descriptors, only to config descriptors?
config descriptors are not persisted between sessions
write a byte to 69, read it from the 4th byte of 72
89 handler fires when 81 or 83 written to
failed to write to 97 - OSError: [WinError -2147023673] The operation was canceled by the user
can't write to 113 - Protocol Error 0x85: Unknown
can't write to 65281 after writing to 65284
102 is 378 bytes when 99 is 00:00:00:00, 0 bytes, not sure how I made that happen
the first byte of 135 is around x90, other are seemingly fixed
reads
2: 50:6f:6b:65:6d:6f:6e:20:50:42:50
4: c0:03
33: 64
49: 4e:69:6e:74:65:6e:64:6f
51: 31:38:2e:30:20:20:20:20:20:45:43:35:41:32:42:46:31
65: 0a:00:ec:86:7a:d9:ff:db:01:67:10:20:00:d0:ff:e2:ff
72: 00:00:00
85: b8:8a:ec:e9:2d:8d
87: 01:53:05:ad:de:00:ef:be:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
89: 00
99: ff:ff:00:00
102:
115: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00...
122: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
129: 04
132: 00
135: 82:0f:00:00:ff:ff:ff:ff:3c:0f:00:00:a6:0e:00:00:56:0e:00:00:ac:0d:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
writes to 114 (but probably actually 113), op code 0x12
0000 001B 02CC F002 0000 03CC F002 0000
03CC F002 0000 0CCC F009 0000 02CC F002
0000 03CC F002 0000 03CC F002 0000 0CCC
F009 0000 02CC F002 0000 03CC F002 0000
03CC F002 0000 0CCC F002 0000 4088 80FF
8880 B788 80
0000 0001 0A00 00
0000 0018 0388 F809 0080 1000 0003 88F8
0900 8010 0000 0388 F809 0080 1000 0003
08F0 03F0 F003 008F 0308 F003 F0F0 0300
8F03 08F0 03F0 F003 008F 0308 F003 F0F0
0300 8F03 08F0 03F0 F003 008F
0000 001B 02CC F002 0000 03CC F002 0000
03CC F002 0000 0CCC F009 0000 02CC F002
0000 03CC F002 0000 03CC F002 0000 0CCC
F009 0000 02CC F002 0000 03CC F002 0000
03CC F002 0000 0CCC F002 0000 4088 80FF
8880 B788 80
0000 0001 0A00 00
0000 000F 0388 F809 0080 1000 0003 88F8
0900 8010 0000 0388 F809 0080 1000 0001
0FF0 0200 8001 0FF0 0200 8001 0FF0 0200
80
0000 000F 10F0 F008 0000 10F0 F008 0000
10F0 F008 0000 10F0 F008 0000 10F0 F008
0000 10F0 F008 0000 4080 80FF 8080 8980
80
0000 0001 0A00 00
0000 000C 0388 F809 0080 1000 0003 88F8
0900 8010 0000 010F F002 0080 010F F002
0080 010F F002 0080
"""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment