Stratasys EEPROM hack revisted

Five years ago, I published what is probably the single most popular post on this blog – namely, how to reset a Stratasys material cartridge EEPROM so that it can be refilled with much cheaper third party filament.  Dan at took things a step further and came up with some great step-by-step tutorials on how to accomplish this, and even had a post featured in hackaday.  I received a lot of questions and feedback on the hack (and even helped hack a few machines running in the field), but the fact that the process requires modifying contents on the printer’s hard drive put it out of reach for users who were barred from doing any sort of ‘invasive surgery’ on the machine (generally students stymied by school officials).  What was needed was a truly ‘touchless’ hack that didn’t require any modification of the base machine itself – we needed a way to actually generate our own EEPROM data from scratch rather than simply re-using the EEPROM data as it had come on the cartridge from the factory.  The problem is that the EEPROM data is encrypted.  Worse, my understanding of how DES crypto is done on a practical level is pretty much zero – I’ve done embedded programming before, but this sort of stuff is far outside my area of expertise.

Fortunately, in 2013 a wizard cracked the EEPROM crypto and posted the code to github!  Benjamin’s sorcery is just what’s needed to build your own EEPROM image, and he’s put a great deal of time and effort into it for zero financial gain.  As a result, it really bugs me when I see people using his code to sell programmers for hundreds of dollars, with zero attribution for his work.  This post, then, shows start-to-finish how you can refill your own P-class Stratasys cartridge using only a Raspberry Pi.  It’s admittedly long and detailed, but I think it’s important to understand the whole process before trying to use any shortcuts.

The reason that it’s taken me so long to document this hack is that I previously had no real access to a P-class machine.  Fortunately, my friends at Into3D LLC have one in their shop and were more than willing to let me attempt refilling one of their empty cartridges.  It’s a Dimension BST 768, which fortunately is still supported for 2 more years.  This is what the front panel looks like with a near empty (1% material remaining) model cartridge:

Here’s that very cartridge – the label on top lists some applicable patents (6776602, 7063285, 7341214, D436111, and 7754807):

The side has a recycling information label and identifying information for the cartridge itself – we’ll see how that matches up with the information on the EEPROM itself.

Use a 7/32″ hex wrench to remove the 4 screws on the underside of the cartridge (I used a fold-up set to break them free first, then a standard L-wrench to remove them).

Then, flip the cartridge over and give the shell a few raps with your knuckles to shift the internal desiccant packs into the bottom half.  Carefully lift off the top half of the cartridge, exposing the 1% of material remaining on the spool:

Despite my dislike of using cartridges for 3D printers (it’s a lot of excess material to house the consumable), these are actually quite well designed – there’s a pair of very simple drive wheels at the corner exit, and the other 3 corners get desiccant packs.  The orange-brown circumferential seal has a spot for the filament to exit through, and the screws actually thread into brass inserts, not into the raw plastic.  A single cartridge can be reused many times, potentially lasting a fair portion of the life of the actual machine.  Parked right next to the drive wheels in a slot is the object of our interest, the EEPROM board itself:

Here’s what the front and back of the EEPROM PCB looks like:

In case anyone is wondering, the text on the chip itself is:


As noted in the original blog post, the chip is a DS2433 (originally a Dallas Semiconductor product, hence the ‘DS’, now owned by Maxim).  Importantly, it is a 1-wire device, hence requiring only 2 contacts to the chip.  As an aside, this nomenclature has always annoyed me – power and signal may be carried over a single wire, but you still need a ground connection.

Now, to extract those pesky bits from the EEPROM, all 4096 of them!  Technically, there’s a few more bits that we’ll need as well – a 48-bit serial number, 8 bits for CRC, and an 8-bit family code (0x23).  I’ve used a Bus Pirate before, and you can use an Arduino as well, but for this post I’ll be showing how to use a Raspberry Pi, since we can do everything on a single, standardized platform.  In this case, I’m using a Raspberry Pi model B with an Adafruit breakout board, and I started with a clean NOOBS image (v1.7.0 to be specific) on a freshly formatted SD card.

I booted the RasPi and was greeted with the installer – since I had the RasPi connected to my network, it provided me with network installation options, but I selected only the first option to install the Raspbian OS:

While that was installing, I prepped the breakout board.

I connected the black alligator clip to a GND (0vdc) terminal and the red alligator clip to IO4 on the breakout board (which is pin 7 of the RasPi header).  Note that pinouts on the RasPi can be very confusing – IO4 on the breakout board is not GPIO.4 on the RasPi as I had first thought, but pin 4 of the Broadcom BCM2835 processor at the heart of of the RasPi (also known as GPIO.7 on the RasPi).  You can read more about this confusion at  I connected a 2.2k resistor to a 5vdc terminal and the IO4 terminal – this acts as a pullup.

By this time, Raspbian had finished installing and I was looking at a fresh new desktop.  I find it easier to just SSH into the RasPi, so once I determined its IP address (just hover your mouse over the network icon in the upper right of the desktop), I could fire up PuTTY and connect right to a shell (you can certainly do everything via a terminal window on the desktop, though).

On a default install of Raspbian, the login is pi and the password is raspberry.  While Raspbian includes just about all the software we’ll need by default, the Python crypto library will be required later on, so run sudo apt-get install python-crypto right away to install that package (the RasPi will need to be network connected with internet access for this to work).  I then attached the breakout board to the RasPi and proceeded to do some testing with gpio to make sure that my wiring was correct.

I hooked up an oscilloscope to the red and black leads (you can use a multimeter, but a scope will let us see when EEPROM reads are occurring, which is handy when debugging), and saw that I had nearly 5vdc, which is just what I was expecting due to the 2.2k pullup resistor.

Now, let’s have a look at actually controlling the pin that the red alligator clip is connected to.  The gpio readall command gives us a snapshot of what the status is of all the header pins (again, see for details).  By default, all the I/O pins are set to be inputs (note pin 7 is set as ‘IN’):

We can change the mode from input to output on that pin with gpio mode 7 out

And as soon as that command is issued, the voltage drops to zero:

Issuing gpio write 7 1 will bring that pin high:

Resulting in 3.3v output (RasPi digital I/O is 3.3v, not 5v):

That’s all for verifying that the wiring is correct.  There’s one final change to make before we can actually try reading in an EEPROM, and that’s disabling Device Tree (I understand it’s possible to get things working with DT enabled by means of some other configuration changes, but disabling it altogether is the route I went with).  Run sudo raspi-config to bring up the configuration menu, and select Advanced Options:

Then, select Device Tree:

Select ‘No’:

And DT will then be set as disabled:

Back at the main menu, select Finish and you’ll be prompted to reboot (select ‘Yes’):

With the RasPi rebooted, we’re finally ready to read in an EEPROM.  Recite the magic incantations sudo modprobe w1-gpio gpiopin=4 and sudo modprobe w1-ds2433 (note that you’ll need to run those commands again if you reboot the RasPi, so it may be worthwhile to add them to a startup script):

Now, connect the clips to the EEPROM – black clip to the ground pad, red clip to the data pad (you can tell which is the ground pad because it has a trace on all 4 sides connecting it to the ground plane):

