Introduction: Da Vinci 1.0 Filament Reset

Picture of Da Vinci 1.0 Filament Reset

Hello all here is an update to a recent issue encountered with the latest Da Vinci 1.0 3D printer, as many have seen you MUST buy their pricy "filament cartridges" in order to be able to print, but an "unforeseen" issue arrived a product marketed towards home makers and, eh hmm, "hackers" hacked the printer to use 3rd party filament of much greater quality and quantity and much lower price so XYZPrinting created several firmware updates to try and combat this issue but low and behold they seem to be continually a step behind, to be honest this is a great business tactic and I hold nothing against them, I love their products, but at $~30 for 600g for filament that's a little much but given the low $399.00 price tag its OK for them to try and make it up in supplies.

So anyway if you've stumbled across this perhaps you've run into the problem of "filament not genuine" or "filament not recognized" in the latest firmware update it appears that 400m cartridge support has been removed and the Arduino code on is not working with there latest firmware revision, I managed to hold onto the older version of the Arduino code and it seems to satisfy the printer? IDK why I haven't dug through the lines to spot the differences but there is obviously something...

So onto the next step for the directions you will need an Arduino (I've got the UNO Rev3) haven't tried any others, and a filament cartridge, and a 3 pieces of thin wire.

Step 1: Arduino Uno and the EEPROM

Picture of Arduino Uno and the EEPROM

In the picture from left to right the EEPROM chip pads are (+),(signal),(-) you will need 3 pieces of wire one for each contact, the (+) will go the the Arduino 5v, the (signal) will connect to Arduino Digital pin 7, and the (-) will connect to one of the Arduino GND. If your careful you can simply hold all three wires under one finger on the pads and then push the wires into the Arduino and you will not have to do any soldering or complicated wiring. Now for the Arduino code it should be attached simply download it and save it into a folder named "Filament" then it will open in Arduino. Simply upload it to the Arduino WHILE IT IS CONNECTED TO THE CHIP and the TX light will flash for a split second and then stop the chip is now reset. This code is set for 240m and 90C bed temp the one labled "Filament_98C" Is set for 240m and 98C bed temp which I've found allowed the filament to stick a little better.

On the code near the bottom are options to uncomment pieces of the code to set different lengths, simply add "//" in-front of the active code and delete the "//" in front of the desired length, to the best of my knowledge 400m will not work with the latest firmware update so there is really no need to adjust the code.

UPDATE 4/8/2015 It appears they have tried to take a step forward to prevent unauthorized cartridge use, in the newest SOFTWARE update they have added the ability for the software to read and save the cartridge serial number and then cross check it before printing, when a cartridge is flashed it does something to the serial number and the software will reject it, IDK what it does either erase or modify it to the original cartridge that the EEPROM data was pulled from by the original creator of this code(not me) but none the less the new software will not let you print BUT with FIRMWARE 1.2.6 the printer still recognizes the cartridge and doesn't reject it so a quick fix is to downgrade your software I have provided XYZ it was the most recent I had saved, simply download the file, extract, and run, it will automatically delete the newer version and load itself and you will be good to go older software will read files created by the new software also. Enjoy printing.

Step 2: Problems

Picture of Problems

If the cartridge now gives an "error" or "not genuine" message on the printer or XYZ software try and power off the printer and then remove and re-seat the cartridge then power back on my printer had trouble with detecting cartridges I think the contacts in the printer were dirty, if re-seating doesn't fix try and wipe a cloth across the printer contacts from left-to-right and maybe a little rubbing alcohol, otherwise try and re-seat the cartridge multiple times it worked for me.


l.supiwas (author)2017-11-13


my printer is xyzprinting da vinci 2.0a duo firmware 2.1.2. i can't use this code(xyz_dv_eprom_MAT) for reset my cartridge.what should i do?

MatthewH297 (author)2017-11-09

Whenever I run the program on my Arduino Mega, it never recognizes the chip. Anybody else with this problem and a solution?

ChavdarP (author)2017-07-06

Hello men,

I added a few lines in the code from
so that the material can be easily changed.
Works without any problems.
Just remove the commentary of the correct material


//char mt[] = {0x41}; //ABS
//char mt[] = {0x50}; //PLA
char mt[] = {0x46}; //Flex

The file can be downloaded here.

neokalpa. (author)ChavdarP2017-11-09

thank you so much for the files!!!

fordtrknut. (author)2017-05-24

Hello, I just pickup up a DaVinci 1.0A (Serial Number starts 3F10)
Firmware is 2.1.3, XYZWare is version What can I do to use
the Slic3r software? I have not seen anybody with my firmware doing the
firmware hack. Please let me know if there's a fix for this specific
firmware. Thanks and take care!

SamanthaP56 (author)2017-02-16

please help

SamanthaP56 (author)2017-02-16

after doing this the printer says unidentified cartridge

NguyễnH169 (author)2017-02-11

firmware 2.1.1 pls help me

MesserSG (author)2016-06-26

May i know whether it can work with firmware 2.1.2?

chamsterz (author)MesserSG2016-08-25

I'm using 2.1.2. It works. I'm using the code from voltivo.

Arduino 1.5.8 Beta

polsen2 (author)chamsterz2017-01-03

I know this is long pass but can you link to the software you are using?

i have an arduino, and a da vinci 1.0a on 2.1.2.

MesserSG (author)chamsterz2016-10-09

Thank you so much, I will try it out.

MatthewC230 (author)chamsterz2016-09-24

The code from voltivo doesnt work anymore

daynosnb (author)MatthewC2302016-10-08

anyone has an new arduino code currently working? Mine looks like the arduino won't detect the cartridge and no reset happens!

norchie (author)2016-12-05

Hi,will this work for the AIO with FW 1.2.2 ?

daynosnb (author)2016-10-08

When I try to reset the cartridge nothing happens, the arduino serial monitor says waiting to detect Epron or something like that, it is like it can't find the cartridge. Any ideas?

BobS138 (author)2016-02-28

I want to set the bend and head temperature so that I can set custom PLA, TPU, and ABS. How do you generate the temp codes?

AndrewW123 (author)2016-01-13

will this software work with a PLA cartridge?

DanielleM38 (author)AndrewW1232016-01-17

No i don't believe so

ArtjomsS (author)2015-12-03

Arduino IDE gives me errors like:

volitale boolean' doesnt have a name

How to fix it?

netnap (author)ArtjomsS2015-12-10

I had this same error with version 1.6.6 of the Arduino IDE. Try downgrading to version 1.5.8 or lower. After doing so it compiled for me with no problem. When using this ensure your correct COM port is selected and turn on the Serial monitor (under tools-serial monitor or by pressing Ctrl-Shift-M) with a baud rate of 115200 so you can see the program's messages. Look for a success message after it writes the new EPROM contents.

(I haven't validated it but I think the new Arduino version may have deprecated the boolean data type for bool. I saw a reference to a recommendation to use bool instead of boolean. This would be why downgrading give you a different result.)

ArtjomsS (author)ArtjomsS2015-12-03

error report

Arduino: 1.6.6 (Windows 7), Board: "Arduino/Genuino Uno"

Filament_98C:59: error: 'volatileboolean' does not name a type



C:\Users\Natali\Downloads\Filament_98C\Filament_98C.ino: In function 'void set_bus(boolean)':

Filament_98C:101: error: 'void set_bus(boolean)' was declared 'extern' and later 'static' [-fpermissive]

static void set_bus(boolean state) {


Filament_98C:55: error: previous declaration of 'void set_bus(boolean)' [-fpermissive]



C:\Users\Natali\Downloads\Filament_98C\Filament_98C.ino: In function 'boolean read_bus()':

Filament_98C:105: error: 'boolean read_bus()' was declared 'extern' and later 'static' [-fpermissive]

static boolean read_bus(void) {


Filament_98C:56: error: previous declaration of 'boolean read_bus()' [-fpermissive]

unsigned char szTempBuffer[20] = {0};


C:\Users\Natali\Downloads\Filament_98C\Filament_98C.ino: In function 'void unio_inter_command_gap()':

Filament_98C:108: error: 'void unio_inter_command_gap()' was declared 'extern' and later 'static' [-fpermissive]

static void unio_inter_command_gap(void) {


Filament_98C:57: error: previous declaration of 'void unio_inter_command_gap()' [-fpermissive]

memcpy(szTempBuffer, &cArray[lAddress], lSize);


C:\Users\Natali\Downloads\Filament_98C\Filament_98C.ino: In function 'void unio_standby_pulse()':

Filament_98C:113: error: 'void unio_standby_pulse()' was declared 'extern' and later 'static' [-fpermissive]

static void unio_standby_pulse(void) {


Filament_98C:58: error: previous declaration of 'void unio_standby_pulse()' [-fpermissive]

long lSerial = atol((char *)szTempBuffer);


C:\Users\Natali\Downloads\Filament_98C\Filament_98C.ino: In function 'boolean read_bit()':

Filament_98C:134: error: 'boolean read_bit()' was declared 'extern' and later 'static' [-fpermissive]

static boolean read_bit(void) {


Filament_98C:60: error: previous declaration of 'boolean read_bit()' [-fpermissive]

sprintf((char *)szTempBuffer, "%04d", lSerial);


C:\Users\Natali\Downloads\Filament_98C\Filament_98C.ino: In function 'boolean send_byte(byte, boolean)':

Filament_98C:142: error: 'boolean send_byte(byte, boolean)' was declared 'extern' and later 'static' [-fpermissive]

static boolean send_byte(byte b, boolean mak) {


Filament_98C:61: error: previous declaration of 'boolean send_byte(byte, boolean)' [-fpermissive]

memcpy(&cArray[lAddress], szTempBuffer, lSize);


Filament_98C:151: error: 'boolean read_byte(byte*, boolean)' was declared 'extern' and later 'static' [-fpermissive]

static boolean read_byte(byte *b, boolean mak) {


Filament_98C:62: error: previous declaration of 'boolean read_byte(byte*, boolean)' [-fpermissive]



Filament_98C:163: error: 'boolean unio_send(const byte*, word, boolean)' was declared 'extern' and later 'static' [-fpermissive]

static boolean unio_send(const byte *data, word length, boolean end) {


Filament_98C:63: error: previous declaration of 'boolean unio_send(const byte*, word, boolean)' [-fpermissive]


Filament_98C:170: error: 'boolean unio_read(byte*, word)' was declared 'extern' and later 'static' [-fpermissive]

static boolean unio_read(byte *data, word length) {


Filament_98C:64: error: previous declaration of 'boolean unio_read(byte*, word)' [-fpermissive]

class NanodeUNIO {


Filament_98C:177: error: 'void unio_start_header()' was declared 'extern' and later 'static' [-fpermissive]

static void unio_start_header(void) {


Filament_98C:65: error: previous declaration of 'void unio_start_header()' [-fpermissive]



C:\Users\Natali\Downloads\Filament_98C\Filament_98C.ino: In function 'void status(boolean)':

Filament_98C:304: error: 'void status(boolean)' was declared 'extern' and later 'static' [-fpermissive]

static void status(boolean r)


Filament_98C:66: error: previous declaration of 'void status(boolean)' [-fpermissive]

byte addr;


C:\Users\Natali\Downloads\Filament_98C\Filament_98C.ino: In function 'void dump_eeprom(word, word)':

Filament_98C:310: error: 'void dump_eeprom(word, word)' was declared 'extern' and later 'static' [-fpermissive]

static void dump_eeprom(word address, word length)


Filament_98C:67: error: previous declaration of 'void dump_eeprom(word, word)' [-fpermissive]



C:\Users\Natali\Downloads\Filament_98C\Filament_98C.ino: At global scope:

C:\Users\Natali\Downloads\Filament_98C\Filament_98C.ino:354:35: warning: narrowing conversion of '192' from 'int' to 'char' inside { } [-Wnarrowing]

char x[] = {0xc0, 0xd4, 0x01, 0x00}; //120m


C:\Users\Natali\Downloads\Filament_98C\Filament_98C.ino:354:35: warning: narrowing conversion of '212' from 'int' to 'char' inside { } [-Wnarrowing]

C:\Users\Natali\Downloads\Filament_98C\Filament_98C.ino:359:24: warning: narrowing conversion of '210' from 'int' to 'char' inside { } [-Wnarrowing]

char et[] = {0xd2, 0x00}; // 210 C


exit status 1

'volatileboolean' does not name a type

This report would have more information with

"Show verbose output during compilation"

enabled in File > Preferences.

JasonL68 (author)2015-11-05

Thanks for posting this. I have a few questions.

1. What temperature does this program heat the extruder to?

2. Is there a simple way to alter the extruder temperature and the heated bed temperature?

Thank you!

GhorX (author)2015-10-20

Thank you very much, I have no problem with filament price, but in my country its takes long time to buy one.

Here is my "implementation" of your guide on my DaVinci 1.0A - sw ver 2.0.0, fw ver 1.0.6.

1) Uninstall XYZ software, remove driver (ctrl + del on printer in device manager, check uninstall in next window)

2) Turn off printer, remove cart, load Arduino project and before continue, change new length value to maximum for given cartridge type. It is 120m starter, 240m common - bigger values are determined as invalid by printer. Now connect chip from cartridge, upload code and run serial monitor - you can see "{FAILED}" messages, this is (probably) ok, important is successfull dump. Values was been always stored in my case.

3) Now pack & insert cartridge into printer, install XYZware ver. (seems to be first with 1.0A support, I found it here: ) and before run, disable any outgoing connections in your firewall for "c:\Program Files (x86)\XYZware\XYZ.exe" (path can differ) - in Windows firewall you must add new rule for executable in advanced management, adding app in basic interface is not enough.

4) Turn printer on, check status in device manager and run XYZ app. It can hang-up for few second after start, so be patient. From XYZ open monitor (icon on right-bottom corner), you should see new length, Now you can print.

Note - if you can see printer in device manager but XYZ cannot found it, you have probably too old version of software, try newer.

Note 2 - all used cartridge serials are stored locally, so if XYZ detect serial as "hacked" because of bad firewall settings, you must flash chip again (SN is increased every flash).

StevenM57 (author)2015-10-16

Ok so I may have mistakenly allowed my computer to update the firmware to the newest version 2.0.0 for the 1.0A.

Has anyone seen or heard of a resetter for the 2.0.0 firmware for the 1.0A?

JeffO5 (author)2015-09-13

I have a Da Vinci 1.0 AiO and am on firmware 1.1.5. I also purchased a reset device similar to the one in the image above. It worked perfectly once and I just tried it again and I as well am getting an "unidentified cartridge" message. Does anyone have any information on this message and if an Arduino will work on this particular device?

IraA (author)JeffO52015-09-22

Our resetter worked fine for a couple of times (on Da Vinci 1.0A), then we started receive this "unidentified cartridge" error..Turning off and turning on the printer and restarting the computer did not help. Please, share a solution, if you find one)

scottrevoman333 (author)IraA2015-09-24

So sorry for the delay, got caught up with work,

Did this start after any firmware or software update?

Also does the PC software give you the error message or does the printer? If its the printer or printer and PC then read through the rest of this if its only the software then please wait for me to find an older version of the XYZ Software that will work.

Try and connect the Arduino to the cartridge then re-upload the code to the arduino WHILE it is plugged into the cartridge, if that doesn't fix it try the one of other codes on the 'ible. Also follow these steps when trying the reset this time.

1. Printer off

2. Remove Cartridge

3. Connect Arduino

4. Connect USB to Arduino

5. Upload Arduino Code

6. Remove Arduino

7. Insert Cartridge Into printer.

8. Power on printer

9. Repeat steps 1-8 with different Arduino Code from 'ible

If it is still not working then try another "spent" cartridge if you have one, I have 3 and for some reason 1 of them will not reset all the time.

And last if you have changed the cartridge a lot try checking the connector tabs inside the printer(little gold spring pads) try putting a little rubbing alcohol on a paper towel and gently wipe if they look dirty, if they are damaged or "flattened" then you may be able to remove the rear plastic case and gain access to the pads to fix them.

IraA (author)scottrevoman3332015-10-16

Hi! Nothing helped me until i bought a new cartridge. New cartridge flashes easily with no problems. Before i flash i make sure that internet connection is OFF.

phil.harlow (author)IraA2015-10-15

Try this: close XYZware, unplug internet (or disable adapter), launch XYZware, print, reconnect internet. This just worked for me with XYZware with firmware 1.2.7.

KyleR24 (author)2015-10-01

I have a da vinchi 2.0 duo and i tried the EPROM re setter and my cartage says unidentified cartage. Can anybody help.

phil.harlow (author)KyleR242015-10-15

Try this: close XYZware, unplug internet (or disable adapter), launch XYZware, print, reconnect internet. This just worked for me with XYZware with firmware 1.2.7.

Andy_Draffin (author)2015-09-29

I bought the Da Vinci 1.0 second hand, got the arduino with the purchase, previous guy said he has done the reset before. However, printer firmware is set at 1.2.7 and not 1.2.6 is this going to cause any issues do you know?

The printer firmware shouldn't cause any problems that I know of, the nation reason for the cartridge being "unidentified" is due to XYZ Software not firmware.

IraA (author)2015-08-29

We made this for our Da vinci 1.0A. However, when we used a battery, it did not work. We had to connect USB to it and then connect to the computer. It worked then, yay :)

thomas.ogbourne (author)IraA2015-08-30

Hey what firmware are you on as im running 1.0.6 and dont want to screw my printer up?

I don't know for sure but I think it is something like 1.3.4? Will check when I get home Monday, this shouldn't effect your printer it only changes the cartridge coding your printer firmware is a completely separate system.

Ah right im so stupid! *facepalm.

Many thanks!!!

scottrevoman333 (author)IraA2015-08-30

I've noticed this too, when I plug the USB into my pc I have to re upload the arduino file otherwise the arduino will not reset the cartridge, haven't figured out why, it is easy enough to open the editor and just re upload the file.

WilliamP18 (author)2015-06-26

Would you know if this works for Da Vinci 1.0A?

IraA (author)WilliamP182015-08-29

It worked for my Da vinci 1.0A

toniwillher (author)WilliamP182015-07-11

No it did not work for me (DaVinci 1.0A, Firmware 1.0.3) it said something like unknown cartridge

But thanks for the nice description on how to connect the arduino, it finally worked for me with the arduino software from:

If you reset your 1.0A: Do not forget to block the XYZware with your firewall...

I'm not positive but assuming they use the same filament cartridge it should work with the 1.0a as well, but don't hold me to it that's just my best guess.

MidnightMaker made it! (author)2015-07-26

I used the code from github (Voltivo referenced in the comments below) and it worked fine on a Davinci 1.0A. I should mention that I disconnected the computer from the internet before printing to avoid database serial number issues. The XYZ database has been an issue even for legitimate XYZ Cartridges purchased off amazon.

Thanks for posing this!

LauritsH (author)2015-06-11

Thx it worked perfectly.. :-)

I'm about to downgrade my firmware aswell, but my current firmware is 1.0.6 and the version i can downgrade to is 1.1.G..

Is that not a more resent version then the one i have?

toniwillher (author)LauritsH2015-07-11

Maybe you already solved it: But it seems you have a DaVinci 1.0A (!) as well?

LauritsH (author)2015-06-15

Can anyone help me downgrade my firmware?

It's 1.0.6 and i'm using windows 8.

When i try downgrading, using the XYZ Downgrader, it won't accept my serial number..?..

scottrevoman333 (author)LauritsH2015-06-15

I'm afraid I can't help with that I have stayed with the XYZ firmware and have no experience with adjusting the actual printer firmware, check out "" pretty much any google search on these machines will yield results from their forums, I hope this helps, sorry.

LauritsH (author)2015-06-10

My version, on the cd, is

How do i downgrade it???

LauritsH (author)LauritsH2015-06-10

I just found the version online and installed it, but now my computer can't find the printer.... WTF

Can someone please help me?

About This Instructable




More by scottrevoman333:Da Vinci 1.0 Filament ResetDIY Sun Jar Scenes"Moonshine" Aquarium
Add instructable to: