diy-VT100 - A Miniature hardware terminal

Miniature VT100 with all the bells and whistles

Similar projects worth following
A small VT100 that you can carry in your hands, connect to any hardware that provide serial interface.
- Bell (Speaker - 800Hz - Generated via DAC)
- USB and PS/2 Keyboard
- UART 3.3V (5V tolerant pins & Multiple speeds)
- LCD (80x48 characters)
- Accept VT100 commands (most of them - at the moment)
- EEPROM to store configuration
- Uses STM32F767 (ARM uC M7)


Like all our projects - Design files and firmware will be released under GNU GPLv3 or later
Full details:
(Please give me sometime :)


  • Story

    Kuldeep Singh Dhakaa day ago 0 comments

    We are retro enthusiast and loved to know how old technology worked.

    Since we live in a geographical location where technology was adopted late

    (Like most economically developing countries, a big part of the computer & computing was skipped/missed.)

    I was always curious about computing, computers, its history and how technology came to its present day.

    I read alot and came to know that terminals were used with CPU and were bought [mostly] seperately.

    VT100 is one such big name in computer terminal history.

    I wanted to implement a terminal that was designed with todays technology but take its user to the terminal era. They should feel how it worked and still in use.

    While working with MSP430, i realized that serial protocol is still [widely] in use for logging, communication and debugging in microcontrollers.

    One could attach this to SBC (Single Board Computers) & Microcontrollers and get a CLI just like old times!

    With newer version, i have made diy-VT100 feel more-and-more like original VT100.

    • Now a recorded audio of VT100 BELL is generated via DAC. (Original like sound!)
    • Keyboard LED (including Host controlled).
    • Full 80x24 character support
    • SETUP mode act just like original VT100 setup mode
    • USB & PS/2 Keyboard support - these are used today
    • Portable and small

    We not limiting diy-VT100 to VT100 only. (VT100 is only a starting point.)

    Older, Newer, different-other-than-VT100-family can be implemented with the same hardware.

    We hope to preserve the computer hardware terminal history and at the same time design tools that are useful for hackers and makers.

    If you have a working VT100 (or VT102) and could donate to us in India, that would be very helpful!

    ~~~ Kuldeep & Sandeep

  • Project Licence

    Kuldeep Singh Dhakaa day ago 0 comments

    I will take through the project licence.

    Prototype Rev1

    • Schematics - Yes (Available under GPLv3 or later)
    • PCB - Never designed (Only on Zero PCB)
    • Firmware - Yes (Available under GPLv3 or later)



    Prototype Rev2

    • Schematics - Yes (see note1)
    • PCB - Yes (see note1)
    • Firmware - Yes (ported rev1 firmware to STM32F105, i.e. Mostly backend re-write | see note2)

    note1: The design had issues [accidentally used non 5V tolterant pins for 5V I/O].

    So, Didnt make the design public because it could be a problem for potential users.

    Also, PCB making cost money and people were requesting bigger lcd (which was not possible with the current uC], so a re-design of this version was never done.

    note2: USB Host stack already merged in UniCore-MX (under LGPL 3.0 or later).

    Example code is also available in UniCore-MX example repo.

    Firmware use the USB Host stack example code as it is (with tini-wini target specific modification].

    In rev2, 90% of the time on firmware was used for writing USB Host stack from scratch.

    Prototype Rev3

    • Schematics - Yes (see note3)
    • PCB - Yes (see note3)
    • Firmware - Partial (see note3)

    note3: the uC used (STM32F469V) could not be sourced [without long waiting] and was a bad idea to use it. Realized it is very hard to find and not a good sign for future.

    So, this revision was dropped all together.

    Prototype Rev4

    • Schematics - Yes
    • PCB - Yes
    • Firmware - Yes (Mostly a rewrite of rev2 firmware - substancial improvement to code)

    We are working on this prototype.

    Recently improved by-pass filter and bulk capacitor in design.

    This is the version that we expect to make to users (with minor improvements ) [lets see].

    Development tools

    Our project use only Free/Libre/Open Source tools for all development (all revisions).

    arm-none-eabi-gcc, Makefile, KiCAD, OpenOCD, UniCore-MX, etc.. has been used to develop the project.


    All library and rev1 code is already public.

    Only the F105, F469, F767 specific firmware modification and pcb design is not publically available.

    Since F105 (rev2) had design issues [re-design required], continuing F469 (rev3) is not a good idea.

    This Only left us F767 (rev4) - which is eventually be made public under GPLv3+.

    Minor issue in releasing: Few design files (1x Footprint, 1x 3D) are still not specifically released under GPLv3+ compatible licence.

    Waiting-for / trying-to-contact author (s).

  • diy-VT100 meets BeagleBoneBlack (BBB)

    Kuldeep Singh Dhaka2 days ago 0 comments

  • Viewing Arduino Serial Log using diy-VT100

    Kuldeep Singh Dhaka04/21/2017 at 22:51 0 comments

    In this demo, diy-VT100 is used to see Serial log generated by the Arduino sketch.

  • diy-VT100 Revision 2

    Kuldeep Singh Dhaka04/19/2017 at 03:05 0 comments

    - Bell (Speaker - 800Hz)
    - 7 LED (ONLINE, LOCAL, KBD LOCKED, L1, L2, L3, L4 )
    - USB and PS/2 Keyboard
    - UART 3.3V (5V tolerant pins & Multiple speeds)
    - LCD (32x20 characters)
    - Accept VT100 commands (most of them - at the moment)
    - EEPROM to store configuration
    - Uses STM32F105 (ARM uC M3)

  • First glimpse of the the new design of diy-VT100

    Sandeep Kumar04/08/2017 at 16:44 0 comments

    The fully assembled diy-VT100 rev4 with a bigger lcd and stm32f7

    a DIY cardboard stand for our diy-VT100 :)

    diy-VT100(rev-2) debugging diy-VT100(rev-4)

  • Prototyping the new design with STM32F7

    Sandeep Kumar04/05/2017 at 10:18 0 comments

    Freshly arrived F7 microcontrollers from Digikey

  • Code running on STM32F749 Discovery (w/ 800x480 LCD)

    Kuldeep Singh Dhaka03/27/2017 at 08:14 0 comments

    Just for time being, ported the code to STM32F749 Discovery (with 800x480 LCD).

  • \0/ the PCBs for new design of diy-VT100 has arrived

    Sandeep Kumar03/22/2017 at 10:50 3 comments

    We generally get our boards fabricated from PCBPOWER.COM they are affordable and fast(well most of the time, we troll them over phone so they ship on time :P )

  • New design of diy-VT100 (LCD with 80x24 chars)

    Kuldeep Singh Dhaka03/20/2017 at 16:31 2 comments

    Stuff arrived:

    - Components (Except STM32F469V)

    - 5 Inch DPI LCD (RGB - 40pin)

    (New 5 inch LCD compared to the 2nd design)

    Ordered but waiting:

    - PCB (Expected at weekend)

    - Microcontroller (STM32F469V - Sample requested from ST. since the uC is bit rare)

    This time, design incorporate a Class AB amplifier to drive speaker (via DAC).

    This will be used to generate original like VT100 bell.

