Skip to content


Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


[If you are looking for a VT100 terminal that supports USB keyboards then I recommend taking a look at VersaTerm which supports more USB keyboards, has better VT100 support, supports HDMI monitors and is much more configurable than this project]

This is a modified firmware for Geoff Graham's ASCII Video Terminal which changes it to use a keyboard connected to the USB port instead of the PS/2 port. All other features of the terminal are identical to the original, except for the USB-to-serial bridge functionality (since the USB port is now used for the keyboard).


No modification to the original hardware is necessary. There are a couple of things to note:

  1. USB Connector. The USB connector on Geoff's terminal is used to plug the terminal into a computer as a client device, therefore the socket on the board is a USB type B client side connector. To plug in a keyboard, you need a type A host side connector. You can use an adapter like this (or this or this depending on your socket).

  2. Power supply. Since the USB socket is taken up by the keyboard, it can no longer be used to power the Terminal. You need to power the terminal from the external 5V power connector. Additionally you need to place a jumper on the "USB PWR" jumper pad so the keyboard receives power.


The new software can be applied as a firmware update to the Terminal. Just follow Geoff's instructions from his V1.3 firmware update, When loading the HEX file, use this instead of the HEX file in Geoff's archive. It is always possible to revert the Terminal to the original state by (re-)applying Geoff's original V1.3 update.

Keyboard Compatibility

This firmware requires the USB keyboard to be directly connected to the Terminal's USB socket. If there is a USB hub in between the terminal and the keyboard then the keyboard will not work. Some keyboards have built-in USB hubs and those will not work either. If your keyboard has one or more USB sockets on it (to connect a mouse for example) then it likely contains a USB hub and will not work.

Source Code

The source code is provided in the "firmware" subdirectory. The main parts are almost identical (with minor modifications) to Geoff's code, except for the USB keyboard support. To compile, use MPLAB X version 4.05 or later. There are two different configurations, "Bootload" and "Programmer". Use "Bootload" to create a .hex file that can be uploaded via the bootloader. Use "Programmer" to create a .hex file that can be uploaded directly via the MPLAB (IDE or IPE). Note that when the "bootload" configuration is selected you will not be able to run or debug the code from within the MPLAB X IDE (will upload but not run properly).

Recently (as of October 2021) I have received feedback from two people who compiled the code with a recent version of MPLAB X. This required installing some extra legacy library and compilers.

Steve Willoughby ( did the following to successfully compile the code:

It is important to install the compiler first, and then the plib library. After installing, start the MPLAB IDE. Open your project properties and set the "Compiler Toolchain" setting to XC32 (v1.40).

Rees Machtemes succeeded with this procedure:

  • Download and install the xc32 v1.44 compiler for your system
  • Download and install the pic32 peripheral libraries. On MacOS, use this link:
  • Since the optional Harmony plug-in App was used to build this project in the beginning, install it.
    • From within MPLAB X IDE, Tools>Plugins and click Available Plugins.
    • Check "MPLAB Harmony Configurator" version 2.0.5.x
    • and click Install.
    • Restart MPLAB.
  • Now build the TerminalUSB project and enjoy tweaking


A modified firmware for Geoff Graham's ASCII Video Terminal to support USB keyboards






No releases published


No packages published