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)

Design files and firmware are released under GNU GPLv3 or later


  • diy-VT100 Revision 5 Changes

    Kuldeep Singh Dhaka08/24/2017 at 02:08 0 comments

    diy-VT100 got some design improvement.

    diy-VT100 is on Crowdsupply: Signup now

    I will take you through some of the important changes of revision 5. Design file can be found here

    Slide switch – Power ON/OFF

    Earlier there was a reset button to restart the system. Now, after rethinking on usecases, found that restart is indeed a usecase but realized that turn on/off is also important. Having a ON/OFF slide switch allow powering off without having to connection wire.

    Note: Restart can also be performed via going to SETUP-A / SETUP-B and pressing 0 key on the typewriter key.

    Powering via MicroUSB connector

    Instead of just able to powering via communication header, user can now also use any mobile charger for powering. Also, the communication connector is directly connected to MicroUSB connector, it can now also be used to take power.

    Initally proposed by Sandeep for rev4 but finaly made its way in rev5. Later Alan also showed interest in this feature. Since 2 people are showing interest in the same thing, more likely people will like the new feature.

    Generic M3 standoff

    Earlier used standoff were costly and only available from single vendor. Also, have to be soldered on PCB (practically: parmanent change).

    Now, we have switched to generic standoff. 1. Allow multiple vendor. 2. Good quality is available at lower cost. 3. If anyone want to remove the standoff, it is atleast possible. un-stick the lcd from pcb and unscrew the standoff. 4. Height of the standoff can be changed even after shipping.

    Brass, Steel & nylon hex standoff are available everywhere.

    WIN-WIN situation: Lower cost, Quality can be maintained, Multiple option, Multiple vendor & More flexible.

    2x +5V and 2x GND pins

    2x GND Usecase: using a device as RX source and another for TX sink. If 2x GND pins are not provided, user have to make some kind of glue wiring to do the same. Also, having 2x GND help in lowering connector/wire resistance.

    2x +5V Usecase: To feed power and take same power at the same time. (also symmetry with 2x GND) Also, having 2x +5V help in lowering connector/wire resistance.

    SETUP button relocated.

    Earlier the button was on side. Moved to top, should be easier to operate now.

    MicroSD Card (SDIO) added

    Future usecases: Logging of received content, resource storage. Someone pointed out in hackaday comment that they are interesting in using diy-VT100 as HMI hardware. Though the scope of the project is not HMI – but storage is definately going to make it one step further into HMI.


    Overall component count have change but more usable product.

    diy-VT100 is on Crowdsupply: Signup now


  • diy-VT100 Crowdfunding

    Kuldeep Singh Dhaka08/16/2017 at 00:02 5 comments

    We are excited to officially announce crowdfunding of diy-VT100!

    diy-VT100: A hardware terminal with all the bells and whistles.

    We have been working with Crowdsupply on the pre-launch page of diy-VT100.

    We are at the last step of making diy-VT100 to everyones lab. This is your moment, signup now on the pre-launch page and get notified when the crowdfunding is active.

    diy-VT100 will have atleast Rev. 4 features.

    • 5 Inch LCD (800×480 Pixels)
    • Digital To Analog converter based sound (feep! feep!)
    • USB and PS/2 Keyboard support
    • Preference saved in EEPROM
    • Dedicated SETUP button

    Full details on the pre-launch page.

    At backend, we have been communicating with suppliers and manufacturers to confirm all parts and plans.


  • Complete source code & Hardware design of diy-VT100

    Kuldeep Singh Dhaka05/23/2017 at 06:53 0 comments

    Like promised, here is the complete firmware & hardware design.

    Licence: GPLv3 or later (Free / Libre / Open source)

    In the git history you can find the rev2 firmware and hardware design too.

  • Story

    Kuldeep Singh Dhaka04/28/2017 at 21:06 3 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 Dhaka04/28/2017 at 20:21 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 etc.. has been used to develop the project.


    Revision 2, Revision 3 & Revision 4 uses UniCore-MX for hardware abstraction.

    UniCore-MX is under LGPL 3.0 or later.


    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+ like all our projects.

    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 Dhaka04/28/2017 at 03:41 2 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 1 comment

    - 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

View all 14 project logs

Enjoy this project?



kwapiszon wrote 07/26/2019 at 11:01 point

Nerd Font are better, meybi browsh browser will working

  Are you sure? yes | no

keith_allen53 wrote 04/15/2019 at 12:38 point

I need many for a product I'm hoping to release this year.  Do you have an ETA on when it might be available in quantity?

  Are you sure? yes | no

Adamoutler wrote 02/22/2019 at 16:33 point

more please!

  Are you sure? yes | no

prosto wrote 08/07/2018 at 09:00 point

why this device is slowly? very slowly ;(

  Are you sure? yes | no

jondaddio wrote 03/17/2018 at 23:21 point

I noticed the link to the DIY-VT100 on Crowd Supply is a dead link.  Has there been a change in where you are headed with this project??

  Are you sure? yes | no

BigVulcanDeal wrote 01/27/2018 at 20:39 point

Any chance of a VT240 some day in the future (complete with Tek 4010 graphics mode)?  Man, I loved that terminal.

  Are you sure? yes | no

Kuldeep Singh Dhaka wrote 01/30/2018 at 11:43 point

AFAIU Yes, it is possible.

Enough RAM should be available for storing the VT200 series features and LCD is color.

  Are you sure? yes | no

alan_r_cam wrote 07/04/2017 at 07:06 point

As long as you're working on a new design...  I'm trying to figure out how you power this.
I'm hoping you consider a design with 2 USB ports:
1 master (for USB keyboard) , and 1 slave (power in / comms to a PC)

I'd also like to see I/O based on the "bus pirate" circuit, to allow uses other than just VT100 terminal. Oh, and I'd like to pay money for a complete product.

  Are you sure? yes | no

Kuldeep Singh Dhaka wrote 07/05/2017 at 03:26 point

I did add USB Micro connector specifically at backside for powering (see new design from gitlab repo)

  Are you sure? yes | no

alan_r_cam wrote 07/06/2017 at 05:20 point

D'oh! Time to get the latest repo.  Thanks for the update.

  Are you sure? yes | no

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

Lazer.Coh3n 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

Kuldeep Singh Dhaka wrote 05/28/2017 at 18:31 point

@Luis Diaz Full code & design is public now.

  Are you sure? yes | no

Luis Diaz wrote 05/29/2017 at 17:47 point

Thank you :D

  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 Zhang 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