I have an old 3D printer from XYZ (Da Vinci 1.0) which I purchased some years ago but actually haven’t been using it and I am only on my third cartridge. Last week I wanted to print something and I had a cartridge with about 20m left in it and I needed only 5m. Suddenly while I was printing, the printer stopped and said “0 meters left” – this couldn’t be right!
So I opened the cartridge and there was still plenty of material left (see the picture above), then I checked the other 3 rolls I have and I saw the same situation. To be frank, I found this quite unfair and decided to reset the cartridge’s memory so I can use the remaining material in full.
First step was to make a EEPROM programmer. When I took the chip off from the cartridge it seemed to be the Microchip’s 11LC010 1Kb UNI/O chips. Without going into technicalities, this protocol requires only one wire and supply.
Making the programmer is very simple task – still you will need to flash the PIC with a PIC programmer. For this occasion I used PIC18F2553, but the firmware will work with PIC18F2550, PIC18F4553 and PIC18F4550 as well.
Once my programmer was ready on the breadboard, I downloaded the memory from my 3 empty cartridges and started decoding the information. After some on-line reading and going through the code it seemed clear how the memory is organized and the meaning of the different blocks.
When I was programming the EEPROM I was thinking that I will have to go through the same procedure every time my new cartridge says 0 meters left and decided to make a small software application to be used in future as well instead of manually editing the code … besides who knows what I will remember after couple of months or an year. So I changed my XYZ programmer to connect to the PC through the USB port and all programming is controlled now by the software.
Using the program is easy:
READ – reads the XYZ cartridge memory and decodes the information while saving it in the log file. I advise to read the original cartridge memory, before you start doing any changes
READ FROM FILE – instead of using the chip’s information, you can load the code from a text file
SIMPLE RESET – or “One Click Reset”. The only thing you have to do is to “READ” the memory (or open a file) and click this button to reset the cartridge to its original state. All modifications done with the drop-down menus will be ignored
ADVANCED RESET – allows you to modify some of the cartridge settings through the drop-down menus. (Please note that it looks like that the latest XYZ firmware doesn’t support 400m cartridges)
RESET APP – brings the application to its initial state i.e. will reset all fields in the software – equivalent to closing and re-opening the application
MEMORY SIZE – Choose the memory size of your cartridge
While the memory is being programmed, there is some information displayed and some checks are being done. These checks will inform you of the progress and will stop the reset procedure if an error occurs. Most of the information will be saved in the *log file which you can find in the main directory. Nevertheless if something goes wrong it would be best to copy the information from the both text boxes in the program and save it.
I saw on-line that some of the reset tools are having trouble with the newest XYZ firmware – probably they are not doing all the necessary checks and/or are not decoding properly the memory information.
I suspect newer cartridges might be using larger memory chips, but my guess is for compatibility purposes cartridges with 1Kb EEPROM still will be supported. In these memory chips if the internal address pointer exceeds the memory boundary the pointer will wrap around to the beginning. Thus there is no (easy) way to distinguish between different memory sizes (from printer’s firmware perspective) without additional write-read procedures. Therefore if a larger EEPROM chip (thus newer cartridges) is repeatedly written to the end of the memory with the data from a 1Kb chip, they should appear to the printer’s firmware as 1Kb and working as well as 1Kb chips. However this is something I’ll have to confirm … but I’ll leave that for future if it becomes an issue.
Today (August 2018) I checked my application and there is no problem with the latest XYZ firmware for my 3D printer – resetting the cart works just fine. So here is an example of resetting my “PURPURIN” cartridge.
It looks like the XYZware software is checking the serial number of the cartridge upon an online database when it is connected to Internet and the printer is on. If the SN is not found, XYZware will send a command to render the cartridge “Undetermined” (writing FF’s in the memory) and the SN is blacklisted in the internal memory card. Therefore when you reset your cartridge you should always change the SN. Also you should either block your XYZware from accessing Internet in your firewall or close the software as soon as the object is transmitted to the 3D printer.