Serial Port Terminal Windows

≡ Pages

What Was HyperTerminal?

Modified10 months ago. Is there any way to connect and communicate with a COM port (e.g. COM4) using windows terminal (Windows 8 <) inbuilt commands or using a batch program? Above command displays the confugurations of COM4. But how I can send or receive data? use windows powershell. Writing to a Serial Port. Reading from a Serial Port.

I found two ways:. use wsl and minicom: detail is here.connect-to-a-device-over-serial-com-port-on-windows-10-with-wsl1-tty-devices-with-windows-terminal-and-minicom. but this did not work for me;. use python library: can work but not as powerful as the first one. Hope to find new ways. I hope that this blog post is found and helps someone.


I wasn't sure what to title it. Hope Google Juice got you here! Read this whole post, there's a lot initially but there's really just two or three small pieces. It'll be worth it because you'll be able to have a nice one click menu and drop directly into a serial port terminal on Windows in the Windows Terminal.

Serial Terminal

Often when you're doing embedded systems development you'll want to monitor or talk to the COM/Serial Port just like you SSH into remote system.

  • Folks ask questions like "How to connect to a serial port as simple as using SSH?"

Are You Out There?

On Linux you'll use things like "screen /dev/ttyS0" for COM0. With Windows, however, the historical guidance has always been to use Putty. It'll work but it's somewhat old, quirky, and it doesn't integrate well with the Windows Terminal and a more modern workflow.

Tera Term

Say I have a small embedded microcontroller device that talks over a COM Port (usually via a USB->COM bridge) like an Arduino. Let's assume this device talks to the COM port as if it were a terminal and it's outputting stuff I want to see. I'll use this great little CLI example app for Arduino from Mads Aasvik to simulate such a device. Here's what it looks like under Arduino's Serial Monitor, for example. This is a Windows app doing serial communication with its own interface wrapping around it. I want to do this at a command line, and bonus points if it's in Windows Terminal. If you have Windows 10 you can the Windows Subsystem for Linux quickly with this command at a Admin prompt:.

Then go to the Windows Store and get any small Linux.

Not the answer you're looking for? Browse other questions tagged batch-filecmdterminalserial-port or ask your own question.

Ubuntu or Kali will do for our purposes. Run it and set your user and password. (I tried Alpine but it still has issues with screen and /dev/null/utmp). NOTE: If you are using WSL2 and have set it as default, run wsl --list -v and ensure that your new distro is using WSL1 as only WSL1 will let us talk to the COM Ports.

You can change it to WSL1 with "wsl --set-version DISTRONAME 1" from any command prompt. To test this out now, run your new distro from any command line prompt like this. Add the "screen" app with sudo apt update" and "sudo app install screen". You can see here that my Arduino serial device is on COM4.

On Linux that device is /dev/ttyS4 . That means that I should be able to talk it from any WSL1 Linux Distro on Windows like "screen /dev/ttyS4 9600" where 9600 is the speed/baud rate. Screen is somewhat persnickety for Serial Port work so try Minicom.

If You Only Need SSH, Read This First

Minicom is a nice little text com program. Install with apt install minicom and run for the first time with "sudo minicom -s" to set your default. Note I've change the default port from /dev/modem to /dev/ttyS4 and the speed, in my case, to 9600. Then I hit enter and save settings as the dft (default) in minicom. You can also turn on Local Echo with "Ctrl-A E" and toggle it if needed. Now I can talk to my Arudino with minicom. NOTE: If you get "cannon open /dev/ttyS4: Permission denied, you may need to add your user to the dialout group.


This way we don't need to sudo and get no prompt when running minicom! I can now run minicom on my configured COM port 4 (/dev/ttyS4) with wsl -d DISTRONAME minicom without sudo. Here I'm talking to that Arduino program.

This embedded app doesn't need to me hit enter after I type, so remember your own embedded devices will vary. Bonus points, now I'll add a menu item for Minicom by changing my Windows Terminal settings AND I'll get more points for adding a nice serial port icon!

