Table of Contents
Hardware
Creality Ender 3 Pro (with modifications)
BTT SKR Mini E3 V2.0, direct drive, and BL-Touch
I'm collecting information here to track progress on setting up an Ender 3 Pro that I pulled out of the trash. The previous owner had already upgraded the motherboard and completed a changeover to direct drive. The Z-axis was initially bizarrely overtightened, causing MAJOR skipping issues that squished all the prints about 30%.
After properly torquing the eccenctric nuts on the Z-axis and other belts as well as lubing everything, it printed okay! However, it had Merlin firmware which is poopy so now I'm working on converting it to Klipper.
The motherboard (BTT SKR Mini E3 V2.0) is NOT the stock component; keep this in mind when creating new config files or copy+pasting from other configs on the internet.
The direct drive unit is a Creality-branded upgrade, so should not require much special attention.
The BL-Touch probe appears to be a legit unit, so normal configs for it should work (knock-off units exist and there are many reports of shoddy ones).
Before getting into the printer itself, let's go over how to connect to the Pi, which is running the whole show.
Build Plates
I have had two build plates for this. The stock one from Creality with the crappy magnet on the back that feels like an up-jumped refrigerator sticker, and a fancy-pants PEI sheet.
The PEI sheet doesn't work for shit. It works beautifully on my other printers but on this one I genuinely can't get anything to stick to it. I'm certain it's either a bed leveling or Z offset issue, but the crappy sheet that came with the machine, all scratched to shit, works much, much better.
The PEI plate is being returned as defective - it doesn't work on my other printers, either. I've ordered a new stock mat that will hopefully correct any of the weird leveling issues I've had. Addendum: It seems to have helped pretty dramatically.
Things I Had To Fix
The motherboard cooling fan would turn on when the parts fan was supposed to turn on and the parts fan ran all of the time. I swapped the connectors on the board while installing the new control box.
The X and Y-axis belts were both incredibly loose and needed to be tightened, but they did mostly work with some minor skipping.
The Z-axis lead screw couplings were way over-tightened. I've had to re-loosen them several times during testing, so it will likely happen again.
Cable management was an absolute mess but aside from removing cables that went nowhere and printing a cable chain to keep things tidy, there wasn't much to do here (except for the aforementioned fans.)
Raspberry Pi 4
Overview
_,met$$$$$gg. ender@ender3Pro ,g$$$$$$$$$$$$$$$P. --------------- ,g$$P" """Y$$.". OS: Debian GNU/Linux 11 (bullseye) aarch64 ,$$P' `$$$. Host: Raspberry Pi 4 Model B Rev 1.1 ',$$P ,ggs. `$$b: Kernel: 6.1.21-v8+ `d$$' ,$P"' . $$$ Uptime: 2 hours, 9 mins $$P d$' , $$P Packages: 957 (dpkg) $$: $$. - ,d$$' Shell: bash 5.1.4 $$; Y$b._ _,d$P' Terminal: /dev/pts/2 Y$$. `.`"Y$$$$P"' CPU: BCM2835 (4) @ 1.500GHz `$$b "-.__ Memory: 157MiB / 3618MiB `Y$$ `Y$$. `$$b. `Y$$b. `"Y$b._ `"""
This machine is currently flashed with a Debian-based OS called MainsailOS - however, I do not like Mainsail so it has been gutted and replaced with Fluidd for the web interface.
In the event that this machine needs to be re-flashed, RaspberryPiOS with KIAUH setup should be a perfectly adequate replacement so that extra junk doesn't need to be removed in the process.
Software
Connecting to WiFi
On the /boot/
partition of the SD card, create a plaintext file called wpa_supplicant.conf
and use the following template to add the correct information for your WiFi network (this unit is compatible with both 2.4 and 5 GHz networks). Once you have created that file, re-insert the SD card (or reboot if edited in-place) and after about a minute it should appear on your WiFi network. DHCP is currently enabled.
# Simple configuration for a typical WPA2 network ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 country=US # US Country code network={ scan_ssid=1 ssid="" psk="" proto=RSN key_mgmt=WPA-PSK pairwise=CCMP auth_alg=OPEN }
** NOTE: ** Ethernet also works fine if you have the lead available for it. It would also be a lot less annoying.
Remote administration
Credentials to SSH into the machine are as follows:
- User:
ender
- Password:
1234
Example
steeb@thinkpadz13:~$ ssh ender@192.168.50.222 ender@192.168.50.222's password: Linux ender3Pro 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr 3 17:24:16 BST 2023 aarch64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Fri Aug 2 14:05:21 2024 from 10.6.0.2 ender@ender3Pro:~ $
KIAUH (Klipper Installation and Update Helper)
I have been managing additional package for the 3d printer-specific stuff using a utility called KIAUH. You can find the Git for them here.
You can run it using the following command:
./kiauh/kiauh.sh
See the Git for documentation. You probably won't need to do much through this unless you're adding new features or want to try out Mainsail instead of Fluidd. Actual updating of things is handled through the Fluidd and/or Mainsail interface.
Other
This is running a Debian-based OS. Because of this, you can update using apt
just like on any other system. Everything that is currently installed is actively maintained and should work great through updates. On my other 2 printers running Debian w/ Klipper, updates have gone off without a hitch.
Firmware
The printer is running Klipper (GitHub repo). There is a host component (setup on the Pi) and the firmware component - it does not work independtly, as a lot of the tuning and tweaking is stored on the host computer.
Management
You can browse to the IP address of the printer in a web browser to get to the Fluidd interface - all management is done through there, including updates to Klipper and installed plugins. Any commands that are listed below need to be entered into the Console in the Fluidd interface - there's a small one on the main screen or a larger console window if you click it on the left-hand side of the window.
KAMP (Klipper Adaptive Meshing and Purging)
The printer has been set up with KAMP. In order to use the adaptive meshing and purging feature, add the following G-Code to the Start G-Code (there can be more before and after this, but this is a bare minimum):
... G28 ; home all axis M190S{first_layer_bed_temperature[0]} ; wait for bed temp to calibrate bed mesh G4 S30 ; allow partial nozzle warmup M117 BED_MESH_CALIBRATE ; do KAMP stuff ... START_PRINT LINE_PURGE
Be sure to home (G28
) before performing the BED_MESH_CALIBRATE
; it's also important to run M117
to clear any messages hanging up in the system. LINE_PURGE
needs to come after START_PRINT
to make sure it happens immediately before the print begins to minimize blobbing and stringing on the first layer.
If you are just importing the PrusaSlicer profile, these changes to the START G-Code should already be applied.
Tuning
Z Offset
NOTE: I've hda to re-adjust the Z offset fairly frequently, sometimes between each print. It's not a large task, but I'm unsure if there's an issue with either the probe or the bed screws or the bed itself - just do not rely on this to be accurate over a large amount of time! ADDENDUM: Please note that this is not as big of a deal anymore since KAMP has been enabled in the firmware -- a new, temporary mesh will be generated for every print. It's still a good idea to check the Z offset regularly - especially after adjusting the bed in any way or when swapping nozzles.
Home all axes and then enter PROBE_CALIBRATE
into the command line. From there, adjust the Z offset in small increments using the on-screen arrows until it is close enough to the bed that you feel resistance when you drag a sheet of paper below it. You just need to feel enough drag to be noticeable - it doesn't need to scratch or put up a fight.
Bed Leveling
Once the Z offset is set, you can now manually level the be by entering BED_SCREWS_ADJUST
into the command line. The machine will then go to each corner one-by-one while you adjust the screw knobs and repeat the paper test, like in the Z offset section. If you need to make an adjustment to the screw (more than 1/8 of a turn), click "Adjustment", if the setting is fine, click "Accept" - once you accept all four corners in a row, the bed is leveled.
Bed Mesh Calibration
Bed meshing is now handled automatically on every print by KAMP. It creates a smaller mesh of only the area you'll be printing on, meaning they are much more accurate. See the GitHub repo for KAMP for further documentation and customization.
...and the rest.
These are things that need to be set up but not done as frequently.
Pressure Advance
Most guides say to run this for every filament you use. I use the same pressure advance settings for each type of filament -- PLA, PETG, ABS, etc.
Resonance Compensation
From what I've read (and my experience), this really only needs to be done if the mass of the printhead changes (like replacing the direct drive motor, changing the probe, or installing a new hotend). As this was a from-scratch setup, I already went ahead and ran it. It might be a good idea to just calibrate once every few months, but honestly I'm not certain how necessary it is.
Later edit: Resonance testing showed barely any ringing at all. I haven't actually performed any adjustments, as a result.
What should you be printing with?
Filaments
What works
PLA and PETG have both printed very nicely on this machine. I have a strong preference for PETG as it seems to stick better to most surfaces and it can withstand much higher temperatures (so you can leave things in your car without them melting.) PLA is usually considered the "beginner friendly" filament, but frankly I think it's because it probably prints more easily on cheaper machines that can't run as high of temperatures. The Ender 3 Pro can get plenty hot, plenty fast.
The included "steeb's filament" profiles have been tested pretty extensively and should work well for most prints. I didn't do a lot of work with overhangs and pressure advance and rotational distance for the extruder was only set with PLA, though it seems to work quite well with PETG as well.
Pricing is fairly similar between the two materials.
What don't
Nothing else has been tested on this machine. Whereas TPU should be printable (as long as speeds are turned waaayyyy down, since it's a very goopy and flexible material), other materials like ASA or ABS would require an enclosure to trap heat in and also generate a smell that seems like it might shorten your life pretty considerably. There are plenty of guides out there for building enclosures and filtration systems out of IKEA furniture that look like they'd work quite well.
Of the unsupported filaments, ABS is the most likely that you'll look into printing with, as it has the highest temperature and chemical tolerances of most printable materials, although there are also lots of PETG filaments that have been adulterated with things like carbon fiber and fiberglass that create plenty strong materials without the extra investment.
Nozzles
This machine uses "MK8" style nozzles. If you wanted to switch to a more standard "E3D V6" or "Volcano" type nozzle, you'd likely need to change out the hotend for one that can take those nozzles.
Types
The standard brass nozzle will work for PLA and PETG without any issue. If you wanted to print something with additives in it (like carbon fiber, metal, or glitter,) you'd need to get either a hardened steel nozzle or a bi-metal nozzle, as those additives will destroy brass tips very quickly.
When and if you do end up replacing the nozzle, I'd probably just recommend going for a hardened steel nozzle, as the price difference isn't outrageously large, and a well taken-care-of nozzle will last a very long time.
Sizes
You can get nozzles with openings ranging from 0.2mm all the way up to 1mm. Standard prints all come with 0.4mm nozzles (which is what the machine is currently equipped with.) Smaller nozzles create finer details and higher resolution prints, at the expense of taking dramatically longer. Larger nozzles can push a lot more filament in a lot less time, but can smooth out details on details prints.
You'll need to change the nozzle diameter settings in your slicer if you move up to a bigger nozzle, which also allows you to set much taller layer heights.
Keep in mind that the general rule of thumb is keep layer heights no higher than 75% of the nozzle diameter. So, with a 0.4mm nozzle, your maximum layer height should be 0.3mm. You can drop layer heights as low as you'd like, but this will introduce more and more layer "squishing" the further away you go from the standard 0.15 or 0.20 layer heights, which can also cause very small inconsistencies in line width, which can make moveable parts either completely immobile or require immense amounts of sanding or force to break apart.
Recommended upgrades for the future
Solid bed
I tried to add silicone spacers to create a more "solid" bed, but it just absolutely ruined the ability to level it out. I'm not certain this is truly doable without completely replacing the bed itself.
Screen upgrade (with KlipperScreen)
My other printers have BTT HDMI5/7 touchscreen LCDs with KlipperScreen (GitHub repo) running on them. I would HIGHLY recommend this at some point, as the stock screen is basically useless outside of showing the status of the print and current heater temperatures
Screen can be found here, on Amazon.
A printable enclosure can be found here, on Printables. Please note that a new enclosure will need to be printed for the Pi, as it currently resides in the screen enclosure for the stock screen.
As an alternative, there are plenty of Pi-specific touchscreens that can also be used -- this is just a brand I know and liked.
Problems?
Printer is stuck on a blue screen
Occasionally when firing up the printer, it gets stuck on a blue screen (the blue screen typically stays up for 1-2 minutes while the Pi is booting into the OS) and will not finish booting. Unplug power from both the Pi and the printer, then plug them back in. I've had to do this twice on at least one occasion - I think it has something to do with 5v backpowering which looks pretty simple to resolve with a piece of electrical tape.
Non-functional/detrimental bed meshes
Bed meshes don't seem to work properly. I can get wildly different bed meshes without ever moving or adjusting anything on the machine, leading me to believe that the BL-Touch probe might have some issues (or may not be a genuine part, I'm not certain.) It might be worth looking into something else for Z probing.
Bed meshing was working, it's just that I'm unused to sprung beds. Enabling adaptive meshing with KAMP has resolved this issue.
Bad PEI plate, maybe
I can't get anything to stick to the PEI plate I bought, which sucks because it's the ONLY build plate I bother using on other builds.
The PEI plate is defective in some way. It's going away.
No webcam
For whatever reason, I curently cannot get the webcam working.
I had a bad webcam. Dang you, trash pile.
Extra parts
The printer came with its original bowden-tube-style motor and extruder, which I'll include with it just in case you want to (for some bizarre reason) revert it back to its original state.