This is why I bought the Logitech G502 X mouse for my Linux desktop instead of the MX Master 3S

A white coloured gaming mouse with lots of side buttons. It is resting on a piece of white paper. The white paper is on a mouse pad that has a wrist rest in the foreground, which is a red and black colour.

I wanted to move off the Redragon Mammoth mouse, mainly because I started to want a free-scrolling mode scroll wheel. I often read long posts, or I am editing long webpages, and find myself having to hit the scroll wheel 5 or 10 times to scroll up or down. With a free spinning wheel, it is a single flick, and it goes up or down the page.

Because I’m on Linux, I do also check to see what manufacturer (or 3rd party open source devs) have the best available software for configuring devices. Logitech often comes out well due to its great compatibility, but also for apps such as Piper, Solaar, and Libratbag for managing Logitech mice.

So the Logitech MX Master 3S had come up early in my selection process because it was very popular as a productivity mouse. I also started seeing that the Logitech G502 X (it’s 3 variants) came up quite a bit as a gaming mouse option, and I started to compare the two types because I do mostly productivity work, but I also like gaming at odd times.

What started to crystallise was that the MX Master 3S is very good for productivity with its extra side scroll wheel, tracking sensitivity adjustment, track on glass, and near silent buttons, but it is noticeably heavier (141g), and it’s response time is quite a bit slower too, so it was just not recommended anywhere really for any gaming.

The G502 X on the other hand also has the free spinning scroll wheel (which has a top button to switch between free spin and ratchet modes), without the horizontal scroll wheel, but it’s scroll wheel on top can also click left and right to sort of work for lesser horizontal scrolling (tilting scroll wheel). The G502 X is also very much lighter at about 89g and has nine programmable buttons in all (more than the MX Master 3S). Sop, in fact, the G502 X can still hold its own for productivity too. The fact that it has an insane max DPI of 25,600 was not really relevant as I generally use around 2,400 DPI only, but I did like it’s 1,000Hz or 1ms poll rate (vs MX Master 3S’s 125 Hz or 8ms) and it’s click latency of 2.65 ms response time (vs MX Master 3S’s 13.2ms). So, for gaming especially, the G502 X was a lot more precise and without any lag.

I really don’t need RGB lighting again (although they can be useful to signal what mode the mouse is in, maybe) nor did I particularly need a wireless model, so the G502 X Plus (which costs even more than the MX Master 3S) was eliminated. The wired G502 X is actually quite a bit cheaper than the MX Master 3S, so it pretty good bang for the buck.

The G502 X has 5 on-board memory profiles (unlike the MX Master 3S), which is important for Linux, as you can program the profiles wherever, and then just switch them on the mouse as you use it. There is no need to even run any daemon process. This means you can have a profile setup for say media, another for gaming, and another for productivity work. The mouse does have a small LED light on top that illuminates a different colour depending on which profile has been selected (it only lights for about 5 seconds, which is a pity).

One thing that I was not expecting, was the cursor was skipping sometimes on the screen. After a while, I realised it was actually due to my (fairly new) mouse pad. The surface has a very fine matte finish, and it seems for some reason this throws the optical sensor out a bit. So that is why the photo on this post shows the piece of paper on the mouse pad. It tracks perfectly well with the paper in place (so much for it works on any surface!).

The other disappointment was that the nice graphical Piper app for Linux only seemed to recognise about 7 of the buttons, and it’s graphical depiction of the mouse was not working. It seems there was an update pushed to the project a year ago, but they have not released it. It works to an extent, but I decided then to just rather go with the underlying CLI app called Libratbag which did fully support the G502 X mouse. It may sound a bit complicated, but the config files are actually easy to get the hang of. Here is an example of what one of the profiles looks like:

hollering-marmot - Logitech G502 X
             Model: usb:046d:c099:0
 Number of Buttons: 11
    Number of Leds: 0
Number of Profiles: 5
Profile 0:
  Name: n/a
  Report Rate: 1000Hz
  Resolutions:
    0: 800dpi
    1: 1200dpi
    2: 1600dpi
    3: 2400dpi (active) (default)
    4: 3200dpi
  Button: 0 is mapped to 'button 1'
  Button: 1 is mapped to 'button 2'
  Button: 2 is mapped to 'button 3'
  Button: 3 is mapped to macro '↓LEFTALT ↕LEFT ↑LEFTALT'
  Button: 4 is mapped to 'resolution-alternate'
  Button: 5 is mapped to macro '↓LEFTALT ↕RIGHT ↑LEFTALT'
  Button: 6 is mapped to macro '↕PREVIOUSSONG'
  Button: 7 is mapped to macro '↕NEXTSONG'
  Button: 8 is mapped to macro '↕HOME'
  Button: 9 is mapped to macro '↕VOLUMEUP'
  Button: 10 is mapped to macro '↕VOLUMEDOWN'

Once set up, you just load the config and use the mouse buttons to switch profiles. I went a step further and also configured a page on my Stream Deck to query the profile number, current active resolution, current active DPI, and current active rate. I also set up three buttons to each quickly select a different profile, and another button to run a CLI config script for Libratbag. This script file brings up a menu in the console to display the full device info, enable a profile, set an active profile, load a config into a profile, and to disable a profile. Libratbag actually gives a lot of flexibility if one just spends a little time setting up what you want to use. Here is an example of what my Stream Deck page currently looks like:

Screenshot 20240017 110013

The Ratbegger config button executes bash -c "konsole --noclose -e 'runratbegger.sh'" & and the query Active Profile button runs ratbagctl hollering-marmot profile active get. To set the active profile to profile 0 the button is executing ratbagctl hollering-marmot profile active set 0.

All in all, I’m very happy with the mouse. I just want to spend more time configuring its profiles and buttons. I can definitely notice the responsiveness and the scroll wheel work a lot better than my previous mouse, and I like that there is some configuring I can do for it in Linux.