If you have a scope hooked up, you’ll see that the voltage drops to 3.3 volts and then there will be a data read every 10 seconds or so:

We can cd /sys/bus/w1/devices/w1_busmaster1 to have a look at the connected 1-wire devices seen by the RasPi, and therein is a specific directory created for that EEPROM (23-0000014d4762 in this case – your EEPROM will be different!):

You can also use the xxd command to hex dump the EEPROM’s full UID as shown (0x2362474d0100006b).  This particular UID consists of the family code (0x23, which should be the same on all Stratasys P-class EEPROMs, except for those used on uPrint cartridges), the device serial number (0x62474d010000 – note the endianness) and finally the checksum (0x6b).  The screenshot also shows a dump of the 512 bytes of EEPROM data itself.  In order to actually do anything with this EEPROM data, though, we’ll need Benjamin’s code.

We’ll cd back to our user directory and then grab a .zip archive of the code via wget, after which we can extract it into a directory via unzip

We’ll cd into that directory and try running the main program by executing ./ -h

This is just what we want to see!  If instead you get a number of errors mentioning crypto, make sure that you have the python-crypto library installed.  At this point, we don’t need to do any further configuration on the RasPi, and we can actually dive into the EEPROM data itself.  If you’ve managed to get this far, you’re probably capable of basic command line Linux work, so I’m going to gloss over those details from this point onward and let screenshots do most of the talking.  First, we’ll copy the EEPROM data out to a file that we can actually work with.

A directory listing confirmed that the resulting file is exactly 512 bytes in length, and all the formatting looks just like all the other Stratasys EEPROM dumps I’ve seen.  Let’s take one more look at the EEPROM UID, as we’ll need to format it correctly to feed into the stratasys-cli program:

We need to reverse the byte order of the shown UID, so instead of 23 62 47 4d 01 00 00 6b we’ll use 6b 00 00 01 4d 47 62 23 (remember, the family code of 0x23 is at one end, and the checksum is at the other end).  Here we finally feed the EEPROM UID and the EEPROM data through the program, using ‘prodigy’ as the machine type (any Dimension series machine should be ‘prodigy’, but a different machine type (Titan, Maxum, etc.) will have a different family name):

If you don’t have the UID formatted properly, the program will fail with a checksum error:

If we take a quick look at the data, everything agrees with the label that was on the cartridge – the color, serial number, manufacturing lot, and manufacturing date all match perfectly (I’m guessing that the timestamp on the EEPROM data is actually GMT).  Note that while the last use date is a separate entry in the EEPROM data, I’ve never seen it differ from the manufacturing date (maybe Stratasys intended to write this data back to the cartridge, but couldn’t be certain that the printer itself would actually have the correct day/time set).  A service manual I saw indicated that this timestamp was intended to be the date/time that the cartridge was actually first inserted into a machine, so perhaps Stratasys intended to have cartridges ‘expire’ after a certain amount of time.

The EEPROM stores material quantity in terms of cubic inches.  A brand new cartridge contains 56.3 cubic inches worth of filament, and the current level as shown on the EEPROM is under 0.75 cubic inches, so the 1% filament remaining message on the printer’s front panel was right on (there was actually a little more than that remaining on the reel, but the overage allows for nozzle purges, waste due to swapping cartridges, etc.).  The original hack worked by simply setting the current material quantity back to 56.3, but the printer would remember the serial number of the cartridge (and refuse to work with that cartridge serial again), so files needed to be deleted on the printer itself.  Since we can now create our own EEPROM images from scratch, we can simply change the serial number in addition to the material quantity, and the printer will be none the wiser.

In addition to decrypting the EEPROM data and displaying it in a human readable format, Benjamin’s program can provide all the parameters needed to generate that very EEPROM data, which is extremely handy.  We’ll simply tack on the -r option to the command we just used:

We only need to change the highlighted options to create our desired EEPROM image:

Reading the generated neweeprom.bin file back through the program shows that the serial number is now different (I incremented the value by 1000 rather than 1 just in case there were consecutively serialized cartridges the machine had already seen), and the material quantity is back to ‘full’.  Now, we can finally write that file back to the EEPROM itself (remember to use sudo when writing to the EEPROM due to permissions):

A quick hexdump directly from the EEPROM verifies that we’ve modified the contents successfully.  Note that the new image we generated is only 113 bytes, while the original EEPROM data is a full 512 bytes.  This is because everything after the ‘STRATASYS’ at 0x69 is random garbage (early on, Stratasys simply padded out 0x71 onwards with zeros), so that portion of the EEPROM can be left unchanged.  That’s all that we need to do with the RasPi – the EEPROM can be disconnected and set aside.  All that remains is to reload the cartridge with fresh material.

My favorite current filament is the ‘High Performance ABS’ from Coex3D – I’m partial to them because they’re local, their product quality is excellent, and Chris gave an amazing presentation on polymer processing and filament extrusion to our 3D printing user group a few years ago.  He listened to my pleas for MG94 filament and thankfully started producing it.

While Coex3D reels fit right into my FDM series machines, they don’t fit into P-class cartridges (the bore is just a little too small, and there is a rubber piece attached to the top shell of the cartridge that would interfere anyhow).  So I needed to respool the new filament onto the old reel.

In fact, respooling the filament itself is probably the hardest part of the entire process!  I admittedly got a bit hackish with the use of electrical tape as a makeshift drive dog, but it worked.

Make sure that you have the desiccant packets in place, the EEPROM PCB in its slot, and the drive wheels in position, then very carefully feed the end of the filament through the hole in the disc portion of the gasket.  Hold the filament in its guide slot, and carefully place the top shell half back in place (this is pretty tricky without having the gasket jump out of place).  Flip it over, assemble the cartridge with the 4 screws, and our work is complete.  Now, for the moment of truth…

After loading the refilled cartridge into the printer, it showed a 100% full model spool!

Of course, the proof is in the prints, and the machine is now happily churning out parts far more inexpensively than before (and with better material properties than the OEM P400 filament had).


1) Benjamin’s code works for other Stratasys printer families as well, including the big T-class and Maxum/Quantum machines.  It will even decrypt and generate binary images for uPrint cartridge EEPROMs.  However, uPrint cartridges use a different EEPROM model that unfortunately utilizes an HMAC authentication scheme for writes.  So while you can read EEPROMs and generate new .bin files, actually writing them back to the EEPROM is impossible without knowledge of the secret key used for the HMAC authentication.  If you only have access to a uPrint, you’re kind of stuck. [12FEB2017 addendum]  It turns out that an HMAC protected EEPROM can be re-written by using the DIAG port on the printer.  ‘Odin’ discovered this workaround and authored these concise instructions for the hack.  This isn’t quite ‘touchless’, but until someone breaks or sidesteps the HMAC protection, it’s the best option.

2) 56.3 cubic inches isn’t actually the maximum material quantity you can set on the EEPROM.  It’s a floating point number, so the sky is the limit!  However, on a P-class machine, 60.0 cubic inches is the maximum that the printer will accept as valid, as anything larger will instead be considered zero. [22FEB2017 addendum] Reports indicate that larger volumes can be used, but the ‘initial material quantity’ field needs to be similarly large.  However, others (Odin, for one) find that this doesn’t work on their machine, so this could be a difference between firmware revisions.

