<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Rivalcfg</title><link href="https://rivalcfg.flozz.org/" rel="alternate"/><link href="https://rivalcfg.flozz.org/news/feed.atom.xml" rel="self"/><id>https://rivalcfg.flozz.org/</id><updated>2026-04-03T00:00:00+02:00</updated><entry><title>Rivalcfg v4.17.0 released with Rival 5 and Prime+ support</title><link href="https://rivalcfg.flozz.org/news/release_v4.17.0/" rel="alternate"/><published>2026-04-03T00:00:00+02:00</published><updated>2026-04-03T00:00:00+02:00</updated><author><name>Fabien "FLOZz" LOISON</name></author><id>tag:rivalcfg.flozz.org,2026-04-03:/news/release_v4.17.0/</id><summary type="html">&lt;p&gt;&lt;strong&gt;Rivalcfg v4.17.0&lt;/strong&gt; was released yesterday. This new version adds support for &lt;strong&gt;3 new devices&lt;/strong&gt; and fixes a bug with &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;--print-debug&lt;/span&gt;&lt;/tt&gt; option. Standalone builds are no longer considered experimental.&lt;/p&gt;
&lt;div class="section" id="new-supported-devices"&gt;
&lt;h2&gt;New Supported Devices&lt;/h2&gt;
&lt;p&gt;This version now supports three new devices: two variants of the Rival 5 and the Prime+.&lt;/p&gt;
&lt;div class="section" id="rival-5-and-rival-5-destiny-edition"&gt;
&lt;h3&gt;Rival …&lt;/h3&gt;&lt;/div&gt;&lt;/div&gt;</summary><content type="html">&lt;p&gt;&lt;strong&gt;Rivalcfg v4.17.0&lt;/strong&gt; was released yesterday. This new version adds support for &lt;strong&gt;3 new devices&lt;/strong&gt; and fixes a bug with &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;--print-debug&lt;/span&gt;&lt;/tt&gt; option. Standalone builds are no longer considered experimental.&lt;/p&gt;
&lt;div class="section" id="new-supported-devices"&gt;
&lt;h2&gt;New Supported Devices&lt;/h2&gt;
&lt;p&gt;This version now supports three new devices: two variants of the Rival 5 and the Prime+.&lt;/p&gt;
&lt;div class="section" id="rival-5-and-rival-5-destiny-edition"&gt;
&lt;h3&gt;Rival 5 and Rival 5 Destiny Edition&lt;/h3&gt;
&lt;p&gt;The &lt;strong&gt;SteelSeries Rival 5&lt;/strong&gt; is a mouse that comes with 9 programmable buttons, 10 configurable LEDs and a lot of options. It is now almost fully supported, the only missing feature is the ability to set the rainbow effect only for some of the LEDs. This may be implemented later.&lt;/p&gt;
&lt;p&gt;The Rival 5 comes in two flavours, both now supported:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;the regular one (&lt;tt class="docutils literal"&gt;1038:183c&lt;/tt&gt;),&lt;/li&gt;
&lt;li&gt;and the Destiny Edition (&lt;tt class="docutils literal"&gt;1038:183e&lt;/tt&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Device documentation:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="https://flozz.github.io/rivalcfg/devices/rival5.html"&gt;https://flozz.github.io/rivalcfg/devices/rival5.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A big thanks to &lt;a class="reference external" href="https://github.com/Saltblob"&gt;Saltblob&lt;/a&gt; and &lt;a class="reference external" href="https://github.com/nonoo"&gt;nonoo&lt;/a&gt; who helped to support this mouse, and to all contributors that &lt;a class="reference external" href="https://github.com/nonoo"&gt;supported this project&lt;/a&gt; as it allowed me to actually buy the device to finalize its support!&lt;/p&gt;
&lt;div class="figure"&gt;
&lt;a class="reference external image-reference" href="./images/steelseries_rival_5_and_rival_5_destiny_edition.webp"&gt;
&lt;img alt="SteelSeries Rival 5 mouse. Left: regular version, Right: Destiny Edition" src="https://rivalcfg.flozz.org/news/release_v4.17.0/images/steelseries_rival_5_and_rival_5_destiny_edition.webp" /&gt;
&lt;/a&gt;
&lt;p class="caption"&gt;SteelSeries Rival 5 mouse. Left: regular version, Right: Destiny Edition&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="prime"&gt;
&lt;h3&gt;Prime+&lt;/h3&gt;
&lt;p&gt;The &lt;strong&gt;SteelSeries Prime+&lt;/strong&gt; mouse has 6 buttons and one LED (under the wheel). It is almost identical to the regular Prime except it has a small OLED screen under the device. Currently, only the most important features like sensor sensitivity (DPI), LED color, and button bindings are supported for this device. The following features are not supported yet and may be implemented in the future:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;OLED screen under the mouse&lt;/li&gt;
&lt;li&gt;Lift-off distance of the sensor&lt;/li&gt;
&lt;li&gt;Advanced illumination configurations&lt;/li&gt;
&lt;li&gt;Button bindings on the wheel (scroll)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Prime+ documentation:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="https://flozz.github.io/rivalcfg/devices/prime_plus.html"&gt;https://flozz.github.io/rivalcfg/devices/prime_plus.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="figure"&gt;
&lt;a class="reference external image-reference" href="./images/steelseries_prime_plus_with_oled_screen.webp"&gt;
&lt;img alt="SteelSeries Prime+ mouse with its OLED screen" src="https://rivalcfg.flozz.org/news/release_v4.17.0/images/steelseries_prime_plus_with_oled_screen.webp" /&gt;
&lt;/a&gt;
&lt;p class="caption"&gt;SteelSeries Prime+ mouse with its OLED screen&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="print-debug-crash-fixed"&gt;
&lt;h2&gt;Print Debug Crash Fixed&lt;/h2&gt;
&lt;p&gt;Since the change of build system operated in v4.16.0 (&lt;tt class="docutils literal"&gt;setuptools&lt;/tt&gt; replaced by &lt;tt class="docutils literal"&gt;Flit&lt;/tt&gt;), the &lt;tt class="docutils literal"&gt;&amp;quot;rivalcfg &lt;span class="pre"&gt;--print-debug&amp;quot;&lt;/span&gt;&lt;/tt&gt; command, that prints some information useful when you want to report a bug, was not working anymore as it relied on &lt;tt class="docutils literal"&gt;setuptools&lt;/tt&gt; to get the version of the &lt;tt class="docutils literal"&gt;hidapi&lt;/tt&gt; library. This is now fixed.&lt;/p&gt;
&lt;p&gt;Note that the command may have worked for you if you installed Rivalcfg from source as &lt;tt class="docutils literal"&gt;setuptools&lt;/tt&gt; may already be present on your system.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="standalone-builds"&gt;
&lt;h2&gt;Standalone Builds&lt;/h2&gt;
&lt;p&gt;Standalone builds are compiled versions of Rivalcfg, available for &lt;strong&gt;Linux&lt;/strong&gt;, &lt;strong&gt;macOS&lt;/strong&gt; and &lt;strong&gt;Windows&lt;/strong&gt;. They are easy to use as the only thing you have to do is extract some files and you have a working version of Rivalcfg. No dependency to install, no developer tool to use (&lt;tt class="docutils literal"&gt;pip&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;git&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;venv&lt;/tt&gt;,...).&lt;/p&gt;
&lt;p&gt;I already published a post about standalone builds in February if you want to read more:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="https://rivalcfg.flozz.org/news/new-standalone-builds-for-linux-macos-and-windows/"&gt;2026-02-24 - New standalone builds for Linux, macOS and Windows&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Since this v4.17.0 version of Rivalcfg, standalone builds are no longer considered experimental and are the recommended way to use the software.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="documentation-and-website"&gt;
&lt;h2&gt;Documentation and Website&lt;/h2&gt;
&lt;p&gt;The Rivalcfg website and documentation are being improved.&lt;/p&gt;
&lt;p&gt;A new &amp;quot;device&amp;quot; page was added to the website. It lists all supported mice with a direct link to their documentation, and it also lists all devices that are not yet supported.&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="https://rivalcfg.flozz.org/devices.html"&gt;List of supported and unsupported devices&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The &amp;quot;installation&amp;quot; page of the documentation was fully rewritten to be simpler to read and now only documents installing from sources. Standalone build downloads and other ways to install Rivalcfg (like the AUR package for Arch Linux) are now listed on the &amp;quot;download&amp;quot; page of the website.&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="https://flozz.github.io/rivalcfg/install.html"&gt;Documentation: Install Rivalcfg From Sources&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://rivalcfg.flozz.org/download.html"&gt;Download page of the website&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The theme of the documentation has also been updated to use the same colors, logo and favicon as the website.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="complete-changelog"&gt;
&lt;h2&gt;Complete Changelog&lt;/h2&gt;
&lt;p&gt;Here is the complete changelog for &lt;strong&gt;Rivalcfg 4.17.0&lt;/strong&gt;:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;feat(device) Added support of the Rival 5 (1038:183C) mouse (&amp;#64;Saltblob, &amp;#64;nonoo, &amp;#64;flozz, #165, #268)&lt;/li&gt;
&lt;li&gt;feat(device) Added support of the Rival 5 Destiny Edition (1038:183E) mouse (&amp;#64;flozz)&lt;/li&gt;
&lt;li&gt;feat(device) Added initial support of the Prime+ (1038:182C) mouse (&amp;#64;BenJamesAndo, &amp;#64;flozz, #201)&lt;/li&gt;
&lt;li&gt;fix(debug): Fixed a crash when getting hidapi version without having setuptools installed (&amp;#64;flozz)&lt;/li&gt;
&lt;li&gt;misc(standalone): Added a standalone build for Linux (&amp;#64;flozz)&lt;/li&gt;
&lt;li&gt;misc(standalone): Added a standalone build for Windows (&amp;#64;flozz, #231)&lt;/li&gt;
&lt;li&gt;misc(standalone): Added a standalone build for macOS (&amp;#64;flozz)&lt;/li&gt;
&lt;li&gt;misc(ssdb): Updated ssdb script to extract the product_id of wireless mice dongles (&amp;#64;flozz)&lt;/li&gt;
&lt;li&gt;docs(device): Added missing Aerox 5 documentation (&amp;#64;flozz)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
</content><category term="release"/></entry><entry><title>[hotfix] Rivalcfg v4.16.1 released with a fix for the Rival 3 Wireless Gen 2 sensitivity settings</title><link href="https://rivalcfg.flozz.org/news/release_v4.16.1/" rel="alternate"/><published>2026-03-10T00:00:00+01:00</published><updated>2026-03-10T00:00:00+01:00</updated><author><name>Fabien "FLOZz" LOISON</name></author><id>tag:rivalcfg.flozz.org,2026-03-10:/news/release_v4.16.1/</id><summary type="html">&lt;p&gt;A bug in &lt;strong&gt;Rivalcfg v4.16.0&lt;/strong&gt; affects the sensitivity settings of the &lt;strong&gt;SteelSeries Rival 3 Wireless Gen 2&lt;/strong&gt; mouse.&lt;/p&gt;
&lt;p&gt;When fewer than 5 sensitivity presets are configured, Rivalcfg sets an incorrect sensitivity value on the Y axis. For example, if you configure only one preset, the vertical axis sensitivity …&lt;/p&gt;</summary><content type="html">&lt;p&gt;A bug in &lt;strong&gt;Rivalcfg v4.16.0&lt;/strong&gt; affects the sensitivity settings of the &lt;strong&gt;SteelSeries Rival 3 Wireless Gen 2&lt;/strong&gt; mouse.&lt;/p&gt;
&lt;p&gt;When fewer than 5 sensitivity presets are configured, Rivalcfg sets an incorrect sensitivity value on the Y axis. For example, if you configure only one preset, the vertical axis sensitivity is set to 100 DPI, causing the cursor to appear to move almost exclusively horizontally, which effectively makes the device unusable.&lt;/p&gt;
&lt;p&gt;This bug is now &lt;strong&gt;fixed in Rivalcfg v4.16.1&lt;/strong&gt;, released today. If you own a SteelSeries Rival 3 Wireless Gen 2, you are encouraged to update as soon as possible.&lt;/p&gt;
&lt;p&gt;If you were affected by this issue, simply reconfigure the sensitivity settings using this new version of Rivalcfg. Doing so will restore the correct configuration and make the device behave normally again.&lt;/p&gt;
&lt;p&gt;For a more technical description of the problem, please refer to &lt;a class="reference external" href="https://github.com/flozz/rivalcfg/issues/273"&gt;issue #273&lt;/a&gt;.&lt;/p&gt;
&lt;div class="section" id="complete-changelog"&gt;
&lt;h2&gt;Complete Changelog&lt;/h2&gt;
&lt;p&gt;Here is the complete changelog for &lt;strong&gt;Rivalcfg 4.16.1&lt;/strong&gt;:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;fix(device): Fixed Rival 3 Wireless Gen 2 becoming unusable after setting sensitivity (&amp;#64;flozz, #273)&lt;/li&gt;
&lt;li&gt;fix(handler): Fixed &lt;tt class="docutils literal"&gt;multidpi_range_choice_xy&lt;/tt&gt; handler with xxyy mapping using less than &lt;tt class="docutils literal"&gt;max_preset_count&lt;/tt&gt; presets (&amp;#64;flozz, #273)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
</content><category term="release"/></entry><entry><title>New standalone builds for Linux, macOS and Windows</title><link href="https://rivalcfg.flozz.org/news/new-standalone-builds-for-linux-macos-and-windows/" rel="alternate"/><published>2026-02-24T00:00:00+01:00</published><updated>2026-02-24T00:00:00+01:00</updated><author><name>Fabien "FLOZz" LOISON</name></author><id>tag:rivalcfg.flozz.org,2026-02-24:/news/new-standalone-builds-for-linux-macos-and-windows/</id><summary type="html">&lt;p&gt;Hello folks!&lt;/p&gt;
&lt;p&gt;I know it was sometimes difficult to use Rivalcfg because installing it from sources requires using unusual tools for those who are not Python developers (&lt;tt class="docutils literal"&gt;venv&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;pip&lt;/tt&gt;, etc.). It is even worse on Windows where you have to install Python first as it is not part of the …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Hello folks!&lt;/p&gt;
&lt;p&gt;I know it was sometimes difficult to use Rivalcfg because installing it from sources requires using unusual tools for those who are not Python developers (&lt;tt class="docutils literal"&gt;venv&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;pip&lt;/tt&gt;, etc.). It is even worse on Windows where you have to install Python first as it is not part of the system.&lt;/p&gt;
&lt;p&gt;That's why I am glad to announce the brand new &lt;strong&gt;standalone builds of Rivalcfg&lt;/strong&gt; that have been &lt;a class="reference external" href="issue231"&gt;requested one year and a half ago&lt;/a&gt;! Standalone builds are compiled versions of Rivalcfg you can run without installing any dependencies. You only have to download an archive (&lt;tt class="docutils literal"&gt;.tar.gz&lt;/tt&gt; for Linux, &lt;tt class="docutils literal"&gt;.zip&lt;/tt&gt; for Windows) or a disk image (&lt;tt class="docutils literal"&gt;.dmg&lt;/tt&gt;) for macOS and extract the files from it. That's it!&lt;/p&gt;
&lt;div class="figure"&gt;
&lt;img alt="Standalone releases of Rivalcfg for Linux, macOS and Windows" src="https://rivalcfg.flozz.org/news/new-standalone-builds-for-linux-macos-and-windows/images/screenshot_rivalcfg_standalone_releases.png" /&gt;
&lt;p class="caption"&gt;Standalone releases of Rivalcfg for Linux, macOS and Windows&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;For Windows users that may be less used to the command line, I added a help message and a pause in the execution of the program if Rivalcfg is run without arguments, which is the case when you double-click on the executable. This is to avoid having just a &amp;quot;flashing&amp;quot; terminal window that closes immediately, which may be interpreted as &lt;em&gt;&amp;quot;it does not work&amp;quot;&lt;/em&gt;.&lt;/p&gt;
&lt;div class="figure"&gt;
&lt;a class="reference external image-reference" href="https://rivalcfg.flozz.org/news/new-standalone-builds-for-linux-macos-and-windows/images/screenshot_rivalcfg_standalone_on_windows.png"&gt;
&lt;img alt="Standalone version of Rivalcfg on Windows" src="https://rivalcfg.flozz.org/news/new-standalone-builds-for-linux-macos-and-windows/images/screenshot_rivalcfg_standalone_on_windows.png" /&gt;
&lt;/a&gt;
&lt;p class="caption"&gt;Standalone version of Rivalcfg on Windows&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;I did not want to wait for the next Rivalcfg version to bring the standalone builds to folks who wanted to use them, so I released standalone builds for the last Rivalcfg version (v4.16.0). I flagged them as &amp;quot;experimental&amp;quot; as they are brand new. Do not hesitate to &lt;a class="reference external" href="open_issue"&gt;open an issue on GitHub&lt;/a&gt; if you find a bug.&lt;/p&gt;
&lt;p&gt;Please note that it is known that the &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;--print-debug&lt;/span&gt;&lt;/tt&gt; option is broken on those builds, and probably on the &amp;quot;regular&amp;quot; v4.16.0 version too, since I removed the dependency on &lt;tt class="docutils literal"&gt;setuptools&lt;/tt&gt;, this will be fixed in the next release.&lt;/p&gt;
&lt;p&gt;On a more technical note, those builds are made with a Python compiler named &lt;a class="reference external" href="https://nuitka.net/"&gt;Nuitka&lt;/a&gt;. The Linux and macOS versions are compiled with Python 3.14, which brings a beautifully colored help output. The Windows version, however, use Python 3.13 as it crashes with Python 3.14 (this Python version is still experimentally supported by Nuitka).&lt;/p&gt;
&lt;div class="figure"&gt;
&lt;a class="reference external image-reference" href="./images/rivalcfg_colored_output_rival100.png"&gt;
&lt;img alt="Rivalcfg colored help output (Rival 100)" src="https://rivalcfg.flozz.org/news/new-standalone-builds-for-linux-macos-and-windows/images/rivalcfg_colored_output_rival100.png" style="width: 500px;" /&gt;
&lt;/a&gt;
&lt;p class="caption"&gt;Rivalcfg colored help output (Rival 100)&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Along with this new way to distribute Rivalcfg, I added a &amp;quot;&lt;a class="reference external" href="/download.html"&gt;download&lt;/a&gt;&amp;quot; page on the website that references the standalone builds, and I updated the &lt;a class="reference external" href="https://flozz.github.io/rivalcfg/install.html"&gt;install documentation&lt;/a&gt; to make things simpler.&lt;/p&gt;
&lt;p&gt;See you in a month or two for the next Rivalcfg release! 😄️&lt;/p&gt;
</content><category term="announce"/></entry><entry><title>Rivalcfg v4.16.0 released with new supported devices and a lot of improvements!</title><link href="https://rivalcfg.flozz.org/news/release_v4.16.0/" rel="alternate"/><published>2026-02-14T00:00:00+01:00</published><updated>2026-02-14T00:00:00+01:00</updated><author><name>Fabien "FLOZz" LOISON</name></author><id>tag:rivalcfg.flozz.org,2026-02-14:/news/release_v4.16.0/</id><summary type="html">&lt;p&gt;&lt;strong&gt;Rivalcfg v4.16.0&lt;/strong&gt; was released on 2026-02-13. It adds support for &lt;strong&gt;3 new devices&lt;/strong&gt; and &lt;strong&gt;improves the CPI (sensitivity) setting&lt;/strong&gt; for many mice. On the technical side, this version adds official support for Python 3.14 and drops support for Python 3.9. The packaging has also been modernized …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;strong&gt;Rivalcfg v4.16.0&lt;/strong&gt; was released on 2026-02-13. It adds support for &lt;strong&gt;3 new devices&lt;/strong&gt; and &lt;strong&gt;improves the CPI (sensitivity) setting&lt;/strong&gt; for many mice. On the technical side, this version adds official support for Python 3.14 and drops support for Python 3.9. The packaging has also been modernized (the old &lt;tt class="docutils literal"&gt;setup.py&lt;/tt&gt; / &lt;tt class="docutils literal"&gt;setuptools&lt;/tt&gt; combo was replaced by &lt;tt class="docutils literal"&gt;pyproject.toml&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;Flit&lt;/tt&gt;).&lt;/p&gt;
&lt;div class="section" id="three-new-devices-supported"&gt;
&lt;h2&gt;Three new devices supported&lt;/h2&gt;
&lt;p&gt;As mentioned in the introduction, this version brings support for 3 new SteelSeries mice.&lt;/p&gt;
&lt;div class="section" id="aerox-3-wireless-cs2-dragon-lore-edition"&gt;
&lt;h3&gt;Aerox 3 Wireless CS2 Dragon Lore Edition&lt;/h3&gt;
&lt;p&gt;The first one is the &lt;strong&gt;&amp;quot;SteelSeries Wireless Gaming Mouse CS2 Dragon Lore Edition&amp;quot;&lt;/strong&gt;. It is just a &lt;em&gt;skin&lt;/em&gt; of the Aerox 3 Wireless, so it was easy to support. You will find more information about this mouse in the documentation:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="https://flozz.github.io/rivalcfg/devices/aerox3_wireless.html"&gt;https://flozz.github.io/rivalcfg/devices/aerox3_wireless.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="figure"&gt;
&lt;a class="reference external image-reference" href="./images/aerox_3_wireless_cs2_dragon_lore_edition.webp"&gt;
&lt;img alt="SteelSeries Wireless Gaming Mouse CS2 Dragon Lore Edition (Aerox 3 Wireless)" src="https://rivalcfg.flozz.org/news/release_v4.16.0/images/aerox_3_wireless_cs2_dragon_lore_edition.webp" style="width: 300px;" /&gt;
&lt;/a&gt;
&lt;p class="caption"&gt;SteelSeries Wireless Gaming Mouse CS2 Dragon Lore Edition (Aerox 3 Wireless)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="rival-3-gen-2"&gt;
&lt;h3&gt;Rival 3 Gen 2&lt;/h3&gt;
&lt;p&gt;The second one is the &lt;strong&gt;Rival 3 Gen 2&lt;/strong&gt;, a new iteration of the Rival 3. The main change is the ability to set different sensitivity values for X and Y axes. This required implementing a new handler to fully support the device. More info in the doc:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="https://flozz.github.io/rivalcfg/devices/rival3_gen2.html"&gt;https://flozz.github.io/rivalcfg/devices/rival3_gen2.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also, I would like to thank &lt;a class="reference external" href="https://github.com/orsonteodoro"&gt;Orson Teodoro&lt;/a&gt; who helped support this mouse! 😁️&lt;/p&gt;
&lt;div class="figure"&gt;
&lt;a class="reference external image-reference" href="./images/rival3_gen2.webp"&gt;
&lt;img alt="Rival 3 Gen 2, black and white versions" src="https://rivalcfg.flozz.org/news/release_v4.16.0/images/rival3_gen2.webp" style="width: 500px;" /&gt;
&lt;/a&gt;
&lt;p class="caption"&gt;Rival 3 Gen 2, black and white versions&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="rival-3-wireless-gen-2"&gt;
&lt;h3&gt;Rival 3 Wireless Gen 2&lt;/h3&gt;
&lt;p&gt;And the last one is the &lt;strong&gt;Rival 3 Wireless Gen 2&lt;/strong&gt;. Like the wired version, it is just a new iteration of the previous Rival 3 Wireless, with the ability to set different CPI values on X and Y axes.&lt;/p&gt;
&lt;p&gt;Please note that, as for the first version, the support of the Gen 2 is partial. The following features are currently not supported:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Color / illumination,&lt;/li&gt;
&lt;li&gt;Wheel scroll mapping,&lt;/li&gt;
&lt;li&gt;Power settings (high efficiency, smart illumination, sleep timer).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I will work on this later for both Gen 1 and Gen 2 devices. More information in the doc:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="https://flozz.github.io/rivalcfg/devices/rival3_wireless_gen2.html"&gt;https://flozz.github.io/rivalcfg/devices/rival3_wireless_gen2.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="figure"&gt;
&lt;a class="reference external image-reference" href="./images/rival3_wireless_gen2.webp"&gt;
&lt;img alt="Rival 3 Wireless Gen 2, black and white versions" src="https://rivalcfg.flozz.org/news/release_v4.16.0/images/rival3_wireless_gen2.webp" /&gt;
&lt;/a&gt;
&lt;p class="caption"&gt;Rival 3 Wireless Gen 2, black, white, lavender and aqua versions&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="improvement-of-the-cpi-setting"&gt;
&lt;h2&gt;Improvement of the CPI setting&lt;/h2&gt;
&lt;p&gt;To set the mouse sensitivity, Rivalcfg must convert the CPI requested by the user,
(for example, 1800 dpi) to a value understood by the sensor, such as &lt;tt class="docutils literal"&gt;0x14&lt;/tt&gt;.&lt;/p&gt;
&lt;p&gt;Some sensors are linear and are easy to map. For those, we may have &lt;tt class="docutils literal"&gt;[100 dpi = 0x01]&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;[200 dpi = 0x02]&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;[300 dpi = 0x03]&lt;/tt&gt; and so on. However, some other sensors are not linear and use a fixed conversion table that contains unexpected &amp;quot;jumps&amp;quot;. For example, the &lt;em&gt;TrueMove Air&lt;/em&gt; sensor is mapped with &lt;tt class="docutils literal"&gt;[100 dpi = 0x00]&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;[200 dpi = 0x02]&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;[300 dpi = 0x03]&lt;/tt&gt;, etc.&lt;/p&gt;
&lt;div class="figure"&gt;
&lt;a class="reference external image-reference" href="./images/truemove_air_sensor_non_linear_cpi_values.png"&gt;
&lt;img alt="TrueMove Air sensor is non-linear, so we can see &amp;quot;jumps&amp;quot;" src="https://rivalcfg.flozz.org/news/release_v4.16.0/images/truemove_air_sensor_non_linear_cpi_values.png" /&gt;
&lt;/a&gt;
&lt;p class="caption"&gt;TrueMove Air sensor is non-linear, so we can see &amp;quot;jumps&amp;quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;For non-linear sensors, Rivalcfg used to approximate values using a linear function. This works for most values, but for some of them it does not match the ones of the fixed table. In such cases, the behavior is undefined. It may set a slightly different sensitivity than the requested one, or it may not work at all.&lt;/p&gt;
&lt;p&gt;Anyway, this is now fixed. Rivalcfg v4.16.0 includes value tables for the &lt;em&gt;TrueMove Air&lt;/em&gt;, &lt;em&gt;TrueMove Core&lt;/em&gt; and &lt;em&gt;PMW3326&lt;/em&gt; sensors, so it now perfectly matches the SteelSeries GG Engine behavior.&lt;/p&gt;
&lt;p&gt;Mouse families that now have accurate CPI values are:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Aerox 3&lt;/li&gt;
&lt;li&gt;Aerox 3 Wireless&lt;/li&gt;
&lt;li&gt;Aerox 5&lt;/li&gt;
&lt;li&gt;Aerox 5 Wireless&lt;/li&gt;
&lt;li&gt;Aerox 9 Wireless&lt;/li&gt;
&lt;li&gt;Prime Wireless&lt;/li&gt;
&lt;li&gt;Rival 106 device&lt;/li&gt;
&lt;li&gt;Rival 110 device&lt;/li&gt;
&lt;li&gt;Rival 3&lt;/li&gt;
&lt;li&gt;Rival 3 Wireless&lt;/li&gt;
&lt;li&gt;Rival 300S device&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="complete-changelog"&gt;
&lt;h2&gt;Complete Changelog&lt;/h2&gt;
&lt;p&gt;Here is the complete changelog for &lt;strong&gt;Rivalcfg 4.16.0&lt;/strong&gt;:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;feat(devices): Added support for the Aerox 3 Wireless CS2 Dragon Lore Edition (1038:187a, 1038:1878) (&amp;#64;flozz)&lt;/li&gt;
&lt;li&gt;feat(devices): Added support for the Rival 3 Gen 2 (1038:1870) (#249, #257, &amp;#64;flozz, &amp;#64;orsonteodoro)&lt;/li&gt;
&lt;li&gt;feat(devices): Added support for the Rival 3 Wireless Gen 2 (1038:1872) (#258, &amp;#64;flozz)&lt;/li&gt;
&lt;li&gt;feat(handler): Added range_choice handler (&amp;#64;flozz)&lt;/li&gt;
&lt;li&gt;feat(handler): Added multidpi_range_choice handler (&amp;#64;flozz)&lt;/li&gt;
&lt;li&gt;feat(handler): Added multidpi_range_choice_xy handler (&amp;#64;flozz)&lt;/li&gt;
&lt;li&gt;fix(devices): Fixed DPI values for devices using the TrueMove Air sensor (&amp;#64;flozz):&lt;ul&gt;
&lt;li&gt;Aerox 3 Wireless (1038:183A, 1038:187A, 1038:1838, 1038:1878)&lt;/li&gt;
&lt;li&gt;Aerox 5 (1038:1850)&lt;/li&gt;
&lt;li&gt;Aerox 5 Wireless (1038:1854, 1038:185E, 1038:1862, 1038:1852, 1038:185C, 1038:1860)&lt;/li&gt;
&lt;li&gt;Aerox 9 Wireless (1038:185A, 1038:1876, 1038:1858, 1038:1874)&lt;/li&gt;
&lt;li&gt;Prime Wireless (1038:1842, 1038:184A, 1038:1840, 1038:1848)&lt;/li&gt;
&lt;li&gt;Rival 3 Wireless (1038:1830)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;fix(devices): Fixed DPI values for devices using the TrueMove Core sensor (&amp;#64;flozz):&lt;ul&gt;
&lt;li&gt;Aerox 3 (1038:1836)&lt;/li&gt;
&lt;li&gt;Rival 3 (1038:1824, 1038:184C)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;fix(devices): Fixed DPI values for devices using the PixArt PMW3326 sensor (&amp;#64;flozz):&lt;ul&gt;
&lt;li&gt;Rival 106 device (1038:1816)&lt;/li&gt;
&lt;li&gt;Rival 110 device (1038:1729)&lt;/li&gt;
&lt;li&gt;Rival 300S device (1038:1810)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;misc(tests): Added tests for the Aerox 5 device (1038:1850) (&amp;#64;flozz)&lt;/li&gt;
&lt;li&gt;misc: Modernized packaging setup.py/setuptools -&amp;gt; pyproject.toml/flit (&amp;#64;flozz)&lt;/li&gt;
&lt;li&gt;misc: Added Python 3.14 support (&amp;#64;flozz)&lt;/li&gt;
&lt;li&gt;misc!: Removed Python 3.9 support (&amp;#64;flozz)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
</content><category term="release"/></entry><entry><title>10 years of Rivalcfg, new Web site and a logo!</title><link href="https://rivalcfg.flozz.org/news/10-years-of-rivalcfg-new-web-site-and-a-logo/" rel="alternate"/><published>2026-02-13T00:00:00+01:00</published><updated>2026-02-13T00:00:00+01:00</updated><author><name>Fabien "FLOZz" LOISON</name></author><id>tag:rivalcfg.flozz.org,2026-02-13:/news/10-years-of-rivalcfg-new-web-site-and-a-logo/</id><summary type="html">&lt;p&gt;Hello folks!&lt;/p&gt;
&lt;p&gt;This year, &lt;strong&gt;Rivalcfg turns 10 years!&lt;/strong&gt; How time flies!&lt;/p&gt;
&lt;p&gt;It's been 10 years since I started reverse engineering USB devices. When I wrote the first commit of this project on March 28, 2016, I only wanted to be able to change the color of my brand new Rival …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Hello folks!&lt;/p&gt;
&lt;p&gt;This year, &lt;strong&gt;Rivalcfg turns 10 years!&lt;/strong&gt; How time flies!&lt;/p&gt;
&lt;p&gt;It's been 10 years since I started reverse engineering USB devices. When I wrote the first commit of this project on March 28, 2016, I only wanted to be able to change the color of my brand new Rival 100 mouse on Linux. I had no idea that 10 years later I would still be working on this project.&lt;/p&gt;
&lt;div class="figure"&gt;
&lt;a class="reference external image-reference" href="./images/rivalcfg_1.0.0_and_steelseries_rival_100.jpg"&gt;
&lt;img alt="Photo of my old Rival 100 mouse and screenshot of Rivalcfg 1.0.0 (released on April 5, 2016)" src="https://rivalcfg.flozz.org/news/10-years-of-rivalcfg-new-web-site-and-a-logo/images/rivalcfg_1.0.0_and_steelseries_rival_100.jpg" /&gt;
&lt;/a&gt;
&lt;p class="caption"&gt;Photo of my old Rival 100 mouse and screenshot of Rivalcfg 1.0.0 (released on April 5, 2016)&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Today, Rivalcfg aims to support any SteelSeries gaming mouse. I can currently count &lt;strong&gt;73 devices&lt;/strong&gt; listed by &lt;tt class="docutils literal"&gt;&amp;quot;rivalcfg &lt;span class="pre"&gt;--list&amp;quot;&lt;/span&gt;&lt;/tt&gt;. It sounds like a lot, but be aware that some are counted twice (when they have two different product IDs for wired and wireless modes), and some devices are just &lt;em&gt;skins&lt;/em&gt; of identical mice (for example, the Rival 300 family counts 10 devices, all technically the same).&lt;/p&gt;
&lt;p&gt;If I count &amp;quot;by hand&amp;quot;, I find &lt;strong&gt;24 different families of mice&lt;/strong&gt; 🐭️. That's still a lot for a single maintainer! Anyway, Rivalcfg now supports — or at least partially supports — most SteelSeries mice. Some are still missing, but I am working to fix that. 😉️&lt;/p&gt;
&lt;div class="section" id="a-brand-new-web-site"&gt;
&lt;h2&gt;A brand new Web site&lt;/h2&gt;
&lt;p&gt;After 10 years of existence, it is a shame this project still does not have a Web site, so I made one. Currently, it is mostly a landing page with links to the documentation and GitHub, but I will add more content later.&lt;/p&gt;
&lt;p&gt;I used to post about Rivalcfg on &lt;a class="reference external" href="https://blog.flozz.fr/"&gt;my blog&lt;/a&gt; and on my &lt;a class="reference external" href="https://buymeacoffee.com/flozz/posts"&gt;BuyMeACoffee&lt;/a&gt; page. But the content is mixed with other things and my blog is in French. This Web site will allow me to post some news about the project (mostly release announcements) in one place, and in English, to make it accessible to more people.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="rivalcfg-now-has-a-logo"&gt;
&lt;h2&gt;Rivalcfg now has a Logo&lt;/h2&gt;
&lt;p&gt;This week, I finally drew a logo for Rivalcfg. It represents a mouse with its scroll wheel, forming an &amp;quot;R&amp;quot;, like in Rivalcfg. It is inspired by the SteelSeries one but not too close to it, to avoid any legal issues.&lt;/p&gt;
&lt;div class="figure"&gt;
&lt;object data="https://rivalcfg.flozz.org/news/10-years-of-rivalcfg-new-web-site-and-a-logo/images/rivalcfg_logo.svg" type="image/svg+xml"&gt;Rivalcfg logo&lt;/object&gt;
&lt;p class="caption"&gt;Rivalcfg logo&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;The logo is already used on this Web site, and I will add it on GitHub too. It may also be used later for a future GUI.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="future-of-the-project"&gt;
&lt;h2&gt;Future of the project&lt;/h2&gt;
&lt;p&gt;In 2025 I almost not worked on Rivalcfg. That year was a difficult one for me, and I must admit I felt a little fatigue on this project... But I am back!&lt;/p&gt;
&lt;p&gt;A new Rivalcfg version (v4.16.0) will be released very soon. It will add support for latest SteelSeries mice and will improve the CPI (sensitivity) settings of all devices using the &lt;em&gt;TrueMove Core&lt;/em&gt;, &lt;em&gt;TrueMove Air&lt;/em&gt; and &lt;em&gt;PMW3326&lt;/em&gt; sensors.&lt;/p&gt;
&lt;p&gt;After this release, I will have to review a &lt;em&gt;pull request&lt;/em&gt; that adds support for the Rival 5 mouse, which should be released in v4.17.0. Then I will try to work on the ability to send multiple USB packets for a single setting. This will allow to support button bindings on the Aerox 9 and the bindings of the scroll wheel on some other devices.&lt;/p&gt;
&lt;p&gt;In a later futur, I want to work on a graphical user interface (using GTK 4). It would make Rivalcfg simpler to use for less technical folks, especially gamers who are new to Linux.&lt;/p&gt;
&lt;p&gt;Preliminary work for this GUI already started years ago (in the &lt;a class="reference external" href="https://github.com/flozz/rivalcfg/releases/tag/v4.4.0"&gt;v4.4.0&lt;/a&gt;, released at the end of 2021), when I added code to save mouse settings to the computer's disk. This is required to allow Rivalcfg to display the current state of the settings in the GUI as they cannot be retrieved from the device itself.&lt;/p&gt;
&lt;p&gt;Interestingly, I already developed a proof of concept for a GTK 3 GUI during a live coding session on Twitch, but I never had time to go further.&lt;/p&gt;
&lt;div class="figure"&gt;
&lt;a class="reference external image-reference" href="./images/screenshot_poc_gtk3_gui_rivalcfg.png"&gt;
&lt;img alt="Proof of concept of GUI for Rivalcfg" src="https://rivalcfg.flozz.org/news/10-years-of-rivalcfg-new-web-site-and-a-logo/images/screenshot_poc_gtk3_gui_rivalcfg.png" /&gt;
&lt;/a&gt;
&lt;p class="caption"&gt;Proof of concept GTK 3 GUI for Rivalcfg&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="that-s-all-folks"&gt;
&lt;h2&gt;That's all folks&lt;/h2&gt;
&lt;p&gt;That's it for today. I hope you enjoyed the reading and that Rivalcfg is useful to you. To stay informed about Rivalcfg, you can now subscribe to the &lt;a class="reference external" href="https://rivalcfg.flozz.org/news/feed.atom.xml"&gt;Atom feed&lt;/a&gt; of this Web site, join the &lt;a class="reference external" href="https://discord.gg/P77sWhuSs4"&gt;Discord&lt;/a&gt; server, or follow me on &lt;a class="reference external" href="https://mastodon.social/&amp;#64;FLOZz"&gt;Mastodon&lt;/a&gt; and &lt;a class="reference external" href="https://bsky.app/profile/flozz.fr"&gt;Bluesky&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;See you soon for the v4.16.0 release announcement! 😄️&lt;/p&gt;
&lt;/div&gt;
</content><category term="announce"/></entry></feed>