Keycapsss Logo

Lily58L Build Guide

PRs Welcome Discord License: CC BY-NC-SA 4.0

You can find the build guide for Rev1 here.


Required parts

Part name Quantity Remarks Photo
Lily58L PCB 2 pcs
Lily58L case 1 set 2 solid panels, 2 with holes for switches
Pro Micro, Puchi-C or Elite-C 2 pcs (a mix is possible) Optionally, use Mill-Max Single Row Socket Headers, to make it hot-swappable.
Key switch (MX) 58 pcs
Kailh switch socket 58 pcs
Diodes 1N4148W (SMD) 58 pcs
TRRS jack 2 pcs
Tactile switch 2 pcs Reset switch
TRRS cable 1 cable Must be a 4-pole cable
Key caps 58 pcs 1.5U caps, can also be 1U
Micro USB or USB-C cable 1 pcs Dependent what you use on the master half.

Optionally parts

Part name Quantity Remarks Photo
OLED module 0.91 2 pcs It is possible to use only one display
WS2812 (5050) 12 pcs RGB LED's for underglow
SK6812 Mini-E 58 pcs RGB LED's for keycap backlight (underglow LED's must be soldered, because they are connected in series)


Note that the case of the black version has a scratch-resistant paint (solder resist) that can arrive with scratches from shipping and transportation. This is the nature of the product. In addition, please be careful, as the case will be scratched if it hits or rubs a hard thing after assembly.

This PCB is reversible. We will mount parts on each side.

Mark the surface with masking tape to make it easy to keep track of the back and front of each board.

lily58l mx 1

Attach the diodes

The diodes are mounted on the back side of the board.

Pay attention to orientation, Diodes are polarized. If the orientation is incorrect, the key will not respond.

Solder the diode as shown in the following figure.

SMD Diode orientation

Apply preliminary solder (melt a small amount on the substrate) on one pad of the PCB diode.

smd diode solder 1

Then use tweezers to solder one side of the diode, using the pre-soldering to secure the diode.

Then solder the remaining side.

smd diode solder 2

When all diodes have been soldered, check for missing spots.

[Placeholder: image with all diode marked]

You can use a multimeter on the front side of the board to ensure that the solder connections are good and that the orientation of the diodes is correct.

Solder the LED's for underglow (optionally)

Solder the WS2812 LED's (without legs), to the marked positions on the back side of the board.

SK6812 Mini RGB LED's

Pay attention to orientation of the LED's.

SK6812-Mini led orientation

The LED's are connected in series. If a LED is broken or has bad solder connections, the following LED's will not light up.

Solder the LED's for per switch RGB (optionally)