3) I mentioned using an Arduino to read/write the EEPROM.  There’s actually a fork of Benjamin’s code available on github called CartridgeWriter that runs in Windows and interfaces with an Arduino for EEPROM reads/writes.  I haven’t tried it myself, but others have used it successfully.  I prefer running Benjamin’s code directly on a RasPi due to the amount of control it provides.  Specifically, it makes some automation possible, such as…

4) …this clever little EEPROM rewriter made by Sneaks Hacks.  He’s posted the wiring schematic and STL files for the housing, and is currently working on an updated version as well as documentation for people wanting to build their own.

5) The Stratasys EEPROM PCB has a surface mount 4.7k pulldown resistor right next to the DS2433.  While most wiring schematics for reading/writing a Stratasys EEPROM show to use a 4.7k pullup between 5v and the data pad, I used a 2.2k to help ensure that voltage to the DS2433 remains in an acceptable range.  You can certainly start with a 4.7k pullup and reduce the resistance if you’re having flaky results, but I don’t think I’d go below 2.2k.

6) Benjamin notes that use of the –output-file option when generating EEPROM images isn’t actually correct in a traditional Unix sense, and that I/O redirection is really the proper Unix way to get binary output from (that is, using something like ./ –foo –bar > my_file.bin).  I think using –output-file is a little easier to see and understand what’s going on, but if you’re building an automated system like Sneaks Hacks did, using stdout can help streamline the processing chain.  For example, you could write directly to the EEPROM and save a backup of the image all in one go by using something like ./ –foo –bar | tee backup_image.bin /sys/bus/w1/devices/w1_bus_master1/23-0000014d4762/eeprom.

7) Everything in this post is simply the compilation and distillation of other people’s hard work – I simply wanted to bring it to a wider audience.  These are the folks who deserve all the credit:

  • Huge thanks goes to Mjolinor, who I believe was the first to pioneer using a RasPi as an all-in-one solution for rewriting Stratasys EEPROMs.
  • Thanks to the anonymous and unnamed people (you know who you are) who have assisted in developing and testing these techniques over the past few years and helped review this post before publishing.
  • Steve, Joe, and John at Into3D LLC for letting me use their Dimension BST 768 as the guinea pig for this project.
  • First, last, again, and finally, Benjamin Vanheuverzwijn.  This man is an absolute electronic wizard and none of this would have been possible without him.  Send him coffee.

PIR foam for Stratasys build trays

Filament is the primary consumable on Stratasys machines, but not the only one – the build trays are also considered consumable.  On newer machines that use plastic trays, the official recommendation is to use them for only a single print, but that starts getting expensive fast, so users will wipe them down with acetone or try sandblasting them to freshen up the surface for more use.  The old FDM series machines that I have don’t use plastic trays as a build base, but rather a foam square.  I had already investigated alternate materials with poor results, and John Branlund had started to look into craft store foam instead, as it seemed to be the material to beat.  We eventually concluded that the foam is most likely General Plastics FR-7104 modeling foam based on the sample kits that the company provides.  I haven’t pursued this further, however, as I can’t imagine that shipping on a 4’x8′ sheet of rigid foam could be anything close to ‘low cost’, and I have about half a dozen extra foam bases anyhow.  However, I’ll be turning the FDM 1600 loose to be used by other Makerspace members very soon, and I’d like to give them the ability to simply replace the foam bases as they deem necessary without burning through what I have left.

Some time back, fellow Makerspace member the_digital_dentist was experimenting with various slurries and sprays to improve part adhesion on his very large scratchbuilt 3D printer.  I gave him a Stratasys foam base to try, and it worked like a champ (almost too well, since the ABS support doesn’t break away nearly as easily as HIPS support).  I mentioned my woes in trying to source more of the foam, and he suggested trying the foil-sided polyisocyanurate (PIR) foam that you can find at some home improvement stores, and gave me a few pieces to try.  I cut a 12″ square, peeled the foil from one side, and sprayed the other side with 3M 77 adhesive before pressing it onto my material testing plate.  I put the tray into the machine and let it heat up before testing it.

Unfortunately, I failed to take differential thermal expansion into consideration.  With the chamber heated to 70 C, the foam expanded ever so slightly, buckling upwards due to the foil still being attached on the underside.

I removed the foil from the underside, and lacking anything better, used a bunch of paperclips around the perimeter to secure the foam.

While the PIR foam surface isn’t as smooth as the Stratasys bases, it’s ‘good enough’ for my needs and a test print went fine.

The part and support removed from the PIR foam very easily with just a little tearing of the substrate.  Overall, it’s still not quite as good as the FR-7104 foam (tears more easily and doesn’t grip as well), but for a cheap, readily available material, it’s the best thing I’ve found so far.  The only drawback is that locally available sheets are only 1″ thick and I need 1.25″ of thickness, but shimming up the base from the bottom shouldn’t be much of an issue.

Finally, a semi-working FDM 2000

Continuing from the previous installment

Even after thoroughly cleaning out the problematic support nozzle with appropriately sized tiny drill bits from either end, the nozzle would still clog and jam.  I did indeed have a single spare T12 (0.012″ orifice) nozzle, and installing it exorcised the demons that have plagued the machine for the better part of a year.  *sigh*  It’s always the last thing you suspect.  Frankie notes that when he had nozzle clogs, he used a torch on the nozzles as a ‘take no prisoners’ approach to cleaning out foreign matter.  I think I’ll have to try this method if for no other reason than to exact thermal revenge.

Last week, after verifying that both nozzles were feeding without any jams, I started a test print as a good ‘shakeout’ of the system.  Printing Duchamp chess sets are all the rage right now (more on that in an upcoming blog post), so I thought it would be a good inaugural print.

When I stopped in at the Makerspace the next day, I was relieved to see that the print had completed successfully, and I didn’t have a chamber full of ‘3D printer barf’.  The print quality isn’t as good as I’m currently getting with my FDM 1600, but that’s to be expected since I have to fully calibrate the XYZ location of the support nozzle in relation to the model nozzle.  There’s also a fair bit of rippling in the prints that I think may be due to a slightly loose drive cable.  Finally, the layer adhesion is quite poor, but this is standard P400 ABS, not the MG94 (P430 ABS+) from Coex that has me absolutely spoiled (yet another upcoming blog post).

Support extruder reassembly

After discovering the semi-blockage in the support extruder, I carefully drilled it out with an appropriately sized drill bit and followed up with several pipe cleaners loaded with Mothers Mag & Aluminum Polish.

I then carefully cleaned the extruder tube, and pressed on the last spare inlet buffer I have (made from Vespel, again by John).

I carefully slid the heater coil back over the extruder (and tried to twist it as much as I could in order to keep it as tight as possible on the tube), re-attached the stud for the solenoid paddle, and re-attached the thermocouple probe.

Then I wrapped the woven fiberglass insulation back around the assembly.

