This wiki is no longer actively maintained. For up-to-date information on the Firmata protocol and various host implementations please see the following github pages:
- Firmata protocol
- General documentation of the Firmata protocol.
- To contribute: Propose and comment on new features by opening an issue or submitting a pull request.
- Note that not all proposals have been migrated from the old wiki yet (still a work in progress)
- Arduino-specific implementation
- Source code, examples and documentation for the Arduino-specific Firmata host implementation.
- To contribute: Open an issue or submit a pull request. Please read the contribution guide before submitting any pull requests.
- Spark-specific implementation
- Source code, examples and documentation for the Spark-specific Firmata host implementation.
- To contribute: Open an issue or submit a pull request.
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.
Firmata Test Program
This "firmata_test" program works with boards running StandardFirmata version 2.2 or higher on standard Baud rate 57600.
If you need to quickly test your hardware, this stand-alone program can access all pins. It runs from a single file (no installation needed), for quick and easy testing!
For Linux (32 bit)
For Linux (64 bit)
http://www.pjrc.com/teensy/firmata_test/firmata_test.64bit_2 (Ubuntu 12.04)
http://www.pjrc.com/teensy/firmata_test/firmata_test.64bit_2_log (Ubuntu 12.04, with log window)
For Mac OS-X
For windows 10 and above you can install this app for test purposes:
"Windows Remote Arduino Experience"
link (Microsoft website): https://www.microsoft.com/store/apps/9nblggh2041m
http://www.pjrc.com/teensy/firmata_test/firmata_test_OSL.tgz (unicode compatible, by Orion Lawlor)
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.
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.
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.
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:
- Username: firmata
- Password: pleaseedit
If you have an account, you can also change the passwords for other users: http://firmata.org/wiki/Special:PasswordReset