If you have created a Firmata host implementation for another hardware architecture, please add a link above.

You will still find legacy information in this wiki so it will be maintained only to the extent to fix or clarify any issues in the legacy documentation.

Firmata is a generic protocol for communicating with microcontrollers from software on a host computer. It is intended to work with any host computer software package. Right now there is a matching object in a number of languages. It is easy to add objects for other software to use this protocol. Basically, this firmware establishes a protocol for talking to the Arduino from the host software. The aim is to allow people to completely control the Arduino from software on the host computer.

If you are interested, we can help you use this protocol with any software whatsoever. The protocol is quite simple. We will all benefit if we use a common firmware. Then microcontroller boards become really cheap sensorboxes in addition to all the rest of the stuff you can already do with them. Check out the Examples page to see Firmata in action.

Arduino Uno

Using Arduino 0022 or later, open the code with the File > Examples > Firmata > StandardFirmata menu, and then upload it to your Uno.

Versions of arduino previous to 0022 (December 2010) have a baud rate error on Uno which corrupts communication. The Firmata Test program can open the serial port, and the receive counter at the bottom of the windows keeps increasing, but nothing works. If you're having this problem, you can fix it by just upgrading to a recent Arduino software version.

Arduino 0022 also fixed a bug in Uno's 8u2 firmware which impacted Linux. If your Uno is an early model, you may need to use the dfu-programmer tool to flash the 8u2 firmware. The Windows and Mac OS-X drivers do not seem to be sensitive to this issue.

Previously, this page said that all Arduino Uno boards come with StandardFirmata 2.2 pre-loaded. This may have been true at one point, but it's no longer the case.

Arduino Mega

To display all Pins (including missed Pin 14 and Pin 15 as shown in the picture above), it is necessary to change the sampling interval in file StandardFirmata.ino from 19ms into 99ms :

int samplingInterval = 99;

Note: I would assume this is a bug in the test application (above). This change is not necessary in some existing Firmata client libraries such as BreakoutJS and johnny-five.

Arduino Leonardo

To use Firmata with the Arduino Leonardo you must install Arduino 1.5.4 or greater. If for some reason you need to use an older version of the Arduino IDE (pre 1.5.3), then you'll need to update the Firmata library in the older Arduino IDE to Firmata version 2.3.2 or greater.

Arduino Due

To use Firmata with the Arduino Due, install Arduino 1.5.4 or higher. Firmata v2.3.6 is now integrated in Arduino 1.5.4 IDE. You can find the examples in the Arduino IDE under File -> Examples -> Firmata.

Editing this Wiki

In order to prevent the spam we've been getting recently, you must be logged into an account to edit pages. Since user account creation is disabled, if you don't already have one, please use this one: