Keychron Launcher does not work

Hello!

I recently have made the switch to Linux, and a big issue I have had it HID devices. Before I used Corsair gear and thus ran into the common issue of no iCue for Linux, But I digress.

I have gotten a new mouse from Keychron (the M3 mouse as it was on sale for BF,) and it works great, except that the launcher to configure the mouse (and other keychron devices) does not seem to work… From what I understand the launcher is OS agnostic as its a webpage that requests device access not an actual program. https://launcher.keychron.com and I have read that others on other distros have it working, though they often have to change permissions for it to work.

I have tried such permissions;

sudo chmod 666 /dev/hidraw11

in my case, and reverting it back after testing with 600 on Manjaro but the launcher is still unable to connect. What is interesting is even without the permissions change the browser can see the mouse, but actually connecting fails. So I suspect it’s something with Manjaro and not the browser or Launcher it’s self…

I have also contacted Keychron about it, they have not yet responded.

And insight would be helpful. The entire reason I got this mouse (and probably Keyboard later on) is because I was told it was configurable via Linux…

Update;

For anyone just coming to this, It would seem that I have boiled it down to the exact rule for all known keychron devices. The rule is as follows;
SUBSYSTEM==“hidraw”, ATTRS{idVendor}==“3434”, TAG+=“uaccess”
Simply make a text file, put the rule in it, rename it to say 50-keychron.rules, and move it (with sudo) to /etc/udev/rules.d/ then reboot.

What browser are you using? There was a post somewhere that said it only worked in Chrome.

I haven’t tested that myself and ended up just using qmk for my keyboard.

Have you tried the app in Wine?

Have you checked in System Settings for Mouse and Keyboard?

Have tried Brave (chrome based) and ungoogled Chromium. both show the same symptoms. click connect, select the mouse or nub, but nothing happens.

it’s not an installed program, or even any kind of “program”…

and the old software listed in that pose is deprecated now with there new page based configuration “launcher” being the new way because it is supposed to be OS agnostic, have even heard it works with android phones, plug in say a keyboard into your Android phone and load up the page…

If you go to the page I sorta linked in the post that’s it, can even demo how it works.

What exactly? To be clear the mouse works perfectly, just there seems to be some block between the page based configuration tool and the mouse…

I have screenshots of there errors and UI, but I apparently am not allowed to have links or images (why have the buttons then…) in the post so… But at least in the “Brave://device-log” there are these 3 lines;

HIDEvent[00:03:51] Failed to open '/dev/hidraw8': FILE_ERROR_ACCESS_DENIED
HIDEvent[00:03:51] Access denied opening device read-write, trying read-only.
HIDUser[23:53:19] HID device detected: vendorId=13364, productId=53296, name='Keychron Keychron Link ', serial='', deviceIds=['/sys/devices/pci0000:00/0000:00:08.1/0000:0c:00.3/usb5/5-2/5-2:1.1/0003:3434:D030.0008/hidraw/hidraw8'],

You can use an image pasteboard service like the following, for example; return and paste the URL here as per the following example:

  • https://forum.manjaro.org :point_left:
    This allows others to easily select, copy and paste the URL, if they wish.

Though, the preference is that you post logs, code or any command output as pre-formatted text, either using the </> button in the Compose window, or manually creating two rows of (3) backticks, and pasting the text in the row between them;

```
Paste code or command output here.
```
which produces something like this:

Paste code or command output here.

Once you have engaged with the forum a little longer than five minutes (speaking figuratively) your privileges will increase as a matter of course.


The Keychron URL you gave explicitly states that only the following browsers are supported:

  • Chrome
  • Edge
  • Opera

I suggest you try one of these; unfortunately, none are available from the official Manjaro repositories, you will likely need to resort to flatpak or the AUR;


Please follow links in information added and discover how to use the forum. Forum rules are required reading. Additionally, also provide your system information as described (below).

Regards.


What follows is from a standard template.

Welcome to the Manjaro community

As a new or infrequent forum user, please take some time to familiarise yourself with forum requirements, and the many ways to use the forum to your benefit.

Note: By virtue of using the Manjaro forum you acknowledge and agree to follow Rules and Guidelines outlined; so, you really should read them:

Required Reading
Highly Recommended

Work with us, not against us

It is important to provide as much actionable information as possible in your first post, rather than simply indicating there is a problem. Please also be prepared to provide output from commands if/when asked.

Simply waiting for others to ask you questions is counter-productive – typically, nobody has a :crystal_ball: at their disposal – and your clear, concise and accurate input is often relied upon in order to help you.

