3D printed stencils

Recently, I had a need to apply some quick identification markings to various objects. A normal person would have thought “yeah, I’ll just make a quick paper stencil and use that”. That sounds like a delightful solution, but when you have a hammer, everything looks like a nail, and I have several 3D printers, so…

One drawback of a traditional paper stencil is needing to use bridges to secure ‘islands’ in the stencil – letters like A, B, D, O, P, Q, and R. So for fun, I decided to build overhead bridges into the stencil so that they wouldn’t show up in the end result. Unnecessary and frivolous? Absolutely! Cool and interesting? Affirmative!

I first determined the ‘printable’ area and laid out 1″ high letters on it, which gave me a 0.025″ thick stencil. Then I made 0.5″ high ‘plates’ over each of the islands and made cutouts so that the stencil could be sprayed from all sides and not leave any shadows from the overhead bridges.

The finished result is not perfect – the porosity of the 3D print (being only .025″ thick) allows a few spots of paint to spray through the mask (and there’s a bit of edge bleed in a few places). Still, I’m happy with the results as a quick and dirty 3D printing application.

Ender 5 Bed Supports

I recently purchased yet another 3D printer, but this time with an eye towards a specific project/product. After having run the old Stratasys FDM thousand series machines, I realized that in the past few years cheap consumer level machines had managed to reach parity (in most respects) with these hulking monsters that were $100,000 investments a little over 20 years ago. Hooray for progress (and patents expiring).

Around four years ago I decided to take a chance on a cheap machine to do some concept work with, intending to then actually produce on the Stratasys (can’t easily move a Stratasys around the house – it’s more of a garage implement). I wound up purchasing a refurbished Monoprice Maker Select V2. Despite a few issues (remedied by running a Raspberry Pi running OctoPrint), I was quite honestly impressed with how far hobbyist machines had progressed since the days of the early Makerbot offerings (Cupcake owners, I recall your cries of anguish). Once I realized the amazing level of detail these machines offered (over double the layer resolution of a Stratasys machine running at 0.007″), I then set about printing loads of very important items. [insert cry of NERRRRRRD here]

The high quality of the output and greatly improved software since I had first looked at open source 3D printing offerings led me to really appreciate the current state of hobbyist level 3D printing, and I find myself with fewer and fewer reasons to champion Stratasys machines over other alternatives (the ostracism of hobbyist users notwithstanding – their acquisition of Makerbot to court that market while also spiting 3DS with the purchase was an utterly expensive boondoggle, and the Makerbot name has almost entirely receded from awareness as a result).

While the Monoprice machine was a great teaser of capabilities, it has been challenging to keep running (though those challenges have proven to be excellent learning experiences and have forced me to become far more capable/knowledgeable as a result). More importantly, the Z-travel wasn’t quite sufficient for my needs after all. So after another round of google searches for “what are the cool kids using for 3D printers”, it appeared that the offerings from Creality were excellent bang-for-the-buck, and the Ender 5 model ticked all the boxes for my needs. This Teaching Tech video (an excellent channel that I highly recommend) sealed the deal, and I purchased one during a sale.

The machine as it exists out-of-the-box is excellent value as far as I’m concerned. But naturally I started to upgrade things that bugged me – I switched to Capricorn PTFE for the Bowden tube, added an insulating pad to the heated bed, replaced the stock control board, power supply, hotend, etc. etc. My fellow 3D printing hobbyists understand the aggravating-yet-rewarding cycle of endless upgrades in pursuit of making our machines just a little bit better than they were before. And then cursing ourselves for not leaving well enough alone when things go awry.

I think the Ender 5 construction design is excellent – the bed only moves in the Z-axis, which means that the tall sorts of prints I intended to build on the machine aren’t in danger of being shaken loose from rapid Y-axis moves as they might be on more popular machines such as the Ender 3, Prusa i3, and similarly designed platforms (known as ‘bedflingers’). Adding a glass bed and thus significantly increasing the moving mass only exacerbates the issue.

So, I’m a big fan of the Ender 5 bed mechanics… …in theory. In practice, the bed base is a cantilevered steel plate supported only from the rear, and flexes quite a bit as a result. I am far from the first to be dissatisfied with this, as ‘bed struts’ appear to be a popular item to add to the Ender 5 in order to increase rigidity. However, such bed struts are almost always printed items, and thus limited by the process and material itself. I’ve certainly printed various mechanical upgrades for my two machines, but they have consisted of things like mounts for end stop switches, end stop screws, and other such items of minimal structural requirement. Bed supports, on the other hand, I consider a wholly structural item, and I wanted to come up with something a bit more, well, structural.

