flozz / rivalcfg

CLI tool and Python library to configure SteelSeries gaming mice
https://flozz.github.io/rivalcfg/
Do What The F*ck You Want To Public License
764 stars 62 forks source link

Set macros on the mouse persist even after a factory reset #233

Closed alexlnkp closed 1 week ago

alexlnkp commented 1 week ago

Problem description

I was using Windows before, with the official SteelSeries Engine or whatever it's called. After I switched to Linux, to my surprise the settings of my mouse persisted (including the gradient of the LED, macros mapped to buttons, etc). One button on the side of the mouse inputs numpad's 9, the other inputs numpad's 9 twice in a quick succession with just 10ms in-between the inputs. I assume there's some kind of "memory" inside my mouse that keeps the settings? It would appear that it wasn't just the official SteelSeries software that was controlling what button did what on my mouse.

However, if macros/button-mappings are stored in the memory of the mice itself, how come running rivalcfg -r does NOT reset them? Everything else, including the LED color, sensitivity and polling rate got reset, EXCEPT for the button mappings and macros...

It would appear it's the rivalcfg itself that doesn't reset ALL of the settings, assumingly because it just doesn't see other configurable options?

I installed rivalcfg using the official AUR package.

My mouse is SteelSeries Prime, a.k.a.:

1038:182e | SteelSeries Prime

Version info:

$ rivalcfg --print-debug
RIVALCFG
========
Version: 4.13.0
udev rules installed: True
udev rules up to date: True
Installation path: /usr/lib/python3.12/site-packages/rivalcfg

OPERATING SYSTEM
================
OS: Linux
Platform: Linux-6.9.7-arch1-1-x86_64-with-glibc2.39
Version: #1 SMP PREEMPT_DYNAMIC Fri, 28 Jun 2024 04:32:50 +0000
Distribution issue: Arch Linux \r (\l)

PYTHON
======
Python version: 3.12.4
HIDAPI version: 0.14.0

PLUGGED STEELSERIES DEVICES ENDPOINTS
=====================================
1038:182e | 00 | SteelSeries Prime (firmware v0)
1038:182e | 01 | SteelSeries Prime (firmware v0)
1038:182e | 01 | SteelSeries Prime (firmware v0)
1038:182e | 02 | SteelSeries Prime (firmware v0)
1038:182e | 03 | SteelSeries Prime (firmware v0)
1038:182e | 03 | SteelSeries Prime (firmware v0)

OS specs:

OS: Arch Linux x86_64
Kernel: Linux 6.9.7-arch1-1
Display (GM27-FFS): 1920x1080 @ 165Hz
WM: Hyprland (Wayland)
CPU: 12th Gen Intel(R) Core(TM) i5-12400F (12) @ 4.40 GHz
GPU: NVIDIA GeForce RTX 3060 Lite Hash Rate [Discrete]

The lsusb output:

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 1038:182e SteelSeries ApS SteelSeries Prime
Bus 001 Device 003: ID 0416:b23c Winbond Electronics Corp. Gaming Keyboard
Bus 001 Device 004: ID 1397:0507 BEHRINGER International GmbH UMC202HD 192k
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

Please, let me know if I've left something out. This issue's been bugging me for quite some time now...

Best, Alex

alexlnkp commented 1 week ago

Here's the wev testing I've done:

flozz commented 1 week ago

Hello,

the rivalcfg -r command can only reset settings supported by Rivalcfg. On the SteelSeries Prime mouse, button bindings are not supported and thus cannot be reset.

alexlnkp commented 1 week ago

Hello,

the rivalcfg -r command can only reset settings supported by Rivalcfg. On the SteelSeries Prime mouse, button bindings are not supported and thus cannot be reset.

Is there any way to modify what the buttons are mapped to? I'd rather have them simply mapped to mouse 5 and mouse 6 or something...

flozz commented 1 week ago

Yes, using the GG Engine on Windows or macOS (NOTE: this can also be done from a VM). If you want to do it with Rivalcfg, button support must be implemented first.

alexlnkp commented 1 week ago

Yes, using the GG Engine on Windows or macOS (NOTE: this can also be done from a VM). If you want to do it with Rivalcfg, button support must be implemented first.

Alrighty then, thanks for the help! :)