It is necessary to solder all WS2812 LED's (underglow) in the previous step, to use the LED's for the per switch RGB (all LED's are connected in series).

Solder the SK6812 Mini-E LED's (with legs), on the back side of the board.
Pay attention to orientation of the LED's.

We solder LED's using the same approach as for the diodes. In that case: tin one pad, put the LED on, reflow, solder the other three pins.

sk6812 mini e led 1

Correct orientation from the front view.

sk6812 mini e led 4

It is necessary to solder all LED's, even if you use the rotary encoder.

sk6812 mini e led 3

For the LED's it's important to keep the heating as short as possible. Try to not touch the LED itself with the iron but rather only the solder that's supposed to connect to the metal pin. Use flux. The LED's are connected in series. If a led is broken or has bad solder connections, the following LED's will either not light up at all or will light up in a different color than the default (red). Double-check the last LED that lights up properly and the first that doesn't. On the LED's with legs it's easily possible to get a loose connection.

Soldering the TRRS jack and reset switch

The TRRS jack and the reset switch are mounted on the front side (opposite side of diodes). Attach the parts and fix them temporarily with masking tape. Turn over the board and solder the pins, making sure that the TRRS jack and reset switch are in firm contact with the board.

TRRS jack and reset button

be careful don't be careless doing this part. TRRS jacks are parts you can indeed mess up. I promise.

Preparations for the OLED display

On the front side of the board, apply enough solder to bridge the four jumper terminals in the Pro Micro section.

oled jumper pins 1

Attach the connector for the OLED on front side (opposite side of diodes). Be careful to avoid adding a lot of solder, as it is easy for solder to flow into the connector.

Some tips for installing the OLED on the socket

  • if you soldered the socket for the OLED, remove the black plastic thingy that's part of the header installed in the OLED. The you'll be able to shorten it's legs with your pliers and put them into the socket, resulting into a way more low profile OLED.
  • If you do not have sockets installed, you can add height to the oled, by removing pins out of headers, and putting the empty black plastics part onto the headers of the OLED.

Add image here: "Soldered 4pin socket for Oled"

Install Pro Micro (with sockets)

Before installing the Pro Micro (or other Micro Controller), check whether they are working by plugging them in and flashing the default keymap.
You can find more information about this topic here.

When Installing the Pro Micro Puchi-C or Elite C, be sure it has the right orientation! The chips on the Board have to face downward and the USB Port is on the upper edge of your Board.

The pin header enclosed in the bag of Pro Micro can be used, but i recommend to use the Mill-Max socket headers. With the Mill-Max header it's easier to replace the Pro Micro, if it's broken. (Especially the Pro Micros will break at some point)

Standard header/ Mill-Max socket header

Note the outlined sets of holes in PCB, and insert the Standard header/Mill-Max sockets into the outlined holes on the front side. Please be careful, as the connections are different for the right and left boards.

Pro Micro_PCB

Solder the Standard header/Mill-Max sockets from the back side.

Mill-Max socket headers

Insert the pins (you can also use legs from through hole diodes/resistor) with a pliers into the sockets.

mill max 12 single row socket 2

Place the Pro Micro (Micro-USB socket facing down).

mill max 12 single row socket 3

Solder the pins and shorten the pins with diagonal pliers.

mill max 12 single row socket 4

For other ways to mount your Pro Micros, look at the crkbd build guide.

The Procedure is absolutely identical for Pro Micro clones like Puchi-C, Elite-C, or similar.

Solder the rotary encoder (optionally)

Soldering the rotary encoder is as simple as any other component. Put the encoder from the front into the holes on the PCB, just below the screen, and solder it from the back.

Tip Depending on your case you should first try and bend the rotary encoder legs a bit before soldering it in. The legs can prevent your case from closing completely, as it will rest on the protruding legs. Bending the pins so that they are flush with the encoder helps here. (you can also just clip them off)

The top two legs serve as a simple connection that is closed by the rotary encoders tactile press. It's connected to the pins a switch would be connected to, if there were on in the place of the rotary encoder. Therefore, in your firmware the rotary encoder will serve, among other things, as a switch in the matrix.

The lower three pins do the actual rotary-encoding part

You have reached a checkpoint

Plug your keyboard, look what happens, solve problems, be happy if there are none. (if you followed all the steps your pro micros should have firmware at this point) By now you can also checked whether all switches will be able to work. In order to do so, short the pads on which the kailh sockets will be installed (next step) with tweezers.

Add image here: "Test switches with tweezers"

Solder the sockets

The sockets are mounted on the back side, the same side as the diodes.

Much like the approach used for the diodes above, begin by pre-soldering one side of the socket pad, place the component, and hold it in place with tweezers. (The sockets can also be held in place by hand, but please take extra care not to burn yourself.) The image shows a soldered MX socket.

The sockets take way more solder than the other components like the LED's and the diodes. But don't exaggerate...

Kailh Hot-Swap Sockets

Install the Pimoroni Trackball (optionally)

The trackball module will only work on the master side (side with USB connection). This is related to the communication between the two half of the keyboard.

Solder the included header pin to the module.

Pimoroni Trackball Header Pins

Carefully remove the black plastic from the pins.
With a pliers you can push up the plastic, to remove it.

Pimoroni Trackball remove plastic

Add isolation tape to the back side of the trackball module.

Pimoroni Trackball isolation tape

Bridge the jumper on the top side of the pcb.

Pimoroni Trackball bridge jumper

Attach (not solder) the trackball module to the pcb. Then put the case top plate on top and fix it with 2-4 switches.
This way the trackball module sits perfect in the right place.
Now you can solder the trackball module pins from the back side.

Pimoroni Trackball remove plastic

Case assembly

Attach the spacer

Attach four 10mm round spacers to the holes near Pro Micro. It's easy to insert a screw from the back of the board and attach the spacer from the top. 2019-01-26 15 02 38

Peel off the masking tape used to identify the front and back of the board.

Attach the key switch

Attach the top plate spacers for alignment. (MX: 7mm Choc: 4mm) 2019-01-26 14 56 05 2019-01-26 14 56 24

Attach four key switches to the top plate. (In the case of Choc switches, starting with two switches in the plate may be easier.) 2019-01-26 14 58 48

Insert the switch into the board for alignment, and line up the components. 2019-01-26 15 01 12

After confirming that there are no bends in the switch pins, you can attach it firmly by starting from the middle row and working outward. Be careful: Kailh BOX switches and Choc switches require some power for installation. Always be careful to put the switches in nice and straight, otherwise you'll bend the pins and scratch the PCB. After mounting the plate, push the switches again to make sure that installation is complete. 2019-01-26 15 10 06

Pro Micro protective acrylic installation

Peel off the protective plastic layer covering the acrylic, and attach the acrylic to the board. Mount with the wider side (labeled "幅が広い" here) outwards.

Attach with screws.

2019-01-26 15 21 15

Flash keymap on Pro Micro

The board requires a keymap in order to function. This section assumes that you're familiar with keymaps and the use of the QMK tool. If not, please refer to the QMK "Getting Started" guide (Windows: MSYS2; Mac, Linux: avrdude)

The QMK Toolbox can be used to write non-customized keymaps via a GUI, avoiding the need to configure a local QMK environment. (For custom keymaps, it's recommended to build the full environment described above).

Clone/download the QMK firmware and execute the following in the qmk_firmware directory to write the default Lily58L keymap

make lily58/light:lily58l:avrdude

When Detecting USB port, reset your controller now... is displayed, press the reset button on the keyboard to start writing. Each half of the keyboard must be programmed separately using this approach.

If you're using DFU bootloader (in case of the elite c), replace the 'avrdude' with 'dfu'

Default keymap

The default keymap is laid out on the assumption that it will be used in the MacOS/US keyboard environment. Feel free to get creative and experiment with keymaps that match your preferences; consider changing to the JIS layout or adding a key to switch between English and Kana, for example.

The best of my own keyboard: lily58_default

Operation check

Connect the left and right sides with a TRRS cable, connect the Micro-USB cable to Pro Micro on the left side (in the case of the default keymap), and check if the key responds. The build is completed by attaching the four rubber feet to the back of each board. Thank you for your hard work. 2019-01-26 15 24 52 unadjustednonraw_thumb_2ddc


If everything works: You have built your lily58L. Have fun! If something doesn't work:

When in trouble

Q. One or more rows/columns of key switches do not respond

A. The Pro Micro board may not be soldered and attached firmly. Check again, and re-solder and reinstall if necessary.
Also check the solder points for bridges.

Q. A single key switch doesn't respond

A. There may be a problem with the key switch's insertion, socket or diode soldering.

In the case of bad key switch insertion: After removing the key switch, make sure that the pins aren't bent, and then push it in again and install it.

In the case of badly attached socket: Re-solder the problem socket, or reflow and add solder if the joint is weak.

In the case of badly attached diode: Check the direction of the diode in question. If it is wrong, remove it and re-solder it. Additionally, if there isn't enough solder, please re-solder.

Q. A symbol different from the symbol input by "@" or "[" etc. is input (on Windows, etc.)

Since recognition of keyboard is recognized as JIS keyboard on OS, another symbol will be input when inputting with Lily 58 (treated as US keyboard). Please set Lily 58 as a US keyboard in the OS keyboard settings. After switching, switching to Japanese input becomes the switching key for the US keyboard, and it differs from the JIS keyboard, so please be careful (it can be customized with the keymap etc.).

If you have any problems, please feel free to send a message on Discord or Twitter: @keycapsss

Customize the default keymap

This self-made keyboard use the QMK firmware, described above. The QMK firmware is highly customizable, and you can unlock a lot functionality simply by editing the keymap.

Edit keymap.c and customize

When customizing a keymap, start by making a copy of the qmk_firmware/keyboards/lily58/keymaps/lily58l folder and modifying that directory's internal keymap.c file. Please refer to the official QMK documentation for the key codes and programming specifics.

After changing the keymap,

make lily58/light:lily58lcopy:avrdude

If you get an error, please double-check the board, connection and command.

Handedness by EEPROM

You can tell each side of the Keyboard, whether it's left or right, by writing it into it's eeprom.
In order to do so, first put

#define EE_HANDS

into your config.h.
Then flash the keymap with

make make lily58/light:(yourkeymap):avrdude-split-left 


make make lily58/light:(yourkeymap):avrdude-split-right

respectively. If you're using DFU bootloader (in case of the elite c), replace the 'avrdude' with 'dfu'

From then on, your keyboard will know, which side they are, no matter which side you plug in. You won't have to use the flags again when flashing an update of your keymap.

Use "Per Key" LED's without underglow LED's

If you don't want to use the underglow function with the WS2812 LED's, then bridget the solder pads on the following pictures with a small wire.

Left half - bridge underglow

Right half - bridge underglow


Lily58L schematic