Tuesday, March 10, 2015

E3D v6 Hotend on a Printrbot Simple Metal (Introduction)

Welcome True Believers

Congratulations, you typed some worthwhile keywords into a search engine or had somebody recommend this great link. I'm going to assume you've got a working Printrbot Simple Metal and you are looking to upgrade your hotend and you smartly decided to pick the mostly highly regarded hotend on the market, the E3D v6.


I decided to start this journey because I noticed my thermistor seems to change it's mind over time (20 degree difference depending on the day). Did you know the standard Ubis hotend has the thermistor held in place with teflon tape? That's not even real tape, there's nothing to keep it from moving around.
Ubis Hotend Dismantled
You can see in the photo there is a little notch for the thermistor to sit in. It works well enough, but I want something more predicable with true user serviceable parts. I'm keeping my Ubis around because it still works, it's just not great.

Pain Points

The E3D v6 is a great replacement for the Ubis with 3 pain points.
  1.  The hotend is too efficient. It's shorter than the Printrbot was designed for. You'll need an adapter.
  2. The Ubis hotend has some Molex connectors that don't match the raw ends of the E3D v6.
  3. The hotend, like all good modern hotends needs a fan to be running at all times.
  4. The firmware on your board will need to be updated.
The adapter is easy enough to print out as long as you have a working printer. The hotend fan can be hardwired to the main power of your Printrbot and the firmware customization has been documented a thousand times. Don't be afraid. I'm here for you.


  1. Printrbot Simple Metal (with USB cable)
  2. E3D v6 1.75mm Universal (I bought mine from Filastruder.com)
  3. A printed hotend adapter (see Step 1)
  4. A bunch of little bits and bobs for a Molex connection
  5. Needle-nose pliers.
  6. Soldering iron and solder.
  7. A computer (I used OS X, but you can work it out)
  8. (Optional) Scrap of wire and bits of aluminum foil


  1. Print your adapter
  2. Assembling your hotend
  3. Wire your hotend
  4. Test your hotend
  5. Wire your fan
  6. Replace original hotend
  7. Firmware
  8. Autotune 
  9. Final hotend assembly
  10. Adjust your auto leveler
  11. Tweak your slicer
  12. Apply the sticker 

Sunday, March 8, 2015

Apply Your E3D Sticker

Part of a series on installing the hotend.

Display Your Pride

Remember when you were so proud to put that AMD sticker on your PC case? This is the modern equivalent. People who care about such things will want to know more about your hotend. Anybody else won't care and won't notice. There is lots of good real estate on your Printrbot so find a place for your sticker to live.

[placeholder for a photo]

Live Long and Print Often

You are done. Print all the things.

Adjusting Your Slicer

Part of a series on installing the hotend.

Compensate for Improvements

I don't want to say my Ubis hotend was bad but I usually had to have the hotend set at 200˚ or I would get pretty consistent clogs and failures. When I first got the Printrbot I was able to print around 190˚ and when it got cranky I'd had to print at 220˚. I usually had to set my flow to around 85% on the Ubis to get good measurements at 200˚ but that needs adjustment as well. With your new hotend you'll want to dial in your settings again. Find the perfect settings.

For me I was able to transition down to 185˚ for most prints with a little tweaking for the first layer to get optimal bed adhesion. I'm still working things out, but the temperatures I want for optimal printing will be a little easier to hone in on.

You can also speed up your print quite a bit. Of course the final speed you'll want to use will depend on how complicated your print is and how your filament reacts at certain temperatures, but I moved my minimum print speed to 60mm/s without issue.

Compensate for Cool Zone

You need to make sure that the hot filament doesn't retract into the cool zone on the new hotend. It'll lead to clogging and general bad feelings. The official documentation said that the furthest you'd could use 0.5mm-1.0mm for retraction, but I found occasional failures using 1mm. I'm sticking with 0.5mm for now.

Test, Test, Test

As with everything you've encountered on your 3D printer you'll want to experiment for a while to find the prefect settings for your filament, weather, altitude, etc.

Your Printer is Almost Perfect

 Just one last thing before you are done.

Saturday, March 7, 2015

Adjusting Your Auto-Leveling Probe

Part of a series on installing the hotend.

Introduction to Auto-Leveling

If you haven't watched Brook's video on setting up your Auto-lever, you should got and do that now.

Like the original setup you want your sensor about 3mm off your print bed when your hotend tip is touching the bed. You should go head and find something about 3mm tall, and remount your sensor then follow the video and get things setup properly.
  • M212 for writing a setting
  • M500 for saving your settings
  • M501 for viewing your settings

Don't Make My Mistakes

I thought I didn't need to readjust my sensor. It wasn't hitting the bed. It ended up that my sensor was only about 1mm off the bed and that wasn't good. Occasionally we all get threads and blobs from our prints that are too tall and a too low sensor will hit it and cause problems.