View all 11 project logs

Enjoy this project?



Gravis wrote 04/17/2017 at 23:14 point

If any, which kernel are you using?  The upside of using a pre-ported kernel is that you can replace the MCU with something cheaper/nicer/freer/etc.  If none, consider ChibiOS/RT or NuttX!

  Are you sure? yes | no

Kuldeep Singh Dhaka wrote 04/18/2017 at 08:50 point

Im UniCore-MX for hardware abstraction (no OS) and there is a seperation between uC specific code and general code (so porting is easier with changes to hardware code or adding a new target). also, code is compile-time configurable with number of rows and columns (and other parameter) to accomodate different sizes lcd and RAM.

  Are you sure? yes | no

Gravis wrote 04/18/2017 at 13:21 point

Sounds like a unikernel.  It's limited to ARM so I recommend taking a look at the two I listed.   I'm not insisting you switch, I just think you should consider other options that could make your project more flexible.

  Are you sure? yes | no

Daniele Lacamera wrote 04/19/2017 at 15:39 point

@Gravis baremetal programming is not the same as a unikernel. Besides, since you are a supporter of Open Source POSIX kernels for ARM, you should also have a look at frosted which is also based upon unicore-mx

  Are you sure? yes | no

jupdyke wrote 04/07/2017 at 23:34 point

I designed and install a data logger that I designed. If something is not working, I have to connect my laptop. I am very interested in this. I would buy a prototype from you, or a kit, or whatever you wanna offer. I would trade you services too. I do mechanical design and have access to a lot of equipment. Maybe I could help you with a laser cut case to go with it. Let me know.

  Are you sure? yes | no

Kuldeep Singh Dhaka wrote 04/08/2017 at 15:04 point

Im working on the new design.
You probably want to get that one.

Wait for some time, i will be adding a log for the new design.

  Are you sure? yes | no wrote 04/07/2017 at 13:13 point

Have you thought about adding a rs232 interface ? there is lots of space you could add a max232 and db9 footprints on board as options.

  Are you sure? yes | no

