Razer MiddleMouseBTN is not working

Here’s my Inxi:

╭─sfox@desktop in ~ as 🧙 took 0s
[🔴] × garuda-inxi
System:
Kernel: 6.12.6-zen1-1-zen arch: x86_64 bits: 64 compiler: gcc v: 14.2.1
clocksource: tsc avail: hpet,acpi_pm
parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
root=UUID=f0ce5d7f-1069-4632-85ba-4da20600b6af rw rootflags=subvol=@
quiet loglevel=3 ibt=off
Desktop: KDE Plasma v: 6.2.4 tk: Qt v: N/A info: frameworks v: 6.9.0
wm: kwin_wayland vt: 1 dm: SDDM Distro: Garuda base: Arch Linux
Machine:
Type: Desktop System: Gigabyte product: Z170X-UD3 v: N/A
serial: <superuser required>
Mobo: Gigabyte model: Z170X-UD3-CF v: x.x serial: <superuser required>
uuid: <superuser required> UEFI: American Megatrends v: F23g
date: 03/09/2018
CPU:
Info: model: Intel Core i7-6700 bits: 64 type: MT MCP arch: Skylake-S
gen: core 6 level: v3 note: check built: 2015 process: Intel 14nm family: 6
model-id: 0x5E (94) stepping: 3 microcode: 0xF0
Topology: cpus: 1x dies: 1 clusters: 4 cores: 4 threads: 8 tpc: 2
smt: enabled cache: L1: 256 KiB desc: d-4x32 KiB; i-4x32 KiB L2: 1024 KiB
desc: 4x256 KiB L3: 8 MiB desc: 1x8 MiB
Speed (MHz): avg: 800 min/max: 800/4000 scaling: driver: intel_pstate
governor: powersave cores: 1: 800 2: 800 3: 800 4: 800 5: 800 6: 800 7: 800
8: 800 bogomips: 54398
Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
Vulnerabilities: <filter>
Graphics:
Device-1: NVIDIA TU104 [GeForce RTX 2060] driver: nvidia v: 565.77
alternate: nouveau,nvidia_drm non-free: 550.xx+ status: current (as of
2024-09; EOL~2026-12-xx) arch: Turing code: TUxxx process: TSMC 12nm FF
built: 2018-2022 pcie: gen: 2 speed: 5 GT/s lanes: 16 link-max: gen: 3
speed: 8 GT/s ports: active: none off: HDMI-A-1 empty: DP-1,DP-2,DP-3
bus-ID: 01:00.0 chip-ID: 10de:1e89 class-ID: 0300
Display: wayland server: X.org v: 1.21.1.15 with: Xwayland v: 24.1.4
compositor: kwin_wayland driver: X: loaded: nvidia
unloaded: modesetting,nouveau alternate: fbdev,nv,vesa gpu: nvidia
display-ID: 0
Monitor-1: HDMI-A-1 res: 1920x1080 size: N/A modes: N/A
API: EGL v: 1.5 hw: drv: nvidia platforms: device: 0 drv: nvidia gbm:
drv: nvidia surfaceless: drv: nvidia wayland: drv: nvidia x11: drv: nvidia
API: OpenGL v: 4.6.0 vendor: nvidia v: 565.77 glx-v: 1.4
direct-render: yes renderer: NVIDIA GeForce RTX 2060/PCIe/SSE2
memory: 5.86 GiB display-ID: :1.0
API: Vulkan v: 1.4.303 layers: 15 device: 0 type: discrete-gpu
name: NVIDIA GeForce RTX 2060 driver: N/A device-ID: 10de:1e89
surfaces: xcb,xlib,wayland device: 1 type: cpu name: llvmpipe (LLVM
18.1.8 256 bits) driver: N/A device-ID: 10005:0000
surfaces: xcb,xlib,wayland
Audio:
Device-1: Intel 100 Series/C230 Series Family HD Audio vendor: Gigabyte
driver: snd_hda_intel v: kernel alternate: snd_soc_avs bus-ID: 00:1f.3
chip-ID: 8086:a170 class-ID: 0403
Device-2: NVIDIA TU104 HD Audio driver: snd_hda_intel v: kernel pcie:
gen: 3 speed: 8 GT/s lanes: 16 bus-ID: 01:00.1 chip-ID: 10de:10f8
class-ID: 0403
Device-3: C-Media CMI8788 [Oxygen HD Audio] vendor: ASUSTeK Virtuoso 100
driver: snd_virtuoso v: kernel bus-ID: 0f:04.0 chip-ID: 13f6:8788
class-ID: 0401
API: ALSA v: k6.12.6-zen1-1-zen status: kernel-api with: aoss
type: oss-emulator tools: N/A
Server-1: sndiod v: N/A status: off tools: aucat,midicat,sndioctl
Server-2: PipeWire v: 1.2.7 status: active with: 1: pipewire-pulse
status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin
4: pw-jack type: plugin tools: pactl,pw-cat,pw-cli,wpctl
Network:
Device-1: Intel Ethernet I219-V vendor: Gigabyte driver: e1000e v: kernel
port: N/A bus-ID: 00:1f.6 chip-ID: 8086:15b8 class-ID: 0200
IF: enp0s31f6 state: up speed: 1000 Mbps duplex: full mac: <filter>
Info: services: NetworkManager,systemd-timesyncd
Drives:
Local Storage: total: 2.27 TiB used: 28.26 GiB (1.2%)
SMART Message: Unable to run smartctl. Root privileges required.
ID-1: /dev/sda maj-min: 8:0 vendor: Micron model: MTFDDAV256TBN-1AR1ZABHA
size: 238.47 GiB block-size: physical: 4096 B logical: 512 B speed: 6.0 Gb/s
tech: SSD serial: <filter> fw-rev: 0014 scheme: GPT
ID-2: /dev/sdb maj-min: 8:16 vendor: Samsung model: SSD 850 EVO 500GB
size: 465.76 GiB block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s
tech: SSD serial: <filter> fw-rev: 2B6Q scheme: GPT
ID-3: /dev/sdc maj-min: 8:32 vendor: SanDisk model: SD8SN8U256G1122
size: 238.47 GiB block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s
tech: SSD serial: <filter> fw-rev: 0000 scheme: GPT
ID-4: /dev/sdd maj-min: 8:48 vendor: Western Digital
model: WD10EZEX-08WN4A0 size: 931.51 GiB block-size: physical: 4096 B
logical: 512 B speed: 6.0 Gb/s tech: HDD rpm: 7200 serial: <filter>
fw-rev: 1A02 scheme: GPT
ID-5: /dev/sde maj-min: 8:64 vendor: Crucial model: CT480BX200SSD1
size: 447.13 GiB block-size: physical: 4096 B logical: 512 B speed: 6.0 Gb/s
tech: SSD serial: <filter> fw-rev: .6 scheme: MBR
Partition:
ID-1: / raw-size: 238.17 GiB size: 238.17 GiB (100.00%)
used: 28.26 GiB (11.9%) fs: btrfs dev: /dev/sdc2 maj-min: 8:34
ID-2: /boot/efi raw-size: 300 MiB size: 299.4 MiB (99.80%)
used: 584 KiB (0.2%) fs: vfat dev: /dev/sdc1 maj-min: 8:33
ID-3: /home raw-size: 238.17 GiB size: 238.17 GiB (100.00%)
used: 28.26 GiB (11.9%) fs: btrfs dev: /dev/sdc2 maj-min: 8:34
ID-4: /var/log raw-size: 238.17 GiB size: 238.17 GiB (100.00%)
used: 28.26 GiB (11.9%) fs: btrfs dev: /dev/sdc2 maj-min: 8:34
ID-5: /var/tmp raw-size: 238.17 GiB size: 238.17 GiB (100.00%)
used: 28.26 GiB (11.9%) fs: btrfs dev: /dev/sdc2 maj-min: 8:34
Swap:
Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default) zswap: no
ID-1: swap-1 type: zram size: 23.42 GiB used: 0 KiB (0.0%) priority: 100
comp: zstd avail: lzo-rle,lzo,lz4,lz4hc,deflate,842 max-streams: 8
dev: /dev/zram0
Sensors:
System Temperatures: cpu: 37.0 C mobo: N/A
Fan Speeds (rpm): N/A
Info:
Memory: total: 24 GiB available: 23.42 GiB used: 3.75 GiB (16.0%)
Processes: 279 Power: uptime: 50m states: freeze,mem,disk suspend: deep
avail: s2idle wakeups: 0 hibernate: platform avail: shutdown, reboot,
suspend, test_resume image: 9.32 GiB services: org_kde_powerdevil,
power-profiles-daemon, upowerd Init: systemd v: 257 default: graphical
tool: systemctl
Packages: pm: pacman pkgs: 2407 libs: 612 tools: octopi,pamac,paru
pm: flatpak pkgs: 0 Compilers: clang: 18.1.8 gcc: 14.2.1 Shell: garuda-inxi
default: fish v: 3.7.1 running-in: konsole inxi: 3.3.36
Garuda (2.6.26-1):
System install date:     2024-12-22
Last full system update: 2024-12-23 ↻
Is partially upgraded:   No
Relevant software:       snapper NetworkManager dracut nvidia-dkms
Windows dual boot:       Probably (Run as root to verify)
Failed units:            openrazer-daemon.service