Always double check your Z index before attempting to print. M501 will display the current settings. Make sure you are awake, alert, and aware or you'll mistake Z -0.30 as Z -3.00 and you'll get a couple nice scars in your print bed. I'd include a photo of my print bed here, but it is too embarrassing.

Test, Test, Test

While you are printing your test cube don't be afraid to keep trying. Once you think you've got the settings perfect print 2 more times at the same setting to make sure it wasn't just luck.

Auto Leveled-Up

You should be an expert at setting that Z index. Now move on to adjusting your slicer.

Final E3D Hotend Assembly

Part of a series on installing the hotend.

Last Step from E3D

These instructions are for the E3D V6. The wildly popular E3D Lite6 should never go above 245˚C so I'd recommending stopping at 240˚ here instead of 270˚ if you have a E3D Lite6.

In the official instructions this is the last step assembly instruction before some guidelines usage. We are getting closer to done. Hang in there. They suggest you do the final fitting when the hotend is fully detached, but that means I'd have to undo all the things I previously did. So I gathered up my 7mm socket and adjustable wrench and went to town.

Ready for action
A direct copy/paste from the instructions because they explain it perfectly. The default Printrboard firmware I uploaded had a max temperature of 275˚ so if you tried to get the hotend up to 285˚ it'd just shutdown and disconnect.  I went for 270˚ and it did a good job of keeping things tight.

Do be careful. You're metal tools on the metal hotend will conduct heat. If things start to get hot at all just put your tools down. Don't risk burning yourself.
  • Set the HotEnd temperature to 285ºC. If you did not do a PID tune, then approach this temperature slowly, exceeding 295ºC will permanently damage the thermistor.
  • When the HotEnd is at tempereature, tighten the nozzle whilst holding the heater block with a spanner. This will tighten the nozzle against the HeatBreak and ensure that your HotEnd does not leak. You want to aim for 3Nm of torque on the hot nozzle - this is about as much pressure as you can apply with one finger on a small spanner. The nozzle does not need to be torqued down incredibly tightly to form a good seal, when at lower tempreatures the aluminium will contract and hold the Nozzle and HeatBreak together.
It wasn't too difficult to get the tools in place with the hotend already attached.

Hotend Construction Complete

Now you are done hacking on hardware. Time to prep your Printrbot bed detection.

Friday, March 6, 2015

E3D v6 Autotune

Part of a series on installing the hotend.

Simple Autotuning

You need to Autotune your hotend. Basically that means you need to find settings that will allow a consistent heat. I have no clue if this is optimal but it seems to work well enough for me.

However you access the terminal of your Printrboard enter 'M303 S200' and press enter. That'll run Autotune at 200˚ because you Printrboard supports that. You'll get output like this:
Send: M303 S200
Recv: PID Autotune start
Recv:  bias: 173 d: 81 min: 196.41 max: 202.14
Recv:  bias: 183 d: 71 min: 196.84 max: 202.19
Recv:  bias: 177 d: 77 min: 198.42 max: 202.14
Recv:  Ku: 52.68 Tu: 21.76
Recv:  Clasic PID
Recv:  Kp: 31.61
Recv:  Ki: 2.91
Recv:  Kd: 85.97
Recv:  bias: 170 d: 84 min: 198.88 max: 202.14
Recv:  Ku: 65.59 Tu: 18.87
Recv:  Clasic PID
Recv:  Kp: 39.35
Recv:  Ki: 4.17
Recv:  Kd: 92.84
Recv:  bias: 170 d: 84 min: 198.45 max: 202.14
Recv:  Ku: 57.99 Tu: 18.35
Recv:  Clasic PID
Recv:  Kp: 34.79
Recv:  Ki: 3.79
Recv:  Kd: 79.80
Recv: PID Autotune finished! Put the Kp, Ki and Kd constants into Configuration.
Those last 3 values for Kp Ki and Kd are the ones you want to write down or copy in to a text document or something. I added emphasis.

Saving New Values

The output of M303 suggests you put the new constants into your Configuration.h file and recompile your firmware and flash the Printrboard again. I wasn't 100% confident with the compile and flash process the first time so I prefer to not do that again. I might do it later if I feel better about the compilation process. You can write the PID values to you board much less intrusively by just using:
M301 P34.79 I3.79 D79.80
Granted, if your board freaks out and you need to reset things you'll probably need to Autotune again, but that doesn't bother me. It was easy.

Moving On

Your Printrboard is autotuned. Time to move on to the final steps of hotend assembly.

Updating Your Printrboard Firmware (OS X)

Part of a series on installing the hotend.

Thank the Community

The people at Printrbot Talk have done a good job of documenting everything over the years. I could almost just write "go read everything there" but some of it has aged out. The main page on Firmware is chock full of details so you should become antiquated with it.