The original foil was unusable, so I tried using plain old ‘heavy duty’ aluminum foil from the grocery store.  It wasn’t as thick, so I doubled it up and did my best to wrap it as tightly as I could (using pieces of 3M high-temperature flue tape to hold it all in place).

The next step was to re-insert the pins for the heater and thermocouple back into the circular connector (I had pulled the pins out in order to more easily re-attach the heater and thermocouple to the extruder tube).  Note that the correct insertion/removal tool is the Amphenol M81969/14-01 – it took me several orders from Mouser to finally figure out the right size.

I then used a few zip-ties to neaten up all the wires.

Everything got reassembled back into the housing.

Re-attach the motor drive blocks.

After putting the head back in the printer, I ran a few feet of support filament though the extruder to flush it out.  Things were looking good…  …until I attached the nozzle and tried running more filament through it.  Just as before I started the extruder teardown, it jammed, kinking the filament off to the side between the drive wheels and inlet buffer.  Seeing that the buffer was also now cracked, I said a few choice words and called it quits for the day.

Upon reflection, I figured that the extruder probably wasn’t the issue in the first place (assuming that I had done the rebuild correctly) and that the motor drive block or the nozzle was the culprit.  I removed the motor drive blocks and set the head in the machine so that I could power it up and try feeding the filament through by hand.  I was able to push the ABS filament through pretty easily, but the support filament I could barely budge.  So I removed the support nozzle and put the model nozzle on the support extruder.  Wonder of wonders, I was able to feed through the filament just as easily – the nozzle must be the problem!  I reinstalled the motor drive blocks and sure enough, the support drive was able to feed support filament through the support extruder and model nozzle with no jamming whatsoever.

I’ll try clearing out the support nozzle with a 0.011″ drill bit (even though I know I’ve done so once already), and I believe I have a spare T12 support nozzle floating around in case that doesn’t work.  At least I’ve finally found the core issue and I’ll hopefully have the machine fully functional in only a week or two.  [insert something about ‘famous last words’]

Gunsmithing with a 3D Printer – Part 5

I realized it has been over a year since I last wrote on the subject (though to be fair, it seems it has been about that much time since I’ve written much of anything substantial).  Since I last addressed the topic in March of 2013, the apex of the “3D printed gun” story has been reached, and media interest in the concept has subsided.  Just as promised, Defense Distributed successfully created an entirely 3D printed firearm (save for a roofing nail used as a firing pin), proved the functionality, and released the STL files.

Naturally, I downloaded the files as soon as they were released last May.  Ever since Defense Distributed had stated their goal of designing, testing, and proving the possibility of a 3D printed gun, I had pondered how to actually achieve such a goal.  I had my own ideas in mind, and figured I could probably design something workable in a weekend, but testing and refining the design is something else – CAD is easy, but proving the model is hard.  My own line of thinking revolved around using a .410 shotshell as the intended cartridge, due to its extremely low pressure in comparison with other rounds.  This would have entailed building a fairly large gun with a rather long barrel (over 18 inches so as to not run afoul of the NFA), and would have taken quite a while to print.  As it turned out, DD came up with a remarkably elegant gun, far more refined than what I myself had in mind – something that stayed true to the intent of pushing the limits of 3D printing.  When I say elegant, I mean elegant in the Unix sense – not something that is beautiful to behold in an artistic manner, but something that has raw simplicity and efficiency in design and operation.

DD called their creation the Liberator, an homage to the FP-45 Liberator of WWII, an equally simple, straightforward pistol that was intended to be airdropped into occupied Europe for partisans to use in resistance of German forces.  The DD version is much chunkier in construction, but shares many of the same design intents – a gun that is able to fire a single shot with a centerfire metallic cartridge with as little mechanical complexity possible.

To this end, the Liberator is an impressive piece of work.  It consists of only a handful of 3D printed components:

  • receiver
  • barrel
  • breech block
  • grip
  • hammer
  • trigger
  • 2 hammer springs
  • trigger spring
  • firing pin

Plus a few pins that hold everything together.  Of these, only the firing pin itself is metal and is actually a roofing nail – since the firing pin needs to impact the cartridge primer and deform it enough to crush the compound between the primer’s cup and anvil, material hardness is a key consideration for the firing pin (and is a material property that escapes the current capabilities of FDM printing technology).

Since I had a number of journalists ask me for my take on the Liberator, I decided to print one for myself in order to give an accurate appraisal of the design.  My friend Joe (not his real name) was also interested in building and testing one to make a proper evaluation, so we collaborated on doing a proper test shortly after the design was released.

I opted to use up the rest of my MG47 filament for the various Liberator parts.  Unfortunately, I lost extrusion halfway through printing the receiver:

Rather than re-print the entire thing (which was over 30 hours), I decided to place the part in the mill vise and plane off the top, then glue on a replacement top half.

I took the opportunity to also glue in a metal block for compliance with the Undetectable Firearms Act.  I bought some 1″ square steel bar and sawed a piece off the end, then found a little bit of scrap to fill in the sides.  All told, I had 147 grams of steel, which should be more than sufficient to satisfy 922(p) (the specific section of US law codifying the UFA).

Insight is a powerful piece of 3D printing software, and I was able to go back to my sliced version of the receiver and delete all the layers from the file that I had already successfully printed.  This allowed me to print just the upper half of the receiver, and I printed a barrel at the same time for good measure.

Note that the .STL file for the Liberator barrel that was originally released is a smoothbore with no rifling (just like the original WWII FP-45 Liberator).  This theoretically makes it an AOW (Any Other Weapon) under the 1934 National Firearms Act (NFA).  The definition of an AOW is rather convoluted (and somewhat contested, given U.S. v. Davis), but it is intended as a catch-all category for firearms not otherwise defined by other categories (hence, ‘Any Other’).  A pistol or revolver with a smooth bore is generally considered an AOW, and for an unlicensed individual to make one, they need to submit a Form 1 to the ATF along with fingerprint cards, a passport photo, $200, and a sign-off from their chief law enforcement officer.  In other words, if you want to try printing a Liberator and don’t want a lot of hassle, make sure the barrel has rifling in it to avoid trouble.  Even modern reproductions of the FP-45 Liberator have tiny (and ineffective) rifling grooves in order to remain compliant.

I made sure to add rifling to the print itself, as rifling it afterwards would necessitate equipment that I simply don’t have (but would love to build someday).

Although the top half of the receiver printed without loss of extrusion, there was still a significant amount of warp on the bottom.  I opted to mix up a batch of epoxy with microballoons and colloidal silica (a thickener) to glue the two halves together.

I didn’t actually print the needed pins and just used some spare sections of metal tubing instead.

Meanwhile, Joe used his Lulzbot to create a remarkably robust receiver out of standard PA-747 filament.  He had tweaked his machine to provide extraordinarily dense prints with virtually no porosity.  We decided to test out his version to determine just how well the design works, its durability, and to get some velocity data to determine actual muzzle velocity.  Additionally, news stories on the Liberator seemed to generally claim that a $10,000 (or more) 3D printer was required to print the Liberator.  We wanted to dismiss this notion and show that even a $1000 printer is perfectly capable of printing high strength objects.

In mid-May of last year, we met up to actually perform the testing.  Our test rig consisted of an 80/20 frame to actually mount the Liberator to, which itself we clamped to a folding table.  In front of the test rig, we set up the sensors for my PACT chronograph (used to measure the speed of the fired bullet).  For safety, we used a 30 foot length of paracord to pull the trigger.  Note also that we used machine screws to actually mount the breech block within the receiver, rather than 3D printed pins.  Additionally, Joe’s barrel was slightly longer than the published Liberator barrel.

We had a great deal of difficulty getting the gun to fire in the first place, making nearly ten attempts to get it to go ‘bang’.  The first issue was getting the sear tail to actually release the hammer, so we replaced the trigger bar with one printed on my machine.  After this, the primer was indeed getting struck, but it did not seem to be igniting – we replaced the springs with ones from my machine as well.  We would wait 30 seconds after each attempt in case there was a hangfire (thankfully we never had one during the testing).  We wondered if headspacing could be an issue, so we pulled Joe’s barrel and put in one that I had printed on my machine.  We also replaced the .380 cartridge we had been using with a fresh one in case it was a dud.

Our next attempt did indeed go ‘bang’, and there was very little of the barrel left in the receiver.  My Stratasys FDM 1600 still has a bit of porosity in its output, and I hadn’t done a solvent vapor treatment on the barrel as was recommended by Defense Distributed.  Also, the round was a very tight fit and had to be pressed into the barrel – it’s possible that the bullet became dislodged, seating further down within the case and causing higher pressures when fired.  While the barrel was destroyed, we finally achieved primer ignition, so we put Joe’s barrel back in and continued testing.

With things finally working (if not smoothly), we proceeded to fire off as many shots as we could manage during the available sunlight.  Here’s a short video of the successful shots made: Lulz Liberator testing video

The video hints at some of the issues we ran into during testing.  We didn’t have the retainer for the firing pin installed, so the firing pin would rocket out the back during every shot.  We used a piece of masking tape on one attempt (you can see it fly up after the shot) to try and keep the firing pin in place, but the hole punched through the tape shows that this did not work at all.  We only had one roofing nail, but fortunately Joe happened to have along extra machine screws that he used for assembly and was able to fashion a replacement firing pin each time by cutting and filing it with a pocket multitool.  We had to make the firing pin longer each time as well, since each subsequent shot increased the headspace, with the cartridge becoming seated further and further down the barrel each time.

The 3 screws holding the breech block in place also became noticeably bent as testing continued, so we replaced them halfway through.

Here’s what the Lulzbot printed barrel looked like after its first successful firing.  The cartridge has actually been pushed back a bit (hence pushing back on the breech block and bending the retaining screws as noted).  You can also see white spots forming (known as crazing) as a result of the internal stress.  Finally, the primer has been pierced, allowing gas to erupt out the back of the cartridge, which is an undesirable behavior.  However, this is not a fault of the Liberator’s design, but a side effect of using a roofing nail or ‘field expedient’ machine screw – the sharp nose of the nail or screw actually punctures the primer cup, whereas proper firearm firing pins actually have a carefully rounded nose so that they dent but do not pierce the primer.  In fairness, however, pierced primers are not a great concern on a disposable firearm such as the Liberator or its WWII ancestor.  Continually piercing primers will allow the hot gases to erode the bolt face, firing pin hole, firing pin tip, etc. in a conventional firearm, but for a disposable gun designed to operate only a few times, this is admittedly a minor design quibble.

One thing the photo does not really indicate is how firmly the brass case is actually stuck inside the barrel.  In a conventional metal barrel, the brass does expand somewhat during firing, which is actually beneficial in sealing the case to the chamber walls in a process known as obturation.  The brass relaxes slightly as the bullet exits the barrel (which allows the internal pressure to drop back down to atmospheric levels), but since ABS plastic is much lower in strength than steel, the brass case expands greatly in the Liberator making conventional extraction all but impossible.  In our case, we needed to use a hex wrench and a rock to beat the expended cartridge out of the barrel.

Unsurprisingly, the walls had expanded so far that the case had actually split.

More surprising to us, though, was the fact that the barrel bore looked entirely unscathed (not only by the projectile, but by the hot propellant gases).  The photo really doesn’t show it, but in looking down the bore, the finish appeared just the same as in the unfired state.  Both Joe and I presume that there is so much bore expansion during firing that the bullet itself isn’t even touching the rifling.  Granted, the rifling would have done almost nothing anyhow (a copper jacket is still much harder than ABS plastic).

We only managed to record two shots with the chronograph (we weren’t using skyscreens, and they probably would have helped).  The captured velocities were 498.2 and 465.1 fps, for an average of 481.7 feet per second (146.6 m/s).  By comparison, the very same round fired out of a conventional .380 pistol will be well over 900 fps.  Consider that kinetic energy (or ‘muzzle energy’ in firearms parlance) increases as the square of velocity, and the difference is quite dramatic – the Liberator only achieves a muzzle energy of 49 foot-pounds, or roughly a quarter that of what a standard .380 pistol provides.  By way of comparison, a major league fastball delivers twice as much energy, and one person has actually died as a result of being struck with such a pitch (yet a year later, despite proclamations of mayhem and anarchy in the press, there have been zero deaths or even injuries from 3D printed guns).  In the end, then, the Liberator is not at all a weapon of physicality, but a weapon of philosophy, able to challenge preconceived notions regarding governmental control over the sharing of information.  Which, whether you agree or disagree with his views and actions, is precisely what Cody Wilson set out to accomplish in the first place.

Somewhat unsurprisingly, only a few days after DD posted the .STL files for the Liberator on their site, the US State Department sent a letter to Cody, demanding takedown of the Liberator files and 9 other designs that had been posted on Defense Distributed.  The authority for this stems from ITAR, the International Traffic in Arms Regulations, which controls import and export of defense related articles, including information related to such items.  That acronym may ring familiar to old hands of the internet, as it is the very same statute under which the US government blocked export of Phil Zimmermann’s PGP encryption software in the mid-90s, which saw Phil under criminal investigation for “munitions export without a license”.  While the case against Phil was eventually dropped (and Cody/DD have not been actually charged with any wrongdoing), the parallels are striking.  Like Phil’s case, it will undoubtedly be many years before the issue is resolved.

What struck me oddly about the State Dept. letter were the 9 other designs listed as takedown targets.  In my opinion, these were picked entirely at random in a perfectly transparent attempt to hide the fact that the Liberator files were in fact the sole items of interest.  Specifically, item 6, “Sound Moderator – slip on” was actually designed by noted RepRap contributor (and airgun enthusiast) Vik Olliver and is still available on Thingiverse.  If this was truly an ITAR violation, then why did the State Department not do anything when Vik originally ‘exported’ the file from New Zealand to Thingiverse servers in the US, and why has Thingiverse/Makerbot/Stratasys not received their own ITAR takedown letter for continuing to host this design?  I could opine a great deal more on the topic, but since I attempt to limit my blog writing to technical matters, I’ll curtail my musings.

