• Stars
    star
    413
  • Rank 104,801 (Top 3 %)
  • Language
    C
  • License
    Other
  • Created almost 9 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Ultimate Hacking Keyboard firmware

Ultimate Hacking Keyboard firmware

Build Status

This repository hosts the firmware of the Ultimate Hacking Keyboard.

If you want to use the latest firmware version for your UHK, then instead of going through the pain of building the firmware, simply download the latest release of Agent and update to the latest firmware version within Agent with a click of a button.

Developing

If you're one of the brave few who wants to hack the firmware then read on.

  1. Make sure to clone this repo with:

git clone --recursive [email protected]:UltimateHackingKeyboard/firmware.git

Then, depending whether you want a full IDE experience or just minimal tools for building and flashing firmware, read IDE setup or Minimal development setup (if you prefer a text editor + command line).

IDE setup

  1. Download and install MCUXpresso IDE for Linux, Mac, or Windows.

  2. Install the GNU ARM Eclipse Plugins for in McuXpresso IDE. This is needed to make indexing work, and to avoid the "Orphaned configuration" error message in project properties.

    1. In MCUXpresso IDE, go to Help > "Install New Software...", then a new dialog will appear.
    2. In the Name field type Eclipse Embedded CDT Plug-ins and in the Location field type https://download.eclipse.org/embed-cdt/updates/neon, then click on the Add button.
    3. Go with the flow and install the plugin.
  3. In the IDE, import this project by invoking File -> Import -> General -> Existing Projects into Workspace, select the left or right directory depending on the desired firmware, then click on the Finish button.

  4. In order to be able to flash the firmware via USB from the IDE, you must build Agent which is Git submodule of the this repo and located in the lib/agent directory.

  5. Finally, in the IDE, click on Run -> External Tools -> External Tools Configurations, then select a release firmware to be flashed such as uhk60-right_release_kboot, and click on the Run button.

Going forward, it's easier to flash the firmware of your choice by using the downwards toolbar icon which is located rightwards of the green play + toolbox icon.

Minimal development setup

  1. Install the ARM cross-compiler, cross-assembler and stdlib implementation. Eg. on Arch Linux the packages arm-none-eabi-binutils, arm-none-eabi-gcc, arm-none-eabi-newlib.

  2. Install Node.js. You find the expected Node.js version in lib/agent/.nvmrc file. Use your OS package manager to install it. Check the NodeJS site for more info. Mac OS users can simply brew install node to get both. Should you need multiple Node.js versions on the same computer, use Node Version Manager for Mac/Linux or for Windows

  3. Build UHK Agent. cd lib/agent && npm ci && npm run build.

  4. Still inside the Agent submodule, compile flashing util scripts. cd packages/usb && npx tsc.

  5. Generate versions.h. cd scripts && npm ci && ./generate-versions-h.js

  6. When developing, cd to the directory you're working on (left/right). To build and flash the firmware, run make flash. Plain make just builds without flashing.

Releasing

  1. To build a full firmware tarball:
    1. Run npm install in scripts.
    2. Run scripts/make-release.js. (Or scripts/make-release.js --allowSha for development purposes.)
    3. Now, the created tarball scripts/uhk-firmware-VERSION.tar.gz can be flashed with UHK Agent.

Contributing

Want to contribute? Let us show you how.

Custom Firmwares

The following list contains unofficial forks of the firmware. These forks provide functionality unavailable in the official firmware, but come without guarantees of any kind:

  • https://github.com/kareltucek/firmware - firmware featuring macro engine extended by a set of custom commands, allowing more advanced configurations including custom layer switching logic, doubletap bindings, alternative secondary roles etc.

  • https://github.com/p4elkin/firmware - firmware fork which comes with an alternative implementation of the secondary key role mechanism making it possible to use the feature for keys actively involved in typing (e.g. alphanumeric ones).

More Repositories

1

agent

Ultimate Hacking Keyboard configurator
TypeScript
695
star
2

uhk60v1-electronics

The schematic and PCBs of the UHK 60 v1
JavaScript
164
star
3

datasheets

The datasheets of the ICs used in the Ultimate Hacking Keyboard and in its add-on modules
37
star
4

current-window-linux

Command line utility retrieving the properties of the current window on Linux
C
34
star
5

firmware-avr

The deprecated AVR firmware of the Ultimate Hacking Keyboard
C
20
star
6

ugl-kicad-lib

The KiCad library of Ultimate Gadget Laboratories
19
star
7

bootloader

The bootloader of the Ultimate Hacking Keyboard
C
19
star
8

uhk60v2-electronics

The electronics files of the UHK 60 v2
JavaScript
10
star
9

flasher

Scripts to flash the bootloader and firmware images of the Ultimate Hacking Keyboard
HTML
5
star
10

opendous-kicad-lib

Opendous KiCad library
4
star
11

KSDK_2.0_MKL03Z8xxx4

NXP Kinetis SDK v2.0 built for MKL03Z8xxx4 processors, all toolchains, Linux
C
4
star
12

KSDK_2.0_MK22FN512xxx12

NXP Kinetis SDK v2.0 built for MK22FN512xxx12 processors, all toolchains, Linux
C
3
star
13

KSDK_2.0_FRDM-K22F

NXP Kinetis SDK v2.0 built for the FRDM-K22F development board, all toolchains, Linux
C
3
star
14

emc-tests

The EMC test results of the Ultimate Hacking Keyboard
3
star
15

trackpoint-electronics

The electronics files of the trackpoint module
3
star
16

KSDK_1.3_FRDM-KL03Z

NXP Kinetis SDK v1.3 built for the FRDM-KL03Z development board, all toolchains, Linux
C
3
star
17

keycluster-electronics

The electronics files of the key cluster module
2
star
18

MCUXpresso_SDK_2.2_MK22FN512xxx12

MCUXpresso SDK v2.2 built for MK22FN512xxx12 processors, all toolchains, Linux
C
2
star
19

MCUXpresso_SDK_2.2_MKL03Z32xxx4

MCUXpresso SDK v2.2 built for MKL03Z32xxx4 processors, all toolchains, Linux
C
2
star
20

cla-bot

The CLA bot is responsible for getting CLAs signed by contributors
TypeScript
1
star
21

touchpad-electronics

The electronics files of the touchpad module
1
star
22

SDK_2.8.0_MKL17Z32xxx4

MCUXpresso SDK v2.8.0 built for MKL17Z32xxx4 processors, all toolchains, Linux
C
1
star