I'm on a Mac (currently Yosemite) and there are a lot of Mac specific downloads thanks to user PxT. I started a fresh folder for all the downloads so they wouldn't get mixed in with other stuff. Nothing should need to be installed so you can easily delete and/or archive the folder when you are done.

First you need to download the firmware. Printrbot keeps their branch of the Marlin firmware on github so you can go ahead and grab it from their releases page on GitHub. I don't know exactly what Printrbot you have so I can't tell you what you need but I have a Simple Metal with a Rev D board so I needed the standard issue Simple-Metal-1403-Firmware. Check your Printrboard to see what revision you have before you get too far.

Assuming you have a Mac, next you'll need to download an Arduino Build Environment and the Firmware Update App. You could roll your own Arduio Build Environment and find other tools to flash a new firmware on your board but Printrbot's tool leads you through the steps. Find both of these tools on the PxT user page on Printrbot Talks. To get the Arduino Build Environment to work you may have to install Java. That's outside the topic of conversation here but this install solved my problems for now.

Unzip anything that looks unzippable and make sure the apps will open. Feeling overwhelmed yet? We haven't even gotten our hands dirty.

Arduino Setup

The Arduino download saves you a lot of work hunting around for installs and putting files in odd places, but there are still 2 more things you need to do before you can get to work. You are going to compile your firmware by running verify on a specified board.

Your firmware will be compiled in a silly location so check the 'compilation' box to show verbose output during compilation. Everything else on this window can stay the same. If you are planning on compiling more than once you'll want to uncheck the 'Update sketch files to new extension on save' box, but you shouldn't have to.
See the compilation button I checked?
Now you'll need to tell the Arduino app to write data for Printrboard. You can compile for the usbtinyisp or the BootloaderCDC boot loader.  Older documentation suggests the BootloaderCDC variant. Newer documentation suggests the usbtinyisp variant. I found the older documentation first and compiled with BootloaderCDC (It worked for me). You should probably compile for usbtinyisp because it is the more current suggestion.

[Wild Speculation] The Mac OS X Firmware Update App comes bundled with the DFU bootloader so I'm guessing it bolts that on as the actual boot loader it uses. This would make sense that I built with BootloaderCDC (the bad one) with no problems. The firmware I was uploading was just a hair too big for the memory (addressed later) and two firmwares would do that.


Edit the Source

Have you ever done any programming in C++ before? Now is the time to beef up your resume. In the Arduino app open up the 'Marlin.pde' file in the Marlin subdirectory. It is linked to all the other files so you'll see a bunch of tabs open up.

Open up the Configuration.h tab, it is the only one you'll need, and find the TEMP_SENSOR definitions. You only have one temperature sensor and it needs to be updated from '0' to '5' so edit the line '#define TEMP_SENSOR_0 0' to '#define TEMP_SENSOR_0 5' and save the file. The 5 here refers to the thermistor that shipped with your E3D v6 hotend and the 0 was the thermistor that was on your Ubis.
#define TEMP_SENSOR_0 5
Oddly, the binary of the firmware you compile this way is just a hair too large to fit on the memory of your Printrboard. Luckily there are pieces you probably don't need. Lower in the Configuration.h file you'll find a collection of definitions that enable cool new pieces of hardware that work for Marlin boards. If you are like me you don't have any of them and you probably never will. I chose to disable support for the Ultipanel, so I recommend you do that as well. Add '//' to the front of the Ultipanel definition line so edit the line '#define ULTIPANEL //the ultipanel as on thingiverse' to '//#define ULTIPANEL //the ultipanel as on thingiverse' and save the file.
//#define ULTIPANEL //the ultipanel as on thingiverse

Compile and Copy

Now hit that green checkmark in the upper left hand corner to verify your code. This will actually compile it. You'll see a bunch of warning fly by but everybody else says that's fine, so just ignore those messages. Watch the console at the bottom of your Arduino app to finish and take note that it lists a long ugly directory that contains your Marlin.cpp.hex file.
You'll want to put that hex file someplace that's worthwhile because you'll need it. I just opened a terminal and copied the file to my desktop with a proper name using the cp command.
cp blah/blah/blah/Marlin.cpp.hex ~/Desktop/Printrbot.hex

Flash the Firmware

Depending on the version of your board you'll need to add or remove a BOOT jumper. If you need to add it (like me) a piece of folded aluminum foil is good enough to get the job done. All you need is to make sure the pins are shorted for a few minutes.

Using the provided Firmware Update App is pretty easy. You just drag and drop your hex file onto the app and it leads you step by step the things you need to do. If you don't drag and drop it'll ask you some information about your printer. Follow the directions as it asks you about your USB cable and your jumper. Press the reset button and carry on.

