eruption icon indicating copy to clipboard operation
eruption copied to clipboard

Vulcan TKL support?

Open Madcliff opened this issue 5 years ago • 72 comments

Does this have support for the new Roccat Vulcan TLK and TKL Pro?

Madcliff avatar Dec 29 '20 17:12 Madcliff

Hi! The ROCCAT Vulcan TKL series keyboards are not supported yet. I would like to add support for these devices but I don't have the hardware available to test on. If you have access to one of these devices, and are willing to assist, I would need a trace of the device initialization sequence as performed by ROCCAT Swarm, e.g. captured via Wireshark.

X3n0m0rph59 avatar Jan 06 '21 05:01 X3n0m0rph59

Once mine ships from Germany I will get around to giving you the output.

On a similar question about device compatibility, what was the status with the Roccat Nyth? I tried recently to use the feature set to do with mice but it didn't seem to want to recognise anything.

Madcliff avatar Jan 06 '21 14:01 Madcliff

Ok so how do I get the needed data for the TKL? MIne arrived this morning.

Madcliff avatar Jan 12 '21 11:01 Madcliff

Please refer to this wiki article on how to get the required protocol traces: https://github.com/X3n0m0rph59/eruption/wiki

On a similar question about device compatibility, what was the status with the Roccat Nyth? I tried recently to use the feature set to do with mice but it didn't seem to want to recognise anything.

The ROCCAT Nyth should be recognized by Eruption, but the state of the driver is experimental at best. Can you post logs of Eruption? (Please open up a separate issue for this)

sudo journalctl -u eruption.service -b

X3n0m0rph59 avatar Jan 13 '21 07:01 X3n0m0rph59

Roccat TKL linear switches Should be USB device 27, on hub 1. Hope this is what you require.

roccat_tkl, cap, device 27.pcapng.gz

Madcliff avatar Jan 14 '21 09:01 Madcliff

The capture looks good! Thank you very much!

I have implemented a driver module for the ROCCAT Vulcan TKL series keyboards, based on the driver for the ROCCAT Vulcan 1xx series keyboards.

You may want to run eruption-debug-tool first, to test if the new driver is at least able to initialize your device.

 $ sudo eruption-debug-tool list
 $ sudo eruption-debug-tool run-tests <device-index of your Vulcan TKL, subdev 0>

Do you want to build from source, or do you prefer me to build a package for you?

X3n0m0rph59 avatar Jan 15 '21 16:01 X3n0m0rph59

I would appreciate an arch PKG build if possible. I haven't really worked out how to install the drivers from source.

Madcliff avatar Jan 15 '21 23:01 Madcliff

I have updated the PKGBUILD now on the master branch.

To build a package from the current state of the master branch please perform these steps:

  • Unzip the attached files from eruption-PKGBUILD.zip
  • Run makepkg -crsi inside the unzipped directory
  • Run the command sudo systemctl unmask eruption.service && sudo systemctl restart eruption.service to restart the daemon

X3n0m0rph59 avatar Jan 16 '21 05:01 X3n0m0rph59

So it would appear the daemon is panicking


 Please stop the Eruption daemon prior to running this tool:
 $ sudo systemctl mask eruption.service && sudo systemctl stop eruption.service

 You can re-enable Eruption with this command afterwards:
 $ sudo systemctl unmask eruption.service && sudo systemctl start eruption.service

Index: 00: ID: 1e7d:2fee ROCCAT/ROCCAT Vulcan TKL Subdev: 0
The application panicked (crashed).
Message:  Could not open LED sub-device: OpenHidDeviceError
Location: eruption-debug-tool/src/hwdevices/mod.rs:113

Backtrace omitted.
Run with RUST_BACKTRACE=1 environment variable to display it.
Run with RUST_BACKTRACE=full to include source snippets.
Aborted

Madcliff avatar Jan 16 '21 10:01 Madcliff

Thanks for testing!