I hit settings and add a new profile like this at the top under profiles in the "list." Again, your distro name will be different. Use a WSL1 distro . Install minicom, run with minicom -s once to make settings Make sure you are using the right /dev/ttyS0 device for your situation Ensure your flow control, baud, etc are all correct in minicom Add your user to the dialout group so you don't have to sudo minicom.

Make sure you are using the right /dev/ttyS0 device for your situation . Ensure your flow control, baud, etc are all correct in minicom . Add your user to the dialout group so you don't have to sudo minicom.

Make a menu item in Windows Terminal or run minicom manually in your WSL1 instance whenever you like. or run minicom manually in your WSL1 instance whenever you like.

Hope this helps! Sponsor: Suffering from a lack of clarity around software bugs? Give your customers the experience they deserve and expect with error monitoring from Installs in minutes, try it today! Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee.

He is a failed stand-up comic, a cornrower, and a book author. Please sign in to subscribe to this guide. You will be redirected back to this guide once you sign in, and can then subscribe to this guide.

You'll probably need to connect to a serial port now and then. I have two programs I use for connecting to Serial devices, putty and X-CTU. While not the most powerful serial port software, putty does a good job. It also does telnet and ssh so that's handy as well. You can download putty from or

On the off chance the site is down, here is a mirror. The installation defaults are pretty good. Putty is pretty simple to run, just run the Putty tool. For serial ports first click Serial in the radio buttons. Then type in the Serial name in Serial line (e.g. COM5) and finally, set the Speed to be whatever speed you like.

Then click Open to open the port. I also sort of like X-CTU which has more low-level tools like the ability to toggle and monitor the flow control lines, view hex codes, see both incoming and outgoing bytes, generate and send packets, etc. Once installed, you can run just the Serial Console from the Tools menu.

Start off by Configuringthe serial connection. Unlike Putty, you'll get a GUI interface to select the serial port, byte encoding, baud rate, and whether you want flow control. Once configured click the Open Port button. If you type into the console the sent data is shown in blue. Incoming data is shown in red. On the left you see the ASCII values, on the right, HEX bytes.

In this case I sent the text abcde to a USB serial cable with nothing connected to the end. I then connect RX and TX pins together so that sent data would come back as received data and typed in ECHO.

What is really easy is setting and unsetting the flow control lines, handy if you, for example, want to test that DTR is resetting an Arduino compatible chip, or that the CTS line goes high/low based on the pin settings of a breakout board. This guide was first published on May 05, 2016. It was lastupdated on May 05, 2016. This page (Serial Terminal) was last updated on Apr 03, 2022. Text editor powered by tinymce. The HyperTerminal was an incredibly useful pre-installed Windows tool included before Windows 7. A darling of power users with hundreds of uses, these days it’s sadly gone.

It’s no longer part of Microsoft’s vision for their operating system. The problem is that plenty of guides, fixes and advice you wouldl find on the internet may still need the HyperTerminal to work. The good news is that there are plenty of great HyperTerminal alternatives for Windows 10 that are only a click away. We’ve rounded up some of the best ones you can try right away. Best of all, they’re all free. A terminal program is a type of application that uses a text-based interface to allow users to access all sorts of services. A terminal is designed as a way to send commands to another computer system.

So, unlike the command line program in Windows, a terminal isn’t exclusively designed to control your own local computer. Using a terminal program, you can send low-level commands through a serial port or through a network connection. Services such as Telnet, were popular use of terminal software. It’s also possible to control certain devices to the serial port by using the terminal.


One of the main reasons people used HyperTerminal in the past has been to make use of the Secure Shell (SSH) function. This is a protocol used to securely send commands over a network in text form and is a common power user requirement.

Setup WSL1

Microsoft cushioned the blow of removing Hyperterminal by building a secure shell command into the command line program that still comes with Windows.

  • So, if all you need is secure shell functionality then there is no reason to look for HyperTerminal alternatives.
  • The Windows command line already has Windows remote shell functionality.
  • With that small public service announcement out of the way, here are some of the best HyperTerminal alternatives for Windows 10. TeraTerm is a completely free and Open Source (FOSS) terminal emulator that comes in at a very small size.

Get Minicom on your WSL1 distro

