Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Aerox 5 wired not listed #192

Closed
jblankfeld opened this issue Nov 3, 2022 · 12 comments
Closed

Aerox 5 wired not listed #192

jblankfeld opened this issue Nov 3, 2022 · 12 comments
Assignees

Comments

@jblankfeld
Copy link

jblankfeld commented Nov 3, 2022

Bug description

What happened

I used rivalcfg from source for my Aerox 5 wired model and the device is not listed.

What was expected

I can change the colors.

Step to reproduce

  • Is the bug always reproducible or is it "random"?

Always

System information

ArchLinux, rivalcfg from git, installed with pip.

Hi,

I have a Aerox 5 wired and I think the productId for the current config does not match my model.

`

lsusb
Bus 003 Device 009: ID 1038:1850 SteelSeries ApS SteelSeries Aerox 5
`

The device has another product id here https://github.com/flozz/rivalcfg/blob/master/rivalcfg/devices/aerox5_wireless_wired.py#L13

I "hacked" the python package to match my model and it partially worked. I could only change the top color but the color was wrong and bottom and middle colors were not working. I then realized that the commands for this mouse actually match the Aerox 3 device https://github.com/flozz/rivalcfg/blob/master/rivalcfg/devices/aerox3.py
After a new hack it finally worked.

@jblankfeld jblankfeld added the bug label Nov 3, 2022
@flozz flozz added New Hardware and removed bug labels Nov 15, 2022
@flozz
Copy link
Owner

flozz commented Nov 15, 2022

The Aerox 5 is not supported by Rivalcfg yet. We will need some reverse engineering to support it. :)

NOTE: Aerox 5 Wireless and Aerox 5 are two different devices (we already found differences in the protocols of the Aerox 3 / Aerox 3 Wireless)

@mxiia
Copy link

mxiia commented Nov 23, 2022

is there anything that can be done to help with the wired Aerox 5?

@flozz
Copy link
Owner

flozz commented Nov 23, 2022

@mxiaa yes. I need someone to capture packet sent by the GG Engine to the mouse when changing each options. This will allow me to reverse engineer its protocol and to implement it in Rivalcfg.

Here is an example of what has been done for the Aerox 3 Wireless: https://github.com/gort818/aerox3-wireless/blob/aa1020d493bfcb451438a5cd5e00aed249d9bc29/aerox3-wireless.txt

@mxiia
Copy link

mxiia commented Nov 23, 2022

I'll mess around with wireshark for this soon and let you know what I gather!

@leon-matthews
Copy link

I too have a Wired Aerox 5, and would be happy to run whatever tests that you need. To start with, here's the output requested on the Contributing page.

$ lsusb -d 1038:
Bus 001 Device 008: ID 1038:1850 SteelSeries ApS SteelSeries Aerox 5
$ rivalcfg --print-debug

RIVALCFG
========
Version: 4.8.0
udev rules installed: True
udev rules up to date: True
Installation path: /home/leon/.virtualenvs/rivalcfg/lib/python3.10/site-packages/rivalcfg

OPERATING SYSTEM
================
OS: Linux
Platform: Linux-5.19.0-38-generic-x86_64-with-glibc2.36
Version: #39-Ubuntu SMP PREEMPT_DYNAMIC Fri Mar 17 17:33:16 UTC 2023
Distribution issue: Ubuntu 22.10 \n \l

PYTHON
======
Python version: 3.10.7
HIDAPI version: 0.13.1

PLUGGED STEELSERIES DEVICES ENDPOINTS
=====================================
1038:1850 | 00 |  (firmware v0)
1038:1850 | 01 |  (firmware v0)
1038:1850 | 02 |  (firmware v0)
1038:1850 | 03 |  (firmware v0)

@Krivers29
Copy link

Is there any news on the subject? I too have a wired aerox 5 (by the way, does someone has a scrolling issue on linux with it?)
I'll be happy to help if needed.

@flozz flozz self-assigned this Feb 25, 2024
@flozz
Copy link
Owner

flozz commented Feb 25, 2024

I am working on the implementation if the Aerox 5 (wired) on the feat-aerox5 branch.

I currently "merged" some data from the Aerox 3 and Aerox 5 Wireless profiles to have a base to start from.


