eruption-project / eruption

Realtime RGB LED Driver for Linux
https://eruption-project.org/
GNU General Public License v3.0
267 stars 33 forks source link

Add Support for Kone XP #122

Open muhgo opened 2 years ago

muhgo commented 2 years ago

Introduction Hi, I recently got my hands on a Kone XP and wanted to contribute and help supporting it. I just captured the required files and did not dig into the code yet. My rustlang knowledge is sadly quite limited as of now but I may be able to help as I work as an embedded Linux developer and I'm trying to learn rustlang in my free time anyways. And as a sidenote: thanks so much for this project, I've been using it for quite a while now for my Vulcan 120 and my now broken Kone Remastered :-).

Cheers

Device to add support for 1e7d:2c8b ROCCAT ROCCAT Kone XP

konexp_v1.09_swarm_v1.9403.pcapng.zip

X3n0m0rph59 commented 2 years ago

Hi @muhgo, thank you very much for creating the capture file! Your support is much appreciated!

I just pushed out the first implementation to the develop branch.

JonLit commented 2 years ago

Hi, I also have a Kone XP, but when I try to start eruption, it instantly crashes: Log: https://pastebin.com/Ztktg0nM

I installed eruption-git from the AUR, eruption --version says this: Eruption 0.1.24 (0.1.23.r77.g1a8569e) (release build)

lsusb: Bus 002 Device 003: ID 0781:558a SanDisk Corp. Ultra Bus 002 Device 002: ID 174c:55aa ASMedia Technology Inc. ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge, ASM1153E SATA 6Gb/s bridge Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 004: ID 0dba:3000 Digidesign Mbox 2 Bus 001 Device 003: ID 046d:c214 Logitech, Inc. ATK3 (Attack III Joystick) Bus 001 Device 002: ID 11c9:55f0 Nacon GC-100XF Bus 001 Device 008: ID 048d:5702 Integrated Technology Express, Inc. ITE Device Bus 001 Device 011: ID 0781:5567 SanDisk Corp. Cruzer Blade Bus 001 Device 009: ID 046d:c24f Logitech, Inc. G29 Driving Force Racing Wheel [PS3] Bus 001 Device 006: ID 05e3:0608 Genesys Logic, Inc. Hub Bus 001 Device 013: ID 22b8:2eb7 Motorola PCS Android Bus 001 Device 015: ID 06a3:0763 Saitek PLC Pro Flight Rudder Pedals Bus 001 Device 014: ID 056a:0303 Wacom Co., Ltd CTH-680 [Intuos Pen & Touch (M)] Bus 001 Device 012: ID 05e3:0608 Genesys Logic, Inc. Hub Bus 001 Device 016: ID 1e7d:2c8b ROCCAT ROCCAT Kone XP Bus 001 Device 017: ID 1e7d:30f7 ROCCAT ROCCAT Vulcan Pro Bus 001 Device 005: ID 05e3:0608 Genesys Logic, Inc. Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Edit: I had a similar issue before where it crashed on initializing the keyboard, but that was fixed by updating eruption. Although with the mouse, neither eruption-git nor manually compiling it worked

JonLit commented 2 years ago

Thanks, now eruption itself works, but the GUI (for me) crashes now with this Error: The application panicked (crashed). Message: calledResult::unwrap()on anErrvalue: Error { domain: g-resource-error-quark, code: 0, message: "Die Ressource auf »/org/eruption/eruption-gui/img/roccat-kone-xp.png« existiert nicht" } Location: eruption-gui/src/ui/mouse/hwdevices/roccat_kone_xp.rs:42 - Transaltion: The Resource at doesn't exist

Also, I don't know if I'm doing something wrong, but this also doesn't work: eruptionctl devices profile 00 /var/lib/eruption/profiles/swirl-perlin-rainbow.profile error: Invalid value "/var/lib/eruption/profiles/swirl-perlin-rainbow.profile" for '<PROFILE>': invalid digit found in string

X3n0m0rph59 commented 2 years ago

Hi @JonLit, thanks for testing the driver!

The driver is currently in development and most of its functionality is still missing. I currently do not have access to a ROCCAT Kone XP so I will have to implement this blindfolded.

I have pushed a few fixes to the develop branch. Could you please test them and give feedback by posting logs?

Thanks in advance!

X3n0m0rph59 commented 2 years ago

@JonLit

eruptionctl devices profile 00 /var/lib/eruption/profiles/swirl-perlin-rainbow.profile error: Invalid value "/var/lib/eruption/profiles/swirl-perlin-rainbow.profile" for '': invalid digit found in string

The command eruptionctl devices profile will query or switch the hardware profile of the selected device. This may change parameters like e.g. DPI settings, where implemented. It is not to be confused with an Eruption .profile file, which is an entirely unrelated/different concept!

JonLit commented 2 years ago

@JonLit

eruptionctl devices profile 00 /var/lib/eruption/profiles/swirl-perlin-rainbow.profile error: Invalid value "/var/lib/eruption/profiles/swirl-perlin-rainbow.profile" for '': invalid digit found in string

