Voltivo Blog

Da Vinci 1.0 filament counter reset using an Arduino

Da Vinci 1.0 EEPROM

The XYZPrinting Da Vinci is certainly a very interesting new printer at a very reasonable USD 499 retail price.

It comes delivered with a mere 300g Filament cartridge, which is not exactly a lot of material to print with. The filament delivered with the printer has quite some diameter inaccuracies, which do show on the surface of printed models as small blobs. Our intent was to use our own ExcelFil™ – High grade 3D Printing Filament with this printer. However, the Filament cartridge is electronicaly protected and communicates with the printer to let it know the remaining filament left on the spool.

Given that we are planning to add this printer to the range of printers we test our ExcelFil filament with, I took a closer look at the mechanisms behind these electronics.

After opening the cartridge, one can find a small PCB at the bottom of it. It has three connectors that are used to communicate with the printer itself. A closer inspection of that tiny PCB shows a Microchip 11LC010 1K EEPROM at its heart. This EEPROM has a memory capaciity of 128 byte which stores the information about the filament cartridge.

The three connectors are as following (left to right on the picture above):

1 = GND
2 = SCIO
3 = VCC

The SCIO pin runs a UNI/O protocol and the chip is controlled via a 8 bit instruction register.

I created a small Arduino Sketch that resets the counter to 999m available. GND(1) and VCC(3) on the Da Vinci Filament EEPROM connect to GND and +5V on the Arduino and the SCIO(2) connects to Digital Out Pin 7 on the Arduino. The sketch is running the UNI/O protocol to read and write the EEPROM contents.

Here the contents of the EEPROM. You can see at byte offset 53 a 4 Byte long HEX value in little endian format (Thanks BXZ for pointing it out!) which reflects the remaining filament lenght that is communicated to the printer. This is not a literal value and somehow is "mangled". However setting this value to 0x3f420f00 restores the filament counter to 999m left.

00: 5A41570000343141C0D40100C0D40100 ZAW..41A........
10: D2005A00544847423031313500000000 ..Z.THGB0115....
20: 000000003400000001010101AA55AA55 ....4........U.U
30: 883355AA3F420f00D04407202FAE0A00 .3U......D. /...
40: 5A41570000343141C0D40100C0D40100 ZAW..41A........
50: D2005A00544847423031313500000000 ..Z.THGB0115....
60: 000000003400000001010101AA55AA55 ....4........U.U
70: 883355AAC0D40100AA55AA5507830A00 .3U......U.U....

The Arduino Code below will check for the presence and ability to communicate to the EEPROM CHIP. When the sketch starts, the LED on the Arduino will blink rapidly. After you have the made connections as described above correctly, the LED will stay solid for about 2 seconds, which indicates that the EEPROM has been reset successfully.

Below a short Video to demonstrate:





This now allows me to use our test filaments on this printers. Not a permanent solution yet, but easy enough as a temporary workaround.

Warning: DO NOT KEEP THE ARDUINO CONNECTED WHEN YOU INSERT THE CARTRIDGE INTO THE PRINTER. This may, or may not void your warranty or render your filament or printer useless. So use this information at your own risk :)

Update April, 18 2014: Code below has been updated to work with the new firmware version 1.1.I.

Arduino Sketch - Just copy and paste into the Arduino IDE and upload to your Arduino of choice

To make the discussion easier we moved it to the forum.

Linked below, also a freestanding filament spool holder we made to conventiently load the filament into the Da Vinci.

Load Previous Comments
  • Oh and no you don't control temp through slic3r from what I have seen.

  • Guest - kieth

    I'm sure I want the first to think of dealing hardware or firmware ayer doing a pinout. I'm working on the pin out now to enable open source firmware but expect it to take a couple weeks with my schedule...

    The main thing gained is using slicer without yanking the s card every print. Cable- less wifi is just a side benefit to me.


    Btw, Slic3r will definitely override the temperature setting of the cartridge.

  • Guest - kieth

    I'm sure I want the first to think of dealing hardware or firmware ayer doing

    Should have read:I'm sure I wasn't the first to think of swapping hardware or firmware after doing..

    Cell phone auto swell corectshon. ;)

  • Guest - Irazor

    Keith, just read all your stuff, watched the videos. Of course I'd like to set up the wifi hack. ( I know you said you wouldn't share but?) I've done the chip reset, now testing pla. My print quality is just crappy, even pre-hack. Really hoping to use my own code files.

    Any chance we can chat via Skype?

  • Guest - Timmy

    Can someone add different levels of extruder/platform temperature setting to the code? Something like 200C to 230C (210C and 230C already built in to the code) with 5c incremental for extruder, and 70C to 100C with 10C incremental for platform temperature. I have few spools of filament with temperature range varies from 210C to 270C. Did anyone use PLA with same or lower temperature setting? I am new to the 3D printer world, just try to get some good prints from this printer. Much appreciated.

  • Well after more playing and fiddling around tonight, I will confirm that the extruder and temp is settable by slicer overriding the cart.
    This will not help loading the pla but it's a start. I Found at 210-215 the pla swells and wont feed.

    So does anyone have an empty cart they are willing to send me? So yeah I was wrong.

  • Guest - Kieth

    Josh - Glad I didnt have to make another video to show you the temps will change, LOL! <<JK!
    Where are you located? I might have a spare cartridge in another day or so i could send you, but i dont want to mess with international shipping... (usa here)

    I have a thought on PLA. I dont have any PLA left right now to try it, but...
    1) Increase retraction from 1mm to 3-4mm.
    2) Raise the temp. Its possible what is happening is the PLA enters the melt chamber and the chamber temp falls causing the failure. This may look very similar to an excessive heat problem. Its just a guess...
    3) Increase/decrease print speed. This will effect how much filament gets used over a particular amount of time and may help the heating/cooling issues of the melt chamber.

    BTW, I would speculate the troubl;e people are having getting PLA to work is why XYZ hasnt released pla yet. It would be nice if XYZ was brave enough to establish a manufacturer forum.

    Speaking of forums, where else are people talking about this? Getting hard to follow comments on a blog. ;)

  • I'm in florida actually,

    The issue I'm having with the pla is that just to "load" the filament it heats it up to 210-215, the pla starts to feed and then overheats/swells. I have not even Got a chance to try and print with it. When I retract the pla the very tip started to melt then right away it is bulged and oddly textured.

    Kzairsoft@gmail.com if you feel like sending me an empty I would appreciate it. Especially considering I will never buy another full one, lol.

  • Guest - Kieth

    So, I know im not the first on this, since there is an online .3w>gcode converter, but anyhow....

    I just figured out .3w files are simply base64 encoded. There is NO encyption of the .3w file taking place.

  • Guys and Gals, based on the suggestion of Kieth I created a forum for easier discussion of this topic:
    It will be much easier to discuss as easier for people to find past posts. I will close off this comment section in a while.
    The forum is located here.

Leave your comments

Comment posting has been locked by admin

Join Our Newsletter

Updates, new products, and great deals!