Other interested people have printed their own versions of the Liberator as well – has a superb 8 minute documentary called “I Printed a 3D Gun“, which I highly recommend watching.  Travis Lerol (who has also experimented with printing AR lowers on his 3DS Cube) attempts to give his own Liberator a try, but it fails to ignite (spoiler alert).  Travis tells me that he has since managed to get a round to fire, though it took about 200 attempts.  A number of design remixes of the Liberator concept have also been posted online, though very few (if any) have actually been printed and tested.

I was very honored to be asked by Professor Hod Lipson to make a presentation at the Chicago Inside 3D Printing conference on the topic of 3D printed firearms on July 11.  I was scared stiff to do any sort of public speaking, but thankfully there weren’t many people in the audience, and I had a few friends in attendance for moral support.  I’m very glad I attended, as I was able to chat with so many notable people in the field – not only Hod Lipson, but Avi Reichental (of 3D Systems), Scott Crump (of Stratasys), Scott McGowan (of Solid Concepts) and especially Ralph Resnick (of NAMII) – thanks to you all for your time and attention.  Chatting with Scott McGowan and some of the other folks from Solid Concepts was especially interesting, given that only a few months later, Solid Concepts would release their own 3D printed gun, the 1911 DMLS.  As a fan of John Browning‘s entire portfolio of work (and especially the M1911 pistol), I was thrilled to see such an iconic, century-old design recreated with cutting-edge technology.  Solid Concepts is now actually selling the 1911 DMLS in a limited run of 100.  While I wish I could afford one as a collectible (Scott, if you have an extra, please drop me a line!), I’m simply happy to see the whole 3D printed gun media story finally reach its logical conclusion: 3D printing is simply another manufacturing technology, and its application to firearms is no different than the development of milling machines, investment casting, CNC, polymers, and on and on.

Addendum: I had initially wanted to cover much more of the work done in the past year by others exploring the intersection of gunsmithing and 3D printing, but this post took long enough to write as it was.  Fortunately, Andy Greenberg (who interviewed Joe and me for several stories last year, and is a superb technology reporter) has an excellent rundown of the various designs being experimented with by FOSSCAD.

Well, there's your problem…

Since my previous post on the stubborn clog on my Stratasys FDM 2000 support extruder, I made a rather shocking discovery.  But first, what I managed to accomplish before said discovery…

The first step was removing the Torlon inlet buffer from the extruder tube.  John‘s inlet buffers are a very nice tight fit to the tube itself – unfortunately, removing it pretty much requires destruction as a result (sorry, John!).  I figured I could just break it off, but I’d be left with the ‘nipple’ of the inlet buffer still embedded in the tube.  So I used a heat gun to warm up the tube to loosen the material that had leaked out between the tube and inlet buffer while trying to twist off the buffer itself.

Apparently I got things a little too hot, as my gloved hand left imprints in the sides of the Torlon buffer when I finally broke it off.

Unfortunately, I also left a good bit of Torlon stuck inside the inlet, just as I had feared.  At this point, I stuck the extruder tube in a jar of MEK for a good long time and sloshed it around every so often to help soften up the material still inside the tube.  I also occasionally would use a pick to dig out chunks of the Torlon.

My plan at this point was to model the extruder tube in CAD so that I could conceivably machine a replacement in case this one was entirely ruined by internal buildup, gouges, or some other problem.  Alan C. was kind enough to share his FDM 2000 nozzle model and drawing, so I didn’t need to do any work on determining the nozzle threads.  I’m guessing that the threads are actually 9/16″-24 rather than 14.22mm-24tpi, but Alan used a CMM in doing the reverse engineering and his custom made nozzles work perfectly, so who am I to argue with success?  I also noticed that on my 2000’s support nozzle, the central 0.154″ protrusion on the back side of the nozzle actually sticks out by a few thou, whereas Craig noted his is dead flat with the outside ring surface.  There may have been some loose tolerances at work during manufacturing, especially in light of what I found on the extruder tube.

When using some short lengths of wire (old solid core phone wire worked well) as a pseudo pipe cleaner to push/pull out softened polymer goop from the hole that runs through the center of the extruder tube, I noticed something rather odd – the wire would tend to ‘catch’ when I pushed it through from the nozzle end.  It was almost as if there were a constriction in the extruder tube.  After digging out the last bits of Torlon from the inlet side, it still looked like there was some buildup on that end of the extruder.

After trying to clean it up further with a pick, and looking at it through a lighted magnifying lens, it became quite clear to me that it wasn’t buildup at all, but aluminum – the extruder tube was poorly made in the first place!  Here’s an image showing exactly how this extruder tube would appear if you sliced it in half:

The extruder tube appears to have been turned on a lathe before having the 90 degree bend done, with the central hole having been drilled through from each end (1/16″ drill from the nozzle end and 5/64″ from the inlet end as best as I can determine).  Apparently one of the holes was drilled just a few hundredths of an inch too shallow, leaving a nice conic restriction just past the inlet.  No wonder the blasted contraption had been jamming like crazy!  Pushing a .05″-ish diameter wire though the fully functional model extruder showed that there was no such restriction.  I can’t think of a single reason why you could conceivably want such a restriction in the first place, so I can only assume that this was extremely poor quality control on the part of Stratasys (apparently the horror stories of people returning malfunctioning heads for replacement only to get back used heads with just as many problems are not at all unfounded).  I’m at once really disappointed in the manufacturer yet relieved that the problem and fix is so blindingly simple.  My solid model probably won’t be needed after all as reference for creating a new hot end, but in case it would be useful for anyone else, here’s the .sldprt as well as an IGES model and a measurable eDrawings .eprt:  FDM2000 heater tube (includes the manufacturing defect just in case I’ve been entirely wrong)

Now, where did I put my number-sized drill set….

Happy Valentine's Day

I never got around to giving Frankie the manual binder for his Stratasys FDM 2000 because I’m an information packrat and wanted to scan it in for reference.  He had a talk scheduled this week at UWM, and I figured I’d drop by for the presentation and finally give him the manual.  As long as I was scanning, I finally scanned the entirety of my own FDM 1600 manual.  The fruits of my labors are here for anyone with an old FDM 1600 or 2000 that they need a manual for (though much of the information probably applies to other models as well):

FDM 1600 Manual

FDM 2000 Manual

Quickslice Training Manual v6.3

Insight Training Manual

Speaking of Frankie, he’s been up to some amazing work lately.  In December, Pete forwarded an inquiry to the Milwaukee Makerspace from a local mother whose 8 (almost 9) year old daughter was born with only partial digits on her right hand.  She had seen the Robohand video and asked Santa if she could have a new hand for Christmas.  (sorry, that gets me a little teary-eyed right there.)  A bunch of us immediately offered to help in any way possible (I have a small supply of medically approved, gamma-sterilizable P500 filament that would be perfect for this application), but Frankie absolutely tore into the project with unbridled enthusiasm.  He’s been working with others at UWM to develop a truly custom prosthetic for Shea, and has actually introduced it into a course curriculum this semester (they’ll be creating hands for other area kids in need and developing a ‘how-to’ guide for these DIY prosthetics).  Frankie is still developing the hand for Shea, but I can’t wait to assist in my own tiny way (we have some ideas in mind for customization that should go over well with the end user).  If anybody out there has any surplus P500 ABSi that they would like to get rid of, please leave a comment – we can definitely put it to good use.

