Tutorial: updating from GRBL 0.9

Do you own a machine that you failed to upgrade and is stuck at GRBL 0.9? Upgrade tutorial!

A couple of years ago, I bought a second hand Nomad 883. I was perfectly happy with the older firmware and the older sender until some python OpenSSL update caused the sender to crash on my Mac. The time arrived to update my CNC to 1.1 to be able to use the newer Carbide Motion! Problem is, in the meantime carbide pulled the plug on the updater as they “haven’t shipped a machine with GRBL 0.9 since around 2016”. Since my machine has a good few years left (I bought it in pristine condition, and Carbide sure makes some sturdy hardware) I had to do a manual update.

Here are the steps (they suppose that you are familiar with the principle of the command line) :

  • First you need to download the necessary software and files:
    • Download and install Arduino.
    • Create a work folder, and in it, put the new .hex file. I have been directed to use the link provided here. This .hex file will not work with Carbide Motion. It was compiled without the right PARKING_ENABLE flag, and the M56 Gcode command will be unrecognised by the machine (see for example this thread). The right file was available here but it was pulled by Carbide. Time Machine to the rescue, you can copy it from here. Put it in a file named grbl11.hex.
  • Open Arduino and open the serial port monitor (in Tools>Port). Connect your machine. Type $$ to display all the parameters. Copy them somewhere for safekeeping. They will be lost during the update.
  • Locate the AVRDUDE command line tool that is included in Arduino. For me it is /Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/avrdude on MacOS. It might be different on Windows or Linux. Test it by opening the command line and typing the invite /Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/avrdude. It should display the AVRDUDE manual.
  • You should also locate your config. For me it’s /Applications/Arduino/Contents/Java/hardware/tools/avr/etc/avrdude.conf
  • In the command line navigate to the folder you want to work in, containing your hex file
  • Prop closed the Z switch then turn on your CNC.
  • First we need to make a backup of the current configuration and eeprom for safety. If that fails you can then easily restore your machine:
    • Identify the port of your machine(for example use Arduino/Tools/Port to note the name) For me it’s /dev/cu.usbmodem14101
    • In the current folder type: /Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/avrdude -C /Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf -u -c arduino -p m328p -P /dev/cu.usbmodem14101 -b 57600 -U flash:r:"grbl_0.9.hex":i (change according to the last step) It should save the file
    • Do the same for the EEPROM : /Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/avrdude -C /Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf -u -c arduino -p m328p -P /dev/cu.usbmodem14101 -b 115200 -U eeprom:r:"grbl_0.9_eeprom.hex":i
  • Then upload the new firmware to the machine :
    • /Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/avrdude -C /Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf -u -c arduino -p m328p -P /dev/cu.usbmodem14101 -b 115200 -U flash:w:"grbl11.hex":a (once again modify the values according to your system).
  • Open the port for example with Arduino. It should say Grbl 1.1e ['$' for help] Then the update is a success
  • The last step is to rewrite all the parameters. Simply copy line by line the old parameter into the serial. Note that for some reason the $14 parameter has disappeared from GRBL. Do one last $$ to check.
  • Remove the Z blocker, and restart the machine. Be cautious at that point, and ready to pull the power in case of an issue. I advise to first do some “air routing” to make sure everything looks right.
  • You might need to install the new carbide motion (well wasn’t it the point :)).

NOTE:

  • This procedure was tested on Nomad 883. It might go differently on other hardware. However my understanding is that carbide uses the same .hex for all machines, as stated here.
  • If like me, you use Teensyduino instead of Arduino, the path will be impacted in consequence, going from /Applications/Arduino.app/… to /Applications/Teensyduino.app/…

I hope that it will be useful. I also hope that this will avoid trashing some perfectly well functioning motion board!

2 Likes

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.