If you try to write a flash a firmware file that is too large the App will throw an error that doesn't say anything about file size. Basically the code you uploaded is large enough that it tries to put too much information in the Bootloader. You can solve this by removing more features from the Configuration.h file.
Bootloader and code overlap.


If you get a success message then you have successfully flashed your Printrboard. Time to continue on and autotune your hotend.

Thursday, March 5, 2015

Replace Ubis Hotend with E3D

Part of a series on installing the hotend.

Just Do It

Not much to say here about this step. It's really up to you to fit everything into place. Somethings might be tight, so disassemble as much as you need. Reassemble. Push things around. Everything will fit just fine.
Fits like a glove.

If things aren't fitting correctly go back to the drawing board. Work with what you have. Everything worked fine for me but your mileage may vary. 

Just Done It

Now that your hotend is in place, and looking mighty fine I might add, time to get down and dirty with flashing the firmware on your Printrboard.

Wiring your E3D v6 Hotend Fan to your Printrboard

Part of a series on installing the hotend.

Optional Directions

Remember the optional bit of wire and aluminum foil noted in the first page? This is where you will, or won't need them. You'll have really long pieces of red and black wire from your thermistor. Cut off about 4cm of that for use later on if you don't have other bits of wire already around.

Fan Wire

You'll need to strip the fan wires a little bit. They are fragile so be careful. Now take that extra long length of cable you have left over from the thermistor and the extra piece of heatshrink tubing (cut it in half) from the thermistor. Strip the ends of the long wires and solder the red to red and black to black. You've now got a really really long wire connecting to your fan. Leave the connection on the end.

I managed to not get any good photos of this, but I think you've got it down now.

This is a terrible photo

Done Soldering

Now you should have a great looking electrically compatible Ubis drop in replacement. Are you starting to feel proud of yourself? You should be.

Looking sharp
Put your hotend in place about where you want it to go and tighten the extruder down enough so that it isn't going anywhere. Remove the coil from your wire collection and fish your new fan wire along the your previous collection of wires. I used some sandwich bag twist ties to keep the cables neatish at this point.
Keep it together

Always On Fan

If you are going to complain about any of the quality of this build, here is your time to complain. It is really hacky for the importance of the piece, but I haven't had any problems with it. The new hotend fan should be running at all times. That means it should have a solid 12V every time anywhere and it is vitally important that it does stay running or things will overheat and your hotend will clog and/or burn out. If you were in the habit to leaving your Printrbot powered on that means you'll have to change that habit.

I just patched into the source 12V power for my fan. Shove some wires with a little bit of aluminum foil into the back end of the main power connector and you have got a good power source. I did add a zip-tie to further attempt to keep things properly connected.

Just connect your fan wire to those two new live wires, wrap a little electrical tape around it to keep things fit and finished and move on with your life.

Alternate Always On Fan Plans

I think the official Printrbot solution is currently an additional circuit on the z-index detector that boosts that voltage to 12V. I've also heard some people wiring against the heater core power and a normal ground and getting a good 12V. I didn't experiment with anything like that. I went straight for the source.

All Fans Are Go

Plug in your Printrbot to the power supply and your fan should be on. Now you can start fitting the new hotend in place.

Wednesday, March 4, 2015

Test your Printrbot's New Hotend

Part of a series on installing the hotend.

Plug It In

Plug your new thermistor and heater core connectors into the Printrbot. They should fit perfectly. You can just set the hot end assembly on the print bed for now. We aren't going to do anything too taxing. If the wires are too short for that you probably did something wrong.

Turn It On

Cross your fingers, here is the moment of truth. Power up the printer and connect to it with your printer software of choice. I use OctoPrint but you can use whatever you like. First look to see that you can connect to your printer. Some software packages will complain if they don't detect your hotend or thermistor correctly. It should read about 20˚ because that's normal. If you don't see that you'll need to try and trouble shoot things. You are on your own.

Heat Things Up

Cross your fingers again and hold your breath. Things are getting serious. Tell your hotend to heat up to 50˚ and keep one finger on your hotend and one hand on the power plug and both eyes on your temperature reading. You should feel the hotend start to heat up as the temperature rises on your screen. You've passed the first test. Watch your screen and notice that it'll heat up to around 60˚ before it starts to taper off. You can now use the same software to tell your hotend to stop heating and if you have these kind of things graphed you'll notice something like this graph.

Tests Complete