This past weekend, Shea visited Frankie’s lab and got to try on a prototype hand for the first time (in her own color choice, no less), and after a few tries, was able to pick up objects with it.  She also discovered to her delight that she was able to make a ‘big heart’ with her fingers:

Excuse me for just a moment, I seem to have something in my eye…  *sniff*  For more information, check out the E-Nable page.  It’s inspiring, humbling, and just kind of amazing to see what 3D printing is making possible.

3DS Cube cartridges

A friend sent me a used filament cartridge from his 3DS Cube a while back, as I had heard that they are ‘chipped’ similarly to Stratasys cartridges.

Sure enough, there’s a 1-wire chip on one corner of the cartridge.

Opening the cartridge requires almost destroying it.  The two halves are actually solvent welded together, and inside is a ridiculously small cardboard spool of filament.  One user determined that the printer will only allow 320 grams of filament to be used before declaring the cartridge to be empty.  At $50 per cartridge, this isn’t quite as bad as Stratasys pricing, but it’s still insanely expensive for what is targeted as being a hobbyist machine.

With the Stratasys cartridges at least, the cartridge is sealed with a gasket all the way around the edge where the halves mate, and the interior is packed with desiccant packets.  No such environmental protection exists on the Cube cartridge – there’s an open hole in one side (with a threaded brass insert whose purpose escapes me), and there’s an o-ring on the exit to keep the filament in place (if you accidentally pushed the filament back into the cartridge, you would need to break open the cartridge to fish out the end).

Unlike the Stratasys cartridges, there is no PCB board at all – the tiny 2-wire EEPROM is just a tiny SFN package measuring only 6mm on a side.  Unfortunately, I actually broke it in half when busting open the cartridge, so I can’t actually attempt a read on it.  But at least I verified that it is in fact a Maxim DS28E01 1Kb (that’s kilobit, mind you) 1-wire EEPROM.  Oh, and it’s SHA-1 protected, just as I’ve heard that the Stratasys uPrint cartridge EEPROMs are.  I’ve read that the printer can be tricked into running generic filament by leaving the EEPROM in place and simply telling the machine “that’s okay, continue printing anyway” when it alerts that filament is out.  Newer firmware versions are said to eliminate this workaround but it appears that somebody has managed to break the cartridge encryption.  They created (or at least claim to have) a USB controlled dongle to fake full cartridges so that bulk filament can still be used no matter what the firmware version.  At $167 for the very cheapest version, though, I’d be inclined to just tear out the original electronics and run everything with a RAMPS board if possible.

The Stratasys extruder clog from hell

When I last wrote, I was dealing with a Stratasys FDM 2000 head solenoid that just wasn’t working.  Well, I managed to get a replacement (thanks, John!) and sent the original off to a company in the Chicago area that rebuilds old automotive starter solenoids of that same ‘crimped can’ construction.  I think one of the leads simply became detached from the coil winding, which should in theory be a simple repair.  But having zero experience in that realm, I’m happy to let an expert take a crack at it first.

That lead on the left looks a bit suspect...

The solenoid from John works like a champ, so it was on to the next problem – a persistent clog in the support extruder.  I found that I could extrude support material happily enough if I removed the support nozzle, and I did see a few specks of crud get flushed out from the support side as I ran foot after foot of filament through it.  I also cleared out the nozzle itself with a 0.011″ drill bit in a pin vise, just as I’ve done on my 1600.  Still, this didn’t seem to help much.  I could extrude a little bit of material out of the nozzle, but after perhaps 10 seconds or so, the material would stop coming out of the nozzle and would backflow out of the inlet buffer.  I figured that there must be some sort of blockage still in the extruder, so I purchased some soft brass wire and the teeniest wire brushes I’ve ever seen from McMaster-Carr.  I removed the nozzle from the support extruder as well as the support motor drive block, heated the support side to the normal operating temperature in the printer, then quickly removed the head and ran about a foot of the brass wire through the extruder to drag out as much of the soft support material as possible.  I also removed the inlet buffer, but forgot that they actually have a tip that presses into the metal tube that serves as the ‘hot end’, thus rediscovering the issue that Rob @ Incredilution had found when attempting repair on his head.  Namely, I broke off the tip in the heater tube.  Naturally, I shrugged and put the inlet buffer back in place after cleaning, figuring that the break wasn’t a big deal.  I was mistaken – when I heated the head back up and tried feeding support material in once more, the material backflowed out of a heretofore undetected hairline crack on the back face of the buffer itself.

A hairline crack runs from the lower left screw to the upper right screw, and plastic actually leaks out of this crack when the filament is fed in

I removed the inlet buffer once more and used a screw to extract the broken tip from the heater tube.

Fortunately, John had machined some replacement inlet buffers some time back from some scrap Torlon that I had sent him, and I’m glad I had one on hand.

Unfortunately, even after thoroughly scrubbing the support extruder, things were now worse than ever, and I now get material backflowing out of the inlet buffer without even a nozzle attached.  I’m somewhat at a loss to explain why this might be, but the best I can figure is that running the brass wire and mini wire brushes through the extruder might have scratched the interior surface, causing sufficient friction to keep the soft plastic from extruding out the end.  With that possibility in mind, I figured I needed to fully tear down the head for a deeper look.

Here’s a look at the bottom side of the head with the bottom shroud removed showing the vanes that direct cooling air over the nozzle tips.

With the exterior shell full removed, we have a good look at the internals.

Here’s the bottom side of the head.

The thermocouple runs right into the end of the melt chamber.

Removing the aluminum foil outerwrap reveals the fiberglass insulation wrap.

With the fiberglass out of the way, we can see the heater coil wound around the melt chamber.

I first had to use a small punch to drive out the roll pin securing the solenoid paddle to the extruder.

Then I could finally snake the extruder free of the heater coil.  I had tried to slip the coil over the end, in the hopes of easily replacing it, but replacing any of this is going to be tough work.

And here it is – the ‘hot end’ freed from its overwrappings.  Now I just need to remove the inlet buffer and give the tube a solid cleaning to try and figure out what is causing the clog.

A tale of two Stratasyses. Stratases? Stratasi??

Early this year, I managed to get a good deal on a Stratasys FDM 2000 from the guys over at the Cincinnati hackerspace, Hive13, making this the third 3D printer I’ve purchased (and the second I’ve sold to Frankie for use at the DCRL, but more on that later).

What makes it particularly nifty is that it has a soluble support head, which is quite rare for an FDM series machine – most had plain old breakaway suuport heads.  From the start, I had intended to loan this printer to the DCRL, since I’ve been looking for a professional grade FDM printer for Frankie for quite some time – he’s done amazing things with the RepRaps he and his students have built, but there’s nothing like having a machine that runs a separate support material (to say nothing of having a much larger 10x10x10 build envelope).