It’s not just a generic terminal, but can emulate specific models of physical terminals, making it easy for people who know those terminals to keep going. As far as we can tell, Tera Term is a feature-complete terminal emulator and even has some very nice “luxury” features. The menu system makes it pretty easy to configure it exactly the way you like.

As an Open Source package, you can be pretty sure that the community has done good quality of life work and that there’s no malware or privacy-infringing code in there.

Ensure dialout permissions to talk to the COM port

On the other hand, there’s no company or support department to help you if something goes wrong. So if you need a terminal emulator for mission-critical business reasons, you should obviously opt for a commercial solution instead.

Just as with Tera Term, PuTTy is another Open Source terminal program. Which means it has the same general caveats of any such program that doesn’t have paid support. This is also, strictly-speaking, a beta program given that the current version number is 0.73.

That’s pretty much par for the course however, when it comes to Open Source applications.

In case you didn’t know, PuTTy is actually the most popular HyperTerminal alternative in the world. At least, it is if we go by download count. As you might expect, the program itself is pretty good. It’s powerful without being completely inaccessible to newbies. It’s been in development since 1998, which means there are decades of lessons learned built into the application. One particularly strong aspect of PuTTy is its wide support for various encryption standards.

This includes public encryption keys and SFTP, making secure communications and file transfers a doddle. Not everyone thinks that PuTTy is the bee’s knees, which is why the project forked into KiTTy. Based on the same source code as PuTTy, the people behind KiTTy have taken the software in a different direction.

Over time, each terminal emulator has cultivated its own fans, so there’s no objective way to say that one is better than the other.

How is KiTTy different? First of all, it seems that KiTTy is getting more development attention than PuTTy, but as with all open source projects that could have changed by the time you read this. KiTTy exists because of user feature requests that just weren’t being put into PuTTy.

For example, KiTTy has a portable app version, which means you can just take it along on a flash drive, moving from one computer to the next. It supports automatic logon scripts, supports background images or a transparent terminal window, and it can run locally saved scripts. That’s just a small sample of the long feature list KiTTy has included to please disgruntled PuTTy fans. The downside is that KiTTy isn’t as lightweight and streamlined as PuTTy, which is why it still has plenty of fans. In the end the choice is down to which features you can or can’t live without. Let’s say you do mainly want an SSH solution, but you are a heavy user of this feature and need something more powerful and user-friendly than the Windows 10 native SSH interface.

That’s where SmarTTY comes into play. This isn’t an open source application, but it is free to use. Just remember that closed source applications might have privacy issues which we don’t know about, because no one but the developer knows what’s in the source code.

If that doesn’t bother you, then SmarTTY offers a very cool multi-tab, graphical SSH tool and is also perfectly capable of serial port functions and Telnet. Apart from how useful a terminal emulator program can be, there’s something wonderfully nostalgic about staring at the infinite blackness of a terminal, with its lone blinking cursor.

Make a nice menu

While it’s never possible to go back in time, we can at least pretend that those heady early days of computing are still with us.

Just like the hacker elite we imagine we are.

Once open, you should see the typical terminal screen.

To see a list of all the available Serial ports on both Mac and Linux, type this command:

You should now see a list of all serial ports on your computer.

You'll notice a few Bluetooth ports on there. I have several Bluetooth devices paired with my computer, so you may have more or less devices that show up depending on what devices have been paired with your computer. (Notice the SPP portion of these names. That indicates that Bluetooth device can talk to the serial terminal as well.)

The important devices to note are the tty.usbserial and the tty.usbmodem. For this example I have both an FTDI Basic and an Arduino Uno plugged into my computer. This is just to show you the key difference between the two. As mentioned earlier, some devices are treated differently depending on how they communicate with the computer. The FT232 IC on the FDTI basic is a true serial device, and, thus, it shows up as usbserial. The Uno on the other hand, is an HID device and shows up as a usbmodem device. The HID (Human Interface Device) profile is used for keyboards, mice, joysticks, etc., and, as an HID device, the computer treats it slightly different despite the fact that is can still send serial data. In either case, these tty.usb______ ports are what we're after when connecting to a serial terminal.

Echo Test

With that out of the way, it's time to actually communicate with the FTDI. The specifics of each terminal program will be discussed in the following sections. This example will be shown in CoolTerm, but be aware that this can be done with any terminal.

Open up a terminal with the correct settings: 9600, 8-N-1-None.

Make sure local echo is turned off for this test.

Take your jumper wire and connect it to the TX and RX lines of the FTDI Basic.

Now type!

Everything you type should be displayed in the terminal window. It's nothing fancy, but you are now communicating with the terminal. Data is being sent from your keyboard, to the computer, through the USB cable to the FTDI, out the FTDI's TX pin, into the RX pin, back through the USB cable, into the computer, and is finally displayed in the terminal window. Don't believe me? Unplug the jumper and type some more. Pending you did turn local echo off, you should not see anything being typed. This is the echo test.

About Scott

If you have two FTDI boards or other similar serial devices, try hooking up both of them. Connect the TX line of one to the RX line of the other and vise versa. Then, open two serial terminal windows (yes, you can have multiple terminal windows open at once), each connected to a different device. Make sure they are both set to the same baud rate and settings. Then connect, and start typing. What you type in one terminal should show up in the opposite terminal and vise versa. You've just created a very simplistic chat client!

Now let's explore the different terminal programs.

Arduino Serial Monitor (Windows, Mac, Linux)

The Arduino Integrated Development Environment (IDE) is the software side of the Arduino platform. And, because using a terminal is such a big part of working with Arduinos and other microcontrollers, they decided to included a serial terminal with the software. Within the Arduino environment, this is called the Serial Monitor.

Making a Connection

Serial monitor comes with any and all version of the Arduino IDE. To open it, simply click the Serial Monitor icon.

The icon is located to the right of the other icons in Arduino 0023 and below.
The icon is located to the far right in Arduino 1.0 and beyond.

Selecting which port to open in the Serial Monitor is the same as selecting a port for uploading Arduino code. Go to Tools -> Serial Port, and select the correct port.

Once open, you should see something like this:


The Serial Monitor has limited settings, but enough to handle most of your serial communication needs. The first setting you can alter is the baud rate. Click on the baud rate drop-down menu to select the the correct baud rate.

You can also change the enter key emulation to carriage return, line feed, both, or neither.

Last, you can the the terminal to autoscroll or not by checking the box in the bottom left corner.


  • The Serial Monitor is a great quick and easy way to establish a serial connection with your Arduino. If you're already working in the Arduino IDE, there's really no need to open up a separate terminal to display data.


  • The lack of settings leaves much to be desired in the Serial Monitor, and, for advanced serial communications, it may not do the trick.

Hyperterminal (Windows)

HyperTerminal is the defacto terminal program for any Windows OS up to XP -- Windows Vista, 7, and 8 don't include it. If you're on Windows Vista, 7, or 8, and really just have to have HyperTerminal, a little scouring of the Internet should turn up some workarounds. Better alternatives are more easily available however- we'll get to those shortly.

If you're on a pre-Vista machine, and only have HyperTerminal to work with, here are some tips and tricks for using it:

Initiating a Connection

