Hi, trying to swap my Fn & Ctrl keys on my new FW16. If I go to keyboard.frame.work to change settings it fails with
15:56:17.997
Failed to open the device.
Device: Framework Laptop 16 Keyboard Module - ANSI
Vid: 0x32AC
Pid: 0x0012
15:56:18.021
Received invalid protocol version from device
Device: Framework Laptop 16 Keyboard Module - ANSI
Vid: 0x32AC
Pid: 0x0012
Compiling and running the executable here seems to work for changing RBG colors and stuff, but only if I run it as root. Without sudo I get
called `Result::unwrap()` on an `Err` value: HidApiError { message: "Failed to open a device with path '/dev/hidraw7': Permission denied" }
I originally thought I had a bad keyboard since it wasn’t able to open it, but since some of it works via the command line, I’m wondering if it’s a permission thing, or other Linux-centric issue.
I’m on mint and keyboard.frame.work works (testing the firmware on rp2040 board). What browser are you using? And is it installed as a normal system package?
Perhaps try reflashing? Releases · FrameworkComputer/qmk_firmware · GitHub
Ah! You’re the best! I didn’t see that at the bottom of the page. That fixed both the root issue and the browser issue. Looks like it was just a permission issue. Thanks!
Followup, can you remap your Fn key? I can map Left Ctrl to MO(1), but no matter what I set the Fn key to, it continues to work as the Fn key. I set it to “B” in the screenshot"
You’re not in Fn-lock are you? Fn-lock is a separate layer. And due to the way layers overlay each other, the key assigned in the Fn-lock layer is what’s used when you are in the Fn-lock layer.
I’m not seeing anything unusual. I’d suggest trying an eeprom reset. You can do it with the QMK HID commandline tool: --eeprom-reset. Or by adding EE_CLR to your keymap at keyboard.frame.work then pressing the key. EE_CLR looks to be named Reset in Via (keyboard.frame.work), under the “Special” section.
Oh, Fn-lock must have been it. I was going to say I wasn’t, until I realized that the default for the F keys was the media/brightness, not the F1-10. Damn missing indicator lights. I think it’s working as expected now.
Thanks for all the help
For anyone in the future who reads this and wants to swap Fn and left control:
On layer 0, make the bottom left MO(1) (under LAYERS) and the one to the right “Left Control” (under BASIC)
Leave layer 1 alone
On layer 2, make the bottom left MO(3) (under LAYERS) and the one to the right “Left Control” (under BASIC)
The third item lets you flip in and out of Fn-lock via the left most button.
Can anyone explain how to flash an update to the keyboard and number pad?
I’ve tried getting qmk_hid working from the framework github but i cant get the gui working as pysimplegui is having problems with tkiniter.
Can I ask what you ultimately want to do? And also, what OS you’re on.
I ask because if you’re looking to flash or reflash the firmware, you don’t need the qmk_hid tool for that.
Kubuntu 23.10.
Ultimately I want to use keyboard.frame.work, but I’m getting the same thing as the OP where the website is receiving an invalid protocol when using Brave browser (fork of chromium).
I have done the udev addition listed on the qmk page but that didnt work.
The qmk_hid tool is not a substitute for keyboard.frame.work. It’s mostly for special commands, like clearing memory, BIOS mode, Factory mode, etc. The only normal function it has is some backlight controls.
How is Brave installed? As a normal .deb package or as snap (or flatpak)?
I’ve read that snaps can have issues with permissions. And that some snap browser builds can leave out WebHID support.
Yea, looks like brave is installed as a snap app.
Installed the one from their website through apt and the website is working correctly… how wierd… is it cus of the security of snap apps or because of the bundled drivers?
I just realized the QMK and QMK_HID package may include qmk.rules for ARCH/Manjaro, but those rules DO NOT include the FW16 keyboard. I had to add a line under the QMK_HID area
This will only work for the ANSI (American) layout Keyboard Module. It won’t cover the numpad, macropad, ISO, or JIS modules. I’d suggest SUBSYSTEMS==“usb”, ATTRS{manufacturer}=="Framework", ENV{ID_QMK}=“1”
Oh, I read that Arch doesn’t like the plugdev group approach. They prefer using TAG+="uaccess". But 50-qmk.rules does also include the uaccess tag. Not sure why it wasn’t providing access for you. Tim_Hendersen in the post above yours said 50-qmk.rules worked on endeavorOS Arch. How did you find or come up with the rule that’s working for you?