Here is the list of features that needs to be checked (and how to check) to know if they are working or not:

  • sensitivity
    • try python -m rivalcfg -s 200 → the cursor should be slow
    • try python -m rivalcfg -s 8500 → the cursor should move faster
  • polling_rate
    • No easy way to test. I will confirm this later.
  • z1_color
    • try python -m rivalcfg --z1 red → the first light zone should turn red
    • try python -m rivalcfg --z1 aqua → the first light zone should turn blue
  • z2_color
    • try python -m rivalcfg --z2 red → the second light zone should turn red
    • try python -m rivalcfg --z2 lime → the second light zone should turn green
  • z3_color
    • try python -m rivalcfg --z3 red → the third light zone should turn red
    • try python -m rivalcfg --z3 yellow → the third light zone should turn yellow
  • reactive_color
    • try python -m rivalcfg -a fuchsia → the leds should turn fuchsia in reaction to clicks
    • try python -m rivalcfg -a off → the leds should stay the same color when clicking
  • led_brightness
    • try python -m rivalcfg -l 0 → the leds should turn off
    • try python -m rivalcfg -l 50 → the leds should be on
    • try python -m rivalcfg -l 50 → the leds should be on but brightest than with 50
  • rainbow_effect
    • try python -m rivalcfg -e all
    • try python -m rivalcfg -e bottom
    • try python -m rivalcfg -e middle
    • try python -m rivalcfg -e top
    • try python -m rivalcfg -e bottom-middle
    • try python -m rivalcfg -e middle-top
    • try python -m rivalcfg -e bottom-top
    • → all those commands should enable a different rainbow effect on the LEDs
  • button_mapping
    • try to bind each buttons to a keyboard key to check it works.
    • For example the following command will write "q" (on a qwerty keyboard) when using the right-click button:
    • python -m rivalcfg -b "buttons(button2=q)"
    • WARNING: if you redefine the button1, you WILL NOT be able to click with you mouse until the seting is reset to its default (-b "default")!
  • default_lightning
    • try python -m rivalcfg -d off, then unplug/replug the mouse to the computer → the LEDs should be off
    • try python -m rivalcfg -d rainbow, then unplug/replug the mouse to the computer → the LEDs should run a rainbow animation
  • save_command
    • No easy way to test for now. I will confirm this later.

I will try to get more information Monday.


To test, first prepare the dev environment:

# install some system dependencies
sudo apt install python3-dev python3-venv

# clone the Git repository and go to the branch
git clone https://github.com/flozz/rivalcfg.git
cd rivalcfg
git checkout feat-aerox5

# create / activate venv and install dependencies
python3 -m venv __env__
source __env__/bin/activate
pip install -e ".[dev]"

# NOTE: next time you will only need to run the "source __env__/bin/activate" command to reactivate the virtualenv :)

Then we have to configure udev to allow rivalcfg to comunicate with the device without being root. Add the following lines to the /etc/udev/rules.d/99-steelseries-rival.rules file (create it if it does not exist):

# SteelSeries Aerox 5 Wireless (wired mode)
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1038", ATTRS{idProduct}=="1854", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1038", ATTRS{idProduct}=="1854", MODE="0666"

then reload the rules:

sudo udevadm control --reload-rules

and finally unplug/replug the mouse to the computer.

You can now test commands like this:

python -m rivalcfg -h
python -m rivalcfg -z1 lime
python -m rivalcfg -z2 aqua
python -m rivalcfg -z3 red

@Krivers29
Copy link

Krivers29 commented Feb 25, 2024

Some of those command weren't working, not because of compatibility but because of the syntax, for example :

python -m rivalcfg -z1 red

returned a unrecognized argument error, whereas :

python -m rivalcfg --top-color red

worked flawlessly.
I don't know if it was intended, but I used the second syntax when this happened.

  • sensitivity

    python -m rivalcfg -s 200 → no change, could make it work with an aerox5 wireless config files
    python -m rivalcfg -s 8500 → no change, could make it work with an aerox5 wireless config files

  • polling_rate

No easy way to test. I will confirm this later.

  • z1_color

    python -m rivalcfg --top-color red → WORK
    python -m rivalcfg --top-color aqua → WORK

  • z2_color

    python -m rivalcfg --middle-color red → WORK
    python -m rivalcfg --middle-color lime → WORK

  • z3_color

    python -m rivalcfg --bottom-color red → WORK
    python -m rivalcfg --bottom-color yellow → WORK

  • reactive_color

    python -m rivalcfg -a fuchsia → WORK
    python -m rivalcfg -a off → WORK

  • led_brightness

    python -m rivalcfg -l 0 → WORK
    python -m rivalcfg -l 50 → WORK
    python -m rivalcfg -l 100 → WORK

  • rainbow_effect

    python -m rivalcfg -e all WORK
    python -m rivalcfg -e bottom WORK
    python -m rivalcfg -e middle WORK
    python -m rivalcfg -e top WORK
    python -m rivalcfg -e bottom-middle WORK
    python -m rivalcfg -e middle-top WORK
    python -m rivalcfg -e bottom-top WORK

  • button_mapping

    python -m rivalcfg -b "buttons(button2=q)" WORK

    python -m rivalcfg -b "default" WORK

  • default_lightning

    python -m rivalcfg -d off WORK
    python -m rivalcfg -d rainbow WORK

  • save_command

No easy way to test for now. I will confirm this later.

@flozz
Copy link
Owner

flozz commented Feb 25, 2024

Some of those command weren't working, not because of compatibility but because of the syntax, for example :

python -m rivalcfg -z1 red

returned a unrecognized argument error, whereas :

python -m rivalcfg --top-color red

worked flawlessly. I don't know if it was intended, but I used the second syntax when this happened.

Oopsie, the param is --z1 not -z1... I edited my comment to fix this, sorry ^^'

Thank you for your help! :)

@flozz
Copy link
Owner

flozz commented Feb 26, 2024

  • polling_rate works like the Aerox 3
  • The sensor is the same than on the A5W with the same settings → so it should work now
  • The save command is the right one

@flozz
Copy link
Owner

flozz commented Feb 27, 2024

The support of the Aerox 5 is now complete and merged on master. It will be released with the next Rivalcfg version by the end of the week :)

@flozz flozz closed this as completed Feb 27, 2024
@flozz
Copy link
Owner

flozz commented Mar 1, 2024

→ Released in v4.12.0 :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants