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

Rival 500 issues #32

Closed
ghost opened this issue May 27, 2017 · 42 comments
Closed

Rival 500 issues #32

ghost opened this issue May 27, 2017 · 42 comments

Comments

@ghost
Copy link

ghost commented May 27, 2017

Hey,

So I spent few hours on the mouse, and it's still not working so far.

I did reverse engirered the mouse and it appears to be the same commands as the Rival 300.

The problem is either due to:

  1. Newer firmware on the Rival 500 and Rival 700
  2. Or only affecting higher models like the Rival 500 and Rival 700

Maybe this is the problem, I have noticed another 0x00 data when a command is done to the mouse:

E.g. for the colour #FF4212:

Logo colour:
color-logo-data

Wheel colour:
color-wheel-data

And on your blog about the reverse engineering Data Fragment on the Rival 100, we can see that you only get the data as: 0x05 + 0x00 + red green blue.

Note that I am getting this 0x00 supplement for every commands, and they are all the same as on other Rival.

I cannot get echo -en "\x05\x00\xFF\x00\x00" > /dev/hidraw0 or even echo -n "\x05\x00\x00\xFF\x00\x00" > /dev/hidraw0 to work, and of course I tried on all of them /dev/hidraw0 to /dev/hidraw6.

No effects at all using the debug command:

# DEBUG_DRY=true DEBUG_PROFILE=1038:170e rivalcfg -c ff3300
[DEBUG] Debugging rivalcfg 2.5.3...
[DEBUG] Python 3.6.1
[DEBUG] Dry run enabled
[DEBUG] Debugging mouse profile 1038:170e
[DEBUG] Mouse profile found: SteelSeries Rival 500
[DEBUG] _device_write: 00 08 01 FF 33 00
[DEBUG] _device_write: 00 09 00

And yeah I have everything ready to be pushed for the Rival 500, but rivalcfg is not working as intended.

Optional output:

# rivalcfg -l
SteelSeries Rival                             1038:1384   
SteelSeries Rival 100                         1038:1702   
SteelSeries Rival 300                         1038:1710   
SteelSeries Rival 300 CS:GO Fade Edition      1038:1394   
SteelSeries Rival 500                         1038:170e   (plugged)
# lsusb
Bus 004 Device 005: ID 0cf3:3004 Qualcomm Atheros Communications AR3012 Bluetooth 4.0
Bus 004 Device 023: ID 1038:170e SteelSeries ApS 
Bus 004 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0408:2fb1 Quanta Computer, Inc. 
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
# dmesg | grep -C 5 hidraw
[46374.243787] usb 4-1.2: USB disconnect, device number 22
[46420.014939] usb 4-1.2: new full-speed USB device number 23 using ehci-pci
[46420.117143] hid-generic 0003:1038:170E.0045: hiddev0,hidraw0: USB HID v1.11 Device [SteelSeries SteelSeries Rival 500 Gaming Mouse] on usb-0000:00:1d.0-1.2/input0
[46420.118550] input: SteelSeries SteelSeries Rival 500 Gaming Mouse as /devices/pci0000:00/0000:00:1d.0/usb4/4-1/4-1.2/4-1.2:1.1/0003:1038:170E.0046/input/input63
[46420.118909] hid-generic 0003:1038:170E.0046: input,hidraw1: USB HID v1.11 Mouse [SteelSeries SteelSeries Rival 500 Gaming Mouse] on usb-0000:00:1d.0-1.2/input1
[46420.121347] input: SteelSeries SteelSeries Rival 500 Gaming Mouse as /devices/pci0000:00/0000:00:1d.0/usb4/4-1/4-1.2/4-1.2:1.2/0003:1038:170E.0047/input/input64
[46420.175473] hid-generic 0003:1038:170E.0047: input,hidraw2: USB HID v1.11 Keyboard [SteelSeries SteelSeries Rival 500 Gaming Mouse] on usb-0000:00:1d.0-1.2/input2
[47122.457858] usb 4-1.2: reset full-speed USB device number 23 using ehci-pci
[47122.561424] hid-generic 0003:1038:170E.0048: hiddev0,hidraw0: USB HID v1.11 Device [SteelSeries SteelSeries Rival 500 Gaming Mouse] on usb-0000:00:1d.0-1.2/input0
[47122.562486] input: SteelSeries SteelSeries Rival 500 Gaming Mouse as /devices/pci0000:00/0000:00:1d.0/usb4/4-1/4-1.2/4-1.2:1.1/0003:1038:170E.0049/input/input65
[47122.562690] hid-generic 0003:1038:170E.0049: input,hidraw1: USB HID v1.11 Mouse [SteelSeries SteelSeries Rival 500 Gaming Mouse] on usb-0000:00:1d.0-1.2/input1
[47122.564925] input: SteelSeries SteelSeries Rival 500 Gaming Mouse as /devices/pci0000:00/0000:00:1d.0/usb4/4-1/4-1.2/4-1.2:1.2/0003:1038:170E.004A/input/input66
[47122.621610] hid-generic 0003:1038:170E.004A: input,hidraw2: USB HID v1.11 Keyboard [SteelSeries SteelSeries Rival 500 Gaming Mouse] on usb-0000:00:1d.0-1.2/input2
# rivalcfg
E: The 'SteelSeries Rival 500' mouse is plugged in but the control interface is not available.

Try to:
  * unplug the mouse from the USB port,
  * wait a few seconds,
  * and plug the mouse to the USB port again.

Best of luck and I hope you did enjoy my mouse ;).

@flozz
Copy link
Owner

flozz commented May 27, 2017

Hello,

It looks similar to the Rival 700 commands I found here:

So I think your color command can be interpreted like this:

capture d ecran de 2017-05-27 11-39-38

So I will have to add this concept of prefix and suffix to rivalcfg command :)

@flozz
Copy link
Owner

flozz commented May 27, 2017

Can you try this command?

echo -en "\x05\x00\x00\xFF\x00\x00\xFF\x32\xC8\xC8\x00\x00\x01" > /dev/hidrawXXX

@ghost
Copy link
Author

ghost commented May 27, 2017

Thank you for your answer.

I tried echo -en "\x05\x00\x00\xFF\x00\x00\xFF\x32\xC8\xC8\x00\x00\x01" > /dev/hidrawXXX, still nothing :(.

@ghost
Copy link
Author

ghost commented May 27, 2017

From the VM, here is the data for the logo colour (#FFC8C8):

ssengine-colour

@ghost
Copy link
Author

ghost commented May 27, 2017

Here is the data for the sensitivity preset 1 (set to 1200 CPI):

Request:
request-sensitivity1

Response:
answer-sensitivity1

@flozz
Copy link
Owner

flozz commented May 27, 2017

can you try (i added initial 0 to the command):

echo -en "\x00\x05\x00\x00\xFF\x00\x00\xFF\x32\xC8\xC8\x00\x00\x01" > /dev/hidrawXXX

And if it does not work, can you capture what is sent to the mouse when you are doing that ? :)

@ghost
Copy link
Author

ghost commented May 27, 2017

xD, I did a ls /dev/ it was really dirty, I cleaned everything, now it looks better.

So here the capture (doing echo -en "\x00\x05\x00\x00\xFF\x00\x00\xFF\x32\xC8\xC8\x00\x00\x01" > /dev/hidraw0):

Request:
request1

Response:
request2

@flozz
Copy link
Owner

flozz commented May 27, 2017

hum ok... again the wValue field that is set to 0x0200 instead of 0x0300... I will have to find how to set that field...

@flozz
Copy link
Owner

flozz commented May 27, 2017

Hello,

Can you install pyusb (pip install pyusb) and try this:

#!/usr/bin/env python


from __future__ import print_function
import sys

import usb.core
import usb.util


VENDOR_ID = 0x1038
PRODUCT_ID = 0x170E

dev = usb.core.find(idVendor=VENDOR_ID, idProduct=PRODUCT_ID)

if not dev:
    print("Device not found")
    sys.exit(1)

config = dev.get_active_configuration()
iface = config.interfaces()[0]

if dev.is_kernel_driver_active(iface.bInterfaceNumber):
    dev.detach_kernel_driver(iface.bInterfaceNumber)

bm_request_type = usb.util.build_request_type(
        usb.util.CTRL_OUT,
        usb.util.CTRL_TYPE_CLASS,
        usb.util.CTRL_RECIPIENT_INTERFACE)

dev.ctrl_transfer(bm_request_type, 0x09, 0x0300, 0x0000,
        "\x05\x00\x00\xFF\x00\x00\xFF\x32\xC8\xC8\x00\x00\x01")
#        +-------+---+-----------+---------------------------
#         prefix  led    color           suffix

(I hope I made no mistake in this piece of code)

@ghost
Copy link
Author

ghost commented May 27, 2017

Good thing, running the script and there is no more light/colour, on the logo :).

@flozz
Copy link
Owner

flozz commented May 27, 2017

It was supposed to turn the logo light to red... maybe I missed something ^^'

@flozz
Copy link
Owner

flozz commented May 27, 2017

When you have some free time, please contact me here IRC Freenode #rivalcfg and we will try to make it work :)

@flozz
Copy link
Owner

flozz commented Jun 6, 2017

Hello,

I read the USB Device Class Definition for Human Interface Device (HID) spec and the hidapi source code. The solution to support Rival 500 / 700 seems to be simple (it is always simpler when you read the doc...).

Anyway I made a small PoC that requires hidapi (pip install hidapi). Can you tell me if it works with your Rival 500?

#!/usr/bin/env python


VENDOR_ID = 0x1038
PRODUCT_ID = 0x170e

COMMAND = [ 0x00     , 0x05, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x32, 0xC8, 0xC8, 0x00, 0x00, 0x01 ]
#         +----------+-----------+-----+-----------------+------------------------------------------+
#         | ReportID | prefix    | LED | color           | suffix                                   |
#         +----------+-----------+-----+-----------------+------------------------------------------+


import hid


def open_device(vendor_id, product_id, interface_number=0):
    for interface in hid.enumerate(vendor_id, product_id):
        if interface["interface_number"] != interface_number:
            continue
        device = hid.device()
        device.open_path(interface["path"])
        return device

    raise IOError("Unable to find the requested device: %04X:%04X:%02X" % (
        vendor_id, product_id, interface_number))


device = open_device(VENDOR_ID, PRODUCT_ID)
device.send_feature_report(COMMAND)
# import ipdb ; ipdb.set_trace()  # FIXME
device.close()

@dbaggerman
Copy link

Your earlier pyusb version works for me if I replace the string literal in the dev.ctrl_transfer call with a bytes literal (b"\x05\x00\x00\xc3\xbf\x00\x00\xc3\xbf2\xc3\x88\x00\x00\x01"). I guess Python 3 was trying to interpret the bytes as unicode characters and causing problems. Without changing that I had the same behaviour as @thiblizz.

Your new hidapi version also works for me.

The suffix after the color seems to have something to do with colour fading/transitions. While I was poking the bytes in the string (before I found the byte literal vs string literal thing) I found a combination that made the led start white and slowly fade to purple ("\x05\x00\x00\x80\xFF\x00\xFF\x32\xC8\xC8\x00\x00\x01") and another that made the led a greenish colour until I clicked any mouse button, which made it turn white ("\x05\x00\x00\xFF\x00\x80\x80\x32\xC8\xC8\x00\x00\x01").

@dbaggerman
Copy link

Here's how python seemed to be (mis)interpreting the string literals:

% python --version
Python 3.6.1

% python -c 'import sys; sys.stdout.write("\x05\x00\x00\x80\xFF\x00\xFF\x32\xC8\xC8\x00\x00\x01")' | hexdump -C
00000000  05 00 00 c2 80 c3 bf 00  c3 bf 32 c3 88 c3 88 00  |..........2.....|
00000010  00 01                                             |..|
00000012

  % python -c 'import sys; sys.stdout.write("\x05\x00\x00\xFF\x00\x80\x80\x32\xC8\xC8\x00\x00\x01")' | hexdump -C
00000000  05 00 00 c3 bf 00 c2 80  c2 80 32 c3 88 c3 88 00  |..........2.....|
00000010  00 01                                             |..|
00000012

@ghost
Copy link
Author

ghost commented Jun 6, 2017

@flozz, the script changed the colour instantly back to orange, so it works fine ;).

@flozz
Copy link
Owner

flozz commented Jun 6, 2017

@dbaggerman:

I guess Python 3 was trying to interpret the bytes as unicode characters and causing problems.

Your are right, we already came to this conclusion with @thiblizz (on IRC)... But
I forget to update this issue after we found this... Sorry :)

Your new hidapi version also works for me.

Yeah :D

The suffix after the color seems to have something to do with colour fading/transitions.

Oh, cool if the hardware supports that feature!

@dbaggerman, @thiblizz:

