Skip to content

Tools for modifying Novatouch TKL firmware

Notifications You must be signed in to change notification settings

NSHenry/novatools

 
 

Repository files navigation

Novatools - OSX Modifier Edition

This is a collection of tools for reading, patching and flashing the Novatouch TKL firmware.

Disclaimer

This is just a quick hack that was originally developed by vekkt0r, and only tested by him. I forked it, modified it to make a Mac layout Novatouch, and went on my way. It is very dependent on a specific version of the firmware and if your keyboard has another firmware things will most probably break. The checksum of the original firmware will be checked before patching. If checksum differs the patching will fail.

NSHenry Note: It’s worth mentioning that I bought this keyboard a good year and a half after vekkt0r and my firmware passed the checksum.

Still… it is possible you will brick your keyboard by using these tools.

Make sure you store a copy of your original firmware safely.

Pre-requisites

  • MSP430 toolchain - Last released version of osx-launchpad is included since I was having a TON of trouble compiling from source. This version worked for me on OS X El Capitan 10.11.6.
  • mspdebug - Comes with above package.
  • Python

Hardware

Connect MSP430 programmer with Spy-Bi-Wire to the GNS, TEST, RST on the Novatouch programming connector (CN2):

    +--------------------+ 
    |CN2                 | 
    ++-+-+-+-+-+-+-+-+-+-+ 
 10  | | | | | | | | | |  1
     + | | + | + + + + +   
       | |   |             
       | |   +-----+ RST   
       | +---------+ TEST  
       +-----------+ GND   

Usage

Connect Novatouch to programmer and run the make flash target:

$ make flash

This will fetch the original firmware (main flash only), do some patching, and then flash the patched firmware back to the Novatouch.

The patches done by default are:

  • Switch place of the ‘Alt’ and ‘Super’ keys to make it easier when switching between iOS and OS X devices.
  • Add hook function for entering BSL (bootloader) mode with Fn + F1 + F2.

Flashing via BSL is not yet tested because the HID driver on OS X promptly refuses to recognize the keyboard when in that mode. “Should” work fine on Linux though :-)

Edit the patch.py file to do other key mappings, hopefully it’s understandable with the overly commented code.

Matrix

This a table representation of the actual key matrix. The row is the lowest 3 bits of key id and the column is the 4 bits above that (id = xCCCCRRR). I.e. tab = 5 + (2<<3) = 21.

Nate Note: I’m too stupid to understand the above notation. The formula that works for me is (R(C-1))+R+1. C acts as the last full column and the 1 is set to offset that it starts at row 0.

0123456789101112131415
021tilde3f14659870ins-bkspc=
1alt_lsuper_lctrl_lescspcalt_rleftsuper_rctrl_rfn
2f5f8f7f6f9printscrf10f12f11
3zshift_lxf4cbv,mn./rightshift_r
4sacapsdf2fhglkj;ret
5wqtabef3rytoiupdel[\]
6uppausepgup
7homedownscrollend

About

Tools for modifying Novatouch TKL firmware

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 75.3%
  • Makefile 16.0%
  • C 8.7%