Building Firmware From Source

We are not responsible for bricking keyboards and this information is provided for advanced users who assume all risk involved with firmware flashing their devices.

This will override any custom keymaps you have made!

If you want to make any changes to a Keyboard’s keymap or add support for new keyboards to the SignalRGB QMK Protocol, you will need to build it from source.

Steps to build from source:

  1. Download QMK MSYS from here and install it.

  1. Open QMK MSYS and you will be greeted with a screen similar to the one below:
  2. Paste this command into the MSYS window and press enter: mkdir SignalRGB

  1. Paste this command into the MSYS window and press enter: cd SignalRGB

  1. Paste this command into the MSYS window: git clone -b QMKTYPE https://gitlab.com/signalrgb/qmk_firmware.git

NOTE: REPLACE QMKTYPE WITH ONE OF THE FOLLOWING:

  • QMKRelease_1.0 : Use this if you are building a standard QMK keyboard or a VIA Keyboard
  • Sonix_QMKRelease_1.0 : Use this if you are building a Sonix Keyboard
  1. Paste this command into the MSYS window and press enter: cd qmk_firmware

  1. Paste this command into the MSYS window and press enter: make git-submodule

  1. Next, open file explorer and navigate to %userprofile%\SignalRGB\qmk_firmware\keyboards

  1. Then, find and open the folder for your keyboard.

  1. Find the file named rules.mk and open it.

  1. Look through the file and make sure there is a line that has SIGNALRGB_SUPPORT_ENABLE = yes.

  1. If there is not a line that has: SIGNALRGB_SUPPORT_ENABLE = yes, add it.
  2. if you want to edit the keymap for your keyboard, find the keymap.c file and make your changes.

  1. Once you are done making changes to your keyboard firmware, go back into QMK MSYS.
  2. Next, paste this command : make KEYBOARDBRAND/KEYBOARD:KEYMAP

NOTE: REPLACE KEYBOARD BRAND WITH YOUR KEYBOARD BRAND, KEYBOARD WITH THE KEYBOARD MODEL, AND REPLACE KEYMAP WITH THE KEYMAP TYPE.

KEYMAP TYPES:

  • default: This is the keymap you will use if you aren’t compiling for VIA
  • via: This is the keymap you use if you are compiling for VIA

  • If the firmware fails to compile, join the discord and ask for help in the QMK channels.

Now that you have compiled your firmware, you will need to flash it to your keyboard.

  • You will need to find flashing instructions for your keyboard online, as flashing instructions differ between keyboards.
  1. After flashing your keyboard, you need to modify the keyboard plugin below to get SignalRGB working with your keyboard.

Link to Default Keyboard Plugin

  • After downloading the keyboard plugin above, open it in a text editor.

Javascript

export function Name() { return “QMK Keyboard”; }

export function VendorId() { return 0x000; }

export function ProductId() { return 0x0000; }

export function Publisher() { return “WhirlwindFX”; }

export function Size() { return [21, 6]; }

export function DefaultPosition(){return [10, 100]; }

export function DefaultScale(){return 8.0}

export function ControllableParameters() {

return [

{“property”:“shutdownColor”, “group”:“lighting”, “label”:“Shutdown Color”, “min”:“0”, “max”:“360”, “type”:“color”, “default”:“009bde”},

{“property”:“LightingMode”, “group”:“lighting”, “label”:“Lighting Mode”, “type”:“combobox”, “values”:[“Canvas”, “Forced”], “default”:“Canvas”},

{“property”:“forcedColor”, “group”:“lighting”, “label”:“Forced Color”, “min”:“0”, “max”:“360”, “type”:“color”, “default”:“009bde”},

];

}

Copy

  1. After opening the keyboard plugin, you will be presented with a screen similar to the one above.
  • You will need to fill in some of these fields, starting with the Name field.
  • The name field needs to be filled in with the name of the keyboard that you developed firmware for.

Javascript

export function Name() { return “Massdrop CTRL QMK Keyboard”; }

Copy

  1. Next, we need to fill in the VendorId for the keyboard.
  • To find the VendorId for the keyboard, open SignalRGB.
  • Then click the settings cog in the bottom left corner.

Then, click on Device Information.

Then find your keyboard and note down its VendorID and ProductID.

Now fill the VendorId and ProductId fields with these values.

Javascript

export function Name() { return “Massdrop CTRL QMK Keyboard”; }

export function VendorId() { return 0x04d8; }

export function ProductId() { return 0xEED2; }

Copy

  1. The next field that needs to be filled in is the Publisher field. In the publisher field, you can put your name, username or handle.

Javascript

export function Name() { return “Massdrop CTRL QMK Keyboard”; }

export function VendorId() { return 0x04d8; }

export function ProductId() { return 0xEED2; }

export function Publisher() { return “WhirlwindFX”; }

Copy

  1. Now, we are done filling in fields, and are moving onto arrays.

There are 3 arrays that need modified: vKeys, vKeynames, and vKeyPositions

  • The vKeys array maps each keyboard key to its position within the RGBData being sent to the keyboard.
  • The vKeyNames array tells us which key corresponds to each vKey and vKeyPosition.
  • The vKeyPositions array tells SignalRGB where each key on the keyboard is position-wise.
  • First, change the vKeyNames array to reflect your keyboard.
  • This means that you need to rearrange the vKeyNames so that they match your keyboard.
    • In our case, we had to remove keys and reorganize the remaining ones as our board is a TKL board.

Then update the vKeyPositions array the same way that the vKeyNames array was updated.

Finally, update the vKeys array so that it matches the vKeyNames and vKeysPositions arrays.

  1. Now, save your plugin file into %userprofile%/Documents/WhirlwindFX/plugins, then restart Signal.
  • Your keyboard should start to light up and react with SignalRGB.

If the Keyboard Does Not Light up or Does Not React Properly to SignalRGB:

  1. Go to the Devices page in SignalRGB.

  1. Next, go to your keyboard, and then click on the settings cog.

  1. Then, click the Show Console toggle.

  • There should be a Device Total LED Count in the console. Compare that Device Total LED Count to the number of LEDs that you have assigned.
    • In our case, there are 119 Total LEDs.

If the Number of LEDs Does Match the Number of vKeys you Have:

  • Ensure that the size field of your plugin is 1 larger in each direction than your highest LED Coordinate:
    • In our case, the furthest out LED is at position [17,6], therefore our Size field needs to be [18,7].

Javascript

export function Size() { return [18, 7]; }

Copy

If the Number of LEDs does not Match the Number of Vkeys you have:

  • You will need to add vKeys, vKeyPositions, and vKeyNames to match the number of Total LEDs.
    • In our case, the device had 119 LEDs, so we needed to add 32 LEDS for the keyboard’s underglow.

  • If the number of vKeys matches the number of Total LEDs and the device is sized properly, but the LEDs are improperly mapped:
  • Join the discord and ask for help in the QMK channels.