{"id":465,"date":"2011-04-26T13:53:48","date_gmt":"2011-04-26T11:53:48","guid":{"rendered":"http:\/\/www.anyma.ch\/blogs\/research\/?p=465"},"modified":"2011-04-26T14:27:10","modified_gmt":"2011-04-26T12:27:10","slug":"how-to-update-the-udmx-firmware","status":"publish","type":"post","link":"http:\/\/www.anyma.ch\/blogs\/research\/2011\/04\/26\/how-to-update-the-udmx-firmware\/","title":{"rendered":"How to update the uDMX firmware"},"content":{"rendered":"<p>You can use the bootloader that is built into the uDMX to update its firmware to the latest version.<\/p>\n<p>Here&#8217;s a quick howto on MacOSX:<\/p>\n<h2>1. Install CrossPack<\/h2>\n<p>CrossPack is a development environment for Atmel\u2019s AVR\u00ae microcontrollers  running on Apple\u2019s Mac OS X, similar to WinAVR for Windows. It consists  of the GNU compiler suite, a C library for the AVR, the AVRDUDE  uploader and several other useful tools.<\/p>\n<p>Download the latest CrossPack here <a href=\"http:\/\/www.obdev.at\/products\/crosspack\/download.html\">http:\/\/www.obdev.at\/products\/crosspack\/download.html<\/a><\/p>\n<h2>2. Download the latest uDMX firmware.<\/h2>\n<p>Open a Terminal window (\/Applications\/Utilities\/Terminal) and type the following command to check out the latest source code from version control:<\/p>\n<pre lang=\"bash\">svn checkout http:\/\/udmx.googlecode.com\/svn\/trunk\/ udmx-read-only<\/pre>\n<h2>3. Start the bootloader<\/h2>\n<p>There are two ways to start the bootloader. If the uDMX is still working you can simply use the <strong>gnubl<\/strong> command. If the uDMX does not enumerate correctly anymore, you can still try to start the bootloader by opening the device and shortening PD5 of the Atmega to ground (see below). If both ways fail, there is a hardware defect&#8230;<\/p>\n<h3>3.1 using gnubl<\/h3>\n<p>Open \/Applications\/Utilities\/System Profiler and look if you can see the uDMX under the USB Tab:<\/p>\n<p><a href=\"http:\/\/www.anyma.ch\/blogs\/research\/wp-content\/uploads\/2011\/04\/Screen-shot-2011-04-26-at-12.41.06.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-466\" title=\"Screen shot 2011-04-26 at 12.41.06\" src=\"http:\/\/www.anyma.ch\/blogs\/research\/wp-content\/uploads\/2011\/04\/Screen-shot-2011-04-26-at-12.41.06.png\" alt=\"\" width=\"601\" height=\"409\" srcset=\"http:\/\/www.anyma.ch\/blogs\/research\/wp-content\/uploads\/2011\/04\/Screen-shot-2011-04-26-at-12.41.06.png 601w, http:\/\/www.anyma.ch\/blogs\/research\/wp-content\/uploads\/2011\/04\/Screen-shot-2011-04-26-at-12.41.06-300x204.png 300w\" sizes=\"(max-width: 601px) 100vw, 601px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>If that is the case you can use the gnubl command to start the bootloader. In the terminal, type:<\/p>\n<pre lang=\"bash\">cd udmx-read-only\/various\/\r\n.\/gnubl<\/pre>\n<p>the terminal should answer:&#8211;&gt; Started bootloader on device &#8220;uDMX&#8221; (-5)<\/p>\n<p>And if you refresh the System Profiler Window (Cmd-R) you should see the USBasp instead of the uDMX:<\/p>\n<p><a href=\"http:\/\/www.anyma.ch\/blogs\/research\/wp-content\/uploads\/2011\/04\/Screen-shot-2011-04-26-at-12.50.26.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-467\" title=\"Screen shot 2011-04-26 at 12.50.26\" src=\"http:\/\/www.anyma.ch\/blogs\/research\/wp-content\/uploads\/2011\/04\/Screen-shot-2011-04-26-at-12.50.26.png\" alt=\"\" width=\"600\" height=\"374\" srcset=\"http:\/\/www.anyma.ch\/blogs\/research\/wp-content\/uploads\/2011\/04\/Screen-shot-2011-04-26-at-12.50.26.png 600w, http:\/\/www.anyma.ch\/blogs\/research\/wp-content\/uploads\/2011\/04\/Screen-shot-2011-04-26-at-12.50.26-300x187.png 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h3>3.2 Forcing the bootloader by hardware<\/h3>\n<p>In some cases the firmware is broken beyond repair and the udmx doesn&#8217;t enumerate, so we cannot issue a software command to start the bootloader. In that case, it might be possible to still force the uDMX into the bootloader:<\/p>\n<ul>\n<li>unplug the udmx<\/li>\n<li>open the XLR connector<\/li>\n<li>short pin D5 (the leftmost pin on the bottom line of the Atmega8) to ground (the black wire of the USB cable)<\/li>\n<li>plug in the uDMX (with pin D5 still tied to ground)<\/li>\n<li>the yellow led should go on and the device should enumerate as USBasp (see above)<\/li>\n<\/ul>\n<p>Connect the following two points on the board:<\/p>\n<p><a href=\"http:\/\/www.anyma.ch\/blogs\/research\/wp-content\/uploads\/2011\/04\/udmx_short.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-469\" title=\"udmx_short\" src=\"http:\/\/www.anyma.ch\/blogs\/research\/wp-content\/uploads\/2011\/04\/udmx_short.png\" alt=\"\" width=\"454\" height=\"255\" srcset=\"http:\/\/www.anyma.ch\/blogs\/research\/wp-content\/uploads\/2011\/04\/udmx_short.png 454w, http:\/\/www.anyma.ch\/blogs\/research\/wp-content\/uploads\/2011\/04\/udmx_short-300x168.png 300w\" sizes=\"(max-width: 454px) 100vw, 454px\" \/><\/a><\/p>\n<p>I do it usually with a pair of metal tweezers, so I can keep the connection firmly with one hand while plugging in with the other. Never mind if you accidentally touch the pin right next to it as well, but you should not short any other stuff on the board&#8230;<\/p>\n<p><a href=\"http:\/\/www.anyma.ch\/blogs\/research\/wp-content\/uploads\/2011\/04\/udmx351.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-470\" title=\"udmx351\" src=\"http:\/\/www.anyma.ch\/blogs\/research\/wp-content\/uploads\/2011\/04\/udmx351.jpg\" alt=\"\" width=\"454\" height=\"255\" srcset=\"http:\/\/www.anyma.ch\/blogs\/research\/wp-content\/uploads\/2011\/04\/udmx351.jpg 454w, http:\/\/www.anyma.ch\/blogs\/research\/wp-content\/uploads\/2011\/04\/udmx351-300x168.jpg 300w\" sizes=\"(max-width: 454px) 100vw, 454px\" \/><\/a><\/p>\n<p>If the yellow light goes on but the device enumerates as uBOOT, you&#8217;ve got a really old version of the uDMX with the first bootloader. Please <a href=\"http:\/\/anyma.ch\/contact\">contact me<\/a> for instructions how to proceed.<\/p>\n<p>After several tries nothing happens? Are your tweezers electrically conductive? -&gt; don&#8217;t use plastic tweezers, this won&#8217;t work&#8230; Is there a hardware defect? Any loose wires? A bad solder joint?<\/p>\n<h2>4. Upload the new firmware<\/h2>\n<p>When the yellow led is on and you see the USBasp in the System Profiler, you can upload the new firmware to the uDMX. In the Terminal type:<\/p>\n<pre lang=\"bash\">cd ..\/firmware\/\r\nmake flash<\/pre>\n<p>Avrdude should upload the firmware, check if it is written correctly and thank you in the end. The uDMX should light green and enumerate as uDMX again&#8230;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>You can use the bootloader that is built into the uDMX to update its firmware to the latest version. Here&#8217;s a quick howto on MacOSX: 1. Install CrossPack CrossPack is a development environment for Atmel\u2019s AVR\u00ae microcontrollers running on Apple\u2019s Mac OS X, similar to WinAVR for Windows. It consists of the GNU compiler suite, [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[],"_links":{"self":[{"href":"http:\/\/www.anyma.ch\/blogs\/research\/wp-json\/wp\/v2\/posts\/465"}],"collection":[{"href":"http:\/\/www.anyma.ch\/blogs\/research\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.anyma.ch\/blogs\/research\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.anyma.ch\/blogs\/research\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.anyma.ch\/blogs\/research\/wp-json\/wp\/v2\/comments?post=465"}],"version-history":[{"count":9,"href":"http:\/\/www.anyma.ch\/blogs\/research\/wp-json\/wp\/v2\/posts\/465\/revisions"}],"predecessor-version":[{"id":478,"href":"http:\/\/www.anyma.ch\/blogs\/research\/wp-json\/wp\/v2\/posts\/465\/revisions\/478"}],"wp:attachment":[{"href":"http:\/\/www.anyma.ch\/blogs\/research\/wp-json\/wp\/v2\/media?parent=465"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.anyma.ch\/blogs\/research\/wp-json\/wp\/v2\/categories?post=465"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.anyma.ch\/blogs\/research\/wp-json\/wp\/v2\/tags?post=465"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}