I will finish to implement the new version with hidapi and I will write
a sample profile for Rival 500 to allow you to complete it (as I have not this
mouse). :)

@flozz
Copy link
Owner

flozz commented Jun 10, 2017

Hello,

everything required to support Rival 500 is available in the last commit of the road-to-3-0-0-hidapi branch. I also started to write the profile file for this mouse but I cannot go further, I let you do the reverse-engineering of it :) :

https://github.com/flozz/rivalcfg/blob/road-to-3-0-0-hidapi/rivalcfg/profiles/rival500.py

Currently, you should be able to change the color of the logo and the wheel:

rivalcfg -c red -C aqua

My test in dry mode:

$ RIVALCFG_DRY=1 RIVALCFG_PROFILE=1038:170e python -m rivalcfg -c red -C aqua
[DEBUG] Rivalcfg 2.6.0
[DEBUG] Python version: 2.7.13
[DEBUG] OS: Linux
[DEBUG] Linux distribution: Ubuntu 17.04 zesty
[DEBUG] Dry run enabled
[DEBUG] Forced profile: 1038:170E
[DEBUG] Targeted device: 1038:170E
[DEBUG] Selected mouse: <Mouse SteelSeries Rival 500 (1038:170E:00)>
[DEBUG] Mouse._device_write [wValue]: 03 00
[DEBUG] Mouse._device_write   [data]: 05 00 00 FF 00 00 FF 32 C8 C8 00 00 01
[DEBUG] Mouse._device_write [wValue]: 03 00
[DEBUG] Mouse._device_write   [data]: 05 00 01 00 FF FF FF 32 C8 C8 00 01 01
[DEBUG] Mouse._device_write [wValue]: 02 00
[DEBUG] Mouse._device_write   [data]: 09 00

@dbaggerman
Copy link

The current code seems to assume one value per command. How would you want to handle something with more than one parameter?

For example, setting the mouse to change colour on click would take two colour values and a fade time:

[ 05 00 00 ][ FF 00 00 ][ 00 00 0F ][ 20 00 ][ 00 88 00 01 01 ]
  ^ prefix    ^ colour1   ^ colour2   ^ time   ^ suffix

colour1: Normal colour while mouse is idle
colour2: Colour after mouse click
time: Amount of time to fade back to colour1 after click (milliseconds, little endian)

@flozz
Copy link
Owner

flozz commented Jun 11, 2017

Hello,

Except for the CLI that currently expects one value per command, the rest of the code can handle multiple arguments.

Anyway, to allow this to work, I have to make a new value type and a new command handler to parse it. I will try to do this tomorrow.

It also seems there is a lot of variation for this command: illumination effect, speed, n colors:

@flozz
Copy link
Owner

flozz commented Jun 14, 2017

Hello,

@dbaggerman: I made an rgbcolorshift value type using informations you provided. You can try it with a command like

rivalcfg -t <COLOR1> <COLOR2> <SPEED>

Example:

$ RIVALCFG_DRY=1 RIVALCFG_PROFILE=1038:170e python -m rivalcfg -t red aqua 200
[DEBUG] Rivalcfg 2.6.0
[DEBUG] Python version: 2.7.13
[DEBUG] OS: Linux
[DEBUG] Linux distribution: Ubuntu 17.04 zesty
[DEBUG] Dry run enabled
[DEBUG] Forced profile: 1038:170E
[DEBUG] Targeted device: 1038:170E
[DEBUG] Selected mouse: <Mouse SteelSeries Rival 500 (1038:170E:00)>
[DEBUG] Mouse._device_write [wValue]: 03 00
[DEBUG] Mouse._device_write   [data]: 05 00 00 FF 00 00 00 FF FF C8 00 C8 C8 00 00 01
[DEBUG] Mouse._device_write [wValue]: 02 00
[DEBUG] Mouse._device_write   [data]: 09 00

@ghost
Copy link
Author

ghost commented Jun 16, 2017

Hey,

Is the road-to-3-0-0-hidapi branch working with Python 3?

$ rivalcfg
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2311, in resolve
    return functools.reduce(getattr, self.attrs, module)
AttributeError: module 'rivalcfg.cli' has no attribute 'main'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/bin/rivalcfg", line 11, in <module>
    load_entry_point('rivalcfg==2.6.0', 'console_scripts', 'rivalcfg')()
  File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 561, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2649, in load_entry_point
    return ep.load()
  File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2303, in load
    return self.resolve()
  File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2313, in resolve
    raise ImportError(str(exc))
