The (official) Arduino team has finally released the 1.6 version of the Arduino software. After being in the making for over 2 years, this release is an exciting one! 1.6 marks the end of split releases between the traditional 8-bit boards and ARM based boards. There’s some really cool features built-in, so keep reading to see my take on the good, the bad, and the ugly.

What is the Arduino software?

One of the most powerful features of the Arduino eco-system is the all-included IDE. This package runs on all 3 major OS platforms, making it extremely accessible. At first look, the IDE is just a basic code editor. Upon further inspection you’ll see it has a robust compiler (avr-gcc) hidden under the hood. In fact, the entire avr tool chain is there, hidden behind a single button. Arduino IDE Verify Button The Serial Monitor is a no-frills implementation, which is why I recommend alternatives to Arduino’s serial monitor in another post. What you see on your PC isn’t the only part of the Arduino software. There are two more integral components: the Arduino Core and Contributed Libraries. Okay well, three, the community

7 New things in Arduino 1.6

As with any software release, there are a host of improvements and new features. Here’s a few that caught my attention and I am glad to see.

1. ”Add Library…”

Arduino 1.6.1 IDE - Add Library... New is the “Add Library” support. Explaining to users new to Arduino the difference between library folders in their sketchbook and Arduino directories was difficult. With the “Add Library” option, download a library as a zip file from Github and go. This actually isn’t “new.” However, 1.6 is the first major release to feature it.

2. Improved Serial Port Listing

Users on the Mac (and Linux) platform usually get confused about whether they should pick cu.* or tty.*. This version of the IDE eliminates it. From my personal experience, I can tell you that /dev/cu.* serial ports are now filtered from the port list on MacOSX–I can’t speak to Linux yet. If you’re a Linux user, let me know your experience in the comments. Ports like the bluetooth serial devices are still listed, but how would the IDE know to drop them? Overall, This makes for a simpler list.

The bad: Serial port list dialog from when connection fails was removed!

I am a little disappointed that the “serial-list” dialog no longer pops-up when a serial port disappears. Arduino 1.0.x Serial Port List I’m constantly switching boards, which means my serial devices are changing too. I liked the pop-up that let me choose a new port. Seems to have been removed.  *sad face*

3. The board list got cleaned up

The board list received an overhaul. It is divided by processor type and now logically organized. This should help with verifying which board a (new) user should be using. Arduino 1.6.x Board List Finally, some of the older boards, like the original NG have been moved to the bottom of the list.

4. Estimated RAM size on compile

Especially on the ATmega328-based boards like the Uno, it is really easy to run out of RAM. The 2K of RAM can be quickly consumed by strings. Even if the F() function is used to keep strings in PROGMEM, the 2K of RAM can be quickly consumed. This leads to seemingly random “lock-ups.”
Sketch uses 1,030 bytes (3%) of program storage space. Maximum is 32,256 bytes.

Global variables use 9 bytes (0%) of dynamic memory, leaving 2,039 bytes for local variables. Maximum is 2,048 bytes.
After a sketch is compiled, the IDE now reports back the global-variable usage for RAM in addition to the binary’s size. The caution here needs to be, this size estimate has NO idea how your functions will be called and use memory. However, this message should help with optimizing code. If you’re down to a few bytes, you might want to re-think what is kept in RAM and PROGMEM.

5. Replacement of RXTX

There has been a handful of times I got random errors from the RXTX library. This is the Java library that the IDE uses to communicate with serial devices. The replacement with a newer library, JSSC, seems to make serial operations more stable—at least on OSX.

6. New Constant: LED_BUILTIN

Most Arduino boards have a LED on them. Most (or is it all?) it is found on Pin 13. Arduino 1.6 adds a constant you can use to help make code more portable across Arduino boards: LED_BUILTIN.

void setup() {
  // initialize digital pin 13 as an output.
// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);              // wait for a second

Unfortunately, it doesn’t look like tutorials like blink have been updated yet. (The above code is mine, just replacing references to 13.) It would be nice to introduce this constant to new users immediately with the basic example sketches.

7. Configurable Serial Parameters

Finally, it is now possible to easily configure the format of the UART’s data. You can now pass an optional argument to Serial.begin() to change the data, parity, and stop-bits. For example, if you needed the Arduino Serial port to be set-up for 7-bit, even, with 2 stop bits, you would call Serial.begin with:

Serial.begin(9600, SERIAL_7E2);
Pretty cool, eh?

One issue… the size

The one ugly of the Arduino IDE is that the size has grown. The download for OS X was over 100MB! Some call this bloat. Some call this progress. Regardless, it does mean needing a decent Internet connection to just get started. Hopefully that can be addressed in the future. Overall, the 1.6 update marks some major milestones. If you were already on the beta 1.5.x branch, some of these may not seem new. However, if you’re coming from 1.0.x, you’ll notice some differences. Other than supporting users in the forums or the #arduino IRC channel, 1.6.1 has replaced both my 1.0.x and 1.5.x installs. This has been a tremendous effort by the Arduino team. Nice job guys!
Have you had a chance to use 1.6 yet? What do (or don’t!) like about the latest Arduino release?

Fan of making things beep, blink and fly. Created AddOhms. Writer for News. Freelance electronics content creator for hire! KN6FGY and, of course, bald.


  1. Couple of unexpected things with 1.61:

    – Starting a new sketch in a new window: Hit ‘Vere. erify’ and it tries to force you to save the sketch. If you ‘cancel’ (every time) it THEN will run Verify without saving. IF you save, it shuts up about it. Hope this is configureable! ?? IF you open an example like BLINK it knows not to do this!

    – Get a New window and it fills in a skeleton sketch automagically. You have to remember to delete it if you paste in a sketch from elsewhere. Configureable??

    – IF a sketch has been compiled, AND you make a small change, it rebuilds FAST.

    THANKS for your nice review!

    Regards, Terry King
    …In The Woods in Vermont, USA
    [email protected]

    • For first question, I think you can disable this behavior unchecking “Save when verifying or upgrading” in Preferences panel. For second question, I haven’t any answer, sorry

  2. Bernard Drahmann Reply

    I tried Arduino 1.6 on my older program with use SD library. And it give an error: missing SPI library. And indeed, the SPI lib is not in the library map. So, are there more changes?

    • Maybe there is an issue with your install? I’m not having any problems with SPI and there’s nothing in the release notes about (re)moving it.

      • Bernard Drahmann Reply

        I tried again, the .zip file as well as the exe file, but in both cases: there is no SPI library. But I have to say, I tried the newest 1.6.1 release.

        • Are you certain your code isn’t using a non-standard SPI library? Have you tried compiling one of the SPI examples?

          • Bernard Drahmann

            Because the SPI library is not there, the examples are not there either. My program works fine on an Arduino UNO with Arduino 1.0.6
            Is the SPI library visible in your Library map, James?

          • Yes, I have the SPI library on both Windows and Mac in 1.6.1. I’ve compiled both examples that are included. Really not sure what is happening with yours.

          • Bernard Drahmann

            Indeed, very strange. I tried the 1.6.0 also and here too no SPI lib.

          • Bernard Drahmann

            I found the new version 1.6.3 and tried it. Under the early 1.0.6 version it was not necessary to put the #include in the source, but I find out I have to do it right now!
            The examples of SPI are now under examples, but the SPI is not in the library folder visible. Is that normal?
            Anyway, the program compiles OK

Write A Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.