Did you run sudo systemctl mask eruption.service && sudo systemctl stop eruption.service prior to running the eruption-debug-tool? Otherwise the control device and maybe the LED device will be locked by eruption.

Could you please post the output of:

 $ sudo eruption-debug-tool list

X3n0m0rph59 avatar Jan 16 '21 11:01 X3n0m0rph59

output.log

Madcliff avatar Jan 16 '21 11:01 Madcliff

I chedked the dmsg logs, found this

Jan 16 11:28:41 malleus eruption[1144194]: WARN eruption::hwdevices::roccat_vulcan_tkl > Outdated firmware version: 115, should be: >136

Madcliff avatar Jan 16 '21 11:01 Madcliff

Thanks for reporting this, I just corrected the current firmware revision of the ROCCAT Vulcan TKL series keyboard to be 115. The revision of 136 does only apply to the ROCCAT Vulcan 1xx series keyboards.

Do you notice a change in behavior when you select a different sub device when running eruption-debug-tool run-tests? Is the driver able to set the LED colors when you specify a different sub-device of your ROCCAT Vulcan TKL?

X3n0m0rph59 avatar Jan 16 '21 16:01 X3n0m0rph59

Only sub device 3 crashes. the others just seem to set the colour of the keyboard to the random rainbow pattern that is the default.

Madcliff avatar Jan 16 '21 17:01 Madcliff

Only sub device 3 crashes. the others just seem to set the colour of the keyboard to the random rainbow pattern that is the default.

It should initialize the device to AIMO mode, and show a red and blue test pattern.

Did the Wireshark capture file that you made capture the initialization sequence to AIMO mode, or did it capture initialization to the rainbow pattern?

Could you please do a second capture of the device being initialized by Swarm to AIMO mode? I am especially looking for captures of the packets starting with "0xa1, 0x01, 0x01, 0xb4", which should be fairly large and set the color of each of the LEDs on the keyboard device. These packets were missing from the first capture file, so it could very well be that it just contained initialization to the rainbow pattern.

X3n0m0rph59 avatar Jan 17 '21 06:01 X3n0m0rph59

@Madcliff I just pushed out the latest changes to the driver code. The Wireshark capture that you created seems to be equivalent to the initialization sequence of the ROCCAT Vulcan 100/12x series devices (into rainbow mode).

I now changed the ROCCAT Vulcan TKL driver to use the init sequence of the ROCCAT Vulcan 100/12x keyboards (into AIMO mode). There is at least a slight chance that this will work.

You may compile the latest release using this PKGBUILD: eruption-PKGBUILD.zip

(The eruption daemon as well as the eruption-debug-tool are using the latest code)

X3n0m0rph59 avatar Jan 20 '21 10:01 X3n0m0rph59

That package just seems to break everything. Had to revert to package 18.4 to get the drivers working again

Madcliff avatar Jan 21 '21 09:01 Madcliff

@Madcliff Then could you please try again to capture the init sequence into AIMO mode, as done by ROCCAT Swarm?

X3n0m0rph59 avatar Jan 21 '21 11:01 X3n0m0rph59

I will do! Just taking some time to do it because I need to remember how to enable the USB listener before I run Qemu.