Please help others to make informed suggestions based on information you provide.


System Information

While information from *-fetch type apps might be fine for someone wishing to buy your computer, for Support purposes it’s better to ask your system directly; :eyes:

Output of the inxi command (with appropriate parameters, and formatted according to forum guidelines) will generate information useful for those wishing to help:

Suggested inxi command (use either):

inxi -zv8 (short-form)
inxi --filter --verbosity=8 (long-form)
inxi man pages (manual)
If running `inxi` within a `chroot` environment
  • Add --color=0 to the long-form command, or…
  • Change the short-form command to inxi -zv8c0
Your privacy is respected

Update Announcements


Technical Resources


That is what I would expect - no browser should be allowed access to the /dev or /sys tree as this would be rather dangerous.

The fact that it tries to gain write access is rather disturbing in my opinion.

What if it was an attempt of a drive-by attack ?

I am guessing you have to create an udev rule matching the id - and with that rule give your user write access.

Something like this - generic - you can narrow it down to a serial to make it act only upon the specific serial number.

Create a file /etc/udev/rules.d/keychron.rules with content (untested) - the id’s from log snippet may not be correct

SUBSYSTEM=="usb", ATTR{idVendor}=="13364", ATTR{idProduct}=="53296", MODE="0666"
sudo udevadm control --reload

On my system the Keychron connection look like

Bus 005 Device 006: ID 3434:d038 Keychron Keychron 4K Link

which make me think this will work better

SUBSYSTEM=="usb", ATTR{idVendor}=="3434", ATTR{idProduct}=="d03b", MODE="0666"
2 Likes

After doing some poking about it would seem that I have found similar, apparently the issue is in fact that the browser does not have access to the HID device, in particular QMK stuffs.

In my searching I have discovered that there is a pre made udev rule for such bundled in the QMK firmware stuff found here: https://github.com/qmk/qmk_firmware/tree/master/util/udev Which does allow the mouse to be connected to. However the mouse nub, that is supposed to also work through does not.

Could you help me identify what part in that udev rule is relevant to the mouse so that I can adapt it to a custom rule that also works for the nub?

I have tried looking through it, but none of the vender ID or the like seem to line up with what the mouse reports… So I am actually a little confused how it works at all…

But in the very least I can configure the mouse when it’s wired now, so major win! Just want to narrow the scope of that rule if possible.

Guess what I am asking for is a better understanding of how that works, and where it gets its information from so I can make my own.

From what I can tell, it appears to be this one. :backhand_index_pointing_down:

# hid_listen
KERNEL=="hidraw*", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl"

Note that not everything will necessarily work. On my Logitech mouse, there is one configurable button, and I’ve never gotten that to work either, but the navigation buttons and the scroll wheel all work.

Curious, is that not the same as basically doing a sudo chmod 660 /dev/hidraw11? I ask because that’s what I originally tried in my troubleshooting, and it did not work…

Am I missing something?

The /dev filesystem exists on a tmpfs and is populated by the kernel and by udev. It is not intended to be modified by the user, as the changes will not persist across reboots.


P.S.:

Well, if you have to start messing with udev rules, then it was not such a good choice after all, was it? :wink:

From what I understand, basically all normal mice that have “special” buttons need a driver to work, that is usually Windows only such as Corsair.

The entire reason I go this Keychron mouse (and eventually keyboard) is its ALL done in HW, so you set and save it to the mouse, and the mouse shows up as a mouse and keyboard on the connected system. So when I make a macro to do X the mouse actually plays out that action in HW. And because Keychron has made there configuration tool a web page (that you can save and run offline till the end of time I may add) its completely OS agnostic. Just a small hurdle for Linux and its more security first approach I guess.

not really any different than installing something like RazerGenie that from what I can tell does the same thing on install, it places a udev rule… But I digress, I would rather have to place a udev rule manually than have to have software installed that could change bla bla bla.

But thanks for the info. Is there some page somewhere I can learn more about udev rules? preferably something informative, but not “need to be a dev” to understand level?

Aye. :wink: :backhand_index_pointing_down:

1 Like

Note that the id (abcd:1234) consist of a vendor id (abcd) and a product id (1234), and is usually a 4 digit hexadecimal number - which is why I said the numbers from your log snippet could be misleading.

Especially be aware of the warning at 5.3 Allowing regular users to use devices

1 Like

P.S. Just a heads up, seems to be more than this. Commented all but this out and rebooted, no mouse access… I am again somewhat confused on how the QMK one works… But I digress.

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.