Somehow, I latched onto carbon fiber tubing as being the optimal base material for this task. Likely due to me having a bunch of carbon fiber arrow shafts purchased from Wal-Mart years ago for use in RC plane construction. I quickly found that these arrow shafts have 8-32 threads on the tip end, so sticking a cap screw into the end offered a simple means of adjusting length. Moreover, a button head 8-32 socket head cap screw has a spherical diameter of 3/8″… Without attempting to elucidate my thought process further (because I don’t really know how I concocted it in the first place), here are the salient details:

3/4″ two-piece shaft collar

8-32 steel rivet nut

1″ long 8-32 button head cap screw

Links are to the McMaster-Carr items. I added in a few other 8-32 pieces (hex nuts, etc.) when building, in addition to printing a pair of end braces that slip onto the front cutouts of the bed frame. Using a 3/8″ ball end mill, I made a small divot onto each of the shaft collars to accept the button head of an 8-32 machine screw. I turned down the shank diameter of the rivet nuts just enough on the lathe to slip into the arrow shaft tubing so they could be epoxied in place.

The divoted shaft collars get attached to the shaft bearings (left side of the picture) and the end braces (the gray right-angle looking parts on the right side of the picture) slip onto the stamped sheet metal bed frame. Unscrewing the screws from the end next to the shaft collars compresses the CF tubing and the nut can then be locked in place to set the overall length. The end result is a bed frame that is overwhelmingly stiffer than stock – the icing on the cake is using some silicone standoffs instead of the stiffer springs generally recommended as an upgrade. An STL of the end brace is here:

Meshtastic 26650 T-Beam Enclosure

If you watch a lot of electronics videos on YouTube, you’ve probably come across the guy with the Swiss accent. Andreas is a big fan of LoRa and its IoT applications, but it was this video on Meshtastic that really intrigued me. A license-free mesh network with very low power, crazy long range, and inexpensive hardware? Given that I’m still struggling a bit with The Things Indoor Gateway (and finding that TTN may not be the best LoRaWAN provider for a project I’ve had in mind), I thought Meshtastic might be a neat way to play more with LoRa. Sure enough, there’s loads of things you can do with Meshtastic, the development is continuing rapidly, and the community around the project is active and helpful.

Currently (though this may change soon) the favored hardware for Meshtastic is the TTGO T-Beam v1.1, as it offers all the bells and whistles of GPS, Bluetooth, Wi-Fi, and OLED display. However, the device’s layout and form factor is… …awkward. Thankfully, there’s a higher-end version of the board that drops the soldered-on SMA antenna connector, has an improved GPS module, and features the much more capable SX1262 transceiver chip (which can support Semtech’s upcoming FHSS modulation scheme in addition to the existing ‘chirp’ based modulation).

Despite the already excellent battery life (several days) provided by a 18650 cell, the width of the T-Beam board made me think that accommodating a 26650 cell shouldn’t bulk up the entire assembly too much. While 26650 cells aren’t nearly as common as the 18650 size, they should be able to offer double the energy capacity based on volume (in theory, that is – more on this in a moment). Even if a 26650 cell isn’t readily available, a 18650 can be sleeved to make it fit a 26650 holder (the lengths are the same). Finally, I decided to go with a better GPS antenna, as the stock one would need relocating anyhow due to the larger battery holder. My purchase list looked essentially like this:

TTGO T-Beam v1.1 with SX1262 and NEO-M8N (I used the 915MHz version for US operation – check your country’s bandplan for the appropriate ISM band to use)

BT-25A 28x28x7 ceramic GPS antenna (bigger is better, but this was about as large as practical)

26650 battery holder (make sure to get one with an ‘open’ bottom so that the cell can sit right up against the PCB for the lowest profile just like the stock 18650 holder)

0.96″ 4-pin I2C OLED display (note that I bought the one labeled as ‘new’, as it provides a slightly smaller footprint)

M2 button head stainless fastener set (I could have also just bought the fasteners individually from McMaster-Carr, but I wasn’t sure what lengths I’d need, and having an assortment on-hand always proves useful)

4-pin Dupont connector cable (I actually used a scrap cable from the parts bin instead)

4″ U.FL to SMA RG-178 coax pigtail (yes, the SX1262 T-Beam includes an antenna pigtail already, and upgrading to RG-178 coax is basically chasing nanovolts, so this is entirely frivolous and I should feel shame)

