Updating Solidoodle Firmware

From SoliWiki
Jump to: navigation, search

Instructions on updating (flashing) the Solidoodle2/3 Firmware with the Sanguinololu Board (ATMega644P or ATMega1284P) The process for updating (flashing) the Solidoodle2/3&4 with thePrinterBoard is substantially different. Complete instructions for the PrinterBoard can be found at the bottom of this section.

!!!!WARNING!!! Maintain a stable power connection, a UPS (Universal Power Supply) is best anytime you flash firmware to ensure stable power. I am not responsible if you lose power during a flash and cannot recover the ATMega Chip via any means afterwards (http://reprap.org/wiki/Sanguinololu#Bootloader) if you end up S.O.L.! Generally though a laptop with a fresh battery and the USB connection to your board is enough.


[edit] Make sure you have (FT232R USB UART) USB driver properly installed

http://www.solidoodle.com/how-to-2/how-to-install-software/ *make sure you complete the Arduino installation part at least.

[edit] Download prerequisite software/firmware

Download Arduino VERSION 0022 ONLY! If you have another version installed you must downgrade for this firmware to compile and flash!

Download Arduino v0022 for you OS here:

Download the Sanguinololu repository here:

Grab the latest firmware here:

(EDIT wardjr) the firmware listed above has had recent changes that enable things such as the filament alarm which will cause issues for most users. Due to recent upgrades of the above mentioned firmware the recommended version can be found here. https://github.com/ozadr1an/Solidoodle-Marlin_v1/tree/Solidoodle_Marlin_v1_beta This is the most recent firmware recommended for all SD2/3&4 users for both the Sanguinololu and PrinterBoard

[edit] Arduino Software Installation

  • Extract Arduino VERSION 0022 to the folder of your choice (something easy to navigate to).
  • Extract the archive jmgiacalone-sanguino1284p.zip.
  • Copy the Sanguino folder from the archive to the hardware directory of your Arduino install.
    • On Mac OS X, that would be ~/Documents/Arduino/hardware. On Windows it will be arduino-0022\hardware.

[edit] Arduino Software Setup

  • Run arduino.exe.
  • Go to Menu > Tools > Board and select either ATMega644P (Solidoodle2 default chip) or ATmega1284P depending on your chip. (if missing go back and check the "Arduino Software Installation" step)
  • Go to Menu > tools > Serial Port and select the port that your printer is connected to (e.g. COM3); If you are unsure which COM port your printer is using:
    • Windows 7 - go into the Devices and Printers,scroll down > right click on FT232R USB UART > Properties > Hardware TAB >> look to the "Device Function: Name" and you will see the according COM in (parenthesis).
    • MAC OS X/Linux - use the commands ls /dev/tty.* and ls /dev/cu.*
  • You may want to turn off update notifications at this time as well to prevent accidental updates...File Menu > Preferences > deselect "Check for updates on Startup".

[edit] Firmware compilation

In arduino.exe goto File > Open then locate Marlin.PDE in the firmware zip folder you extracted (to the folder of your choice). This will load the Firmware file to the software, but not upload to your ATMEega chip. Click on Sketch > Verify/Compile and check the console for errors. In some installations you might get this error:

/usr/lib/gcc/avr/4.6.3/../../../../avr/include/math.h:426:15: error: expected identifier or '(' before 'double'

In this case you need to modify the file hardware/Sanguino/cores/arduino/wiring.h (using your favorite text editor) and delete (or comment) the line:

#define round(x)     ((x)>=0?(long)((x)+0.5):(long)((x)-0.5))

[edit] Solidoodle 2/3

The latest firmware works both with Solidoodle 2 and Solidoodle 3. By default, it will be compiled for SD2. If you have a SD3, open the Configuration.h tab and change the line




Save the file before uploading.

At this point make any other changes you need to make in that file, then redo the Verify Compile stage.

[edit] Firmware upload

At this point there have been varied reports to what is effective to get the firmware uploaded (flashed) I suggest you try flashing methods in this order. If all of these methods are unsuccessful then you may have a no bootloader installed (check the link at the top for help) or a defective ATMega chip; at that point the official support will have to step in to get you a properly working ATMega chip.
Arduino upload button location
  1. Make sure USB is connected, click "upload" (directly below the help menu, see figure). Wait for "upload completed" - approx 1 to 2 min. wait for finished or if it displays a error move to "2".
  2. If you get a Java.lang.NullPointerException error, it may help to recompile and try again. If not, continue to the next step.
  3. Make sure USB is connected, click "upload" (directly below the help menu, see figure), wait for Binary sketch size to display, then press the reset button on the Sanguinololu board. If it displays a error move to the next step.
  4. Make sure USB is connected, press and hold reset (try different lengths of time anywhere up to 10 seconds) and then click "upload" (directly below the help menu) while holding reset button.
  • There will be a help FAQ available to those with a error, just click the link on the error for additional tips on flashing tricky boards.

[edit] PrinterBoard Update (Flashing) Instructions

Note SD4 users define SOLIDOODLE_VERSION 3

A: Download the Arduino IDE (www.arduino.cc)

B: Download Teensyduino (http://pjrc.com/teensy/td_download.html)

C: Download the firmware (https://github.com/ozadr1an/Solidoodle-Marlin_v1/tree/Solidoodle_Marlin_v1_beta) (Updated Link 11/28/15)

D: Download the upload BootloaderHID (http://blog.lincomatic.com/wp-content/uploads/2012/03/BootloaderHID.zip) (Updated Link 01/14/17)

1. Install Arduiono IDE

2. By default it installed in C:/program files/Arduino (or program files C:/program files(x86)/Arduino)

3. Install Teensyduino

4. It will ask you where the arduino install is, point it to the above folder

5. Unzip the firmware file to a folder you will remember

6. Open the Arduino.exe (shortcut put on your desktop after the Arduino IDE installed

7. Click Tools, Board (might say Board:Arduino Uno) and select the Teensy ++2.0

8. Click Tools, Serial Port, and change it to the port of your printer

(If you are unsure, and using windows, click the start button, right click computer, click properties, click device manager, and click on ports. Your printer will be the one listed as “USB serial port (Com X) write down whatever the x is, and put it in step 8)

9. Click File – Open

10. Browse to the folder you extracted in step 5, select the file (in the marlin folder) named Configureation.H , double click it or select it and click open

11. You will notice that there are several tabs across the top: Marlin, Configuration.H, ConfigurationStore.cpp etc, select the Configuration.H tab

12. Scroll down until you see (in black as the grey is comments and effects nothing)

  1. define SOLIDOODLE_VERSION 2 (line 22 on mine) Change to #define SOLIDOODLE_VERSION 3

13. #define MOTHERBOARD 62 (line #76 on mine…you can tell the line by clicking the code, and looking at the bottom left, a number will be there, this is the line of code) Change it to read #define MOTHERBOARD 81

14. find #define TEMP_SENSOR_0 1 (line 120 ) and change to #define TEMP_SENSOR_0 5 (For E3D)

15. find #define HEATER_0_MAXTEMP 225 (line145) change to #define HEATER_0_MAXTEMP 300

16. 350C is the max the thermister can is good for, the hotend can go higher, but you’ll need a thermocouple instead of the thermister

17. In the top arduino menu, click Sketch, then Verify/compile

18. If you installed Teensyduino, it will pop up a window, just close it

19. If your sketch does not report errors and simply gives you the Binary sketch size and memory use, it is safe to upload. If it reports errors, you have made a syntax error, and should recheck those lines you changed.

20. Before doing the final compile, click file – save (if you do not, it will not upload the changes)

21. Hold down SHIFT and click Compile

22. There has been a .hex file created. Marlin.cpp.hex or Marlin.ino.hex, in my case (windows 7) it is under C:/users/whateverYourProfileNameIs/AppData/Local/Temp….it will be in the folder named build-xxxxxxxxx.tmp (the x’s are a string of numbers) created today. You must have view hidden or system files enabled in folder options (control panel. Have view folders by icon instead of category enabled, folder options,view, check Show hidden files and folders)

23. Unzip the BootloaderHID.Zip (step D) to a folder

24. Copy the Marlin.cpp.hex or Marlin.ino.hex file, and past it in the folder above (the bootloaderHID folder)

25. Make sure your computer is connected to the printer via usb cable

26. Add a jumper to the BOOT pins on the printboard (back of the printer) or bend the 2 pins so they are touching , then press the RESET button

27. Open a new command window (click the windows start button, and in the search programs field (windows vista or newer) type CMD.

28. Within the CMD window, navigate to the folder you unzipped the BootleaderHID to in step 23

29. Type “hid_bootloader_cli -mmcu=at90usb1286 -w -v Marlin.cpp.hex” (no quotations)

30. It should say something like “read Marlin.cpp.hex xx bytes, xx% usage, found halfkay bootloader, programming…………………..Booting

31. Remove the jumper, or unbend the boot pins on the printboard (back of the printer)

32. Press reset

33. Verify that you have updated them, start up Repetier Host.

34. Click Connect

35. Look at the bottom of the screen, you will see a greeting msg when you connect it should now read

02:09:14.238 : echo:Unknown command: "" 02:09:14.405 : FIRMWARE_NAME:Marlin V1; Sprinter/grbl mashup for gen6 FIRMWARE_URL:http://github.com/mlaws/solidoodle2-marlin/ PROTOCOL_VERSION:1.0 MACHINE_TYPE:Solidoodle EXTRUDER_COUNT:1 02:09:14.405 : echo:Active Extruder: 0

If you see the address changed to github.com instead of solidoodle, you know you're golden

Should you have any questions feel free to contact me (wardjr) via PM.

[edit] Helpful links and resources

Special credits: IanJohnson Lawsy & Adrian, Also user enrage for providing the printerboard instructions

Personal tools