You can breath again. Everything worked perfectly the first time (if it didn't keep trying). Your hotend should heat up on request and your thermistor should recognize a change in temperature. Nothing will be perfect at this point, but you are making progress. Now it's time to rig up your extra fan.

Tuesday, March 3, 2015

Wiring the E3D v6 Hotend to Replace Ubis

Part of a series on installing the hotend.

Thermistor Wires

They give you directions to use some ferrules, but you should solder those points instead. You've got a soldering iron so fix those conductive points like an adult. Remember to put heatshrink tubing (I used 1/4 of the provided tube on each point) on the wires before soldering. After you are done you'll have a crazy long cable for your thermistor

Solder the wires. Red and black don't matter here.
Cover the soldering with heatshrink tubing
Now trim each of those thermistor wires down to about 10cm. Keep the extra black and red wire around because you'll need it later. Strip your new wire ends a bit.

A lot of wire removed

Thermistor  Molex

We want our new thermistor wired exactly the same as our Ubis so we can easily swap it out.

Grab your Molex receptical (0436450200) and two female sockets (0430300003). Crimp your sockets onto the wires as tightly as possible and push the sockets into the receptacle. I used a needle nose pliers for the crimping but if you have a special tool or want to solder a little bit just to keep a solid connection that's fine.

The sockets that go into the receptacle do have a top and bottom so get to know your Molex.

Red wire connected.

Thermistor molex attached.

Heater Cartridge Wire

You've got a really really long set of blue wires connected to your heater cartridge. You'll want to chop them short. I left mine a little longer than necessary just in case. My shortened wires were just about 10cm, but I probably could have gone 8cm.

We don't need the protective red sleeve to be as long as it ships. It mostly just needs to cover the crimped wire underneath it, and it removes some of the flexibility. I slipped off the sleeve and made a cut at about 1cm then slipped both pieces back on.

And of course strip some of the wire. If you are sloppy like me you'll fray the blue covering a lot, but it doesn't matter because there is a more solid covering underneath that.

Looks real short doesn't it?

Heater Cartridge Molex

We want our new heater wired exactly the same as our Ubis so we can easily swap it out.

Grab your Molex plug (0436400200 or 0436400201) and two male pins (0430310003). If you only had access to the x0200 plug you should trim the wings off them now. Crimp your pins onto the wires as tightly as possible and push the pins into the plug. I used a needle nose pliers for the crimping but if you have a special tool or want to solder a little bit just to keep a solid connection that's fine.

The pins that go into the plug do have a top and bottom so get to know your Molex.

I bought 4 pins because I knew I'd screw up

The mounting points do remove quite cleanly

Wires Connected

Ready to find out if you've connected your wires properly? It is time to test your hotend.

Monday, March 2, 2015

Assembling your E3D v6 Hotend

Part of a series on installing the hotend.

The Official Directions

The directions on the E3D wiki are pretty good, but also generic because they need to accommodate for all kinds of different printers. You should give those directions a once over before going ahead with anything else. Follow the directions for HotSide, Thermistor, and Heater Cartridge but take a break after that.

Thermistor Wires & HeatSink

Just leave the short wires for now. We'll solder the long wires onto it later. Follow the directions about screwing on the HeatSink. That's normal.

PTFE Tubing

We'll want a real short piece of PTFE tubing. Just long enough to extend out of the hotend and touch the exact end of the adapter we printed previously. Make an estimate of how long you think it should be and cut it longer so you can trim it down. Put the PTFE tube in the hotend and attach your adapter. Trim the tube until the plastic of the adapter cleanly touches the hotend. I fount a hobby knife did a good job of cutting the tube cleanly.

My PTFE tube was about 38mm long
The PTFE tube should extend from the hotend

The Fan

First, my fan came with 4 screws, but only 3 screw holes. That's fine enough, but it's a slight variation from the directions. It'll come down to your personal preference on how you ultimately mount the fan. For me the bulge on the fan shroud worked best when on the bottom. It allowed me room to keep the wires and connectors on top of the fan and out of the way. Putting the wiring point on the upper outside point made it easier to put the wires into the harness.

Here's a photo of my finished hotend with new Molex connectors. Don't Freak Out. I'll go over all the directions one at a time, but I thought you'd like to see how I mounted the fan on the final product. That should help you decide how to attach your fan at this point.

Fan Attached, Next

Continue on to Wiring your E3D v6 Hotend.

Sunday, March 1, 2015

Printing your E3D v6 Adapter for Printrbot Simple Metal

Part of a series on installing the hotend.

Download the Adapter

Jimmy Hartanto (aka Aistaca) designed a simple perfect adapter for getting your new hotend to mate with your classic extruder. So hop on Thingiverse and download the E3D v6 Adapter for Printrbot Simple Metal by Aistaca now. Yes Thingiverse is run by Takerbot, but the piece we want is Creative Commons because Aistaca is a good and generous human person.

Print it Several Times

Precision is key to this piece. I've you got the time and patience you'll want to try printing this piece until you get a perfect fit. Aistaca suggests just permanently gluing the adapter in place if you don't get a good fit, but I'm hoping to avoid that. I printed these adapters while I was waiting for the hotend to arrive.
Did you print enough extras?
Every printer and ever slicer seems to interact differently but I have found that Cura with a flow multiplier of 90% produces perfectly measured pieces for me so I printed 3 variations from Cura generated code. For me Slic3r seems to print everything just a little too fat. Pieces are a little too big and holes are a little too small so I printed 2 variations from Slic3r generated code just in case.

Glue It?

Like I said, I wanted to avoid gluing, but if you want to that's your choice. Maybe you only can manage to get one adapter printed and you need to make it work. It shouldn't be an issue. The hotend should stay super cool at the top so the glued contact isn't any different than unglued. Additionally, you are only gluing it to the heat sink so you could replace that cheaply if you wanted to upcycle your hotend for a different printer.

Test Fitting

At this point you should have your hotend. Not much you can do beyond here without it. You see the little black plastic nozzle thing at the top of your hotend? Your adapter is going to sit around it. It doesn't need a tight fitting there because it is not a support structure, but it'll help keep your adapter centered so it is important that it fits and is properly sized.

Yes, four adapters in this photo.
You should have also got a length of PTFE tube with your shipment (it looks like a cheap straw). This will fit in the black plastic nozzle as well as your newly printed adapter. Try it in your adapter now and see if it fits. It should slide in and out cleanly without any hassle. Again this isn't a support structure, but it needs to stay centered. If the adapter fits over the black nozzle and the PTFE tube fits cleanly your print is good. If it doesn't, try again.

Fit in Your Printrbot

Make sure you hotend is cool, remove your Ubis hotend. and fit in the adapter. You might have to detach your extruder to get to all the pieces but it'll probably fit well. When your adapter is in the extruder there is a good amount of room for the E3D hotend to still make contact. It isn't a lot, but it is plenty.
Loosen up this screw and the Ubis hot end should fall out.
You can see here that the space below the adapter.

From here you can reattach your extruder, attach the hotend, and make sure the hotend is securely in place. If the hotend doesn't seem secure you can go one of three routes:
  1. Print a new smaller adapter.
  2. File some bits off your printed adapter to make it smaller.
  3. Glue the adapter to your hotend (see above).
Looking good in position.

Adapter Done

Cool, now continue to assemble the E3D v6.

Thursday, February 12, 2015

OpenWRT Wireless Print Server Recap

Here is a friendly recap of my lengthy process of setting up my router as a Wireless Print Service with OpenWRT. My router was a WNDR3400 v1 (N600).

In the first part I discuss (briefly) the process of installing OpenWRT and which distribution you should use. From there I just get the device online as another WiFi client on my network with a static address.
In the second part I cover connecting your USB printer to the router. Not all printers are going to be the same but the process is pretty easy. Mostly the difficult part is using the correct USB drivers.
Lastly, we cover setting up ZeroConf aka Bonjour so that you don't have to remember any information about your printer. It is pretty easy with mDNSResponder. Using mDNSResponder is so easy nobody has written any basic tutorials about the usage.
Do you hate yourself? Do you love Avahi Daemon? For whatever reason you might want to read this part I got ZeroConf aka Bonjour setup using avahi-daemon but it was a pain in my rear end. You can read all about it in Part Four if you really want to. It removed days from my life so I hope it might help convince you that mDNSResponder is way better.
Maybe this series will help you. Maybe it'll help me when I need to remember what I did in 6 months.

Wednesday, February 11, 2015

Using a Netgear WNDR3400 as an OpenWRT Wireless Print Server (Part 4)

Note: Don't follow these directions because the avahi-daemon is terrible and it will hurt your feelings. You can read this garbage but I'd advise you against actually following the directions.

Ready to turn back? Part 3 of this series tells you how to use mDNSResponder instead and you should go there.

First, I got bored of the system having a stupid default hostname and being the wrong timezone so I updated them. Use `vi /etc/config/system` or however you want. Possibly don't do it at all because it's not important.

        option hostname N600
        option timezone CST6CDT,M3.2.0,M11.1.0

Second, get the Avahi bits up and running for ZeroConf so the printer can be automatically detected.
opkg install avahi-daemon
/etc/init.d/avahi-daemon enable
Now, tweak the Avahi config because the avahi-daemon is consistently compiled badly. So run `vi /etc/avahi/avahi-daemon.conf` and disable the dbus piece by adding the below option to the [server] section of the config file. Here you'll need to enable access to wlan1 because that's what the interface on radio1 is called.
Lastly, enable avahi and start it up.
/etc/init.d/avahi-daemon enable
/etc/init.d/avahi-daemon start
Third, setup your Avahi services properly. So delete the services that exist because they aren't going to be used and create a new service file.
rm /etc/avahi/services/http.service
rm /etc/avahi/services/ssh.service
vi /etc/avahi/services/p910nd.service
Your own service file will be a little different. Enter a model name close to the name of your actual printer and the Mac add printer dialog will be pretty helpful in finding the right drivers. I was surprised that mine worked without a problem.

This is an XML blob but blogger decided it hated me and totally destroyed it. As I don't suggest you use Avahi-Daemon anyway I'm not going to fix it. Buyer Beware.

  Lexmark E232 on WiFi
    usb_MDL=Lexmark E232
You can probably remove a lot of those records about binding and collating, but they were in the example I had and I didn't want to make sure.

Fourth, reboot your router again and cross your fingers. If you are lucky you are done fiddling on the command line and you can get back to the real world of mouses and dialog boxes. If you are unlucky you will end up restarting the avahi-daemon service every time you boot your router. So get used to logging in and using
/etc/init.d/avahi-daemon restart
Fifth, uninstall avahi-daemon because you have to manually restart the daemon every time you restart your router and this whole thing was an exercise in futility because the mdns stuff is so much easier to work with and is intentionally really lightweight and all around better.
/etc/init.d/avahi-daemon stop
/etc/init.d/avahi-daemon disable
opkg remove avahi-daemon --autoremove

Tuesday, February 10, 2015

Using a Netgear WNDR3400 as an OpenWRT Wireless Print Server (Part 3)

This is part of a series of blog posts.
Continued from Part 2

Note: Always `opkg update` before you `opkg install.`
Note: This works perfectly for my printer and my Mac. Your results may vary.

First, you want to install mDNSResponder. OpenWRT has a package for both `howl-mdnsresponder` and `mdnsresponder` available. The howl variant has been around for years and they recently decided that it will no longer be supported instead focusing on the real version. I decided to go with the good old reliable version. You can probably get the real responder to work exactly the same but I made my choice. You'll need to install it.
opkg install howl-mdnsresponder
Second, you'll need to configure it. It's super simple. Just edit your mDNSResponder config file with `vi mDNSResponder.conf` and add the following line. You can remove anything that was there if you want. Replace the text in `product=(*)` with your actual printer name. My Mac was smart enough to figure out exactly what driver it needs.
"OpenWRT Printer"  _pdl-datastream._tcp  local.  9100  "txtvers=1"  "note=Office"  "product=(Lexmark E232)"
Third, you'll want to setup automatic restarts of mDNS service. The mDNS service starts real quick, but unfortunately it takes a couple seconds for the WiFi service to connect. You want to restart the service after the WiFi is live so all the other computers around can be friendly.

You could manually restart the service after every reboot but that could get tedious constantly typing `/etc/init.d/mDNSResponder restart` if it isn't on an UPS. Fortunately, OpenWRT has a great little service they call hotplug. Just put some shell scripts in the right folder and they are run networks are activated or buttons are pressed. So just start up an editor for a new file.
vi /etc/hotplug.d/iface/80-mDNSResponder
The name `80-mDNSResponder` is completely arbitrary it is suggested that you name the file with a number in the front so you can tell what order they run in and I wanted it to run pretty late. Now just put the text below in the new file.
if [ "$ACTION" = ifup ] && [ "$DEVICE" = wlan1 ]; then
  /etc/init.d/mDNSResponder restart
That says if the wlan interface is brought up restart the mDNSResponder service. Pretty straight forward.

Fourth, restart your router again. Find the System Preference for adding a new printer and it should show up there as a Bonjour available device.

You are done. Go celebrate.

Part 4 exists, but don't go there.

Monday, February 9, 2015

Using a Netgear WNDR3400 as an OpenWRT Wireless Print Server (Part 2)

This is part of a series of blog posts.
Continued from Part 1

Note: Always `opkg update` before you `opkg install.`

First, load up the correct USB modules. You'll want to make sure USB 1.1 drivers as well as USB 2.0 drivers are loaded because somethings that should be 2.0 default to 1.1 really easily and you'll get confused. Luckily we know the WNDR3400 uses the OHCI (Open Host Controller Interface) parts for USB v1.1 so you can load those easily enough.
opkg install kmod-usb-ohci
This threw an error, but it doesn't seem to hurt anything. Now you'll want to install the USB v2.0 drivers because you'll probably need them as well.
opkg install kmod-usb2
Did you like how you got an error that didn't make sense last time? Did you like getting another error that seemingly shouldn't happen?

Second, reboot your router. After the router is booted wait a minute or two then plug in your printer and run `dmesg` to look for confirmation that your router is talking to your printer. Because you waited for some amount of time your printer detection should be the last line of `dmesg.`
usb 2-1: new full-speed USB device number 2 using ohci-platform
Third, install the printer software. The p910nd printer server is ideal because it is a diskless print setup. So you don't have to worry about print jobs filling up the RAM or storage on your router. That's obviously an issue that'd quickly arrive if you print any PDF. The documentation on the subject is excessive so I'm gonna just give you the good parts.

You'll just need to install support for USB printers and the print server package.
opkg install kmod-usb-printer
opkg install p910nd
After seeing random errors from the last directions it's nice to see things run smoothly isn't it?

Fourth, reboot and make sure everything is working as expected.  Use `dmesg` again and you should find a line in there that's something like below if you did everything correctly.
usblp 2-1:1.0: usblp0: USB Bidirectional printer dev 2 if 0 alt 0 proto 2 vid 0x043D pid 0x0091
Fifth, enable your printer in the p910nd config. I used `vi /etc/config/p910nd` and change the value for `option enabled` from 0 to 1. At this point you can reboot again to make sure everything is working as expected but I'm tired of all that so just restart the p910nd service with `/etc/init.d/p910nd restart` and you are ready to go.

Occasionally the p910nd doesn't completely enable it self properly. So you might need to enable it here or later or a couple times even.
/etc/init.d/p910nd enable
(Optional) Sixth, verify that your pinter works. The Print Server Documentation linked above has a bit about setting up every client that's available. It's hard to trudge through to find what you are looking for and we'll actually set it up on the Mac easier than all that later. So check if you want. I won't blame you.

Continued in Part 3

Sunday, February 8, 2015

Using a Netgear WNDR3400 as an OpenWRT Wireless Print Server (Part 1)

This is part of a series of blog posts.

Note: I have a WNDR3400 v1 so that's all I care about.

Welcome to the wonderful world of woefully inadequate documentation. It seems like everybody wants/likes to talk to their devices via serial ports but I think that's kind of dumb. I don't want to have to build or connect custom hardware bits. I just ssh to it at like a boss.

Overview of Part 1
Basically we are going to take a stock router from out of the box to a device on your network (skipping all the parts that are documented to death) and able to ping. We'll keep the 4 LAN ports untouched (so you can still use them to directly access and tell the

First, you hopefully have read enough about OpenWRT and the like to get a general idea what you are doing. That's great. Unfortunately a lot of what you have read is out of date if you are working on an older piece of hardware.

Second, open up your router because you are going to be flashing the firmware often. I think I've ended up flashing mine at least 10 times. The easiest way to get new firmware on the box is to short a pin and TFTP the new file at your leisure (no worrying about timing or memory).
There are a lot of posts about how dangerous this may potentially be, but I haven't had any problems. It's super easy and the router has almost zero value so I'm not afraid of destroying it.

Third, ignore the OpenWRT Wiki page about this router. You shouldn't have any reason to use the trunk/snapshot version. It'll only cause you headaches if you are tinkering while they release a new snapshot (unless you really like upgrading your kernel). The Wiki has links to 404s of old snapshots as the "recommended firmware" so that should be a good indication that you shouldn't trust it. Go ahead and download the most recent stable version. It is currently Barrier Breaker.
Fourth, flash your router with the firmware and telnet into it so you can set a password and ssh into it from now on. This is documented to death and you said you read some of the docs right?

Fifth, connect your router to your wifi. The OpenWRT Wiki page about setting up a Bridged Client is pretty much spot on and includes somethings you won't have to do. I'm glad they haven't completely given up on keeping their docs updated.
So just follow Step 1 of that Bridged Client article for now. I like to `vi /etc/config/wireless` and set things up like that but you can go your own way. I decided to enable and use `radio1` for this because it supports b/g so it more closely matches what my network already runs.

It is vitally important that you set the correct channel for your WiFi network. I managed to accidentally skip that and spent a few days trying to figure out what went wrong. Also, that `option network wan` bit is important because it's where we tell the device that the new access to the network is via wireless.

Sixth, reboot your router. You should now see a fun blue light blink occasionally on boot. That means your antennae is trying to work. I won't stay lit so don't worry too much.

Seventh,  disable some services you won't be needing. Yeah, you could disable quite a few services but the only ones that could get in your way are the firewall and DHCP servers.
/etc/init.d/firewall stop
/etc/init.d/firewall disable
/etc/init.d/dnsmasq stop
/etc/init.d/dnsmasq disable
Eighth, fully enable wireless access. Remember how we said that the radio was going to work on wan? Now go ahead and edit your network file with `vi /etc/config/network` and delete anything in the wan config and replace it with pieces to make it a fully static IP.
option proto 'static'
option ipaddr ''
option netmask ''
option dns ''
option gateway ''
My router is x.1 and all my other boxes pick up IPs starting in the x.100 range so I keep the lower numbers for devices that should be static. I want to easily access this device so I made it x.2. I didn't want to set this up grabbing a dynamic IP because it would make it impossible to find on my network if it doesn't have any avahi stuff setup.

Ninth, unplug any network cables and reboot your router. You should now be able to ping it and ssh to it as a device on your network. It is free!