Original post March 2019
The move to running my 3D printer through
Octoprint running on a
Raspberry Pi did solve one problem I was having of the printer killing SD cards at regular intervals.
There was a downside however in that though the serial communication between the Raspberry Pi and the printer is nominally at 115,000 baud the handshaking when sending G-code (those are the instructions for positioning the print head and extruding filament) relies on the printer sending back the string 'OK' before the next code can be sent. This drops the actual speed significantly to about what a touch typist could manage. Print times increased by 100% or more.
Enter
Klipper! This is a two part software system. A host programme runs alongside Octoprint on the Raspberry Pi and carries out pre-processing of the G-code to send to the printer. On the printer a custom Klipper firmware replaces the standard
Marlin firmware. As the host programme is doing more of the calculations (the Pi being much more powerful than the
ATmega1284 built into the printer) and leaving the printer processor as just a motor and display control unit this speeds things up.
This move did speed up printing towards what was possible using SD cards plugged into the printer while still allowing me to monitor the print progress from elsewhere. Then I stumbled on a simple 2 line option in the Klipper configuration file that allowed the Pi to act a virtual SD Card. Now my printing is back to the original speed (and with testing could possibly be higher as Klipper can control motors faster), I won't have anymore broken SD cards and I learnt some
Python into the bargain.
UPDATE 2 April 2019
While working well for normal printing there are a couple of 'Gochas' with Klipper - the one that just got me is the lack of support for the M600 (change filament) G-code which has a couple of uses, with a filament sensor lets you reload if you run out and the main one to let you change colour for text effects or layers. Klipper does not do that and despite several requests the main developer does not see it as a worthwhile activity (for him). At the moment I'll live with the limitation but if I need the M600 feature I'll have to ditch Klipper, re-install a clean Octoprint installation and re-flash the printer firmware.
Update August 2019
Finally worked out how to implement M600 for filament change - as the main developer has added it but finding it and how to set it up took a little searching.