Three Alternatives to Arduino’s Serial Monitor

The Arduino IDE includes a “Serial Monitor” which is decent for basic serial communication.  However, when you need real time serial interaction or data logging capabilities, that’s when one of these serial monitor alternatives can come in handy.

putty [Windows]

Download:  PuTTY.
License:  MIT.

Putty Screenshot

Hands-down one of my favorite terminal applications for  Windows is PuTTY from Simon Tatham.  In addition to being a great serial terminal it can also handle telnet, ssh, and a host of other things (no pun intended).  The source is available and looks like it runs on UNIX platforms, but I have never tried.  If you’re using Windows, this is probably your best go-to terminal application.  Every Windows machine I use gets PuTTY in the Start Menu shortcuts.

Screen [Mac, Linux, Win]

Download:  None (for Mac and Linux)
License:  GPL

screen for mac and linux

Screen is a command line based fullscreen VT100 emulator.  It makes a create terminal client and has the ability to “detach” from the current terminal to run in the background.  When it comes to serial communication, it’s the tool I used the most outside of the Serial Monitor.  On Windows you will probably need to install Cygwin.  On Linux and the Mac, you’ve already got it.  Drop to a terminal and run screen.

screen <serial_port> <baud_rate>

Since it comes with all Unix systems it is hard to beat.  Except, if you have a Mac.  There’s one option that will beat it!

Cathode [Mac]

One of the coolest terminal emulators available is Cathode from Secret Geometry, which I’ve written about before (with video).  It emulates old-school CRT monitors which sends any grey-bearded hacker (or soon to be) into a nostalgic frenzy.  Which combined with screen can be super nerdy way to interact with your Arduino project.  Go full screen and you’ll make new friends in your makerspace in no time.

It’s too beautiful for screen shots, so there’s a video of the Arduino ASCIITable Example.

Code For Testing Serial Monitors

To demonstrate screen and PuTTY,  I loaded the following code on to my Arduino Uno.  It sends back whatever characters it receives.

void setup() {
  Serial.begin(9600);
}

void loop() {
  while(Serial.available()) {
   char incoming = Serial.read();
   Serial.print(incoming);
  }
}

Conclusion

Use whatever serial application suits your need. There are plenty of other terminals you can use. What are some of the others you know about?

Long comments, URLs, and code tend to get flagged for spam moderation. No need to resubmit.

Leave a comment

15 thoughts on “Three Alternatives to Arduino’s Serial Monitor

  1. How do I send commands to the arduino when using putty? – When using serial monitor in the arduino IDE I can just type commands in the box at the top of the screen and hit enter but with putty I can see the arduinos serial output OK, but don’t see any way to enter commands?

    • There isn’t the concept of a “command” box like the IDE’s Serial Monitor. putty is more like a traditional dumb terminal. putty send keystrokes as you type them. If you want to “see” what you are typing, then you would need to enable “local echo” on the putty side (or echo the characters back on the arduino side.)

      • Ahh, knew there had to be an option in there somewhere! (Config – Terminal – Line Discipline Options. It was set to ‘Auto’ but I needed to force it to ‘On’)

        I’ll need to tweek my arduino prog a little as it currently sends data out every second and this doesn’t allow me enough time to type a response before it overwrites what I’m typing!
        Thanks for the pointer, much appreciated.

  2. Great! Already loved screen, but I didn’t know it was the serial monitor I was looking for… but how do I gracefully close the monitor?

  3. Thanks, for some reason the serial monitor in my Arduino IDE won’t come out of the background so a little search brought me here. I’ve used Putty to connect to my Linux boxes for years and forgot how handy it is, just switch to com5 and I’m back monitoring… Cheers!

    • You might check the Arduino’s preferences.txt file for the entry “last.serial.location.” I believe the 4 parameters are loc_x, loc_y, width, height (but I may have those mixed up). Make sure the numbers are sane. For example, save their current value and then change to “100,100,100,100”. Or in my case, I have a 1440×900 screen and mine are “1601,491,500,500”.

      Or just keep using putty! 😉

      • You are correct, the preferences file had some huge number that would have pushed the window far off the screen. I guess it was moved while two monitors were being used and did not update itself for a single monitor. Thanks! I’m still keeping putty in my arsenal.