To those of you lucky enough to have received your Framework 16 as I have, I’m wondering if anyone has figured out how to perform QMK configuration using VIA’s web platform.
I’m running Fedora 39. I’ve tried several Chromium browsers including Brave, Ungoogled Chromium, Chromium, and Google Chrome. I see the dialog where I choose my keyboard and click Connect. The dialog closes and nothing happens. The web page still shows the weird graphic that rolls back and forth. If I click Authorize Device again, the dialog now shows that the keyboard is paired, but still nothing happens.
Does the Framework 16 not ship with the necessary firmware? Is there an incompatibility with Fedora or Linux? Am I being thick?
Edit: I just discovered the Framework domain keyboard.frame.work which seems like a wrapper for usevia.app. Anyway, I tried it there and it still fails, but at least I get an error message there. I see the following two errors:
19:08:28.158
Failed to open the device.
Device: Framework Laptop 16 Keyboard Module - ANSI
Vid: 0x32AC
Pid: 0x0012
19:08:28.169
Received invalid protocol version from device
Device: Framework Laptop 16 Keyboard Module - ANSI
Vid: 0x32AC
Pid: 0x0012
You need to make sure that you’ve correctly configured your udev rules. the QMK repo has a copy that you should be able to copy directly into your conf.d folder and then reload the udev rules and then it should work.
The Framework keyboards do not work by default on the general Via site. The board definition files haven’t been added for them to be automatically recognized. keyboard.frame.work is a Framework hosted copy.
@MJ1 I had tried that rules file after @undermark5 suggested it, but that didn’t do the trick. Thanks for the tip about keyboard.frame.work though, that did eventually work once I found the right udev rule. See below.
Since the udev rule at the QMK Github didn’t work, I ended up finding a Vial tutorial that ended up doing the trick for me. I followed the instructions here to make a device-specific rule here: Configuring udev on Linux - Vial
The rule that I ended up creating that works looks like this:
I am having the same problem but without a solution yet .
I use Ubuntu 22.04. I have the udev rules from qmk installed and reloaded. I also tried that additional udev rule above (tweaked to my user group just to see if it works). But to no avail.
The framework VIA page shows the same errors:
23:33:21.132
Failed to open the device.
Device: Framework Laptop 16 Keyboard Module - ANSI
Vid: 0x32AC
Pid: 0x0012
23:33:21.146
Received invalid protocol version from device
Device: Framework Laptop 16 Keyboard Module - ANSI
Vid: 0x32AC
Pid: 0x0012
In addition, chrome page chrome://device-log/ shows:
[23:26:14] Failed to open '/dev/hidraw3': FILE_ERROR_ACCESS_DENIED
[23:26:14] Access denied opening device read-write, trying read-only.
I was going to ask if your browser was installed as a normal package.
Snaps can have permission issues. And some snap browser builds just leave out WebHID support. It’s been reported that the snap Brave browser build does. What does this page say for you? https://webapicheck.com/apis/webhid-api
For your udev rule, you have GROUP="lexa"?
If neither of those are the problem, you could try just changing permissions on /dev/hidraw3. Mine is crw-rw-rw-+ on LinuxMint.
It works! Using deb package from google chrome itself…
So. that does indeed point to a snap permission issue (once again, snap is the culprit of something mysteriously not working…).
Via requires a browser with WebHID enabled. It works in Chrome, Edge, and other Google Chromium-based browsers.
Firefox has chosen not to enable WebHID.
Mozilla, which makes Firefox, believes that websites should not have low level access to hardware, so they have chosen not to enable WebHID, for the same reasons that they don’t support WebUSB.
Because many USB devices are not designed to handle potentially-malicious interactions over the USB protocols and because those devices can have significant effects on the computer they’re connected to, we believe that the security risks of exposing USB devices to the Web are too broad to risk exposing users to them or to explain properly to end users to obtain meaningful informed consent. It also poses risks that sites could use USB device identity or data stored on USB devices as tracking identifiers.
Via has an electron wrapper that could also be used github.com/the-via/releases/releases (you need to load the Framework draft definition). But I found it hard to get it to detect a keyboard reliably.
One of the reason I much prefer Vial. It has desktop apps for Windows, Linux, Mac. Doesn’t rely on a website and giving it low level access to hardware. Though Vial does still offer a website configurer if you so desire.