Skip to content

Instantly share code, notes, and snippets.

What would you like to do?

Using O2D to Program Duck PCBs

Special Thanks to KacKLaPPen23 and iNViSiBiLiTi for making this guide possible and being generally excellent people!

Programming Duck PCBs with O2D is a notoriously shitty experience.

Luckily with O2D 1.10 and this guide it will be less shitty!


Everything except ATMEL Flip and the Korean Language pack should be prepackaged and ready to go in the first link.

Programming your PCB

Before anything, change your machine's System Locale to 'Korea'. Instructions for changing System Locale to Korea for Windows 7/8/10 can be found Here. This will require a system restart to complete the change.

Entering Bootloader Mode

Every Duck PCB has a dedicated 'flip' key --- e.g. Caps Lock on Viper/Eagle.

A full list of flip key locations for Duck PCBs is Here.

This site is also a great resource for programming Duck Boards in general (far more comprehensive and detailed than this guide, but less readable and concise imo lol). The purpose of this guide is to get a keymap flashed onto your Duck board

TODO: insert pictures of flip keys on Duck PCBs

Hold down the 'flip' key before plugging your PCB in to enter bootloader mode.

You will know your PCB is in bootloader mode if the LEDs/keys do not work and an unknown ATMEGA32U4 device appears in your Device Manager.

Note: If you cannot get your PCB to appear in the Device Manager as ATMEGA32U4, troubleshooting instructions can be found Here. Once it shows up, right-click it and update the firmware (this may not be necessary but is encouraged).

TODO: insert picture here of Device Manager

Once you've confirmed your Duck PCB is plugged in, in bootloader mode, in Device Manager, and with updated firmware; you are now ready to generate your custom keymap and flash your Duck PCB!

Generating a Keymap

Navigate to the folder you downloaded and unzipped from [this link](O2D 1.10 + dfu) and locate/open the 02D_KeyMapper_Custom_v1.10.653.exe file.

TODO: insert picture here newly opened O2D 1.10

TODO: insert picture here file > new in newly opened O2D 1.10

To create a new keymap: go to File > New and select the type of keyboard you are programming. This will bring up a default keymap for that keyboard PCB. For Viper/Eagle V2, it will look like this:

TODO: insert picture here of O2D 1.10 with new Viper/Eagle V2 keymap

To customize the keymap, simply select the layer, select the key on that layer, and click the what you want that key to do from the keycode choices at the bottom. Note: be careful about the 'Apply to All Layers' checkbox on the top left.

For function layers, the MFN keycode on hold will toggle Layer 1 to Layer FN1, Layer 2 to Layer FN2, and so on --- this is likely what you want for fn on shift right shift if you want an HHKB layout.

To save your keymap to a .hex file, go to File > Save and click save. Note: if O2D crashes when you try to save, try renaming the file to something shorter --- e.g. Viper.hex.

TODO: insert picture here of file > save in O2D 1.10

TODO: insert picture here of save screen in O2D 1.10

If the keymap .hex file is saved successfully, it should appear in the same folder as the O2D 1.10 .exe.

TODO: insert picture here of .hex file in explorer

To edit this file whenever, go to file > open, open your .hex file, modify, and save using the above instructions.

Flashing your PCB

Once you have a .hex file generated and saved, in O2D, go to file > firmware upload:

TODO: insert picture here of firmware upload screen in O2D

Simply click the upload button and your keymap should be loaded onto your PCB!

Disconnect and reconnect your keyboard to begin use. Happy Clacking!

O2D Caveats

  • If you attempt to save your .hex file and O2D crashes, try renaming the file to something shorter --- e.g. Viper.hex
  • If the arrow keys appear as ? on O2D, you will need to change your System Locale to Korea and install the Korean Language pack for Windows. if you're reading this for the first time here, you obviously didn't follow the instructions above very well (smh tsk tsk for shame)
    • Your arrow keys will save to your .hex file as 'EMPTY' in this case and will not work.
    • To fix this, instructions for changing System Locale to Korea for Windows 7/8/10 can be found Here. This will require a system restart to complete the change.



This comment has been minimized.

Copy link

@gwerbin gwerbin commented May 2, 2019

FWIW I didn't have to change my locale on Windows 7 -- error messages and text boxes had some gibberish but everything worked fine.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment