karalabe / hid

Gopher Interface Devices (USB HID)
Other
266 stars 132 forks source link

Usage with go-streamdeck under windows - a fix I do not understand #30

Open RudolfVonKrugstein opened 3 years ago

RudolfVonKrugstein commented 3 years ago

Hi,

I am trying to use go-streamdeck, which internal uses karalabe/hid.

Its a library to control the elgato Stream Deck.

It works under linux, but fails under windows with:

panic: hidapi: Falscher Parameter.

Which is german for "wrong Parameter".

Without known much about USB, and HID: At one point tried the following:

I removed the windows specificas in these lines:

        if runtime.GOOS == "windows" {
        report = append([]byte{0x00}, b...)
    } else {
        report = b
    }

with

    report = b

At these lines: https://github.com/karalabe/hid/blob/master/hid_enabled.go#L167

Now it works!

I have no Idea why.

Should this be fixed? Or is my device strange? What would be a good way to write a patch so I can used the unmodifed HID library?

trinode commented 3 years ago

They're not wrong, I wasted hours with this

I'm using windows 10, and a logitech HID device

I've been trying to implement in go the following: hidapitester --vidpid 046D:C52B --open --length 7 --send-output 0x10,0x01,0x09,0x1c,0x01,0x00,0x00 --read-input

using:

message := []byte{0x10, 0x01, 0x09, 0x1c, 0x01, 0x00, 0x00}
d.write(message)

got nothing but errors (same as the original reporter) but after forking this repo, and making those changes it all works.

dolmen commented 2 years ago

The problem is probably #36.