When initially opening up HyperTerminal, it will present you with a "Connection Description" dialog. Enter any name you please, and, if you really want to get fancy, select your favorite icon. Then hit "OK". (If this window didn't pop up go to File > New Connection to open it.)

None of the settings in this first window have any effect on the serial communication.

On the next window, ignore the first three text boxes -- we're not working with a dial-up modem here. Doselect your COM port next to the "Connect using" box. Then hit "OK".

The settings on the next box should look pretty familiar. Make sure the "Bits per second" dropdown is set to the correct baud rate. And verify that all of the other settings are correct. Hit "OK" once everything looks correct there.

It doesn't look like much, but you now have an open terminal! Type in the blank white area to send data, and anything that is received by the terminal will show up there as well.

Adjusting Settings

There are some limited adjustments we can make to the HyperTerminal UI. To find them, go to File > Properties. Under the "Settings" tab you'll see most of the options.

If you want to see what you're typing in the terminal, you can turn on local echo. To flip this switch, hit the "ASCII Setup" button, then check "Echo typed characters locally".

The other settings are very specific to formatting how characters are sent or received. For most cases they should be let be.

Those who have used HyperTerminal have either come to accept it for what it is, or sought out some other -- any other(!) -- terminal program. It's not great for serial communication, but it does work. Let's explore some of the better alternatives!

Tera Term (Windows)

Tera Term is one of the more popular Windows terminal programs. It's been around for years, it's open source, and it's simple to use. For Windows users, it's one of the best options out there.

You can download a copy from here. Once you have Tera Term installed, open up it up, and let's poke around.

Making a Connection

You should initially be presented with a "TeraTerm: New connection" pop-up within the program. Here, you can select which serial port you'd like to open up. Select the "Serial" radio button. Then select your port from the drop-down menu. (If this window doesn't open when you start TeraTerm, you can get here by going to ****File > New connection..."**.)

That'll open up the port. TeraTerm defaults to setting the baud rate at 9600 bps (8-N-1). If you need to adjust the serial settings, go up to Setup > Serial Port. You'll see a window pop up with a lot of familiar looking serial port settings. Adjust what you need to and hit "OK".

The title of your TeraTerm window should change to something like "COM##:9600baud" -- good sign.

That's about all there is to it. The blank window with the blinking cursor is where data is both sent (by typing it in) and received.

TeraTerm Tips and Tricks

Local Echo

It can be weird to type stuff in the window and not see it show up in the terminal. It's undoubtedly still flowing through the serial terminal to your device, but it can be difficult to type when you don't have any visual feedback for exactly what you're typing. You can turn on local echo by going to the Setup menu and selecting Terminal.

Check the Local echo box if you'd like to turn the feature on.

There are other settings to be made in this window as well. You can adjust the size of the terminal (the values are in terms of characters per row/column), or adjust how new-lines are displayed (either a carriage return, line feed, or both).

Clear Buffer and Clear Screen

If you want to clear your terminal screen you can use either the "Clear buffer" or "Clear screen" commands. Both are located under the Edit menu.

Clear screen will do just that, blank out the terminal screen, but any data received will still be preserved in the buffer. Scroll up in the window to have another look at it. Clear buffer deletes the entire buffer of received data -- no more data to scroll up to.

Shortcut Keys

Menus are a pain! If you want to get really fast with TeraTerm, remember some of these shortcuts:

  • ALT+N: Connects to a new serial port.
  • ALT+I: Disconnects from the current port.
  • ALT+V: Pastes text from clipboard to the serial port (not CTRL+V).
  • ALT+C: Copy selected text into clipboard (not CTRL+C).
  • CTRL+TAB: Switch between two TeraTerm windows.

Real-Term (Windows)

TeraTerm is awesome for simple ASCII-only serial terminal stuff, but what if you need to send a string of binary values ranging from 0-255? For that, we like to use RealTerm. RealTerm is designed specifically for sending binary and other difficult-to-type streams of data.

RealTerm is available to download on their SourceForge page.

Setting Up the Serial Port

When you open up RealTerm, you'll be presented with a blank window like below. The top half is where you'll type data to send, and it'll also display data received. The bottom half is split into a number of tabs where we adjust all of the settings.

Let's get connected! To begin, navigate to the "Port" tab. On the "Port" dropdown here, select the number of your COM port. Then, make sure the baud rate and other settings are correct. You can select the baud rate from the dropdown, or type it in manually.

With all of those settings adjusted, you'll have to click "Open" twice to close and re-open the port (clicking "Change" doesn't work until after you've established a connection on a COM port).

That's all there is to that! Type stuff in the black ether above to send data, and anything received by the terminal will pop up there too.

Sending Sequences of Values

The ability to send long sequences of binary, hexadecimal, or decimal values is what really sets RealTerm apart from the other terminal programs we've discussed.

To access this function, head over to the "Send" tab. Then click into either of the two text boxes next to "Send Numbers". This is where you enter your number sequence, each value separated by a space. The numbers can be a decimal value from 0 to 255, or a hexadecimal value, which are prefixed with either a "0x" or a '$'. Once you have your string typed out, hit "Send Numbers" and away they go!

Why would you need this you ask? Well, let's say you had a Serial Seven Segment Display hooked up to an FTDI Basic, which is connected to your computer. This is a pretty cool setup -- you can control a 7-segment display by just typing in your terminal. But what if you wanted to dim the display? You'd need to send two sequential bytes of value 123 and 0. How would you do that with the handful of keys on a keyboard? Consulting an ASCII table to match binary values to characters, you'd have to press DEL for 127 and CTRL+SHIFT+2 (^@) for 0...or just use the "Send" tab in RealTerm!

Adjusting the Display

Just as you can use RealTerm to send literal binary values, you can also use it to display them. On the "Display" tab, under the "Display As" section are a wide array of terminal display choices. You can have data coming in displayed as standard ASCII characters, or you can have them show up as hex values, or any number of other display types.

Incoming bytes are displayed as hexadecimal values. Can you decode the secret message?!

RealTerm is preferred for more advanced terminal usage. We'll use it when we need to send specific bytes, but for more basic terminal applications, TeraTerm is our go-to emulator.

YAT - Yet Another Terminal (Windows)

YAT is a user-friendly and feature-rich serial terminal. It features text as well as binary communication, predefined commands, a multiple-document user interface and lots of extras.

YAT is available to download at SourceForge.


YAT features a multiple-document user interface (MDI) that consists of a single workspace with one or more terminals.

Each terminal can be configured according to the device it shall be communicating with. These extra features make a terminal especially easy to use:

  • Text command console
  • File command list
  • Unlimited number of predefined commands
  • Drop-down of recent commands

Each terminal has its own monitor to display outgoing and incoming data. The view can be configured as desired:

  • Time stamp
  • Line number
  • End-of-line sequence
  • Line length
  • Line and bytes transmission rate
  • Chronometer

Most of these features can be enabled and configured, or hidden for a cleaner and simpler user interface.

Terminal Settings

  • Text or binary communication
  • Communication port type:
    • Serial Port (COM)
    • TCP/IP Client, Server or AutoSocket
    • UDP/IP Socket
    • USB serial HID
  • Specifc settings depending on port type

Text Terminal Settings

  • Full support of any known ASCII and Unicode encoding
  • End-of-line configuration
    • Predefined and free-text sequences
    • Possibility to define separate EOL for Tx and Rx
  • Send and receive timing options
  • Character substituion
  • Comment exclusion

Binary Terminal Settings

  • Configuration of protocol and line representation
  • Possibility to define separate settings for Tx and Rx

Advanced Settings

  • Various display options
  • Various advanced communication options
  • Specialized communication options for serial ports (COM)


  • Escapes for bin/oct/dec/hex like \h(4F 4B)
  • Escapes for ASCII controls like as well as C-style \r\n
  • Special commands such as \!(Delay), \!(LineDelay) and \!(LineRepeat)
  • Versatile monitoring and logging of sent and received data
  • Formatting options for excellent readability
  • Powerful keyboard operation including shortcuts for the most important features
  • Versatile shell/PowerShell command line
  • x86 (32-bit) and x64 (64-bit) distribution

Change Management and Support

YAT is fully hosted on SourceForge. Feature Requests and Bug Reports can be entered into the according tracker. Both trackers can be filtered and sorted, either using the predefined searches or the list view.Support is provided by a few simple helps integrated into the application, some screenshots on the SourceForge page, and the project's email if none of the above can help.


YAT is implemented in C#.NET using Windows.Forms. The source code is implemented in a very modular way. Utilities and I/O sub-systems can also be used independent on YAT, e.g. for any other .NET based application that needs serial communication, command line handling or just a couple of convenient utilities.Testing is done using an NUnit based test suite. Project documentation is done in OpenOffice. For more details and contributions to YAT, refer to Help > About.

CoolTerm (Windows, Mac, Linux)

CoolTerm is useful no matter which operating system you're using. However, it is especially useful in Mac OS where there aren't as many terminal options as there are in Windows.

You can download the latest version of CoolTerm here.

Making a Connection

Download and open a CoolTerm window.

To change the settings, click the Options icon with the little gear and wrench. You'll be presented with this menu:

Here, you can select your port, baud rate, bit options, and flow control.

Now click on the Terminal tab on the left.

Here, you can change the enter key emulation (carriage return/line feed), turn local echo off or on, and you can switch between line mode and raw mode. Line mode doesn't send data until enter has been pressed. Raw mode sends characters directly to the screen.

Once all your setting are correct, the Connect and Disconnect buttons will open and close the connection. The settings and status of your connection will be displayed in the bottom left corner.

If you need to clear the data in the terminal screen, click the Clear Data icon with the large red X on it.

If you're getting annoyed with not being able to use the backspace, turn on 'Handle Backspace Character' under the Terminal tab under Options.

Extended Features

One awesome feature of CoolTerm is Hex View. If you want to see the actual hex values of the data you are sending rather than the ASCII values, Hex View is a tremendous help. Click the View Hex icon. The terminal's appearance will change slightly. Now whatever you type will show up as hex and ASCII. The first column is just keeping track of line numbers. The second column is the hex values, and the last column is the actual ASCII characters you type.

Here I've typed hello and \. Notice the 0D and 0A that appear for carriage return and line feed.

To get back to ACSII mode, click the View ASCII icon.

You can also use the Send String option to send entire strings of text. In the connection menu, select Send String.

You should now have a dialog box with which to send your string in hex or ASCII mode.

ZTerm (Mac)

You can download the latest version of ZTerm here

ZTerm is another terminal option for Mac users. Compared to CoolTerm, it seems a lot less user friendly, however, once you find your way around, it's just as useful.

Making a Connection

When you first open ZTerm, you be greeted with this prompt:

Choose the correct port, and click OK.

You should now have a blank terminal window.

*Note: Once you've made a connection, ZTerm will open the most recent connection every time you run it. This can be annoying if you have multiple connections available. To get around this auto connect, hold down the SHIFT key as you start ZTerm. This will bypass the auto connect and ask you to which port you'd like to connect.

Once you're connected, you can change the terminal settings by going to Settings -> Connection.

Here you can change the baud rate (data rate); parity, data, and stop bits; flow control; and turn local echo on or off.

If you need to change your port after establishing a connection, go to Settings -> Modem Preferences.

Choose the correct port under the Serial Port dropdown menu.

Other Features

ZTerm has lots of other uses for network communication, but that is beyond the scope of this tutorial.

One nice feature that can be used is the macros. Go to Macros -> Edit Macros.

Here you can create macros that send whatever strings/commands you'd like. Have a command that you're typing constantly? Make a macro for it!

Command Line (Windows, Mac, Linux)

As mentioned earlier, you can use command line interfaces to create serial connections. The major limiting factor is the lack of connection options. Most of the programs we've discussed so far have a slew of options that you can tweak for your specific connection, whereas the command line method is more of a quick and dirty way of connecting to your device in a pinch. Here's how to accomplish this on the three major operating systems.

Terminal and Screen (Mac, Linux)


Open Terminal. See the Connecting to Your Device section for directions.

Now type ls /dev/tty.* to see all available ports.

You can now use the screen command to to establish a simple serial connection.

Type screen to create a connection.

The terminal will go blank with just a cursor. You are now connected to that port!

To disconnect, type control-a followed by control-\. The screen will then ask if you are sure you want to disconnect.

There are other options you can control from screen, however it is recommended that you only use this method if you are comfortable with the command line. Type man screen for a full list of options and commands.


The screen command can also be used in Linux. There are only a few variations from the Mac instructions.

If you do not have screen installed, get it with sudo apt-get install screen.

Making a connection is the same as Mac.

To disconnect, type control-a then shift-k.

That's all there is to it.

MS-DOS Prompt (Windows)

The fastest way to get to the command line in Windows is to click on the start menu, type cmd into the search field, and press Enter.

This will open up a blank MS-DOS command line prompt.

To be able to issue Serial commands, you must first enter PowerShell. Type powershell to get into PowerShell command mode.

To see a list of all the available COM ports, type

You should now see something like this..

Now create an instance of the port you want with this command

With that, you can now connect to and send data to or from that COM port.

Again, this method of serial communication is only recommended for advanced command line users.

Tips and Tricks

Changing/Deleting COM Ports (Windows)

There may come a time when you need a device to be on a specific COM port. An example of this is, in older versions of TeraTerm, you could only connect to COM ports 16 and below. Thus, if your device was on COM 17, you'd have to change it to connect to it. This problem has been addressed in newer versions of TeraTerm, but there are many other programs out there that only allow a certain number of COM ports.

To get around this, we'll have to dive into Device Manger.

Open Device Manger, and expand the ports tab.

Now right-click on the port you want to alter. Select Properties.

In Properties, go to Port Settings, and select Advanced.

Here, you'll see a drop down menu with all the available COM ports in it. Some of them will have (in use) next to them. These are the ports that have been assigned to a serial device.

Notice that COM 9 doesn't have an (in use) next to it because that is the port we are currently working with.

If we wanted to change COM 9 to COM 3, we simply select COM 3 in this menu, and click OK. The (in use) next to COM 3 should go away. Whatever was connected to COM 9 is now associated with COM 3, and whatever was associated with COM 3 has now been overwritten.

If you need to clear out some old COM ports, you can follow the steps above but for numerous COM ports.

WARNING: Do not select COM 1 when cleaning up old ports. This trick is only for if you really need it and shouldn't be performed very often, for sanity's sake.

TTY vs CU (Mac, Linux)

In Unix and Linux environments, each serial communication port has two parts to it, a tty.* and a cu.*. When you look at your ports in say the Arduino IDE, you'll see both for one port.

The difference between the two is that a TTY device is used to call into a device/system, and the CU device (call-up) is used to call out of a device/system. Thus, this allows for two-way communication at the same time (full-duplex). This is more important to know if you are doing network communications through a terminal or other program, but it is still a question that comes up frequently. Just know that, for the purposes of this tutorial, always use the tty option for serial communication.

Cannot Connect to That Port!

You can only have one connection to a particular port open at any given time (but you can have multiple terminal windows connected to different ports open at the same time). Thus, if you have an Arduino Serial Monitor window open and try to connect to that same port on a different terminal program, it will yell at you and say it could not establish a connection with that port or some such jazz. If you are ever having trouble connecting to a port, make sure it's not open somewhere else.

If you don't have another connection open and still can't connect, make sure all your settings (baud rate, etc.) are correct.

Connected, But Can't See Any Data

If you are connected to the correct port but don't see any data, there are two possible culprits. First check your baud rate. I know I sound like a broken record, but baud rate is the most important setting to match up. Check that baud!

The other culprit could be that the TX and RX lines are reversed. Make sure you have TX->RX and RX->TX.

Programming Arduino and Serial Communication

The Arduino has one dedicated UART, which is just the fancy name for the serial TX and RX lines. It is over these two lines that the Arduino gets programmed. Thus, when working with the Arduino (or other microcontrollers) it's best to avoid using these lines to communicate with other serial devices, especially if you are developing your code and need to upload frequently.

What happens is, if you have another device hooked up to the UART, the data from your computer might not get interpreted correctly by the Arduino leading to code not working the way it's supposed to or not getting uploaded at all.

The same rule applies to serial terminals. If you have a terminal open on the same port that you are trying to program, it won't work. Arduino will throw some errors about not being able to communicate with that port. If this happens, close your connection, and try again.

One simple way around this is to use the Software Serial Library built into Arduino to create a separate UART for outside serial communication. That way, your Arduino can communicate on one port while still leaving the default UART open for programming.

Resources and Going Further

That was a lot of information! At the very least, you should walk away from this knowing what a terminal window is, how to use it, which terminal program is best suited for you and your operating system, and how to navigate that program's interface. Again, terminal programs are a very powerful tool when working with serial devices and microcontrollers. Now go collect some data!

If you'd like to know more about different types of communication, visit these tutorials:

To see some products that require the use of a serial terminal, check out these hook-up guides:

Or check out this blog related post:

Where does 9600 bps come from?


Your favorite terminal didn't make the list? Tell us which terminal emulator is your favorite and why in the discussion section.

Interested in learning more foundational topics?

See our Engineering Essentials page for a full list of cornerstone topics surrounding electrical engineering.

Comments are closed.