Frustrated with the cost of the form labs resin I ordered some MakerJuice. MakerJuice runs best at FLGPBK03 (Black v3 resin) settings but my only spare cartridge was an old FLGPWH01 (White V1). Running in Open Mode made for worse prints. MakerJuice isn’t near as great as the Form resin but for rough prints it’s much more cost effective for stuff that’s high volume / low detail.
Undeterred I set out to clone the Black chip identifier.
Looking at the chip ID on the bottom of the cartridge I saw it only had 2 pads instead of 3 which meant it was probably speaking 1-Wire protocol by Maxim and was therefore probably one of their external EEPROM chips. After a bunch of digging I narrowed it down to the DS2431. (Only later d`id I see this was recently discovered on the forums here.) Anyways, it is fortuitous as there are a bunch of guides online for interfacing with this chip with a Bus Pirate.
I attached two alligator clips to the DS2431 chip on the cartridge:
And connected the Bus Pirate to the DS2431 chip using 1k ohm pull-up resistor hooked up to the Data line (MOSI on the Bus Pirate - never mind that I’m using the ‘old’ v2go in this pic. The newer v3.6’s work just fine.)
Turning on the Bus Pirate and putting it into 1-Wire mode (with the power supplies enabled!) lets us discover the chip:
(Commands “m; 2; W; (240);”)
From there we can dump the memory of the interesting cartridge using: “(85)(1) 0xf0 0x00 0x00 r:144”
From there, we can copy this data to a notepad and edit our next chip. By hand this is a tedious process as the DS2431 only has an 8byte buffer and should be made into a script but for illustration purposes you can write over the it like so:
#write first 8 bytes to address 0x00 to DS2431 ‘scratchpad’
(0x55) (1) 0x0f 0x00 0x00 0x43 0x00 0x16 0x4E 0xA8 0x20 0xF9 0x06
#optional - confirm it’s in ‘scratchpad’ and get checksum data / write command
(0x55) (1) 0xaa r:3 r:8 r:2
#commit from ‘scratchpad’ to memory
(0x55) (1) 0x55 0x00 0x00 0x07
#write second set of 8 bytes starting at 0x08
(0x55) (1) 0x0f 0x08 0x00 0xB5 0x82 0x6F 0x98 0x7C 0xBA 0x62 0xFC
(0x55) (1) 0x55 0x08 0x00 0x07
#write third set of 8 bytes at address 0x10…forth set 0x18… fifth set 0x20… sixth set0x28…
…seventh and eighth you can skip because their just 0xFF’s…and then…
#write ninth set of 8 bytes at address 0x40
(0x55) (1) 0x0f 0x40 0x00 0x01 0xD3 0x87 0x35 0x94 0x88 0xBF 0x1C
(0x55) (1) 0x55 0x40 0x00 0x07
#write tenth (and final) set of 8 bytes at 0x48
(0x55) (1) 0x0f 0x48 0x00 0x85 0x03 0x3D 0x5D 0x7C 0x03 0x87 0x13
(0x55) (1) 0xaa r:3 r:8 r:2
(0x55) (1) 0x55 0x48 0x00 0x07
confirm the firmware is written by dumping again:
(85)(1) 0xf0 0x00 0x00 r:144
Then boom - cloned cartridge with reset fluid count ready to go.
The nozzles don’t last forever but I assume you can put on your big person pants and make a judgment call when things need to replaced at the hardware level. Now you can at least use alternative resins without being crippled by open mode.
Props to @yoderkl and @fantasy2 - wish I saw your posts earlier