About a year ago I came across the MNT Reform, an open hardware laptop by german company MNT Research GmbH. I was fascinated by the hackability, the cool design, the vibrant community and the endless options that the ecosystem offers. As I was looking for a 64bit ARM evaluation platform for work anyways I decided to order a device with the beefy NXP LS0128A processor module, featuring 16GB of memory. The LS1028A is derived from the Freescale communication processors that have been PowerPC traditionally, namely the QorIQ line. They switched over to ARM cores, renaming the line to Layerscape. Other CPU modules are available, namely the NXP i.MX8MQ and an adapter to the Raspberry CM4 formfactor, so you can use the Banana Pi CM4 (Amlogic A311D).

Polished Debian experience

MNT Research under the lead of Lukas F. Hartmann has created a really nice system with a polished out of the box experience. Everything oozes quality and love to the detail. Certainly this is not for everyone. An appropriate hacker mindset is probably required to see the beauty of this design.

Find the heart of the machine under an acrylic cover

The acrylic bottom cover symbolizes the openness of the system. Everything is open hardware. The schematics and board layouts, all firmware and even the 3D models and production data. It is all in the companies Gitlab instance at https://source.mnt.re/reform.

So I started adapting the system to my needs and preferences. What really drove me crazy is the keyboard layout, with the Hyper-Key in the bottom left corner and the Control-Key in the place where regular keyboards have the CapsLock-Key. As my brain was absolutely unable to adapt to that, I decided to hack the keyboard firmware which can be found here: https://source.mnt.re/reform/reform/-/tree/master/reform2-keyboard-fw. It is no big deal to modify the keyboard layout, and the flashing of the keyboard controller can even be done from the system itself. Everything is nicely documented here: https://www.ifixit.com/Guide/How+to+flash+MNT+Reform+keyboard+firmware/159165.

Replaced keycaps after modifying the keyboard layout

Custom keycaps are available, so I was able to replace them with blank black ones to avoid confusion.

As I want to use this system for implementing an industrial robot controller, it needs more network ports, so I can use it as an EtherCAT fieldbus master. We had an mPCIe module in stock, so I mounted it to the MNT Reform socket. It was instantly recognized by the OS.

mPCIe networking adapter installed

More challenging was the installation of the RJ45 connector board. As we could not find any position in the case providing enough room, we decided to remove a battery pack, do a breakout in the case and install a 3D printed cover. I couldn’t have done this without the help of my colleague David Schmoor, who has all the 3D construction foo that is required.

Battery pack removed

He also did the surgery, removing the metal using a Proxon drill with a diamond blade.

Surgery

Sadly there were two minor injuries to the case. But the 3D printed cover really came out beautiful.

Installed with 3D printed cover

Since I did not want to loose the battery function, I discussed with Lukas if it would be possible to operate the system with one battery pack only. We made a plan.

Reform charger schematic

First the LTC4020 charging circuit must be modified to output half the charging voltage only. That would require the modification of two resistor voltage dividers: R54/R56(6k8/33k) and R173/R174(47k/10k). Next, GND must be patched over on the no more populated battery connector J2. For this purpose, Lukas sent over some battery pack cables with the wrong length. Good enough for hacking the loop adapter.

GND loop adapter for unpopulated battery pack

Installing this was trivial.

Installed GND loop adapter

I then verified, that the proper voltage was generated by LTC 4020.

Measuring Vfbmax

After reconnecting the pack I could make sure, that the system really works with one battery pack.

Battery status with one battery pack and hacked charger

So finally the system microcontroller needed a new firmware, because it is also dealing with battery balancing. While I was at it, I also decided to improve the display on the keyboard, so it shows 4 cells only. Flashing the system microcontroller is described here: https://www.ifixit.com/Guide/How+to+flash+MNT+Reform+LPC+firmware/159163 The firmware can be found here: https://source.mnt.re/reform/reform/-/tree/master/reform2-lpc-fw

Modified display

After assembling the whole system again, it looked really tidy and everything worked perfectly.

Fully assembled

This hack is probably not for the faint of heart, but it really shows what you can achieve with a full open hardware system. Big thanks to Lukas F. Hartmann and my colleagues for all help, support and parts. This really was a team effort.

For all my software modifications there are merge requests pending in the MNT Research Gitlab, so you can get inspired for your own hacks.