Custom Firmware Deployment

Custom Firmware

For the Da Vinci 1.0 3D Printer

First before you go any further this page might help you but your best source for information will be the Voltivo forums until I can get this information sorted out. Any help would be appreciated just comment on this page please!

Disclaimer: This information all came from the Voltivo.com forums. I simply took the information, and put it all together in a manner I think is more understandable to the average person. Sometimes searching through threads because the original poster never updates the first post is a real pain. So here is everything I have gathered below.

Also note some of the information here I quoted directly and will update soon so if you see the word forums anywhere it is referring to the Voltivo forums.

A video of the custom firmware

Another video that shows a easy firmware install method:

Cartridge reset device if you want one:

Software you will likely need:

Some other useful information:

The command line to reprogram the board from windows is

bossac -p com19 -R -e -w -v -b 3DP01_20140310_FW_V1.1.G_RELEASE.bin


 

YOU MIGHT DAMAGE YOUR PRINTER OR VOID YOUR WARRANTY, DO IT ON YOUR OWN RISK, DON’T DO IT UNLESS YOU PLAN TO WORK ON CUSTOM FIRMWARE FOR THE PRINTER.

I finally managed to run some custom code on my Da Vinci printer. Note that doing this will erase your printer serial number and calibration data. So after you flash your printer back to FW 1.1.I you will need to use DAVSSN command to restore the serial, and then recalibrate the platform.

I did this on my Mac. So my instructions could be wrong/incomplete for the Windows users. I.e. you might need to install additional drivers, etc.

Anyway here is what you need to repeat my experiments:
1 ) Install Arduino IDE1.5.6-r2 BETA (which supports Arduino DUE, same CPU as DaVinci XYZ 1.0)
2 ) Start Arduino IDE, copy/paste my sketch into IDE window (see bellow).
3 ) Turn your printer off, shorten jumper JP4 (ERASE), turn the printer back on. Wait a second. Turn it off again, remove the jumper, turn back on.
4 ) At this point you printer is in erased state, so it will look exactly like erased Arduino Due. Windows users might need to install Atmel SAM-BA drivers.
On Mac the port will be recognized as an USB modem.
5 ) From IDE set Tools->Board to “Arduino DUE (native USB port)”, Tools->Port to your printer’s serial port.
6 ) Run the sketch, your printer should start blinking with the inside light every second or so.
7 ) Open the serial monitor window in IDE (the button in the top right sketch window corner), you should see “LED ON” and “LED OFF” messages coming from the printer.
8 ) If you set baud rate to 1200 and close the monitor window, the printer’s flash will be erased (there is special code in Arduino libs that ensure that). If the rate is not 1200 the flash will stay. You can always re-open it again and set to 1200 if you need flash erased for the next steps (or you could repeat step 3).

9) To restore the stock firmware back you will need the original F10_20140417_FW_V1.1.I_RELEASE.bin file. It should be available somewhere on this forum.
10) You will also need the bossac binary, it should be somewhere in the Arduino IDE subfolders. On Mac it’s in

Arduino.app/Contents/Resources/Java/hardware/tools/bossac

From console/cmd prompt issue the following command (replace tty.usbmodemXXX with your port name)

bossac -p tty.usbmodemXXX  -R -e -w -v -b F10_20140417_FW_V1.1.I_RELEASE.bin

10) Your printer should restart and work normally.
11) Restore you serial number, using the same Arduino IDE serial window.
Send “XYZ_@3D:0”
Your MCH_ID should look like MCH_ID:3DP01Pˇˇˇˇˇˇˇˇˇˇˇˇ
Send “DAVSSN_XXXXXXXXXXXXXXXXXX” replace X’s with your serial number (see sticker inside the printer)
Send “XYZ_@3D:0” again to verify that the serial number is set
12) Recalibrate the bed.

Enjoy,
Bgm.

The sketch:

int ledPin = 85; // PB11 pin #129
void setup() {
  SerialUSB.begin(115200);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  int val = HIGH;
  while(true) {
    SerialUSB.write("LED ");
    SerialUSB.write(val ? "ON" : "OFF");
    SerialUSB.write('\n');
    digitalWrite(ledPin, val);
    val = !val;
    delay(1000);
  }
}

Pin Outs:

pin 15 = Y right
pin 17 = Bed Heater
pin 29 = Y Enable
pin 30 = X front
pin 66 = buzzer
pin 69 = X enable
pin 83 = Extrude Heater
pin 84 = Y left
pin 85 = L.E.D.
pin 88 = buzzer
pin 91 = buzzer

Leave a Reply

%d bloggers like this: