I did some searching before buying it, and saw statements that claimed that it would "just work" with linux and the knob would control audio volume.
The knob does something, but it isn't clear what. If I rotate it with focus in a terminal windows, the cursor blinks as I rotate the knob, but no characters appear. If I try rotating it while watching a Youtube video, wierd things happen. The sound begins "stuttering" and the video seems to be doing a very short repeat loop.
I already had a file, but needed to add a second line to the file /etc/udev/rules.d/99-via.rules as follows:
KERNEL=="hidraw*", ATTRS{idVendor}=="3434", ATTRS{idProduct}=="0180", MODE="0666", TAG+="uaccess"
KERNEL=="hidraw*", ATTRS{idVendor}=="3434", ATTRS{idProduct}=="0181", MODE="0666", TAG+="uaccess"
The entry with 0180 is for the Q8 without a knob. The 0181 entry is for the Q8 with a knob.
Then do this:
su udevadm control --reload-rules udevadm triggerThen unplug and replug the keyboard.
"Your current firmware does not support rotary encoders, install the latest firmware for your device"This is surprising. It seems odd that they should ship the keyboard with incorrect firmware.
I can select and reconfigure other keys without a problem. for example I select the CAPS lock key and change it to do nothing.
I find 2 versions of "Q8 with knob" firmware, last updated in 2023. There is ANSI and ISO. Some searching confirms that my keyboard is a Q8 ANSI with knob. I have a rectangular "enter" key. An ISO board would have an enter key shaped like an upside down "L". I download both of these:
-rw-r--r-- 1 tom tom 47856 Sep 10 12:52 q8_us_knob_v1.7.bin -rw-r--r-- 1 tom tom 47856 Sep 10 12:52 q8_iso_knob_v1.5.binI delete the second file (the iso version).
You have two options for installing the firmware. The recommended way is to use the launcher web interface to do it. Alternately you can use the "toolbox", but they only offer the toolbox for mac or windows.
I read that on linux you can use dfu-util or "qmk" which is a command line tool.
To do this, you must put the keyboard into bootloader mode as follows:
In the list on the left I see "Firmware Update" near the center. I select this and it shows me "latest version v1.1.0" and has an orange button that says "Connect". I click this and it brings up a one entry menu with my keyboard. I select it and click connect. The orange button now says "Next To Update".
Now it gives me a bunch of instructions for windows about downloading and installing the QMK toolbox driver. I am not running Windows, so I just select "Next".
Now it tells me to unplug the keyboard and either hold down ESC or "o" and while holding, replug the kdyboard.
Now of course, the keyboard doesn't work. I release the ESC key I was holding. This causes no particular change, but the keyboard is no longer giving me the constant red backlight I had it set up for. The tiny red LED02 is still lit though.
Launcher now has a button "Match Device" and when I click it I get a list of every USB device on my machine (or so it seems) including my mouse and so on. I don't see "STM32,WB,DFU ..." --- but I do see "STM32 bootloader" so I select that.
Next I pick "Flash Firmware" and away we go. Nothing seems to be happening. A warning on the screen say to not remove the device or reload the page to prevent damage. After 23 minutes, nothing has changed.
I unplug and replug the keyboard. It now gives me the lightshow I usually see with a new keyboard, so two things:
su ; dnf install dfu-utilOne of these commands is suggested:
dfu-util -a 0 --dfuse-address 0x08000000:leave -D your_firmware_file.bin qmk flash your_firmware_file.binBased on information in this reddit post: What is recommended is to use "dfu-util -l" to get a list of possible devices. One person in the thread above says that he installed dfu-util and after that was able to use the launcher to update firmware!
You can specify your device to dfu-util via "-d vid:pid"
You use -D to download firmware and -U to upload it
curl -fsSL https://install.qmk.fm | shI do the install. It asks for my password. It tells me it will install a variety of things using dnf (many of which are already installed). It doesn't take all that long and tells me that the QMK cli is now in /home/tom/.local/bin. I type "qmk" and get a big usage message. Then to flash firmware, consider one of these:
qmk flash your_firmware_file.bin qmk flash -kb keychron/q8/ansi/knob -km default
I try "qmk console" but it just hangs.
I type "qmk setup" and it wants to put a clone of qmk/qmk_firmware in /home/tom/qmk_firmware. There is no other choice, so I say yes. There is a long wait, then things happen. Patience is important. Eventually it says "QMK is ready to go".
The QMK toolbox I read about is only available on Mac or Windows.
I set this up (using my original keychron as the "working" keyboard). I put the knob into bootloader mode and I see this:
dfu-util -U zzz.bin dfu-util: More than one DFU capable USB device found! Try `--list' and specify the serial number or disconnect all but one device dfu-util --list Found DFU: [0483:df11] ver=2200, devnum=47, cfg=1, intf=0, path="1-1.5", alt=3, name="@Device Feature/0xFFFF0000/01*004 e", serial="208038855332" Found DFU: [0483:df11] ver=2200, devnum=47, cfg=1, intf=0, path="1-1.5", alt=2, name="@OTP Memory /0x1FFF7000/01*0001Ke", serial="208038855332" Found DFU: [0483:df11] ver=2200, devnum=47, cfg=1, intf=0, path="1-1.5", alt=1, name="@Option Bytes /0x1FFF7800/01*040 e", serial="208038855332" Found DFU: [0483:df11] ver=2200, devnum=47, cfg=1, intf=0, path="1-1.5", alt=0, name="@Internal Flash /0x08000000/0128*0002Kg", serial="208038855332"Four device show up, but they are all the "knob" showing itself multiple times.
dfu-util -a 0 -U zzz.bin Opening DFU capable USB device... Device ID 0483:df11 Device DFU version 011a Claiming USB DFU Interface... Setting Alternate Interface #0 ... Determining device status... DFU state(2) = dfuIDLE, status(0) = No error condition is present DFU mode device DFU version 011a Device returned transfer size 2048 dfu-util: Unbound upload not supported on DfuSe devices Limiting default upload to 16384 bytes Upload [=========================] 100% 16384 bytes Upload done.I wonder why the upload gets limited? The file I want to download is 47856 bytes.
Now I try this, and get a response:
qmk console Looking for devices... Bootloader Connected: stm32-dfu: STM32 BOOTLOADERNow I think I understand why this just hung previously. That is what it is supposed to do. It is connected to the device sort of like a terminal emulator.
Supposedly if I now type Left-shift Right-shift V it will show the version. No such luck.
Now I am back to using dfu-util. This command now makes more sense. Note that this is from Reddit for a Keychron v6. I use the second command of the following:
dfu-util -a 0 --dfuse-address 0x08000000:leave -D keychron_v6_iso_encoder_default.bin dfu-util -a 0 --dfuse-address 0x08000000:leave -D q8_us_knob_v1.7.binThis yields the following on the screen:
Match vendor ID from file: 0483 Match product ID from file: df11 Opening DFU capable USB device... Device ID 0483:df11 Device DFU version 011a Claiming USB DFU Interface... Setting Alternate Interface #0 ... Determining device status... DFU state(2) = dfuIDLE, status(0) = No error condition is present DFU mode device DFU version 011a Device returned transfer size 2048 DfuSe interface name: "Internal Flash " Downloading element to address = 0x08000000, size = 47840 Erase [=========================] 100% 47840 bytes Erase done. Download [=========================] 100% 47840 bytes Download done. File downloaded successfully Submitting leave request... Transitioning to dfuMANIFEST stateWhen it finishes, the "knob" keyboard is running the lightshow, so this looks hopeful. The keyboard works also, which is yet more encouraging.
Launcher now sees two keyboards and labels them identically. I unplug the blue one to eliminate confusion. I connect "launcher" and visit the knob. No more warning about the wrong firmware. It shows the knob as a volume control now.
While I am in there, I remap the caps lock to do nothing.
Adventures in Computing / tom@mmto.org