So, earlier I had the problem that Minigalaxy wouldn’t start. That issue was bypassed by simply using the Heroic Launcher.
Now it turns out that my middle mouse button isn’t working either. And, once again, after endless troubleshooting loops with ChatGPT, this is also causing problems.
At first, we tried to handle it “the usual way.” Then we moved on to “Install the OpenRazer drivers.”

However, this turned out to be quite a challenge and ultimately failed.
Despite Pamac and Pacman saying everything was installed fine, there’s no kernel module, no binary file, no daemon.

I then wrote the daemon file myself (with ChatGPT’s help) and tried to start it using systemctl. It didn’t work at first because it had root permissions. So, I stopped it, added it to the openrazer group, rebooted, but still no luck—it couldn’t start because it didn’t have permissions. Then we did it again, this time assigning the file to my personal user group, which also failed.

ChatGPT keeps going in circles. If two things don’t work, it immediately suggests “Reinstall OpenRazer,” run a system update, and check if your mouse has hardware damage.
I’ve done this at least 30 times and haven’t gotten anywhere.

Another suggestion was to install software called “Polychromatic” because it supposedly does something useful. Installation (via sudo pacman -S) worked fine, but just launching the software throws the exact same error I encountered with Minigalaxy.

╭─sfox@desktop in ~ took 2s
╰─λ polychromatic-cli
Traceback (most recent call last):
File "/usr/bin/polychromatic-cli", line 30, in <module>
import polychromatic.base as base_class
ModuleNotFoundError: No module named 'polychromatic'

We where also switching from Wayland to X-Org back and forth several times.

The thing is, I’m not a Linux expert. We’ve checked this and that. Some software called evtest told ChatGPT that the kernel isn’t even registering the click. And so on. I understand only about 10% of all this.
But without the middle mouse button, I can’t scroll smoothly, can’t move the camera in games, and can’t open links in a new tab with one click.
It’s all very frustrating.

Attached are all the possible logs of what’s happened:

╭─sfox@desktop in ~ took 0s
[🔴] × sudo pacman -Ss openrazer
[sudo] Passwort für sfox:
extra/openrazer-daemon 3.9.0-2 [Installed]
Userspace daemon that abstracts access to the kernel driver. Provides a DBus service for applications to use
extra/openrazer-driver-dkms 3.9.0-2 [Installed]
OpenRazer kernel modules sources
extra/python-openrazer 3.9.0-2 [Installed]
Library for interacting with the OpenRazer daemon
chaotic-aur/polychromatic 0.9.3-1.1 [Installed]
RGB lighting management front-end application for OpenRazer

There are more logs, but threads have Character Limits. So I try to post them as answers to myself.

Edit: cant post them here, they are simply to long. So PasteBin will do:

and

╭─sfox@desktop in ~ took 32s
[🧱] × xev | grep button
state 0x10, button 1, same_screen YES
state 0x110, button 1, same_screen YES
state 0x10, button 3, same_screen YES
state 0x410, button 3, same_screen YES
state 0x10, button 9, same_screen YES
state 0x10, button 9, same_screen YES
state 0x10, button 8, same_screen YES
state 0x10, button 8, same_screen YES
state 0x10, button 1, same_screen YES
state 0x110, button 1, same_screen YES
state 0x10, button 5, same_screen YES
state 0x1010, button 5, same_screen YES
state 0x10, button 4, same_screen YES
state 0x810, button 4, same_screen YES

all buttons work, but the middle one dont.

A major flaw with ChatGPT (or similar chat bots) is that they will never admit when they don’t have a good answer for something. They will just continue to offer suggestions endlessly, each response written with the confidence of an expert…even though often the suggestions are bad, or crucial details are inaccurate, or information has been completely fabricated.

If they would just train the things to say, “Hmm, I actually don’t know the answer to that one, but here are a couple things you could try,” I think that would be way better because people would realize the advice they are getting might not be good, and maybe they would be less inclined to bang on the thing for hours trying to get some hopeless suggestion to work.

The AI stuff is nice when it works (I have been using duck.ai for a few weeks now, it’s okay), but if I don’t get some genuinely useful information after a couple prompts I will just drop it and hit the forums and man pages instead. You cannot squeeze blood from a stone, as they say.

What did you actually install? I think this is what you want:

❯ pacman -Ss openrazer-driver
extra/openrazer-driver-dkms 3.9.0-1
    OpenRazer kernel modules sources

Before you install that, check that your device is actually compatible (see the link in the ArchWiki article below). If your device is in the list, install the package with Pacman and paste the full input/output of the command here into the thread so we can see what is happening.

sudo pacman -S openrazer-driver-dkms

That is quite ambitious…but you shouldn’t need to do this, it is a separate package.

❯ pacman -Ss openrazer-daemon
extra/openrazer-daemon 3.9.0-1
    Userspace daemon that abstracts access to the kernel driver. Provides a DBus service for applications to use

Try installing that package with Pacman as well.

sudo pacman -S openrazer-daemon

Then get things set up according to this ArchWiki article: Razer peripherals - ArchWiki

OpenRazer

Compatibility

A list of compatible devices can be found here.

Installation

Install the openrazer-daemon package. Do not forget to add your current user to the group plugdev with the command

# gpasswd -a $USER plugdev

then log out and back in.

How to use

The recommended way is to use a graphical front-end for interfacing with the drivers.

Troubleshooting

Visit the Troubleshooting page in the OpenRazer wiki.

By the way, the polychromatic package they mentioned is in the Chaotic AUR so you can just use Pacman if you want to install that one. If you want one of the other front ends instead you can use Paru.

3 Likes

That’s right, because they don’t even know it. So called artificial “intelligence” has very little to do with real intelligence. It’s just a collection of data its creators thought they had to pour into it. As this data also contains a lot of nonsense, it is inevitable that you will get wrong answers.

You can get lucky and get something useful, but you always have to expect the possibility the result to be not very useful or even wrong.

1 Like

Hey guys, thanks for the help and the effort. But after 3 years of daily use, I’ve shelved Garuda and returned to Fedora. As described here (https://forum.garudalinux.org/t/minigalaxy-wont-run/), I completely reinstalled my system because of this ModuleNotFoundError. I had it with MiniGalaxy, with OpenRazer, and with practically everything related to Python. A search on the forum also shows that this is not an unknown error.

And it’s just too stressful for me. I don’t want to spend five hours debugging every single tool I want to use. I just don’t know enough about the topic, and, without wanting to offend anyone, I’m tired of having to read through multiple interconnected wikis for every little thing. When I launch MiniGalaxy, I want to game, not spend my free time dealing with the intricacies of Python sandbox A in conjunction with Kernel B, after installing Patch C.

The same goes for everything that has come up since the reinstall. This pesky ModuleNotFoundError is simply everywhere. In the past, Garuda not only looked better in my eyes, but it also worked better. Today, every problem means studying the fundamentals of IT, specifically Linux Kernel and Python interference.

And I’m just not interested in that anymore. Its a gaming distribution after all, not a science project.

So, thanks for the help, but I need some distance for now. I’ll definitely check back at the end of next year to see if anything has changed.

I can understand that! Python can be a bear when it updates. It’s pretty common for stuff to break.

Fedora is great, I think you will like how low-maintenance it is. Plus it’s nice to try something new every once in a while.

Come back any time! :wave:

4 Likes