Logitech G 502X
After purging myself of all Microsoft products, even my beloved ergonomic trackball style mouse, I hadn’t really replaced what I gave up with anything of quality mouse-wise other than some drug-store generic-three-button gaming mouse. It worked fine for what it was, but paired with the NsCDE (not so common desktop environment) which has become my regular graphical desktop windows system due to stability, (and familiarity since the first Linuxes I used had its ancestor on it–Common Desktop Environment) I needed something with more programmable buttons. (For instance, in NsCDE you can “iconify a program” which is very handy, but the keystrokes are not so handy)
A quick glance on the net showed that the Logitech G 502 X could do this job with compatibility. It appeared to be pricier than I wanted to pay, but eventually my wife was able to sleuth one at a deal that was within the price range I was willing to spend. The compatibility with Linux, however, turned out to not exactly be the truth.
Non System D
The Linux distro I run intentionally does not use System D. I don’t really have anything against System D, but I have seen enough concerning how it runs with regard to resolvers and defaults that I do not think it is especially interested in privacy of user information as a first principle. I get that it allows for a standardized way to deal with init scripts, but I don’t think standardization is the right barometer. Windows is, after all, standardized in many, many ways. It just also happens to be an evil operating system.
The recommendation for Linux, and the G502 mouse suggest a program called “libratbag” (who comes up with these names?) and a GUI interface called Piper. Piper, it turns out, relies heavily on System D, so you can forget about a nice little graphical interface for programming your mouse buttons. Libratbag doesn’t necessarily rely on System D, but has a stilted syntax and for the purposes of my needs, did not seem to allow for the mouse to actually do what I instructed Libratbag to do. (Libratbag does heavily suggest you use System D and since I was trying to avoid it, there is a good chance some user error was introduced that I didn’t spend more time trying to fix. I spent about a day trying different solutions anyway, and that was more than enough) So, another solution was going to have to happen, and this was likely going to mean firing up windows within a VM. One last stop before that point was trying Solaar. It didn’t even detect my mouse, so I knew it was off to the VM harbor.
Windows VM
I happened to have a Windows 7 VM all ready in Qemu, and thought I might try the suggested Onboard Memory Manger to program a profile to save to the mouse for use with Linux. This didn’t work, and I figured probably Windows 7 was a little too old for this trick. I wasn’t about to try the G Hub from Logitech on Windows 7 since past experience with Logitech and popular opinion suggested that G Hub was, on a good day, a dumpster fire. So, I thought I’d fire up a Windows 10 via Qemu utilizing QuickEmu. After some time, I was able to allow the mouse to pass through, but when I did, the keyboard would stop allowing me to type. So, the Onboard Memory Manager app worked, but I couldn’t tell it to do anything. My keyboard was not a USB style keyboard, so passing it through via USB was out of the question, so the next stop was VirtualBox.
VirtualBox
VirtualBox allowed all the passthroughs, and when I started the Onboard Memory Manager app it ran AND, importantly, I could type. Unfortunately, Onboard Memory Manager did not save my settings to the mouse and seemed to also not be detecting the full range of options available to the G502X. That meant that I was going to have to install the maligned Logitech G Hub software instead to do the job. Fortunately, it installed fairly smoothly, although I can see why people don’t like it. It is a large download for doing very little other than controlling mouse buttons, and it is very slow to start. It wants you to have an account which you must sign up for before you can use it, and all of this seems a little ridiculous just to program a mouse you own. The next complaint about it is that it is counter-intuitive to use, and there is a certain “Logitech G Hub dance” you have to do if you want to program your onboard memory. Fortunately for you, I’ve taken pictures of the process to help you cut down the time required to get what should be a simple task accomplished.
The Picture Tour
In order to program your new G502X or similar product, you are going to need to pay careful attention to the thing I’ve circled in yellow on the upper right. It tells you the name of the profile you are editing, which, in this example, is default. Once you edit whatever you intend to edit, which is probably going to be a macro, (there is a macro tab in the program for editing those) you drag it over to the button that corresponds to the mouse button you desire to trigger said action. Once you are done with that, you will need to push the second button, toward the lower left in my screen shot, that toggles the onboard memory manager on. When you do this, you won’t be able to edit your mouse buttons any more, since the system assumes you are finished with that. What you will be able to do is access the settings of the “On Board Memory Mode” which shows slots and profiles that are active.
In my example I’ve drawn a yellow arrow next to the active profile. You want to be sure that whatever this says is the name of the profile you saw in the upper right when you were editing your mouse buttons. So, even though in the example photo it says “Profile 2” what it should say if we wanted settings we edited in the previous screen to take hold is “Default”. Once you do this, it is safe to close down your VM and your mouse, at least in my case, won’t work since it was passed through to the VM. You have to then unplug and re-plug your USB mouse into your tower or laptop.
Observations
If this seems convoluted and tortured to use system hardware, it’s because it is. Many are the pleas for G Hub to be supported on Linux, and Logitech usually answers the same which seems to be “We aren’t aware of any plans for this.” I guess they must be making enough from Windows users that it isn’t a priority, but it is odd to make your hardware dependent on a specific OS in the case of a mouse.
Outcome
A lot of time was spent for me trying to cajole this mouse into working with a non-systemd distro. Often, the world has a tendency to make the easy things the more costly in terms of the trade-offs. The assessment I’d give for this specific situation is that Logitech is needlessly making this entire process more difficult than it has to be because it wants email addresses and user device information–preferably from a windows system where it might be able to harvest even more data. This is not really treating your users with respect since the end goal isn’t to see how much information in terms of meta-data you can squeeze from your user base to sell to someone else. Rather, the business is to sell them a mouse that they can then use for their purposes. Anything else is an “unstated business objective” that the consumer isn’t necessarily agreeing to since their mouse is going to be held hostage until they agree to the corporate terms. While I think the G502X is a good product from the standpoint of function, the getting-it-there is an unnecessary snarl of some kind of corporate self-interest that shouldn’t be the case.