Logitech MX Keys and MX Master on OpenBSD using Logi Bolt
Long story short, I need a way to manage a Windows (pro) laptop, an OpenBSD thinkpad and an iPad Pro with a single keyboard & mouse. After a bit of digging, I ended up getting a Logitech MX Keys and Logitech MX Master 3.
I was looking for:
- a way to interact with Windows and iPad OS: Bluetooth
- a way to interact with OpenBSD: Logi Bolt USB Receiver
- a way to simply switch between all those: Easy-Switch(tm) keys
- an illuminated keyboard: Smart Backlighting for MX Keys
- a silent keyboard: Laptop-like keys
- rechargeable devices: Fast Charging using USB-C port
a keyboard with ThinkPad-like layout: found none with backlit feature
Now, what’s so worth writing a post about an USB keyboard on OpenBSD? Well, just to confirm that the proprietary Logi Bolt technology does not require any hardware support from OpenBSD, other than its current USB stack.
And one thing… You need to install and run the Logi Bolt App if you want to connect the keyboard and mouse to the USB dongle. Without it, they only connect using Bluetooth. I installed it on a MacBook, started the app, followed the wizard and connected the keyboard and mouse to the dongle. Then I could connect the USB dongle to the OpenBSD laptop and turn on the keyboard and mouse. And…
# dmesg (...) uhidev0 at uhub0 port 1 configuration 1 interface 0 "Logitech USB Receiver" rev 2.00/24.11 addr 4 uhidev0: iclass 3/1 ukbd0 at uhidev0: 8 variable keys, 6 key codes wskbd1 at ukbd0 mux 1 wskbd1: connecting to wsdisplay0 uhidev1 at uhub0 port 1 configuration 1 interface 1 "Logitech USB Receiver" rev 2.00/24.11 addr 4 uhidev1: iclass 3/1, 8 report ids ums0 at uhidev1 reportid 2: 16 buttons, Z and W dir wsmouse2 at ums0 mux 0 ucc0 at uhidev1 reportid 3: 767 usages, 18 keys, array wskbd2 at ucc0 mux 1 wskbd2: connecting to wsdisplay0 uhid0 at uhidev1 reportid 4: input=1, output=0, feature=0 uhid1 at uhidev1 reportid 8: input=1, output=0, feature=0 uhidev2 at uhub0 port 1 configuration 1 interface 2 "Logitech USB Receiver" rev 2.00/24.11 addr 4 uhidev2: iclass 3/0, 33 report ids uhidpp0 at uhidev2 reportid 16 device 1 keyboard "MX Keys" serial xx-xx-xx-xx, \ device 2 mouse "MX Master 3" serial xx-xx-xx-xx uhid2 at uhidev2 reportid 32: input=14, output=14, feature=0 uhid3 at uhidev2 reportid 33: input=31, output=31, feature=0 # wsconsctl keyboard1 keyboard1.type=usb keyboard1.bell.pitch=400 keyboard1.bell.period=100 keyboard1.bell.volume=50 keyboard1.bell.pitch.default=400 keyboard1.bell.period.default=100 keyboard1.bell.volume.default=50 wsconsctl: Use explicit arg to view keyboard1.map. keyboard1.repeat.del1=400 keyboard1.repeat.deln=100 keyboard1.repeat.del1.default=400 keyboard1.repeat.deln.default=100 keyboard1.ledstate=2 keyboard1.encoding=fr keyboard1.backlight=0.00%
Once the keyboard and mouse have been linked to the USB dongle, you can switch to the Bluetooth connected devices and back to OpenBSD.
Not all “multimedia” keys generate a key code when testing with xev(1) using the default wskbd(4) device. But all “classical” keys do. There are maybe tricks to be done using some specific Xorg configuration but I haven’t looked at it, yet.
As far as I can see, you cannot change the PC / Mac layout when using the USB dongle. You inheritate the configuration from the OS. On the Mac, I got the Mac layout. On OpenBSD, I got the PC layout. There are maybe things to be tweaked using specific wscons or Xorg configuration but I haven’t looked at it.
Things that are not 100% satisfying to me?
- the “fn” keys is located on the right hand-side of the keyboard… not ThinkPad-like at all. I’ll have to get used to it…
- the mouse click is a bit noisy, much more than the clickpad. This may not be the better choice for a calm environment. I’ll test it for a bit longer but I may end getting another one.
- there is not “Num Lock” LED on the keyboard. But the xkeyboard module of polybar works properly displaying the information. And you can also get the information from the “ledstate” value using wsconsctl(8).
[EDIT 2021-12-22] The Logitech M590 mouse also connects and works with Logi Bolt. It only supports switching to 2 equipments ; but that’s enough for me. It also requires replaceable batteries. But IT IS SILENT!!!
All in all, those are a quite nice piece of hardware.