Page 2 of 2

Re: Keyboardio Atreus Compatibility

Posted: Mon Apr 01, 2024 8:17 pm
by Desertspiritmc
Hope that the remote debugging you are doing here is of any use for the future of SterlingKey,
I have run the tests with "Test2". Still not showing up among the bt devices. This is the console output:

Code: Select all

ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x1 (POWERON),boot:0x2b (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fce3808,len:0x44c
load:0x403c9700,len:0xbe4
load:0x403cc700,len:0x2a68
entry 0x403c98d4
E (23) ledc: neNew Device
Atreus
bNumInterfaces: 5
claim error
ESP_ERR_NOT_SUPPORTED
wMaxPacketSize
16
wMaxPacketSize
64
wMaxPacketSize
64
wMaxPacketSize
64
wMaxPacketSize
64
wMaxPacketSize
64
Connected keyboard with name Atreus
_onReceiveControl
72
0x05,
0x01,
0x09,
0x06,
0xa1,
0x01,
0x05,
0x07,
0x19,
0xe0,
0x29,
0xe7,
0x15,
0x00,
0x25,
0x01,
0x75,
0x01,
0x95,
0x08,
0x81,
0x02,
0x95,
0x01,
0x75,
0x08,
0x81,
0x01,
0x95,
0x05,
0x75,
0x01,
0x05,
0x08,
0x19,
0x01,
0x29,
0x05,
0x91,
0x02,
0x95,
0x01,
0x75,
0x03,
0x91,
0x01,
0x95,
0x06,
0x75,
0x08,
0x15,
0x00,
0x26,
0xff,
0x00,
0x05,
0x07,
0x19,
0x00,
0x29,
0xff,
0x81,
0x00,
0xc0,
bInterfaceCounter: 0
_onReceiveControl
66
0x05,
0x01,
0x09,
0x02,
0xa1,
0x01,
0x09,
0x01,
0xa1,
0x00,
0x05,
0x09,
0x19,
0x01,
0x29,
0x08,
0x15,
0x00,
0x25,
0x01,
0x95,
0x08,
0x75,
0x01,
0x81,
0x02,
0x05,
0x01,
0x09,
0x30,
0x09,
0x31,
0x16,
0x00,
0x00,
0x26,
0xff,
0x7f,
0x75,
0x10,
0x95,
0x02,
0x81,
0x02,
0x09,
0x38,
0x15,
0x81,
0x25,
0x7f,
0x75,
0x08,
0x95,
0x01,
0x81,
0x06,
0xc0,
0xc0,
bInterfaceCounter: 1
_onReceiveControl
185
0x05,
0x01,
0x09,
0x02,
0xa1,
0x01,
0x09,
0x01,
0xa1,
0x00,
0x85,
0x01,
0x05,
0x09,
0x19,
0x01,
0x29,
0x08,
0x15,
0x00,
0x25,
0x01,
0x95,
0x08,
0x75,
0x01,
0x81,
0x02,
0x05,
0x01,
0x09,
0x30,
0x09,
0x31,
0x09,
0x38,
0x15,
0x81,
0x25,
0x7f,
0x75,
0x08,
0x95,
0x03,
0x81,
0x06,
0x05,
0x0c,
0x0a,
0x38,
0x02,
0x15,
0x81,
0x25,
0x7f,
0x75,
0x08,
0x95,
0x01,
0x81,
0x06,
0xc0,
0xc0,
0x05,
0x01,
0x09,
0x80,
0xa1,
0x01,
0x85,
0x05,
0x15,
0x00,
0x26,
0xff,
0x00,
0x19,
0x00,
0x29,
0xff,
0x95,
0x01,
0x75,
0x08,
0x81,
0x00,
0xc0,
0x05,
0x01,
0x09,
0x06,
0xa1,
0x01,
0x85,
0x08,
0x05,
0x07,
0x19,
0xe0,
0x29,
0xe7,
0x15,
0x00,
0x25,
0x01,
0x75,
0x01,
0x95,
0x08,
0x81,
0x02,
0x05,
0x08,
0x19,
0x01,
0x29,
0x08,
0x95,
0x08,
0x75,
0x01,
0x91,
0x02,
0x05,
0x07,
0x75,
0x04,
0x95,
0x01,
0x81,
0x01,
0x19,
0x04,
0x29,
0xdd,
0x15,
0x00,
0x25,
0x01,
0x75,
0x01,
0x95,
0xda,
0x81,
0x02,
0x75,
0x02,
0x95,
0x01,
0x81,
0x01,
0xc0,
0x05,
0x0c,
0x09,
0x01,
0xa1,
0x01,
0x85,
0x04,
0x15,
0x00,
0x26,
0xff,
0x03,
0x19,
0x00,
0x2a,
0xff,
0x03,
0x95,
0x04,
0x75,
0x10,
0x81,
0x00,
0xc0,
bInterfaceCounter: 2
The keyboard layout was set using the tool that the manufacturer recommends, Chrysalis. In the Github page it says it is a tool for Arduino based keyboards. With the tool I have set 3 layouts, where one of them emulates mouse clicks. Could this be messing with the connection? I will try the device with the layers emulating mouse clicks disabled, and see the results.
Here is the link to the Chrysalis software.
https://github.com/keyboardio/Chrysalis

Re: Keyboardio Atreus Compatibility

Posted: Mon Apr 01, 2024 8:20 pm
by Desertspiritmc
Okay, Tested out removing he mouseclick layers but it made no difference.

Re: Keyboardio Atreus Compatibility

Posted: Mon Apr 01, 2024 8:37 pm
by Alex
That's very interesting. Good news and bad news. If you read the logs, it says bNumInterfaces: 5, which means it has 5 interfaces, but it's only loading 3 interfaces (0, 1 and 2). Two are missing.

Basically my assumption to enable bluetooth is that I have to eventually receive all interfaces. Since I'm not receiving all 5, the code never continues.

The good news is that from all those seamingly random numbers, I can see that I can read the keyboard, mouse, and system control keys (if any), so I'm 99% sure that I'll figure out a solution.

The bad news is that I have no idea why it's not sending all 5 interfaces. Even if I subtract the 1 "claim error", there are 4 interfaces, 1 is still missing.

I'll have to think of a proper way to make sure I have waited long enough for all interfaces, but for now I'll just add a 2 second timeout, so if I don't receive any new interfaces for 2 seconds, I'll continue the execution of the code.

I'll do some tests and in around 30 minutes I'll probably have a test3 which could actually fix the issue :D

Re: Keyboardio Atreus Compatibility

Posted: Mon Apr 01, 2024 8:54 pm
by Alex
Desertspiritmc wrote: Mon Apr 01, 2024 8:20 pm Okay, Tested out removing he mouseclick layers but it made no difference.
Stefan, could you please try test-3? I have a feeling we're getting close.

Re: Keyboardio Atreus Compatibility

Posted: Mon Apr 01, 2024 9:13 pm
by Desertspiritmc
Dear Alex:
THANKS SO MUCH iT WORKED!
I installed ¨Test3¨and my girlfriend´s Windows device finally recognised the device! I will be testing the hardware on Linux and Android tomorrow, but it seemed to be working flawlessly.
Thanks so much for solving this, and for putting the effort to make such a niche keyboard funcitonal on your device.
I will attach here the resulting console output.

Code: Select all

ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x1 (POWERON),boot:0x2b (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fce3808,len:0x44c
load:0x403c9700,len:0xbe4
load:0x403cc700,len:0x2a68
entry 0x403c98d4
E (24) ledc: leNew Device
Atreus
claim error
ESP_ERR_NOT_SUPPORTED
wMaxPacketSize
16
wMaxPacketSize
64
wMaxPacketSize
64
wMaxPacketSize
64
wMaxPacketSize
64
wMaxPacketSize
64
Connected keyboard with name Atreus
_onReceiveControl
72
0x05,
0x01,
0x09,
0x06,
0xa1,
0x01,
0x05,
0x07,
0x19,
0xe0,
0x29,
0xe7,
0x15,
0x00,
0x25,
0x01,
0x75,
0x01,
0x95,
0x08,
0x81,
0x02,
0x95,
0x01,
0x75,
0x08,
0x81,
0x01,
0x95,
0x05,
0x75,
0x01,
0x05,
0x08,
0x19,
0x01,
0x29,
0x05,
0x91,
0x02,
0x95,
0x01,
0x75,
0x03,
0x91,
0x01,
0x95,
0x06,
0x75,
0x08,
0x15,
0x00,
0x26,
0xff,
0x00,
0x05,
0x07,
0x19,
0x00,
0x29,
0xff,
0x81,
0x00,
0xc0,
bInterfaceCounter: 0
_onReceiveControl
66
0x05,
0x01,
0x09,
0x02,
0xa1,
0x01,
0x09,
0x01,
0xa1,
0x00,
0x05,
0x09,
0x19,
0x01,
0x29,
0x08,
0x15,
0x00,
0x25,
0x01,
0x95,
0x08,
0x75,
0x01,
0x81,
0x02,
0x05,
0x01,
0x09,
0x30,
0x09,
0x31,
0x16,
0x00,
0x00,
0x26,
0xff,
0x7f,
0x75,
0x10,
0x95,
0x02,
0x81,
0x02,
0x09,
0x38,
0x15,
0x81,
0x25,
0x7f,
0x75,
0x08,
0x95,
0x01,
0x81,
0x06,
0xc0,
0xc0,
bInterfaceCounter: 1
_onReceiveControl
185
0x05,
0x01,
0x09,
0x02,
0xa1,
0x01,
0x09,
0x01,
0xa1,
0x00,
0x85,
0x01,
0x05,
0x09,
0x19,
0x01,
0x29,
0x08,
0x15,
0x00,
0x25,
0x01,
0x95,
0x08,
0x75,
0x01,
0x81,
0x02,
0x05,
0x01,
0x09,
0x30,
0x09,
0x31,
0x09,
0x38,
0x15,
0x81,
0x25,
0x7f,
0x75,
0x08,
0x95,
0x03,
0x81,
0x06,
0x05,
0x0c,
0x0a,
0x38,
0x02,
0x15,
0x81,
0x25,
0x7f,
0x75,
0x08,
0x95,
0x01,
0x81,
0x06,
0xc0,
0xc0,
0x05,
0x01,
0x09,
0x80,
0xa1,
0x01,
0x85,
0x05,
0x15,
0x00,
0x26,
0xff,
0x00,
0x19,
0x00,
0x29,
0xff,
0x95,
0x01,
0x75,
0x08,
0x81,
0x00,
0xc0,
0x05,
0x01,
0x09,
0x06,
0xa1,
0x01,
0x85,
0x08,
0x05,
0x07,
0x19,
0xe0,
0x29,
0xe7,
0x15,
0x00,
0x25,
0x01,
0x75,
0x01,
0x95,
0x08,
0x81,
0x02,
0x05,
0x08,
0x19,
0x01,
0x29,
0x08,
0x95,
0x08,
0x75,
0x01,
0x91,
0x02,
0x05,
0x07,
0x75,
0x04,
0x95,
0x01,
0x81,
0x01,
0x19,
0x04,
0x29,
0xdd,
0x15,
0x00,
0x25,
0x01,
0x75,
0x01,
0x95,
0xda,
0x81,
0x02,
0x75,
0x02,
0x95,
0x01,
0x81,
0x01,
0xc0,
0x05,
0x0c,
0x09,
0x01,
0xa1,
0x01,
0x85,
0x04,
0x15,
0x00,
0x26,
0xff,
0x03,
0x19,
0x00,
0x2a,
0xff,
0x03,
0x95,
0x04,
0x75,
0x10,
0x81,
0x00,
0xc0,
bInterfaceCounter: 2
127
5
8
4
REPORT MAP:
0x05,
0x01,
0x09,
0x06,
0xa1,
0x01,
0x85,
0x7f,
0x05,
0x07,
0x19,
0xe0,
0x29,
0xe7,
0x15,
0x00,
0x25,
0x01,
0x75,
0x01,
0x95,
0x08,
0x81,
0x02,
0x95,
0x01,
0x75,
0x08,
0x81,
0x01,
0x95,
0x05,
0x75,
0x01,
0x05,
0x08,
0x19,
0x01,
0x29,
0x05,
0x91,
0x02,
0x95,
0x01,
0x75,
0x03,
0x91,
0x01,
0x95,
0x06,
0x75,
0x08,
0x15,
0x00,
0x26,
0xff,
0x00,
0x05,
0x07,
0x19,
0x00,
0x29,
0xff,
0x81,
0x00,
0xc0,
0x05,
0x01,
0x09,
0x80,
0xa1,
0x01,
0x85,
0x05,
0x15,
0x00,
0x26,
0xff,
0x00,
0x19,
0x00,
0x29,
0xff,
0x95,
0x01,
0x75,
0x08,
0x81,
0x00,
0xc0,
0x05,
0x01,
0x09,
0x06,
0xa1,
0x01,
0x85,
0x08,
0x05,
0x07,
0x19,
0xe0,
0x29,
0xe7,
0x15,
0x00,
0x25,
0x01,
0x75,
0x01,
0x95,
0x08,
0x81,
0x02,
0x05,
0x08,
0x19,
0x01,
0x29,
0x08,
0x95,
0x08,
0x75,
0x01,
0x91,
0x02,
0x05,
0x07,
0x75,
0x04,
0x95,
0x01,
0x81,
0x01,
0x19,
0x04,
0x29,
0xdd,
0x15,
0x00,
0x25,
0x01,
0x75,
0x01,
0x95,
0xda,
0x81,
0x02,
0x75,
0x02,
0x95,
0x01,
0x81,
0x01,
0xc0,
0x05,
0x0c,
0x09,
0x01,
0xa1,
0x01,
0x85,
0x04,
0x15,
0x00,
0x26,
0xff,
0x03,
0x19,
0x00,
0x2a,
0xff,
0x03,
0x95,
0x04,
0x75,
0x10,
0x81,
0x00,
0xc0,
 
BLE ready
180
Checking address:
e0:2b:e9:95:44:cf

d4:6d:6d:fc:57:e6
72:63:55:07:c3:09
e0:2b:e9:95:44:cf
Client connected with address: e0:2b:e9:95:44:cf
I owe you now a beer if we ever meet.
Wishing you much success in your upcoming ventures,
Thanks,
Stefan.

Re: Keyboardio Atreus Compatibility

Posted: Mon Apr 01, 2024 9:20 pm
by Alex
Thank you very very much for the cooperation, it really helped resolve this as fast as possible! I'm glad a solution was found.

From what I understand, the issue was that in the same "control" (ignore the technical term), this keyboard was sending multiple interfaces. That's why they didn't sum up. I changed the way I count things, and now it seems to be correct.

I'm sure other people will have the same issue, so I'm really glad we found it.

Thanks Stefan once again! No need for the beer, can't drink and work :lol:
Building a community is far more important at the moment!

Best regards,
Alex