Kuldeep Singh Dhaka wrote 04/08/2017 at 15:09 point

Yes, in the new design -EXTension connector is provided. 

Also UART/TIMER/GPIO/I2C/SPI pins are in EXT for anything that people want to attach/extend. Perfectly fullfil your usecase: attach a MAX232 and DB9.

  Are you sure? yes | no

Felix Richter wrote 04/06/2017 at 21:14 point

Hey, is there a way to adjust the BAUD rate without re-flashing the STM? I was thinking about some kind of "universal" serial Terminal for quick debugging of other uCs.

  Are you sure? yes | no

Kuldeep Singh Dhaka wrote 04/07/2017 at 01:07 point

Yes, the baud rate can be changed without flashing  (see SETUP-B picture "T SPEED" "R SPEED").

Just like original VT100, one has to goto SETUP-B and change UART speed. alot of speeds are support. 

also, the setting (which includes uart speed data) can be saved on EEPROM. on power up it read settings from EEPROM.

  Are you sure? yes | no

cooheneliezer wrote 03/27/2017 at 17:34 point

I still don't understand what it is usefull for.

Can u plz explain

  Are you sure? yes | no

Kuldeep Singh Dhaka wrote 03/30/2017 at 14:08 point

This is a hardware based text terminal.

You can send VT100 compatible command (via UART) to write text on screen.

VT100 also support graphical drawing [ex: line, pixel] (will be implemented in future)

This project act as a quick screen to any project that output/input via UART.

  Are you sure? yes | no

Duke Circuit Co.,Ltd wrote 03/26/2017 at 05:29 point

How to use this item?

  Are you sure? yes | no

Kuldeep Singh Dhaka wrote 03/27/2017 at 08:09 point

Send over UART {RX, TX} with power from {5V, GND} ready!

Accept VT100 commands.

  Are you sure? yes | no

Luis Diaz wrote 12/30/2016 at 18:39 point


This is a very nice project. Thanks for sharing.

Do you have BOM for the project? Will love to build one for myself :)

  Are you sure? yes | no

Kuldeep Singh Dhaka wrote 12/30/2016 at 19:58 point

Hi Luis,

The design has few problem that im planning to fix soon.

And then upload the complete improvised design. :)

  Are you sure? yes | no

Luis Diaz wrote 01/02/2017 at 11:47 point

Nice! Thanks!

  Are you sure? yes | no

Craig Hissett wrote 12/30/2016 at 15:06 point

This is fantastic. So many uses for a handy terminal such as this.

  Are you sure? yes | no

Kuldeep Singh Dhaka wrote 12/30/2016 at 15:21 point

Thank you!

  Are you sure? yes | no

Craig Hissett wrote 12/30/2016 at 16:03 point

You're more than welcome!

If you ever start selling these get in touch; I'd love to get one.

I currently use and arduino with lcd shield and a few buttons to pass commands to devices via serial,  but it involves having to hardcode commands into the menu to be senylon hen selected . The keyboard support on this would make life so much easier!

  Are you sure? yes | no

ethan.dicks wrote 12/22/2016 at 20:04 point

Very nice for many things, but I still use vintage dumb terminals attached to real and emulated vintage machines (mostly PDP-8, PDP-11, etc., but a few others), and there are plenty of programs that aren't just writing to stdout (that use curses or just raw VT100 control sequences) that expect a minimum screen size of 80x24.  Some vintage apps check, but they are really only checking for 80x24 vs 132x24.  The screen layouts assume a minimum of 80 cols wide.

Great start though.  Definitely clean and minimal, and I do appreciate the support for both USB and PS/2 keyboards.

  Are you sure? yes | no

Kuldeep Singh Dhaka wrote 12/23/2016 at 20:59 point

@ethan.dicks I agree, I have felt the same.

Need to find a LCD that is appropriate in number of pixel, screen area and price (and still "fit" on the palm).
Thank you for your inputs.

  Are you sure? yes | no

Wenting Z. wrote 12/24/2016 at 01:57 point

80x24 text using  5x7 text requires a resolution of 480*192, I think these 3.2 IPS 480*320 screens worth a try. I'm currently in China and planning go back to the U.S. next month. And I got a LOT of different screens here with very low price (3.2 IPS 480*320 for $1 each, 4.0 IPS 800*480 for $2 each)! If you are interested, I can send you some screens :)

  Are you sure? yes | no

Kuldeep Singh Dhaka wrote 12/25/2016 at 14:17 point

@Wenting Z. Interesting! lets talk on this more. :)

  Are you sure? yes | no

Kuldeep Singh Dhaka wrote 03/20/2017 at 17:01 point

@ethan.dicks Please see update on the rev 3!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates