Linux Journey: Solving HID Access Denied Errors for the Keychron Launcher — Noisy Deadlines
Linux Journey: Solving HID Access Denied Errors for the Keychron Launcher<br>April 27, 2026I have a 2018 Corsair Strafe mechanical keyboard with the Cherry MX Red Switches. I’ve been getting tired typing on it, and I’ve been noticing a lot of missed keystrokes while I type. I am a fast typer, and I think I got tired of this keyboard.
So, I was looking for another mechanical keyboard, specifically one that I could customize, change the caps and switches if needed. Basically, a keyboard that could grow with me without being too complicated. I tested some keyboards on my local computer store, and the Keychron ones got my attention.
I wanted a more tactile experience (the Cherry Red is linear), so I went with a Keychron V6 Ultra 8K with the Tactile Banana switches . I love it! 😍
It worked well with the cable connection, and also connected with Bluetooth and the 2.4G dongle on my Ubuntu 25.10.
The issue: Can’t use the Launcher to customize the keyboard
In order to customize and remap the keys and for this keyboard, we have to do it online, via the Keychron Launcher .
The manufacturer guide says that the Launcher only works with Chrome/Edge or Opera browsers.
I had Chromium installed via Snap and I opened the launcher website. The site recognized my keyboard, but it wouldn't connect .
Solution attempts
I did some online searching and I discovered that Linux has some security measures in place that avoids a userspace application to write to hardware input. So the solution is to create an “udev.rule” to add permissions. I followed the instructions from this article: HOWTO: Get the Keychron Launcher working in Debian GNU/Linux.
So my steps were something like this:
I identified my keyboard vendor/product information using<br>lsusb | grep -i keychron
Which gave me following info: Bus 003 Device 013: ID 3434:0c60 Keychron Keychron V6 Ultra 8K
Great! Then I created the rule with sudo nano /etc/udev/rules.d/99-keychron.rules
And this was my first try to create the rule:<br>KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="3434", ATTRS{idProduct}=="0c60", MODE="0660", GROUP="ariadne", TAG+="uaccess", TAG+="udev-acl"
Then, I ran the two commands to reload the rules and trigger them:<br>sudo udevadm control --reload-rules<br>sudo udevadm trigger
It didn't work, Chromium still could not connect to the keyboard.
In Chromium I checked: Settings -> Privacy and Security -> Site settings -> Additional permissions -> HID devices and ensured HID access was allowed.
I tried different rules, tweaking here and there, played around with user groups, and nothing worked. I unplugged, plugged, restarted the computer, I even tried to run Chromium with root access temporarily. Nothing worked.
All the time I was checking chrome://device-log/ to see what was going on, and got a list of errors like this:<br>HIDEvent[21:52:54] Failed to open '/dev/hidraw7': FILE_ERROR_ACCESS_DENIED
HIDEvent[21:52:54] Access denied opening device read-write, trying read-only.
I did some more tweaks to the udev.rules, and I ended up with this in my rules file:
# Keychron V6 Ultra 8K - Normal Mode KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="3434", ATTRS{idProduct}=="0c60", MODE="0666", TAG+="uaccess"
# STM32 Bootloader - Required for Firmware Flashing SUBSYSTEM=="usb", ATTRS{idVendor}=="3434", ATTRS{idProduct}=="0c60", MODE="0666", TAG+="uaccess"
It was still not working . I knew it was something to do with permissions from Chromium.
Then the next day I did more digging online, and I read that Chromium installed via Snap is actually sandboxed and often cannot see hardware even if the udev rules are current . The solution? Get the .deb install package for Google Chrome.
So I downloaded and installed the official Google Chrome .deb native package directly from the Google website.
And then it worked!!! 🤘
Keychron Launcher connected to the keyboard, I could do the Firmware update and started playing with remapping keys.
My Final Checklist
So, as final checklist, these are the steps to take if I want to remap or update firmware on my Keychron keyboard :
Preparation of udev.rules (needs to be done only once):
Identify keyboard's vendor/product information using : lsusb | grep -i keychron
Create rule with: sudo nano /etc/udev/rules.d/99-keychron.rules
Add these lines to the rules:<br># Keychron V6 Ultra 8K - Normal Mode<br>KERNEL=="hidraw\*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="3434", ATTRS{idProduct}=="0c60", MODE="0666", TAG+="uaccess"<br># STM32 Bootloader - Required for Firmware Flashing<br>SUBSYSTEM=="usb", ATTRS{idVendor}=="3434", ATTRS{idProduct}=="0c60", MODE="0666", TAG+="uaccess"\
Save and exit (Ctrl+O, Enter, Ctrl+X)
Then run these commands to activate the new rules:<br>sudo udevadm control --reload-rules<br>sudo udevadm trigger
Disconnect/Connect keyboard.
Run Keychron Launcher
Connect the keyboard with the cable
On the keyboard...