ImportError: module 'rivalcfg.cli' has no attribute 'main'

@flozz
Copy link
Owner

flozz commented Jun 17, 2017

Hello,

It is compatible with Python 3, but I forgot to update the entry point in the setup.py file after refactoring the software. It is now fixed :)

@ghost
Copy link
Author

ghost commented Jun 17, 2017

@flozz: Now this is working as intended, thanks for the quick fix :).

Another bug found, and also seems to be the entry point not yet updated.
The command rivalcfg -r ain't working:


# rivalcfg -r
Traceback (most recent call last):
  File "/usr/bin/rivalcfg", line 11, in <module>
    load_entry_point('rivalcfg==2.6.0', 'console_scripts', 'rivalcfg')()
  File "/usr/lib/python3.6/site-packages/rivalcfg/__main__.py", line 71, in main
    mouse.set_default()
  File "/usr/lib/python3.6/site-packages/rivalcfg/mouse.py", line 33, in set_default
    getattr(self, command)(self.profile["commands"][command]["default"])
  File "/usr/lib/python3.6/site-packages/rivalcfg/mouse.py", line 71, in _exec_command
    bytes_ = getattr(command_handlers, handler)(command, *args)
  File "/usr/lib/python3.6/site-packages/rivalcfg/command_handlers.py", line 72, in rgbcolorshift_handler
    raise ValueError("Not a valid color %s" % str(color))
ValueError: Not a valid color ['#FF1800', '#FF1800']

PS: I am trying to get all the reverse engineering needed for the Rival 500, as I just moved to the Rival 700 :).

PS2: My Orphan Request for rivalcfg-git got accepted, so when the master branch will get the version 3.0.0 with hidapi (maybe full support for the Rival 500/Rival700), I will be an active maintainer for this package in the AUR.

Finally, I think you can delete the road-to-3-0-0 branch and just keep the road-to-3-0-0-hidapi instead?

@ghost
Copy link
Author

ghost commented Jun 17, 2017

The second problem (more problematic), when using rivalcfg after unplugging then replugging the mouse, I got this:

$ rivalcfg
Traceback (most recent call last):
  File "/usr/bin/rivalcfg", line 11, in <module>
    load_entry_point('rivalcfg==2.6.0', 'console_scripts', 'rivalcfg')()
  File "/usr/lib/python3.6/site-packages/rivalcfg/__main__.py", line 47, in main
    mouse = get_first_available_mouse()
  File "/usr/lib/python3.6/site-packages/rivalcfg/__main__.py", line 17, in get_first_available_mouse
    available_mice[0].product_id
  File "/usr/lib/python3.6/site-packages/rivalcfg/__init__.py", line 55, in get_mouse
    return Mouse(profile)
  File "/usr/lib/python3.6/site-packages/rivalcfg/mouse.py", line 27, in __init__
    profile["interface_number"])
  File "/usr/lib/python3.6/site-packages/rivalcfg/usbhid.py", line 46, in open_device
    device.open_path(interface["path"])
  File "hid.pyx", line 72, in hid.device.open_path (hid.c:1909)
OSError: open failed
Exception ignored in: <bound method Mouse.__del__ of <Mouse SteelSeries Rival 500 (1038:170E:00)>>
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/rivalcfg/mouse.py", line 88, in __del__
    self._device.close()
  File "/usr/lib/python3.6/site-packages/rivalcfg/mouse.py", line 54, in __getattr__
    raise AttributeError("There is no command named '%s'" % name)
AttributeError: There is no command named '_device'

I hope my reports are useful for you :).

@ghost ghost changed the title Rival 500 issue Rival 500 issues Jun 17, 2017
@flozz
Copy link
Owner

flozz commented Jun 18, 2017

@thiblizz

The command rivalcfg -r ain't working:

I changed the format of the arguments so much time... I forget to update some
parts of the code. Anyways, it is now fixed :)

PS: I am trying to get all the reverse engineering needed for the Rival 500,
as I just moved to the Rival 700 :).

The rival 700 seems to be very close to the 500, so there should be not so much
work (excepted for OLED screen)

PS2: My Orphan Request for rivalcfg-git got accepted, so when the master
branch will get the version 3.0.0 with hidapi (maybe full support for the
Rival 500/Rival700), I will be an active maintainer for this package in the
AUR.