Sent from Mailspring (https://getmailspring.com/), the best free email app for work On Jan 21 2021, at 11:55 am, X3n0m0rph59 [email protected] wrote:

@Madcliff (https://github.com/Madcliff) Then could you please try again to capture the init sequence into AIMO mode, as done by ROCCAT Swarm? — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub (https://github.com/X3n0m0rph59/eruption/issues/37#issuecomment-764593041), or unsubscribe (https://github.com/notifications/unsubscribe-auth/ACVAXJQMFCOQ7KONTIFL67DS3AI2XANCNFSM4VNNB2ZA).

Madcliff avatar Jan 21 '21 11:01 Madcliff

Device 1.13 is the TKL. I set it into snake mode first, and then into AIMO wireshark-tkl.zip

Madcliff avatar Jan 21 '21 18:01 Madcliff

@Madcliff Thank you very much! I have updated eruption as well as eruption-debug-tool, according to the new Wireshark capture file.

You may use the eruption-debug-tool, as described above, to try to initialize the ROCCAT Vulcan TKL to a red/blue test pattern.

eruption-PKGBUILD.zip

X3n0m0rph59 avatar Jan 22 '21 06:01 X3n0m0rph59

Still a no go. Will give it another go after the weekend is over.

Madcliff avatar Jan 22 '21 09:01 Madcliff

INFO eruption > Starting Eruption - Linux user-mode input and LED driver for keyboards, mice and other devices: Version 0.1.19 INFO eruption > Loading saved state... WARN eruption::state > Invalid saved state: slot_names INFO eruption > Registering plugins... INFO eruption::plugin_manager > Registering plugin: Keyboard - Keyboard related functions INFO eruption::plugin_manager > Registering plugin: Mouse - Mouse related functions INFO eruption::plugin_manager > Registering plugin: Macros - Inject programmable keyboard and mouse events INFO eruption::plugin_manager > Registering plugin: Introspection - Provide runtime status of the Eruption daemon INFO eruption::plugin_manager > Registering plugin: Persistence - A storage and persistence layer for Lua Scripts INFO eruption::plugin_manager > Registering plugin: Profiles - Switch profiles based on system state INFO eruption::plugin_manager > Registering plugin: System - Basic system information and status INFO eruption::plugin_manager > Registering plugin: Sensors - Query system sensor values INFO eruption::plugin_manager > Registering plugin: Audio - Audio related functions INFO eruption::plugins::persistence > Loading persistent state data from disk... INFO eruption > Plugins loaded and initialized successfully INFO eruption > Enumerating connected devices... INFO eruption::hwdevices > Found supported keyboard device: 0x1e7d:0x2fee (0001:000a:00) - ROCCAT ROCCAT Vulcan TKL INFO eruption::hwdevices::roccat_vulcan_tkl > Bound driver: ROCCAT Vulcan TKL INFO eruption::hwdevices > Found supported mouse device: 0x1e7d:0x2e7c (0001:0007:00) - ROCCAT ROCCAT Nyth INFO eruption::hwdevices::roccat_nyth > Bound driver: ROCCAT Nyth INFO eruption > Opening keyboard device... INFO eruption > Initializing keyboard device... INFO eruption > Configuring keyboard LEDs... INFO eruption > Firmware revision: 115 INFO eruption > Spawning keyboard input thread... INFO eruption > Opening mouse device... INFO eruption > Now listening on keyboard: /dev/input/event30 INFO eruption > Input device name: "ROCCAT ROCCAT Vulcan TKL" INFO eruption > Input device ID: bus 0x3 vendor 0x1e7d product 0x2fee INFO eruption > Physical location: usb-0000:00:14.0-1.1.2/input0 INFO eruption > Grabbing the keyboard device exclusively INFO eruption > Initializing mouse device... INFO eruption > Configuring mouse LEDs... INFO eruption > Firmware revision: 138 INFO eruption > Spawning mouse input thread... INFO eruption > Device enumeration completed INFO eruption > Performing late initializations... INFO eruption > Initializing D-Bus API... INFO eruption > Late initializations completed INFO eruption > Startup completed INFO eruption > Switching to profile: mcliff-matrix.profile INFO eruption > Now listening on mouse: /dev/input/event21 INFO eruption > Input device name: "ROCCAT ROCCAT Nyth Mouse" INFO eruption > Input device ID: bus 0x3 vendor 0x1e7d product 0x2e7c INFO eruption > Physical location: usb-0000:00:14.0-1.1.1/input0 INFO eruption > Grabbing the mouse device exclusively ^C INFO eruption::plugins::persistence > Storing persistent state data to disk... INFO eruption > Exiting now

Madcliff avatar Jan 28 '21 09:01 Madcliff

So I will be honest, I suspect the TKL and the Regular keyboard config's are clashing and this is meaning I cannot control the keyboard.

Madcliff avatar Jan 28 '21 09:01 Madcliff

When I force restart the demon the keys get to a strange flickering pattern rather than whatever profile is set.

Madcliff avatar Jan 28 '21 09:01 Madcliff

Hi, I ordered a Vulcan Pro TKL that should arrive tuesday. In the meantime I set up the development environment on my Ubuntu-20.10 system and is able to build the master branch using

cargo build --all --release

so I can aid with debugging once I get the keyboard if you'd like.

RoggeHaj avatar Jan 30 '21 19:01 RoggeHaj

@RoggeHaj Much appreciated, thanks!

I am currently working on full support for the ROCCAT Vulcan Pro TKL keyboard. Will push the latest changes to the master branch in a few days.

I hope that this work will aid in getting the ROCCAT Vulcan Pro and the ROCCAT Vulcan TKL supported too.

X3n0m0rph59 avatar Jan 31 '21 05:01 X3n0m0rph59

@RoggeHaj I have just pushed out the latest changes to the master branch. We now have working (experimental) support for ROCCAT Vulcan Pro TKL series keyboards!

X3n0m0rph59 avatar Feb 02 '21 09:02 X3n0m0rph59

I will give this a test once I get my system working again! Ended up without a computer due to reasons!

Sent from Mailspring (https://link.getmailspring.com/link/[email protected]/0?redirect=https%3A%2F%2Fgetmailspring.com%2F&recipient=cmVwbHkrQUNWQVhKU1NENUJNR1ZFT0c1RkdMQUY2RVQ1VFRFVkJOSEhDNFFGNFFNQHJlcGx5LmdpdGh1Yi5jb20%3D), the best free email app for work On Feb 2 2021, at 9:24 am, X3n0m0rph59 [email protected] wrote:

@RoggeHaj (https://link.getmailspring.com/link/[email protected]/1?redirect=https%3A%2F%2Fgithub.com%2FRoggeHaj&recipient=cmVwbHkrQUNWQVhKU1NENUJNR1ZFT0c1RkdMQUY2RVQ1VFRFVkJOSEhDNFFGNFFNQHJlcGx5LmdpdGh1Yi5jb20%3D) I have just pushed out the latest changes to the master branch. We now have working (experimental) support for ROCCAT Vulcan Pro TKL series keyboards! — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub (https://link.getmailspring.com/link/[email protected]/2?redirect=https%3A%2F%2Fgithub.com%2FX3n0m0rph59%2Feruption%2Fissues%2F37%23issuecomment-771494430&recipient=cmVwbHkrQUNWQVhKU1NENUJNR1ZFT0c1RkdMQUY2RVQ1VFRFVkJOSEhDNFFGNFFNQHJlcGx5LmdpdGh1Yi5jb20%3D), or unsubscribe (https://link.getmailspring.com/link/[email protected]/3?redirect=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FACVAXJVSY3HYDMMTEMO33VDS47ADTANCNFSM4VNNB2ZA&recipient=cmVwbHkrQUNWQVhKU1NENUJNR1ZFT0c1RkdMQUY2RVQ1VFRFVkJOSEhDNFFGNFFNQHJlcGx5LmdpdGh1Yi5jb20%3D).

Madcliff avatar Feb 02 '21 09:02 Madcliff

@Madcliff Ok, thank you! I will update the code to support the "non Pro" variant of the ROCCAT Vulcan TKL with mostly the same code as the Pro variant. But please don't expect too much! I can't promise that it will work, since I can only test on the Pro variant of the keyboard.

X3n0m0rph59 avatar Feb 02 '21 09:02 X3n0m0rph59