If I have a sketch compiled to hex, is it be possible to upload this sketch to an Arduino board using avrdude directly from command line?

Pekkaa figured out that arduino ide executes the following command when uploading the sketch:

./hardware/tools/avrdude -Chardware/tools/avrdude.conf -pm328p -cstk500v1 -P/dev/ttyUSB0 -b57600 -D -Uflash:w:/home/pekka/sketchbook/Blink2/applet/Blink2.hex 

The arduino IDE resets the attached arduino before running avrdude. It does this by telling the FTDI device to pulse the DTR line which is attached to the arduino's reset pin. Pekkaa found the example perl code which does this and updated the thread on the Arduino forums.

For completeness here is the command they used to upload the .hex file:

perl -MDevice::SerialPort -e 'Device::SerialPort->new("/dev/ttyUSB0")->pulse_dtr_on(1000)'; \
./hardware/tools/avrdude -Chardware/tools/avrdude.conf -q -q -pm328p -cstk500v1 -P/dev/ttyUSB0 -b57600 -D -Uflash:w:/home/pekka/sketchbook/Blink2/applet/Blink2.hex;

There is also a python script for reseting arduinos which can be used in place of the perl one if you have trouble getting it to work on your system.

  • \$\begingroup\$ Correct URL for the python code from University of Kent: projects.cs.kent.ac.uk/projects/kroc/trac/browser/kroc/trunk/… \$\endgroup\$ – Dave Sep 10 '12 at 18:58
  • \$\begingroup\$ Intergated your suggestion into the @Adam's answer; it will be updated soon. Thanks! \$\endgroup\$ – boardbite Sep 10 '12 at 19:04
  • \$\begingroup\$ IIRC you can do accomplish the reset using stty without needing python or perl. \$\endgroup\$ – Chris Stratton Oct 8 '12 at 15:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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