Keebio BDN9 Rev.2 macro pad¶
My first custom keyboard. I decided to start with a smaller keyboard, macro pad, which is a keyboard you can program to execute custom keypresses or series of keypresses.
Shopping cart¶
I bought plate & pcb kit for Keebio BDN9 Rev.2 macro pad from candykeys.com, also available at Keebio’s own store.
Besides macro pad kit (and two rotary encoders & knobs), I bought a variety of switches, one of each (limited by availability):
- Tactiles
- Kailh Box Burnt orange 80g (70g pressure point)
- Kailh Box Royal 70g (75g pressure point), super-tactile
- Kailh Polia 67g
- Durock T1 67g, prelubed
- CMM.Studio X Gateron Limbo 65.5g, prelubed
- Dusk Panda 67g
- Ethereal Panda 68g
- Keebwerk Bushi 62g
- Clickys
- Kailh Box White 55g (50g pressure point), thin clickbar
- Kailh Box Pink 55g (62g pressure point), medium clickbar
- Linear
- Healio (v2) 63.5g
BDN9 Rev.2 has STM32F072 microcontroller with USB support, so Arduino Pro Micro or combatible development board is no longer needed.
Documentation¶
BDN9 has some open documentation at GitHub, like schematic and case files, but not layout or pcb gerber files.
Assembly¶
This phase was done by going through BDN9 Rev.2 build guide. Sadly, this was the part that I would’ve succeeded with without help, unlike phases after this. Guidance what to do after assembly (flashing, customizing macros etc.) is lacking.
Electrical assembly¶
Assembly consist basically of placing key switches and soldering switches and rotary encoders.Rotary encoders must be the first thing to solder, as inserting those to pcb is difficult if ocb is attached to switch plate via soldered switch. Other than that, there is no limitations.
For key switch layout I chose following:
Layout | ||
---|---|---|
Rotary encoder | Healio (v2) | Rotary encoder |
Box Pink | Box Royal | Kailh Polia |
Box White | Box Burnt orange | Durock T1 |
Soldering was easy. Rotary encoders first, then switches that are attached to switch plate.
Case assembly¶
Easiest option is to screw bottom plate to switch plate with included 8 mm spacers.
Visiting Fablab, I lasercut various C-shaped mid plates out of acrylic using design file hosted in Keebio’s BDN9-case repository in GitHub.
Firmware¶
I plan to get this macropad up and running as soon as possible and then start working on the details.
So, for firmware I choose QMK, because QMK has support for BDN9 macropad.
QMK?¶
I had never even heard of QMK before this project, so here’s some rough outline of QMK.
QMK has:
- Homepage https://qmk.fm/
- Documentation https://docs.qmk.fm/#/ (Tutorial topics helped a lot)
- Firmware https://github.com/qmk/qmk_firmware (this macropad needs firmware, but I don’t have to understand the whole firmware at once to start using it and getting better understanding of it)
- Online configurator https://config.qmk.fm/ (not used for this project, due to lack of support for rotary encoders)
- Flashing tool, QMK Toolbox https://github.com/qmk/qmk_toolbox
By browsing to Keebio BDN9 page in QMK firmware repository, I found instructions that sound simple enough.
Generating firmware with default keymap using QMK¶
Following Build environment setup I did following in order:
- Installed QMK Toolbox
- Installed MSYS QMK
- Launched QMK MSYS
- run command ‘’‘qmk setup’‘’
- answered y to do I want to clone qmk firmware
- waited patiently until ‘’‘Ψ QMK is ready to go’‘’ is displayed
- test environment using ‘’‘qmk compile’‘’
- example command for Clueboard 66% is ‘’‘qmk compile -kb clueboard/66/rev3 -km default’‘’
- I ran ‘’‘qmk compile -kb keebio/bdn9/rev2 -km default’‘’
- waited QMK to compile and assemble a lot of files
- .bin firmware file was copied to qmk_firmware folder!
- run command ‘’‘qmk setup’‘’
Flashing¶
More QMK. ‘’‘qmk flash -kb keebio/bdn9/rev2 -km default’‘’
Bootloader mode¶
I set BDN9 to bootloader mode by plugging it to computer and pressing and holding reset button for about 3 seconds until Windows gives that “new device connected” sound. I had QMK Toolbox open and it reads:
’‘’*** STM32 DFU device connected (WinUSB): STMicroelectronics STM32 BOOTLOADER (0483:DF11:2200)’‘’
After selecting file, I clicked Flash. I seems that everything went well, but macropad doesn’t work. I believe reason is that macropad wakes into DFU mode.
Solution¶
Something was wrong with left encoder. It acted as if it was held pressed randomly, as if it’s pin was floating (Hi-Z state). Some bootmagic setting helped, switching it to lite or off etc., need to revisit this later.
Editing default keymap & flashing it¶
I’d like to have volume control on one knob (press to mute) and window scroll (alt-tabbing) (press to… save?) or browser tab scroll (press to… close tab?) on other knob (layers?). Button between knobs could change layers.
Check QMK docs for example on ALT-Tab
VIA?¶
https://www.youtube.com/results?search_query=Porting+VIA+Ports
Links:¶
- https://www.reddit.com/r/olkb/comments/fndiw5/rotary_encoders_in_qmk/
- https://beta.docs.qmk.fm/using-qmk/hardware-features/feature_encoders
- Nice ideas for rotary encoder use cases with code examples
- Fix for too fast media keys
- https://www.reddit.com/r/olkb/comments/bvymee/bdn9_the_board_that_gave_me_a_far_better/