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
766 stars 62 forks source link

RIVAL 3 WIRELESS Support? #146

Open SecretSQL opened 3 years ago

SecretSQL commented 3 years ago

I have a new RIVAL 3 WIRELESS mouse, which has both USB and Bluetooth support. https://steelseries.com/gaming-mice/rival-3-wireless

I purchased it for the Bluetooth support. The mouse 'works' with both Bluetooth and USB. I installed rivalcfg and see that the Rival 3 Wireless is not supported. (Although I tried anyway. )

I am running a Debian derivative (Linux Mint 20). When connected via the USB dongle, the USB device lsusb info is: $ lsusb ID 1038:1830 SteelSeries ApS SteelSeries Rival 3 Wireless

When connected via Bluetooth, lsusb does not list the device. However hcitool lists the address: $ hcitool con Connections: < LE 28:9A:4B:A0:B3:D9 handle 7 state 1 lm MASTER AUTH ENCRYPT

Any chance of adding the Rival 3 wireless to the supported devices?

I am willing to help, but would need pointers on reverse engineering. I have some python experience, and have had a quick look through your code base, which is very well organized. Thanks.

Firminator commented 5 months ago

Accd to https://flozz.github.io/rivalcfg/devices/rival3_wireless.html#mapping-keyboard-keys linking to the supported keys @ https://github.com/flozz/rivalcfg/blob/master/rivalcfg/handlers/buttons/layout_qwerty.py the Function keys are supported. Tried rivalcfg -b "buttons(button5=q)" but had no luck. Anyone else seeing this?

flozz commented 4 months ago

Also since the below quoted code was verified by @winteriscariot to be working could this be implemented in one of the next updates:

This need a bit of work to be implemented in Rivalcfg (this require to implement a new handler, with a custom syntax to handle all parameters).

Any news regarding RGB wheel

It is in my TODO, but I do not have access to this device anymore... I will ask my colleague to know if he still have it... But if my notes are exacts, this mouse have a complicated protocol for lighting (at least a different one from other devices...)

or firmware readout? I didn't find any hints regarding firmware readout on your reverse-engineering blog

You mean reading the firmware version?

Firminator commented 4 months ago

Also since the below quoted code was verified by @winteriscariot to be working could this be implemented in one of the next updates:

This need a bit of work to be implemented in Rivalcfg (this require to implement a new handler, with a custom syntax to handle all parameters). No worries then. Not a biggie.

Any news regarding RGB wheel

It is in my TODO, but I do not have access to this device anymore... I will ask my colleague to know if he still have it... But if my notes are exacts, this mouse have a complicated protocol for lighting (at least a different one from other devices...)

Yes their marketing dubs it as "Quantum 2.0 Dual Wireless - easily switch between gaming-grade wireless and universal Bluetooth connectivity"; I checked their site to see if other mice have it ( https://steelseries.com/innovation/quantum-wireless ) but was so far only able to determine that the Rival 3 Wireless was the first mouse having this 'feature'. They state on the Rival 3 Wireless product page it has (at time of release) "brand new Quantum 2.0 Dual Wireless technology".

Update: All their Wireless mice @ https://steelseries.com/gaming-mice/wireless use "Quantum 2.0 Dual Wireless" protocol, except for the Rival 650 which seems to come with the first iteration of this protocol and doesn't have bluetooth.

2.0 Dual (2.4 and BT)

1.0 (2.4 only)

Do you have an Aerox 3, 5 or 9 to gain some insight about the protocol?

or firmware readout? I didn't find any hints regarding firmware readout on your reverse-engineering blog

You mean reading the firmware version?

Yes firmware version readout.

Button mapping working would be highest on my wishlist, but if this is also an issue related to not understanding this new Quantum protocol I'll understand how it will take the backseat until that has been figured out. If shipping to Europe wouldn't be half the price of the mouse I'd sponsor one.

Firminator commented 4 months ago

Actually I'm just seeing over @ https://github.com/flozz/rivalcfg/blob/master/ssdb/sse3.db.csv there is already support for Aerox 3, 5, and 9 so that's promising if the Rival 3 Wireless uses the same protocol.

I purchased it for the Bluetooth support. The mouse 'works' with both Bluetooth and USB.

A bit late and possibly redundant clarification for OP: There is no USB cable... just an USB dongle providing dual bluetooth and 2.4Ghz wireless functionality.

flozz commented 4 months ago

Do you have an Aerox 3, 5 or 9 to gain some insight about the protocol?

I have none of them... But my colleague still have its Rival 3 Wireless so I will be able to work from this \o/

Button mapping working would be highest on my wishlist, but if this is also an issue related to not understanding this new Quantum protocol I'll understand how it will take the backseat until that has been figured out

I do not think there is a "quantum protocol"... just regular SteelSeries messy protocol x)

A bit late and possibly redundant clarification for OP: There is no USB cable... just an USB dongle providing dual bluetooth and 2.4Ghz wireless functionality.

We currently have a basic support for the Rival 3 when using the 2.4 GHz mode (Bluetooth not supported). I will see if I can add a basic lighting support (just a still color, no animation/gradient) for next Rivalcfg release.


also, button mapping should already work but i will check

flozz commented 4 months ago

also, button mapping should already work but i will check

I checked button mapping → it works fine.

I will see if I can add a basic lighting support (just a still color, no animation/gradient) for next Rivalcfg release.

So... nope. This feature will have to wait few months... It requires sending at least 4 packets to configure even a single static color, so it could not be supported right now. ^^'

Firminator commented 4 months ago

What OS/kernel are you working with? That would be my step to replicate a known working setup on a test device. I tested this with a texteditor open and used rivalcfg -b "buttons(button5=q)" in a terminal, then pressing button 5 but 'q' doesn't populate in the texteditor. Then testing rivalcfg -b "buttons(button4=VolumeDown; button5=VolumeUp)" but it doesn't adjust my volume either. How are you testing button mapping? Anything I forget or need to consider?