Post

Get Keychron Launcher working on Linux (CachyOS)

Introduction

I’m guessing you are in the similar situation as I’am, when you either bought new keychron keyboard or started using linux and you are trying to open up launcher.keychron.com to remap some keys or change color, but you just getting “HID device connected” and you can’t get past the connect page. Well I got quick solution for ya..

Why is this happening?

The launcher is a web app that talks to your keyboard directly over WebHID. Linux has sane security measures in place, so a random userspace app (or browser tab!) can’t just write to a hardware input device. We need to give ourselves permission with a custom udev rule.

Find your keyboard

First plug in the keyboard with a cable (not bluetooth!) and check the vendor ID

1
2
3
lsusb | grep -i keychron

Bus 003 Device 006: ID 3434:0e20 Keychron Keychron K2 HE

Keychron vendor ID is 3434, product ID will differ per model but we don’t even need it.

Create the udev rule

We are going to match the whole vendor 3434, so this works for any Keychron model, not just mine.

1
echo 'KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="3434", MODE="0660", TAG+="uaccess"' | sudo tee /etc/udev/rules.d/70-keychron.rules

Couple of notes here

  • On Arch based distros (CachyOS, EndeavourOS…) the file number needs to be lower than 73, because the uaccess tag is processed in 73-seat-late.rules. Name it 99-something like most guides tell you and it won’t work!
  • Thanks to uaccess we don’t need to mess with groups or usernames, the currently logged in user gets access automatically

Now reload the rules

1
2
sudo udevadm control --reload-rules
sudo udevadm trigger

And unplug and replug the keyboard!

Use the right browser

You probably knwo this but Firefox doesn’t support WebHID at all, so the launcher will never connect there no matter how many udev rules you write.

Open the launcher in any Chromium based browser instead - Chromium, Chrome, Brave, Vivaldi…

Verify

You can check the rule actually applied by looking at the ACL of the device

1
getfacl /dev/hidraw0

You should see your user in there. Now go to launcher.keychron.com, hit connect and you should see your keyboard!

Credits

Credit goes to this PSA on r/Keychron and Blaise Alleyne’s writeup for Debian that pointed me in the right direction.

This post is licensed under CC BY 4.0 by the author.