Once I brought the machine home, I parked it at the Milwaukee Makerspace for a few months so I could give it a checkout and let the other members use it for the time being.  Despite having a great deal of experience with the FDM 1600, the 2000 had me stymied when I tried actually printing with it.  While I was able to get the head spooled up with filament, I just couldn’t get the machine to actually print anything.  Thanks to John Branlund, I found that the issue was the door latch – unlike the 1600, the 2000 has a door latched sensor and will lock the door and proceed with the print cycle only if the user latches the door closed.  With that figured out, I could actually try some printing.

Naturally, a shot glass had to be made for the first print, though it was quite porous, and the few mL of beer I put in it quickly filtered through the bottom.  RapidPrototypeTech, who had previously owned the machine at one point, told me that because this machine has a soluble head, you have to make sure to select soluble support in the software even if running breakaway support.  The difference between the heads is primarily in the motor gearing – a soluble support head is geared much lower from what I’m told.  However, even when trying the exact same job and specifying soluble vs. breakaway support, I still wasn’t seeing any difference in the output – the model extruder simply wasn’t putting out nearly as much material as it should.  Stratasys manuals really don’t provide much help, as such adjustment would be left to a service technician.

While there are some adjustment pots on the main control board (in the lower center of the above photo – the pairs of mustard and blue colored components with screwdriver slotted adjustment screws) that John suggested could be used to adjust the gain for the extruders, I was really hesitant to start messing with potentiometers.  Having disassembled various electronics in my youth, I discovered long ago that messing with such components could very quickly make things stop working properly.  While the years since have taught me that multimeters and oscilloscopes can be used to properly fix such exploration, I still have resistance (pun not intended) to adjusting potentiometers if I don’t know exactly what I am doing.  So I looked around for an alternate method to boost the extrusion rate.

Fortunately, I found what I was looking for in the FDM 2000 Introduction and Reference manuals – pressing Space231 or Space239 on the front keypad allows the model and support material extrusion rates to be modified.  The default values on the machine when I got it were:

Space231 (model material)

1 CAL N MDL 0 (non-ABS model calibration)

2 CAL A MDL -5 (ABS model calibration)

Space239 (support material)

7 CAL N SPT 0 (non-ABS support calibration)

8 CAL A SPT 0 (ABS support calibration)

By trial and error, I adjusted the flow rates until I was getting much better results with printed parts:

2 CAL A MDL 58 (ABS model calibration)

8 CAL A SPT 48 (ABS support calibration)

While this does in fact work, the allowable range for these values is +/- 50, and bumping the ABS model value all the way to 58 results in “NV Memory Error” showing up on the LCD display during powerup.  If anybody knows of a better way to adjust the flowrates (even if it is messing with the potentiometers), leave a comment.  One thing I noticed with the 2000 head versus the 1600 head is that the 2000 head is slightly larger to accommodate larger gearmotors and even dual sets of drive wheels if the material warrants it.  In this case, there isn’t a second set of drive wheels but rather a guide funnel.

The motors have this engraving:


123    141

And this label from the manufacturer, Faulhaber (I first thought the 2233 on the label was a typo, but this appears to be a valid MicroMo model):

2233U012S123  X0800

23/1  134:1  X0431

HES186  KW 28/01

After a few months of fun with the FDM 2000, we finally moved it to the DCRL at UWM where Frankie took ownership of the machine and proceeded to go on a printing spree of epic proportions.  Everyone at the makerspace was sad to see the machine go, but I promised that if I found another it would have a long-term home at the makerspace.  Well, that happened much sooner than expected, and I managed to get another FDM 2000 (this one with a standard ABS head).  I picked it up a few months ago, and finally finished building a mobile base for it the other weekend out of 80/20 extrusion:

I brought the stand to the Makerspace, and we were able to finally wheel it into the 3D printing area:

Since this FDM 2000 has a standard breakaway support ABS head, the motor gearing is a little different.  The support motor itself is a MicroMo with this engraving:


123    466

And a label that says:

2233U012S123  X0431

HES186  23/1  43:1  KW  37/99

The motor for the model material side appears to have the same information, but says 09/97 instead of 37/99 – I’m guessing that may be a date code (week/year format).

For anyone curious, here’s a side-by-side comparison of the heads from my 1600 and the 2000.  The 2000 head on the right has the support nozzle solenoid removed – more on that in a moment:

Note that the actual ‘heater chamber’ is the same size on each head, but the area for the motors is larger on the 2000 head to accommodate a second pair of drive rollers depending on the material the head is designed for.

Note also the shroud on the bottom of the 2000 head – this takes some of the head cooling air and blows it just past the nozzles to cool the freshly deposited filament (at least, this is what I think the idea is).  Interestingly, the FDM 2000 that I passed on to Frankie does not have this shroud, so I’m wondering if it was a later enhancement (or perhaps an idea that was fielded but then scratched)

On powering up the machine, all seems well, except for the support nozzle – specifically, the solenoid wasn’t activating to lower the nozzle.  I took the head out of the machine and found that the wires to the solenoid were pinched between the cover and front plate of the head, possibly shorting them.  Even worse, a multimeter check showed no conductivity between the two leads.  I checked my FDM 1600, and found that the solenoid had about 25.4 Ohms of resistance and was supplied with 24vdc (with a clamping diode to kill the spike that comes off of the coil when de-energized).  While the solenoid on the FDM 2000 head has no identifying information, it appears to be identical to the one on the FDM 1600, which says ‘LISK S-2379’ (I had a bit of info on the 1600 head in on old post).

Even though my previous contact with the Stratasys support department was less-than-helpful, I figured I’d give them a call and see if they might have any spare solenoids.  Unsurprisingly, they don’t have any.  They don’t have anything for the old FDM series machines as of the end of 2011 – FDM owners, we’re entirely on our own.  Stratasys will still give you trade-in credit on your old FDM series machine if you wanted to upgrade, but I don’t think this is a great deal.  These old machines are quite nice in that they’re constructed with a lot of off-the-shelf parts, and are easily modified/hacked.  I think it’s rather telling that there have been a whole bunch of academic papers on 3D printing that use an FDM thousand series machine as the testbed, but precious few papers have been done with the current P-class machines – they are far more proprietary in nature and don’t lend themselves well to experimentation.

At any rate, if Stratasys was a bust, at least I could contact the solenoid maker, G.W. Lisk.  Lisk only makes custom solenoids and doesn’t have any stock offerings, so I gave them a call to see what they could tell me about model S-2379.  Yes, it was made specifically for Stratasys.  It’s a continuous duty 24vdc solenoid, with a coil resistance of 21.6-26.4 Ohms at 25°C.  And that’s about all they could tell me, other than that no, they didn’t have any in stock.  I didn’t ask how much it would cost to have more produced, but I got the distinct impression that it would be greater than one arm and one leg, so I did not pursue that line of inquiry.

In looking around at off-the-shelf solenoid offerings, I’ve noticed that when it comes to 24vdc solenoids, they generally bottom out at around 80-90 Ohms or so, and are much larger in diameter than the S-2379.  The lower resistance results in a much larger power draw and more force, but given that the solenoid operates in a 70°C oven, this derates the performance.  At any rate, I seem to be out of luck in sourcing an off-the-shelf replacement and am investigating whether or not I can have the existing solenoid repaired.