The command eruptionctl devices profile will query or switch the hardware profile of the selected device. This may change parameters like e.g. DPI settings, where implemented. It is not to be confused with an Eruption .profile file, which is an entirely unrelated/different concept!

Interesting, because even with the eruption ctl switch command I can't change the rgb, I'll send the logs in a few minutes. Currently it's stuck in the matrix rgb profile

JonLit commented 2 years ago

@X3n0m0rph59 Thanks for your work in getting the Kone XP to work! The gui now works, but when I start eruption, my cursor can't be moved by my mouse anymore until I stop eruption. Also, in the gui, the page for the mouse looks a bit "incomplete": image

and btw switching profiles doesn't work, no matter what I select it instantly jumps back to matrix

JonLit commented 2 years ago

I tried clicking the "Angle Snapping" toggle, but then eruption-gui crashes and I can't get cursor control back with my mouse until I replug it, killing eruption also doesn't work to get mouse control back

Edit: Logs:

The application panicked (crashed).
Message:  called `Result::unwrap()` on an `Err` value:
0: Invalid argument "debounce"

Location:
eruption-gui/src/util.rs:314
Location: eruption-gui/src/ui/mouse/mod.rs:95

happens on both the debounce and angle snapping toggle (tbh i don't even know what they're supposed to do and/or if the Kone XP should support these features)

JonLit commented 2 years ago

btw rgb brightness control works on the Kone XP

X3n0m0rph59 commented 2 years ago

Thanks again for testing this!

The only supported features of the ROCCAT Kone XP driver are LED lighting control at this time. The hardware configuration functionality is currently not implemented at all. So DPI switching, angle snapping, firmware status, DCU parameters ... will not work at the moment.

btw rgb brightness control works on the Kone XP

Ah, great to hear that! This means that the LED support code seems to work...

I will try to fix the bug that causes the device to hang. Would it be possible for you to post a video of your mouse showing some effects rendered by the Eruption daemon then?

JonLit commented 2 years ago

well that's the other issue I wrote about, I can't switch profiles, it always snaps back to the matrix profile But that works on both the Keyboard and Mouse, on my Vulcan Pro it has the green/black colors scrolling down, the mouse is just entirely green

but I'll post a picture of it in a second

JonLit commented 2 years ago

Please note that the colors are very far off, in reality they're the same as the keyboard, a nice and full greenIMG_20220616_225837.jpg Here the colors are somewhat accurate IMG_20220616_225819.jpg

X3n0m0rph59 commented 2 years ago

To debug this issue could you please run Eruption with debug logging enabled? Please mask the eruption.service before.

sudo systemctl mask eruption.service && sudo systemctl stop eruption.service

sudo RUST_LOG=debug target/debug/eruption

To unmask the eruption.service later on, please run:

sudo systemctl unmask eruption.service && sudo systemctl restart eruption.service

Please post the complete debug log!

JonLit commented 2 years ago

To debug this issue could you please run Eruption with debug logging enabled? Please mask the eruption.service before.

sudo systemctl mask eruption.service && sudo systemctl stop eruption.service

sudo RUST_LOG=debug target/debug/eruption

To unmask the eruption.service later on, please run:

sudo systemctl unmask eruption.service && sudo systemctl restart eruption.service

Please post the complete debug log!

oh damn the last few times I recompiled it I reinstalled the whole program :joy:

https://pastebin.com/FBc0AaMB

X3n0m0rph59 commented 2 years ago

Thanks for posting the full debug logs! Could you please post the debug logs of eruption when you run:

eruptionctl switch profile solid.profile

From a different terminal to switch to some other .profile file.

Do the LEDs of the Kone XP still light up with the latest commit from the debug branch applied?

JonLit commented 2 years ago

Here are a Video and the logs for the buttons on the mouse https://streamable.com/9swnq1 https://pastebin.com/B56NQN01

I tried making it with obs, but I couldn't get screen or application recording to work :(

JonLit commented 2 years ago

The hang issue is resolved, thanks! https://pastebin.com/HGL4R9cu

If I repeat the switching command very fast, I sometimes get a frame of red leds on the keyboard and mouse

poor pastebin lol sorry if I'm spamming a bit, i'm slightly tired, but I'm alright

X3n0m0rph59 commented 2 years ago

Great that really helps a lot, thank you for your excellent support! I will try to fix the crasher bug related to the mouse buttons tomorrow.

JonLit commented 2 years ago

sure, thank YOU for this excellent software and being willing to make it work for other people!

JonLit commented 2 years ago

Great! Now I can switch profiles, and they work on both the keyboard and the mouse (I have no Idea, but now it doesn't work anymore, and the mouse is stuck on red leds) I replugged the mouse, but I still can't switch rgb profiles, logs when trying with eruptionctl: https://pastebin.com/Nrf0egW8

Also I think the DPI button LED is in the wrong order, it is in the middle of the mouse, but for color effects I think it's on the right of the mouse or on the left of the keyboard

magicalraccoon commented 8 months ago

Is there anything needed from Kone XP users in order to get this supported?