Logitech MX Keys and MX Master on OpenBSD using Logi Bolt

       686 words, 4 minutes

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:

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?

[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.