Monstargear XO87

My Monstargear XO87 PCB Custom Firmware

A few years ago, I had purchased the XO V3 keyboard from Monstargear. They are a small company in South Korea that builds custom PCs and (obviously) keyboards. This was my first fully custom keyboard that I had ever build. I ordered the RGB version and had built it pretty much the same day. The factory in China that Monstargear had hired to build the PCB for them used a web page to build the firmware. Unfortunately, the firmware it built for me when I was trying to change my layout bricked my PCB. When I reached out to Monstargear, they quickly and without question shipped me a new PCB. I, however, was not able to just give up on the old PCB. I asked Monstargear to see if they were able to get the source code for the keyboard, but their supplier refused. This was against the licensing for QMK, but trying to force a company in China to comply with that was nearly impossible.

Not being discouraged, I built myself an ISP flasher from an old Arduino UNO I had laying around and I was able to flash the LUFA bootloader on the PCB. Once I did that, the PCB was recognized by my computer, so I knew it wasn't completely dead. Not having the source code meant the only option was to rewrite my own from scratch. I grabbed my multi-meter and traced out all the pins of the controller to see what they were connected to and jotted it all down on paper.

Armed with this info, I started to learn QMK and the C programming language. By this time, my new PCB had arrived and I mostly used it as a control to compare my testing results. Thanks to some help from the great people on the QMK Discord server, I was able to build a working firmware that got the keyboard to once again have basic functionality. Slowly I added support for the RGB matrix lighting and VIA. Once I cleaned up the code (again with some help from the QMK folks) I was able to submit the keyboard to be officially added to QMK and VIA.

Now that everything was "official" I reached out to my contact at Monstargear and learned that they had "a bounty" on adding VIA support since their manufacturer wouldn't do it for them. They used the firmware I had written and flashed it to all the new PCBs they had on hand before they shipped them out. Being that I had done this for myself and released it publicly for the community, I hadn't asked for any kind of compensation, however Monstargear did offer me some things as a thank you.

This was my first real deep dive into QMK and the custom keyboard community and it taught me a lot along the way. I had never used an ISP flasher before, written C code before, or used QMK. Monstargear even sent me some of the soldered version of their PCBs for me to reverse engineer which I was able to get most functionality added and submitted it all to QMK. It was a fun project and I'm glad that I stuck with it even though I didn't need to. All my notes and source code are available on my Github.

I'd like to give a big shout-out to CCW and they rest of the people at Monstargear for the amazing support in both sending me hardware/documentation and helping me test out my builds. They are a fantastic company and I highly recommend them.

Monstargear XO v3 White/Blue

Tealios V2 Swithes

MT3 Camilo Keycaps

Durock V2 Stabs

OEM PCB with my firmware

POM Plate

Monstargear XO v3 Blue/White

Tealios V2 Tiffany Blue switches

MT3 Dasher Keycaps

Durock V2 Stabs

Aftermarket PCB from FJ Labs

Aluminum Plate

Designed to look like the 1970's Dasher terminal keyboard

The very first build of my very first custom mechanical keyboard

Just before the adding the keycaps.

Following the traces on the MCU

Comparing the kernel messages against a known good board

ISP flashing a new bootloader

ISP flashing one of my builds of the new firmware

Testing the LED matrix on the solderable board the manufacturer sent me

The code after porting QMK

Brass weight on the bottom of the keyboard