Infinity ErgoDox Configuration
Posted: 2020 February 3
Last updated: 2020 February 4
I’ve been using my Infinity ErgoDox for a few years, which means it seems like it’s about time to break everything by messing with the firmware.
By default, this uses a custom firmware developed by Kiibohd/Input Club, the creators of the keyboard. It’s also QMK compatible, so I could program it like I did for my fully home-built keyboard. But that wouldn’t give me control over the little LCD screens built into the keyboard, so what fun is that? But since the default firmware is all open source like the hardware, I can hack the crap out of it directly.
And luckily, someone has already worked out how to do this in a series of posts on Reddit. (They’re three years old, so hopefully they still work.)
- Building and flashing the firmware
- Modifying the firmware for advanced macros
- Altering the LCD screen
I’m going to start by basically following this and filling in any details/gaps I run into along the way. (Luckily, it’s already written for Linux.)
EDIT: Turns out they’ve change quite a bit, including getting rid of the online configurator. And their new documentation for configuration and compiling is frustratingly incomplete. So this will be more fun than originally planned.
You need some dependencies to build the firmware yourself (taken from the wiki):
sudo apt-get install git cmake exuberant-ctags libusb-1.0-0-dev ninja-build gcc python3 lsb-release bsdmainutils sudo apt-get install binutils-avr gcc-avr avr-libc sudo apt-get install binutils-arm-none-eabi gcc-arm-none-eabi libnewlib-arm-none-eabi dfu-util sudo apt-get install ruby ruby-dev screen sudo gem install serialport
You’ll also need to clone the controller/firmware repository:
git clone email@example.com:kiibohd/controller.git
cd into the repository’s
We need to install the Python dependencies:
pip install pipenv
And then make sure it’s set to use Python 3 (or this will break): (See this note)
pipenv --python 3.6
Install/activate the pipenv:
pipenv install pipenv shell
You can run a test to make sure everything is behaving as expected and your layout isn’t broken (from within
Now you should be able to compile the controller (from within the