The only other component needed was a 26650 cell. Amazon doesn’t have very much, so I found these on AliExpress. The Project Farm review of 18650 cells has made me wary of whatever a battery label claims, so I bought the same type of battery tester as Todd used. Once the GTF cells finally arrived (taking longer than perhaps any other AliExpress purchase I’ve made), I dropped a pair of them into the tester, let it chug overnight with the capacity test, and found that they actually have a feeble rating of only 2600-2800 mAh. Less than the roughly 3200 mAh I’m getting on these JOUYM 18650 3500 mAh cells (my current favorite for Li-Ion cells). So the search for good 26650 cells continues.

With all of the components in hand, I started modeling an enclosure for everything. Rather than try to model the PCB on my own, I found a v1.1 update by ‘DJ’ of a v0.7 T-Beam board by Muchammad Sobrun Ibnu Atfal that only needed a little tweaking. I slapped a cylinder on the back for a 26650 cell, and then just started drawing around it. I wish I could say I had a grand vision in mind, but the design just grew organically as I figured out where to place the LoRa antenna, GPS antenna, and OLED display. Note that it was designed to print with minimal supports – print the top and OLED cover face-down, and the bottom shell bottom-down (the bottom only needs supports for the antenna hole and the GPS pack).

Assembling everything was pretty straightforward. First step was to desolder the stock 18650 battery holder, then solder the 4-pin cable for the OLED display to the T-Beam board. Note that unlike the display that is included with the lower cost SX1272/NEO-6M T-Beam, the one I sourced has the Vcc and GND pins reversed, so it can’t be soldered directly to the board anyhow. After soldering the cable, I clipped the leads poking out on the backside as close to the PCB as possible (since the new battery holder would be right up against the PCB board where the solder pads are). Securing the leads with a bit of ‘hot snot’ (hot glue gun) finished up the top side.

Then I removed the ‘ears’ on the sides of the 26650 battery holder via the judicious application of a belt sander (though a side cutters and utility knife would do as well). I also relieved a little bit of the bottom surface of the holder right where it would sit over the OLED cable solder pads. After bending the battery terminal tabs down a little and tinning them, I soldered the 26650 holder to the PCB in the same spot as where the 18650 holder had been.

Finally, I ever-so-gently smashed the pins on the OLED display 90 degrees over for clearance.

Everything plopped into the printed case quite snugly – looks like I got everything just right. I did drill out the corner holes on the top and the OLED cover with a 5/64″ drill bit, and let the 2mm screws self-tap themselves into the bosses on the bottom shell and the top plate. I also drilled out the holes on the bottom shell for the 2mm captive nuts that can be used for attaching accessories like a lanyard loop, belt clip, flamethrower, etc.

Turns out that I had plucked the yellow OLED display from the assortment that I ordered, and I have to say it looks downright proper with the black enclosure (though readability in sunlight is poorer than with the white OLED included with the 1272 T-Beams). Files for the enclosure are here:

Addendum1: I purchased these UltraFire ‘6800mAh’ 26650 cells on Ebay, hoping that the lower rating might hint at a more honest appraisal of the cell’s capacity. Nope, each cell measured at an utterly abysmal 1244mAh. If anyone knows of a 26650 cell that does not suck (or at least offers honesty in labeling), please leave a comment.

Addendum2: After reflecting on the fact that the lousy GTF and UltraFire cells have their branding pre-printed on the cell wrap, while the really good JOUYM cells have continuous inkjet coding on the cell wrap, perhaps indicating that the cells have been tested and ‘binned’, then marked afterwards. So I looked around on AliExpress for 26650 cells that were also marked in the same fashion, and found these nondescript Tewaycell 5000mAh units. Since Tewaycell looked to manufacture a variety of battery types, I guessed they’d probably be more honest about capacities, since their sales will overwhelmingly be to other manufacturers. I purchased a pack of two and tested them as soon as they arrived. I was absolutely floored – not only was the capacity as much as advertised, it was well over! One cell measured 5676mAh and the other a whopping 5775mAh! Well done, Tewaycell!

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 gnurds.com took things a step further and came up with some great step-by-step tutorials on […]

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 gnurds.com 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 wiringpi.com.  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 wiringpi.com 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 https://github.com/bvanheu/stratasys/archive/master.zip, after which we can extract it into a directory via unzip master.zip.

We’ll cd into that directory and try running the main program by executing ./stratasys-cli.py -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 stratasys-cli.py (that is, using something like ./stratasys-cli.py –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 ./stratasys-cli.py –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 […]

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 […]

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 […]

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 […]

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 – mashable.com 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 […]

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 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.