OctoPrint: Snappy web interface for your 3D printer
octoprint.org
octoprint.org
8 years ago I started working at a 3D printing company as a support engineer, where the UI of the printer was not up to par. In a short period of time during my off hours I developed a different front-end that could sit on top of OctoPrint. The printer was able to be sold again and I got offered a software engineering job. Gina was so helpful on IRC, she often pushed me into Python documentation instead of solving the problem for me. We build the first plugins for OctoPrint at that time. The plug-in is still running on many printers in the wild.
I have huge respect for Gina and OctoPrint, being able to make your opensource project your job.
Klipper is a better choice in almost every way. It actually uses the CPU of your pi to improve the print, as opposed to Octoprint which basically just spits the gcode straight over to the microcontroller.
Upgrading to Klipper has been the second best upgrade I've made to my Ender3, with the best being a main board with silent stepping.
I think what I'll do instead is get a good coreXY printer which runs klipper natively (like the Voron).
But I think I really want is a tool changing printer a la the prusa xl. Prusa tends to do a lot of up front engineering that you just don't see. Plus the support I've got from them has been just fantastic.
I feel like with the likes of the Bambu(sp?) X1 and their fancy shmancy lidar sensor, it's only a matter of time before Prusa is going to need to push that into their printers. E.g. the lidar could show width, heighth, and any stringing from the filaments -- ideally making it easier to determine the specs for a new filament.
maybe i could get another used prusa somewhere…
How does it improve the print vs just sending gcode? My main pc is whats slicing and dicing and creating the gcode. How is the Klipper improving that?
Supposedly klipper is able to adjust for things like ringing or ghosting as well, where the frame wobbles a bit after the head moves.
I'm sure there's others, but that strikes me as the most important one at the moment.
Of note of course is that some of this is theoretically possible via OctoPrint as well.
There was a time we used RRF's DWC as an interface for Klipper too: https://github.com/Stephan3/dwc2-for-klipper-socket
It ends up meaning quicker, better quality prints. Input shaping and resonance compensation make a world of difference when printing quickly.
I also have a bltouch on my ender3; I found the bed leveling procedure with the bltouch to be way easier and more precise with Klipper.
1. https://www.3dprintingbuff.com/what-are-the-benefits-of-klip...
It also has a much better and more powerful configuration system. So for example if you want to edit the menu on the screen of the printer, you can, and it doesn't require a recompile.
Using Octoprint reminds me of maintaining a bloated Wordpress + jQuery blob website, and then someone shows you a snappy React version running on a cached edge provider. Night and day difference.
Klipper and Klipper based UIs are making huge strides. They are just so responsive and capable.
If the two are unplugged, the print stops immediately.
2) You run Klipper's server software ("Klippy host") on a Raspberry Pi (or other single-board computer). Klipper provides a JSON RPC API for communicating with your printer, without having to worry about serial baud rates or other low-level details. https://github.com/Klipper3d/klipper/blob/master/docs/API_Se...
3) You must connect Klipper server (Pi) to the microcontroller running Klipper firmware.
I couldn't find a list of supported boards, but you can see all the usual suspects here (stm32, rp2040, etc). https://github.com/Klipper3d/klipper/tree/master/src
Klipper also provides the ability to use your Raspberry Pi as a 2nd controller if your 3D printer's microcontroller doesn't have enough pin-outs to support your ha https://www.klipper3d.org/RPi_microcontroller.html?h=micro
4) Mainsail is a front-end webapp that talks to Moonraker, which is a back-end app that manages Files/Gcode/Print Job via HTTP, MQTT, and JSON RPC. Moonraker communicates with "Klippy Host" via JSON RPC. https://github.com/mainsail-crew/mainsail https://moonraker.readthedocs.io/en/latest/
Hope this helps! It's a wild world out there.
Octoprint is for job management/monitoring and is SUPER extensible. It gives you a web interface/camera view/manual control of the printer. You can do things like install a slicer plugin so you can drop an .stl file into the browser then it will slice and print.
Klipper is more like printer firmware. It's lower level than Octoprint.
The two can be used together.
As an aside, I've been using combo of a container running xfce, cura, plus a vnc server and another container running guacamole, all on a proxmox host as a stand in as a web slicer.
You can use Klipper firmware with OctoPrint: https://www.klipper3d.org/Installation.html#configuring-octo...
I agree that Klipper's features are excellent! The resonance compensation is most interesting to me. I'm someone who is deeply invested in algorithmically grading/estimating print quality. If you're reading this and want to learn more about how Klipper improves prints, check out Klipper's kinematics doc: https://www.klipper3d.org/Kinematics.html
Switching out the entire Firmware, which is what you need to do to use Klipper is an entirely different thing than adding a nice web UI in front of your existing 3D printer.
The author of OctoPrint also said that she tried at some point to convince people to define a binary G-Code format, but apparently that went really badly. A more efficient format for transferring the data to the 3D printers would help to avoid the problems OctoPrint has to fight to get reasonable performance when printing. But it does not seem feasible to get the manufacturers and firmware writers to agree on anything there.
[1] https://www.whitehouse.gov/briefing-room/statements-releases...
It is not _better_ than marlin. Its very user hostile and generally the support between upgrades is very poor. Any error and Klipper will abort your print, when in most cases it absolutely does not need to.
Basically its great for fast printing but you are nuts if you think the everyday 3d printer should run it in its current state.
It sucks that you can't use it on its own. But wow, the configuration and customization experience is great.
the main thing that stops me adopting it is the absolute inability to get a raspberry pi right now to run mainsail on. i've got alerts set up for stock on plenty of sites, but they're basically like gold dust.
I personally use klipper together with ocotprint using octoklipper.
I wish there was more working together than this unnecessary hostility sometimes.
I ended up rolling my own Linux distribution (PrintNanny OS) to roll out over-the-air updates and share files/jobs/profiles across a mixed fleet of printer controller softwares (Moonraker API/Mainsail UI, Repetier, OctoPrint).
It looks like this runs entirely on a Raspberry Pi 4? That's pretty neat. As far as I know, Obico needs a significantly meatier computer.
The good: It's possible to apply a segmentation model and "mask" expected real-world shape based on a mask extracted from the 3D source files.
The bad: 3D segmentation proposals are expensive to calculate/reduce (imagine rendering a point cloud). The 2D masking experiments I ran were low signal / high noise compared to 2D bounding boxes.
The ugly: Your camera, printer, and slicer object rotation must all be very carefully calibrated and anchored.
I have ideas about how to use stereoscopic cameras to run an automatic calibration routine, but haven't had time to roll out experiments. If you're curious, I gave a talk about PrintNanny's print quality model [1].
Also yep, I run a TensorFlow Lite model and post-processing directly on the Pi. I'm actually working on a blog post about this now! [2]
Besides TensorFlow Lite, the key pieces of technology in the computer vision stack are gstreamer [3], gstreamer's Rust bindings [4], and nnstreamer [5].
[1] https://bit.ly/tf-everywhere-2021-print-nanny [2] https://twitter.com/grepLeigh/status/1553777548378587136 [3] https://gstreamer.freedesktop.org/ [4] https://crates.io/crates/gstreamer [5] https://github.com/nnstreamer/nnstreamer
Keep in mind that PrintNanny's video encoding and neural network pipelines are running on-device, so real-world results favor models that perform well when u8 quantized at 320p resolution. The constraints are part of the fun, but there is a bias towards techniques that retain signal when the model is compressed. Segmentation and depth models naturally lose fidelity in that scenario compared to a dead-simple CNN/SSD pumping out bounding box proposals.
Microphone input is on my experiment list, but I don't think I'll execute on this idea any time soon. I think the mechanical failure detection is "good enough" at the moment, so I'm now focused on stream-lining the experience of managing lots of printers.
Workflow automation (like printing shipping labels or batch QR code labels) and fleet management are at the top of my priority list. The AI is fun and flashy, but it turns out people just need a CRM for 3D printing.
When I was assessing options for over-the-air updates, I evaluated everything between Mender.io (completely managed update service) to building a Coreos distro with OsTree-based patch system. So far Swupdate has felt like the right trade-off between customization and ease-of-use - plus the trail I've walked down feels well-traversed.
[1] https://sbabic.github.io/swupdate/overview.html#double-copy [2] https://twitter.com/grepLeigh/status/1545564418502668289
At the end of the day, I removed the onboard chip that connected to the Creality cloud so I could plug in a raspberry pi with octoprint.
But on the other hand, suddenly I've got remote access, permissions, cameras, all sorts of plugins for timelapses and bed level monitoring and all sorts of things. It's generally a great trade-off.
I do wish it had better support for mobile devices. It's weirdly hard to get a Raspberry Pi at the moment, but a bunch of folks have an Android or iPhone a few generations back with a cracked screen or whatever that would do a great job. There are some options, like Octo4a, but they've got some rough edges.
https://pythonbytes.fm/episodes/show/289/textinator-is-comin...
I also turn my printer off when I'm not using it and OctoPrint's auto-reconnect doesn't work most of the time. If someone isn't paying attention and tries to connect while a print is running, it causes the printer to reboot, which isn't fun. So I largely leave it disconnected. I don't have a camera though. If I were making videos of my prints I'm sure I'd rely on OctoPrint more.
On the other hand, Octolapse is a lot of fun. But I went back to just using an SD card for important prints just because I value the recovery option.
There are a lot of small papercuts, like OctoPrint using `vcgencmd` to measure CPU throttling. `vcgencmd` is part of Raspberry Pi's userland. Not a big deal (aliased to another util). I've also added WebRTC-based streaming to my build.
The recommended way to use OctoPrint is the OctoPi image, which is based on Raspbian / Raspberry Pi OS. The OctoPi image includes extras like haproxy and mjpg streamer for HTTP-based JPEG frame stream. If you end up baking a RockPi image, here's the OctoPi root file system for reference: https://github.com/guysoft/OctoPi/tree/devel/src/modules/oct...
at this point the mere thought of setting up a sbc that isnt a raspberry pi is job security and frankly im not sure why. its not like the rasberry pi 1 days
If your operation expands and you want to chat about wrangling networked printer management software, shoot me an email leigh@printnanny.ai. I want to make it dead-simple to manage 10+ printers running a menagerie of software (OctoPrint, Moonraker/Mainsail) and firmwares (Marlin/Klipper). Happy to trade notes!
> I work full time on OctoPrint and can only continue thanks to funding by people like you. Give the button a click and learn how you can help!
If you can find some more cash, a Prusa MK3S or the newer Bambu Lab X1 or AnkerMake will provide more consistent, reliable quality.
On the other hand, I don’t think “snappy” is the adjective that best describes octoprint
OctoPrint - https://news.ycombinator.com/item?id=26415856 - March 2021 (108 comments)
Every time I try to find an excuse to buy one I mainly see gadget usages with limited real world necessity.
Any cool use cases for core life necessities?
Currently designing and printing protection for my racing bike shoes; those shimano cleads wear quickly when walking. I need to walk quite a bit before being on the street and also like to take a break somewhere at a restaurant. So I designed some tpu clead-protectors.
Also use my self designed kitchen-aid tool-hangers are used a lot. I have made hooks to hang the espresso machine filter holders on. Used daily. A pin to fix something in my car. A button for the piezo starter on my parents kitch hob. Handles, USB charger case + hangers for cables... parametric-configurable stand for plant pots. etc etc.
But you need some 3d cad skills. Downloading existing models and printing them does not offer that much. Im a developer who studied mechanical engineering :) I worked at Ultimaker as a developer. Worked on their digital factory, a cloud offering for their printers.
I’ve also printed jigs and router templates used in some minor woodworking projects.
Not super useful, but it’s pretty satisfying to have and idea, create it in TinkerCAD or Fusion, then see it materialize on the build plate.
I replaced a Hi-ho-cherry-o board game piece that got mistakenly thrown out.
I've made anti-tip brackets for furniture.
I made replacement nuts for a handed-down Fisher Price activity center.
I made a new encoder wheel for a Logitech force feedback joystick.
I made a sharpie egg plotter a few years ago. That's fun to pull out for Easter. I can run the same gcode files from previous years.
My half-decade hobby project has been to build a force feedback steering wheel from scratch. I started it before I got into 3D printing. Printing became my hobby for a few years, and last year I started over with primarily 3D printed components. I did some prototypes with cycloidal gearboxes, but it was a dead end. I designed a compact 2-stage planetary gearbox with an 80:1 reduction and printed it all out. I printed a bracket to mount all the electronics. Most recently, I printed a slick dashboard for it in wood PLA. It's pretty much done now, and looks pretty. It's a full size steering wheel, and can put out more torque than you would ever want.
Most recently, I printed out some custom play coins for my daughter's preschool. They have our dog's face on one side, and the school's name on the other.
My controller was a simple stepper motor and display is a DLP projector.
Might not support esoteric controllers and displays though.
I have a Prusa SL1S Speed and the network file management [1] is good enough for my personal use, but I've always wondered if there's a missed opportunity here.
[1] https://help.prusa3d.com/article/connecting-original-prusa-s...