Nice :)

Finally, I think you can delete the road-to-3-0-0 branch and just keep the
road-to-3-0-0-hidapi instead?

I will remove it later, i still need some info about pyusb for an other project
:)

The second problem (more problematic), when using rivalcfg after unplugging
then replugging the mouse, I got this

I add it to my todo list, i will work on it as soon as possible :)

I hope my reports are useful for you :).

of course they are, the refactoring caused many small issue I must fix before
the 3.0.0. I will add more tests to keep an eye on those bugs

@ghost
Copy link
Author

ghost commented Jul 4, 2017

Hey 😅,

Any news about my latest issue?

@flozz
Copy link
Owner

flozz commented Jul 4, 2017

Hello,

The issue while unplugging/replugging the mouse?

(I do not worked on this software last weeks because I had to much work and I tried to work a bit on an other software, I will came back on rivalcfg soon)

@ghost
Copy link
Author

ghost commented Jul 4, 2017

Thank you for the answer, yep the issue while unplugging/replugging the mouse.

There is no problem at all, keep focusing on your priorities ;).

The thing is, this issue actually prevent me from doing any reverse engineering, as the mouse do not communicate anymore with rivalcfg.

@flozz
Copy link
Owner

flozz commented Jul 4, 2017

The thing is, this issue actually prevent me from doing any reverse engineering, as the mouse do not communicate anymore with rivalcfg.

Oh really :(

I will take a look after work then

@dbaggerman
Copy link

For what it's worth, I can't reproduce the error when plugging/unplugging my rival 500. Otherwise I'd take a look at it.

@flozz
Copy link
Owner

flozz commented Jul 4, 2017

I tried to reproduce the issue:

  • I have no problem when I plug/unplug/replug the mouse
  • but I have the same issue as yours when I plug the mouse to a virtual machine:

http://tmp.fgsp.org/github/rivalcfg_screencast_2017-07-04_22-22-34.webm

When you have the issue,

  • do you have a running virtual machine?
  • Is the mouse automatically connected to the VM when plugged (there is an option to do that in the machine settings on Virtual Box)?

Anyway, I will try to display a better error message when this occur, the Python stack trace is not very helpful here :)

@ghost
Copy link
Author

ghost commented Jul 4, 2017

Damn, I am so sorry, I haven't checked this...

Of course, my VM was still running, thank you for your time tho. (running 7 VM's in the background did not help for sure 💯)

@flozz
Copy link
Owner

flozz commented Jul 4, 2017

No problem ;)

@flozz
Copy link
Owner

flozz commented Jul 6, 2017

@thiblizz rivalcfg will now display this message when the mouse cannot be opened:

W: The following mouse was found but rivalcfg was not able to open it:
  * mouse: SteelSeries Rival 100 (1038:1702)
  * error: open failed

Please check that no other application is controlling this mouse and try to:
  * unplug the mouse from the USB port,
  * wait few seconds,
  * and plug the mouse to the USB port again.

@ghost
Copy link
Author

ghost commented Jul 15, 2017

@flozz, thanks it works as intended, and thanks for the cleanup in your last commits :).

@PaulBGD
Copy link

PaulBGD commented Jul 28, 2017

I just want to say, the road-to-3-0-0-hidapi branch worked perfectly for my mouse, except the colorshift options (unless I don't understand how they work, I didn't ever see the color change.)

@ruscur
Copy link

ruscur commented Jul 29, 2017

The colorshift works but it's slow, it jumps from one colour to another eventually, I'm not sure what units the "speed" option is.

Once thing that would be really cool is button assignment - the mouse has like 8 buttons that are useless on Linux.

@PaulBGD
Copy link

PaulBGD commented Jul 30, 2017

You can handle that with other programs, the buttons are recognized as a separate keyboard device. Just do something when they're pressed.

@ruscur
Copy link

ruscur commented Jul 30, 2017

By default some are disabled, though.

@flozz
Copy link
Owner

flozz commented Aug 8, 2017

I will look at this keyboard emulation functionality on the Rival 300 mouse, I hope the Rival 500 will not be too different :)

@flozz
Copy link
Owner

flozz commented Aug 22, 2020

I close this issue.

The work on the Rival 500 continues in #138 :)

@flozz flozz closed this as completed Aug 22, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants