Keyboard Firmwares: a survey of controllers and converters
Posted: 23 Nov 2019, 04:02
Which firmware to use?
In this thread I begin take you through a guided tour of the prevailing keyboard firmwares on the market today. I focus on open source efforts with some exceptions. I discuss pros and cons, uses, supported targets, architectural decisions, and so on. These are vaguely sorted in order of oldest to youngest and simplest to most complex. Let's jump right in!
For starters it's helpful to lay out some definitions. Feel free to skip this, I'm laying it out for lack of ambiguity and for newcomers.
First a brief section on microcontroller choices. Maybe skip this section if you're already familiar with AVR 8 bit and ARM Cortex M0 MCUs.
A little bit of controller theory follows. Skip this if you're familiar with the software architecture of a controller.
What are the things that I look for when evaluating a keyboard firmware?
Well, I'm a hobbyist first and foremost, but I always have mass market production on the back of my mind. So I'm looking for a few things:
- How hard is it to define a custom layout?
- How active is the community for this firmware - and how likely am I to get a response if I have a problem?
- How much does it cost? (Ideally: free.)
- How annoying or expensive is it to procure hardware that can run this firmware?
- How is ghost key blocking supported? (Watch for a future post on ghosting based on some notes I have.)
- How are macros, layers, and remaps supported?
- How much configuration can be done on the keyboard, versus "interactively" in a text editor or using a formal GUI or CLI tool?
- Are exotic hardware features like backlighting, a built-in screen, a rotary encoder, a split, or a solenoid supported?
- Are exotic software features like complex layers (e.g. SpaceFn, http://geekhack.org/index.php?topic=51069.0), settings banks, and (when applicable) per-switch actuation supported?
- How "familiar" is the software in terms of architecture and layout? How tough is it to tease out something like the psuodocode I wrote above?
- What does the workflow look like for a Linux or Mac user?
- Intangibly, how much do I like it?
Empirically, my goals are to support two keyboards. One is the Northgate Omnikey with NKRO, my absolute favorite keyboard hacker board. IT's easy to find, built like a tank, has full NKRO, the matrix is actually documented, it has fun hidden DIP switches, and the solder pads are huge and an absolute delight to work with. The other is the XMIT Hall Effect keyboard, which I'm working to make modern with a newer firmware for previous customers.
Let's begin with the classics: Soarer's Converter and Soarer's Controller.
Converter: viewtopic.php?t=2510
Controller: viewtopic.php?t=6767
WYSE Converter: viewtopic.php?t=7424
These are the controllers and converters I cut my teeth on. They're easy to use and they work. They're also, sadly, closed source. I like the tools that come with them but they're pretty basic. Soarer's Converter is great for converting AT to USB in a pinch.
I ran out of time, so, that's all for now! In the coming little while I'll follow up with investigations for:
xwhatsit
CommonSense
Kaleidoscope by keyboard.io
Kiibohd by Input.Club
TMK by Hasu
QMK
Das Keyboard Q
In this thread I begin take you through a guided tour of the prevailing keyboard firmwares on the market today. I focus on open source efforts with some exceptions. I discuss pros and cons, uses, supported targets, architectural decisions, and so on. These are vaguely sorted in order of oldest to youngest and simplest to most complex. Let's jump right in!
For starters it's helpful to lay out some definitions. Feel free to skip this, I'm laying it out for lack of ambiguity and for newcomers.
Spoiler:
Spoiler:
Spoiler:
Well, I'm a hobbyist first and foremost, but I always have mass market production on the back of my mind. So I'm looking for a few things:
- How hard is it to define a custom layout?
- How active is the community for this firmware - and how likely am I to get a response if I have a problem?
- How much does it cost? (Ideally: free.)
- How annoying or expensive is it to procure hardware that can run this firmware?
- How is ghost key blocking supported? (Watch for a future post on ghosting based on some notes I have.)
- How are macros, layers, and remaps supported?
- How much configuration can be done on the keyboard, versus "interactively" in a text editor or using a formal GUI or CLI tool?
- Are exotic hardware features like backlighting, a built-in screen, a rotary encoder, a split, or a solenoid supported?
- Are exotic software features like complex layers (e.g. SpaceFn, http://geekhack.org/index.php?topic=51069.0), settings banks, and (when applicable) per-switch actuation supported?
- How "familiar" is the software in terms of architecture and layout? How tough is it to tease out something like the psuodocode I wrote above?
- What does the workflow look like for a Linux or Mac user?
- Intangibly, how much do I like it?
Empirically, my goals are to support two keyboards. One is the Northgate Omnikey with NKRO, my absolute favorite keyboard hacker board. IT's easy to find, built like a tank, has full NKRO, the matrix is actually documented, it has fun hidden DIP switches, and the solder pads are huge and an absolute delight to work with. The other is the XMIT Hall Effect keyboard, which I'm working to make modern with a newer firmware for previous customers.
Let's begin with the classics: Soarer's Converter and Soarer's Controller.
Converter: viewtopic.php?t=2510
Controller: viewtopic.php?t=6767
WYSE Converter: viewtopic.php?t=7424
These are the controllers and converters I cut my teeth on. They're easy to use and they work. They're also, sadly, closed source. I like the tools that come with them but they're pretty basic. Soarer's Converter is great for converting AT to USB in a pinch.
I ran out of time, so, that's all for now! In the coming little while I'll follow up with investigations for:
xwhatsit
CommonSense
Kaleidoscope by keyboard.io
Kiibohd by Input.Club
TMK by Hasu
QMK
Das Keyboard Q