Solidoodle 2


OK, It is Saturday, August 17, 2013 and I finally broke down and ordered a Solidoodle 2. The first question will be how long it takes to arrive.

The second question will be if I can do any of the things I keep imagining (like making parts for the book scanner I'm working on, or printing some nice substantial numbers for my mailbox to replace the cheap stick-on ones that keep peeling off, or printing a sheath for my car keys so they don't set off the alarm just because I bend over near the car and a fold of cloth presses a button, etc). We'll see how long it takes to go from absolute zero knowledge of 3D printing to one of the guys in the message boards that toss around words like slicer and raft like they know what they are talking about :-).

The answer to the first question is that it is currently scheduled to arrive on Wednesday, September 4, 2013. That is longer than the prediction on the solidoodle web site and didn't happen till I emailed support asking what was happening, and got back an "Oops! We'll ship it today." message :-).

The answer to complicated things like building a form fitting sheath for my car key fob may lie in the Matterform 3d scanner gadget :-).


Note: I have a somewhat more organized Solidoodle and Fedora page now.

Meanwhile, I've been reading Understanding 3D Printing by Al Williams, poking around in soliforum, and experimenting with openscad (available from the Fedora repos), and have designed a little logo of my initials to print:


// A silly little logo I can make out of my initials (T.A.H.)
// rendered in 3d. (My first openscad design :-).
// Tom Horsley - Aug 30, 2013
module tah()
   union() {
      translate([0,4,0]) cube([4,1,1]);
      translate([1,2,0]) cube([5,1,1]);
      translate([1,0,0]) cube([1,5,1]);
      translate([3,0,0]) cube([1,5,1]);
      translate([5,0,0]) cube([1,5,1]);

scale([5.08,5.08,5.08]) tah();

I exported that as tah.stl, and I'll see how much trouble I have printing it when I get the printer unpacked and setup.

I'll be accumulating this and other models I make in My Models.

I decided to try and install the software while I wait, and the solidoodle linux instructions were highly ubuntu/debian specific. I needed to yum install python-pyglet wxPython pyserial tkinter to get the equivalent packages for my Fedora system.

There are also a bunch of other 3d printing related softwares available in fedora as described in the Fedora 3D Printing Wiki.

The freeware netfabb-basic is by all accounts quite handy to have, so I installed it as well.

Since I have no idea what units my openscad model is using, I'll probably need to scale it to print correctly. On the solidoodle site it points at ReplicatorG as the tool to use for scaling things, so I installed it as well.

I'm noticing a distinct lack of units in all these tools. They'll draw me a picture, but won't tell me how big it is. I can scale it in ReplicatorG, but only by a relative factor, its bigger, but I still have no idea how big. (Hey! I finally found a web page that told me the default openscad units are millimeters, so if I scale it up by 25.4, I should get inches). Except when I load it in pronterface, it tells me things like the model is 190+ mm wide and 230 mm high. It is still all very confusing. [Ha! I tried netfabb and finally it gives me a summary of the overall size of the object.]

Here's the pronterface messages I'm talking about. Near the middle of the log it says this:

X axis extrusion starts at 78 mm and ends at 121 mm, for a width of 42 mm.
Y axis extrusion starts at 80 mm and ends at 114 mm, for a depth of 34 mm.
Z axis extrusion starts at 0 mm and ends at 6 mm, for a height of 5 mm.

That all seems about right (taking into account it seems to have added a raft by default), but at the end of the messages it has this nonsense:

the print goes from 78.400000 mm to 200.000000 mm in X
and is 121.600000 mm wide

the print goes from 80.600000 mm to 200.000000 mm in Y
and is 119.400000 mm wide

the print goes from -200.000000 mm to 30.000000 mm in Z
and is 230.000000 mm high

What the hell? Where the devil do these numbers come from and what it is talking about?

I guess it is things like that which lead folks to hate pronterface and think that Repetier Host is a better tool. Unfortunately, solidoodle does not provide a linux version of Repetier Host and it seems more confusing to do the setup on linux. I eventually installed the solidoodle customized version on a windows virtual machine, then poked around to find various settings files and copied them to my home directory where the fedora version of the software could find them:

I found a C:\Documents and Settings\Tom\.skeinforge directory I used to replace my ~/.skeinforge directory, and I found a C:\Documents and Settings\Tom\Application Data\Slic3r directory I used to replace my ~/.Slic3r directory. I couldn't find where the top level Repetier Host app stored the printer settings, so I just examined all the printer settings tabs manually and tried to copy them to the Fedora version where I could make sense out of them.


The section took up rather a lot of space, it has been moved to the Unpacking the Solidoodle 2 page.

Repetier Host

I guess the next thing to do is see if I can indeed talk to it from the Fedora version of Repetier Host.

First thing to check is what happens when I plug it in:

Sep  4 04:06:55 zooty kernel: [547190.987353] xhci_hcd 0000:00:14.0: xHCI xhci_drop_endpoint called with disabled ep ffff88040798f3c0
Sep  4 18:45:44 zooty kernel: [599968.325592] usb 3-2: new full-speed USB device number 10 using xhci_hcd
Sep  4 18:45:44 zooty kernel: [599968.338052] usb 3-2: New USB device found, idVendor=16c0, idProduct=0483
Sep  4 18:45:44 zooty kernel: [599968.338060] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Sep  4 18:45:44 zooty kernel: [599968.338065] usb 3-2: Product: USB Serial
Sep  4 18:45:44 zooty kernel: [599968.338069] usb 3-2: Manufacturer: Teensyduino
Sep  4 18:45:44 zooty kernel: [599968.338073] usb 3-2: SerialNumber: 12345
Sep  4 18:45:45 zooty mtp-probe: checking bus 3, device 10: "/sys/devices/pci0000:00/0000:00:14.0/usb3/3-2"
Sep  4 18:45:45 zooty mtp-probe: bus: 3, device: 10 was not an MTP device
Sep  4 18:45:45 zooty kernel: [599968.771616] cdc_acm 3-2:1.0: This device cannot do calls on its own. It is not a modem.
Sep  4 18:45:45 zooty kernel: [599968.771632] cdc_acm 3-2:1.0: ttyACM0: USB ACM device
Sep  4 18:45:45 zooty kernel: [599968.771801] usbcore: registered new interface driver cdc_acm
Sep  4 18:45:45 zooty kernel: [599968.771802] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters

And the initial answer is that I can't seem to get Repetier Host to connect to the printer. I even tried passing /dev/ttyACM0 through to a Windows virtual machine and running the official solidoodle version, still nothing.

However, pronterface has no problems connecting to the printer, and using manual control to run it in each of the x, y, and z directions, so the hardware (and my permission to access the tty device) seems to be working OK.

I finally figured out my problem (and it deserves a Doh!). I've added the description to my problems page.

Maybe I'll finally be able to check calibration and install filament and print something soon...


NOTE: This was the point where I made my initial UDEV scripts, but I have since spiffed them up a lot and moved all the info to the separate Solidoodle UDEV Scripts page.


OK, finally tried to print something.

First thing I notice: I really have to manually juggle the extruder and print bed temps? It has a target value, why can't it do the juggling for me [turns out it does, I just didn't give it enough time] and start the job when both temps are correct? [though it really doesn't have a auto start when correct temp reached option].

It doesn't seem to have any idea where the bed is located when it starts printing. The first attempt printed in mid air. I then used the home buttons to home each axis (and Z does seem to be pretty well adjusted as shipped), but when it started printing, it went off the back edge. So I'm trying again, manually moving the print head near the middle of the print bed before I start.

Nope, it deliberately moves over to the back corner and prints off the edge. Clearly some geometry is wrong somewhere (but I copied all the settings from the Windows version of the software). Guess I need to poke around some...

I did try the Windows virtual machine with the tty pass through again, and now that I know where the connect button is, it actually worked, and even tried to print in the center of the print bed, so I'm not sure what is different between Windows and Linux versions at this point. Unfortunately, the filament didn't really stick. I may need to adjust the Z stop after all.

Here's my current results. It almost started to look like my model a couple of times after some z stop adjustments, but it eventually peels up rather than sticking so I had to stop the job. More work to do (probably involving glass plates and hairspray):

I was using the Windows virtual machine for most of this, and I noticed that the Windows Repetier Host actually does keep the temps at the target values (more or less), but the linux version just keeps zooming along getting hotter and hotter. Maybe I'll have to always use the virtual machine if I want to use Repetier Host? Seems to be a lot of flaky stuff going on in the linux variant.


The solidoodle support guy responded to my queries in the solidoodle forums and says I may be missing things like the start and end code which is why I'm not printing in the center of the bed on linux. This seems entirely likely, so I spent some time finding out where the devil the Windows Repetier Host stores the settings it uses, and I found them in the nasty old registry at HKEY_CURRENT_USER\Software\repetierSolidoodle.

I used regedit to make a copy in a text file, iconv to convert that UTF-16LE text file to UTF-8 I can actually read, then started looking for the equivalent settings on the linux version using strace on RepetierHost. Naturally, they are in some bastard clone of the registry that mono generates. I found the equivalent settings in ~/.mono/registry/CurrentUser/software/repetier. There are xml files scattered through that directory tree to hold the registry key values.

Now it is just a question of comparing them to see what is different. Maybe I can get linux to work natively (still worried about the apparent runaway heaters though). Here are all the differences I found:

Value Windows Linux
transferProtocol 0 1
pingPong 0 1
hasDumpArea 0  
dumpAreaLeft 150 125
dumpAreaWidth 9 22
dumpAreaDepth 159 40
gcodePrepend G21; set mm units
G90; set absolute coordinates
G92 E0; reset extruder distance
G28 X0 Y0;home x and y axis
G1 X100 Y100 F4000; move Nozzle above bed
G28 Z0; home Z axis
G92 E0; reset extrusion distance
gcodeAppend G92 E0
G1 E-3 F1000

Thank God for google, or I'd never have found where to add the start and end code in Repetier Host (in the G-Code Editor tab using the pull down menu to select start and end code). That's probably why I didn't find it when initially copying settings, since I had no idea I should look there.

I have all the settings the same now. Let's give it a whirl, checking the temp problem first...

Hey! It is working now! Maybe I didn't give it a chance to stabilize before. The extruder temp does shoot up above 200, but if I give it a little time, it comes back down again. (If only I knew why there were two lines on the graph for each temp instead of just one :-).

With the start and end code defined now, the prints seem to come out in the same spot as the Windows version, and peel up at the same time as the Windows version, so I now have achieved equal breakage in both versions. No more virtual machines needed.

Glass Bed

So, time to see what a glass bed and hairspray will do for me. I got a sheet of 3/32″ 16x20 glass at home depot for a little over $5 (I figured I might as well get plenty to try different things with - perhaps different sizes with magnetic mounts someday). I got unscented extra hold aquanet at Walgreens. Now to give the tried and true glass cutting technique a whirl: Use the cutter (with a drop or two of oil on the wheel) to scribe a line at the 6″ mark, then put a dowel or rod under the scribed line, and press down on the two sides. Do this all on a old towel or blanket to catch any glass chips that might fly off, and gloves wouldn't be a bad idea either. You definitely need to press hard enough to make you think about starting to wince just in case things go horribly wrong, but then it suddenly goes crunch and you have two perfect pieces of glass:

Now to cut it again to make a 6″ square (this shorter cut snaps off easier with much less pressure) and use some coarse sandpaper on the edges to make it safer to hold, and I have my first glass bed, which seems to fit perfectly:

Ok, I've given the plate what I hope is a light dusting of aquanet, I've applied 3 clips near the leveling screws, and I'm off to make all the adjustments I need before I can actually try to print anything.

Did all that, using a thin piece of brass shim I had laying around to poke under the head to check for uniform resistance as I moved the head around the plate, made a few minor adjustments to the leveling screws by grabbing the end sticking out of the bottom with some needle nose pliers and turning.

I then turned on the bed heater and let it get up to temp, followed by turning on the extruder heater so the bed heat would have time to soak through the glass while the extruder was heating up. I then hit start print on my model which I sliced with the .3mm profile of Slic3r, and by golly the glass plate was fantastic. Stuck to it perfectly, no peeling up, and the model printed to completion with no disasters:


Y Axis

Obviously, the gaps in the supposedly solid model, plus the top bar of the T not being the same dimension as the vertical bars mean that my next step may have to be going through the terrifying y-axis adjustment video from solidoodle and doing the same to my printer:

I asked about my gaps in this soliforum thread and the reply said it might be more of a slicer problem, so I tried two variations in the slicer. I ran it through netfabb repair, and I sliced with skeinforge instead of slic3r. See if you can tell the difference:

I think it is definitely y-axis adjustment time...

Did that (never being entirely sure what I was accomplishing, but I guess the general idea is to get things aligned so there is no force pushing the bar side to side, everything goes into rotation and dragging the carriage back and forth in the Y direction). Anyway, I do believe it worked:

The model I designed way back at the top of this web page should have the TAH letters 25.4 mm high, and all the vertical and horizontal bars that form the letters should be 5.08 mm square. Measuring the resulting print with my digital calipers gives a total height of 25.66 mm and various crosssections of the squares range from 5.03 to 5.7 mm, which doesn't seem bad (especially since I used the 0.3 mm printing profile rather than 0.1).


Now I've done it. I decided to print a more ambitious object and didn't notice when I used up the last of the sample filament half way through the print. Now I've only got filament in the print head below the drive gears. A new challenge to work on tomorrow :-).

But the partial print actually looks kind of kwel:

Time to try and fix the filament: I turned on the extruder heater. I marked a vertical line on the nut holding on the tensioning spring with a black sharpie and counted the number of revs required for the nut to come lose (12) so I could put it back with pretty much the same tension on it (by the way, it is just the nut on the end that comes lose, not the long screw).

With that bit of the print head now folded down, I could just get hold of the remaining filament with some small needle nose pliers, but couldn't pull it out very far (what I really needed was a hemostat). Pulling it out a little, however, at least moved it back above the drive sprocket, so I closed it back up, screwed the nut back on, and then operated the retract button, which was indeed able to pull enough of it out that it rose above the print head where it was easier to grab and help the rest of the way out together with the retract button. No lasting harm done, no fragile acrylic parts broken. I now have the full spool of filament on the holder and threaded into the print head, and all is well again.

Case Mod

For my first big project I came up with a openscad model I could tweak to print different variations on a clip I could use to add foamboard panels to my solidoodle. See the full description in the gallery.

P.S. I'm still printing on the same glass bed with the very first coat of hairspray. At this rate, my can of aquanet will be able to be passed on as an heirloom :-). [And, of course, the next thing I try to print after writing that peels up, so I have removed the glass, applied a new layer of hairspray, and put it back].

Brim Taming

When I was working on my case clips, I tried letting slic3r generate a brim, and found that it annoyingly followed the little channels and made it difficult to clean the brim away from those parts.

Fortunately, some experimentation shows that the brim only follows the outside edges of the model, so if you have channels and slots you don't want brim full, you can modify your model to draw a tiny bit of solid material across the bottom edge of the opening you want to protect. Slic3r will then put the brim on that edge, but no farther.


Another hint: Just because you adjust the z-stop once doesn't mean it is gonna stay adjusted :-). All the rattling around during printing vibrates the z-stop screw and it can go out of adjustment.

Gauge Mount

My next project was My Gauge Mount (designed to fit my somewhat different extruder assembly).

Ceramic Bed

I've moved all related info to this Ceramic Bed page.

Go back to my main Solidoodle page.

Page last modified Sat Oct 26 10:28:50 2013