kamaaina / macropad_tool

tool to program a macropad
50 stars 6 forks source link

Problems with keyboard id 34960 (3 keys | 1 knob) #6

Open RobertoMarcello opened 7 months ago

RobertoMarcello commented 7 months ago

Hello, I have a problem when I try to configure my keyboard, I'm getting the error: 'No valid interface/endpoint combination found!' My keyboard have 3 keys and 1 knob, the configuration is very simple. The keyboard id is 34960. immagine

Here there is some other screenshot when I was trying to debug what the problem was immagine

kamaaina commented 7 months ago

how were you running the tool? what options were being passed?

by default, it is set to have the values for an 0x8840 device to be programmed as those are the devices i have. to use the 0x8890 (the one you are referencing) you need to change the address to match your USB interface. to get the correct addresses, run

lsusb -s <your device> -v

you need to then find the address associated with your endpoint.

i was able to get my hands on a 0x8890 with a 6 key and 1 knob configuration and i just merged some changes to fix the programming. to program this device i'm running it like this

cargo run -- --product-id 0x8890 --out-endpoint-address 0x02 program -c mapping-8890.ron

that might work for you, but if it does not, consult the output from lsusb as stated above.

note - i just pushed fixes, so please pull again before trying to program your device as until a few days ago, i thought the 0x8890 device only had 4 keys and no rotary encoder...

kamaaina commented 7 months ago

actually, i simplified the tool with this last commit. instead of having the user supply the proper addresses, i am now doing it in code. so you can just run

cargo run -- program

and the it will find the correct address to use to communicate with the device

hope this helps simplify things!

RobertoMarcello commented 6 months ago

I'm actually using your last commit and the command that I execute is program without nothing else, but he gave me this error. immagine The program find all that address I show you upper, but if I try manually to use someone of them doesn't work.

RobertoMarcello commented 6 months ago

Other information that can I gave you is, 'Device vendor 005 ID 1189:8890' and the product id is 34960. Tell me if you need something else.

kamaaina commented 6 months ago

what OS are you using? if linux, have you installed the udev rules? if windows, have you installed the usb driver?

do you have proper permissions to access usb? are you root/administrator?

i just tested my device, albeit a different configuration (6 keys and 1 knob) but same vid/pid and it works for both windows and linux.

if the above didn't solve it, could you provide the output from the lsusb command i asked above?

kamaaina commented 6 months ago

@RobertoMarcello is this still an issue?

RobertoMike commented 6 months ago

Hello, sorry, i was busy. Yes, i still have the issue, the OS is windows, I'll send you the output after work.

countnazgul commented 4 months ago

First of all i want to thank you for taking the effort to make this!

But im facing the same issue on Windows. Ive installed the USB dev kit and my device VID = 1189 and PID = 8890 and upon running im getting No valid interface/endpoint combination found!

What info i can provide you?

kamaaina commented 4 months ago

@countnazgul thanks for reaching out. could you try setting RUST_LOG environment variable to debug and rerun and provide that output?

could you also provide the USB information of what the in/out endpoints are for this device? on linux, you can run lsusb -s <your device> -v

on windows, you might need to navigate the GUI to find this information.

sorry, i do not have this device so need your help here

countnazgul commented 4 months ago

Thanks!

The debug log outputs: image

for lsusb ive downloaded USBDeview to get some info: image

(the Properties window is for the first one in the list)

kamaaina commented 4 months ago

could you try it like this and post the output? i have tried to make it smart enough to figure out the right endpoint addresses.

cargo run -- program -c example.ron

countnazgul commented 4 months ago

similar

image

kamaaina commented 4 months ago

it would be helpful if you could tell me what the IN endpoint address is for that device. i have a similar one (same vid/pid) but it is a 4 key instead of 3 key 1 knob and here is what mine looks like. my guess is that you only have an IN address as that is how mine is configured. the OUT would be used for reading the configuration (assuming it was supported)

2024-07-16-200154_1818x408_scrot

at the bottom of this image, you can see the IN address is 0x81 (or 129 decimal). that is what i am looking for on your device. 2024-07-16-200605_616x1021_scrot

kamaaina commented 4 months ago

@countnazgul i borrowed this device from a friend and tried it out and it works for me. however, i am on linux. have you tried it on linux and if so, do you get the same error? and by linux, not WSL

ill try to setup a windows VM in the coming days to test there as well

capture

kamaaina commented 4 months ago

setup a windows environment and am still not able to reproduce the issue

Capture

kamaaina commented 3 months ago

@countnazgul @RobertoMarcello were either you able to test this out? i am still not able to reproduce the error that has been reported