Towards the end of 2022 I swapped two of our Prusas in the print farm out for a Voron 2.4R2 300mm LDO kit. Here’s my ownership experience to date.
The initial build used the following:
- Stock Omron probe
- Pins mod
- Rapido hotend
- Bondtech LGX Lite extruder
- Titanium gantry backers
- Kinematic bed mounts
- LDO 10mm thick bed – default for their 2.4R2 kits
- Separate 5V PSU for the Pi
- LDO Hartk breakout board
- Rama idlers
- Nevermore filter – standard with the LDO kit
The Octopus pin chart helped. After some tweaking via the tuning guide and then using the great PIF profiles I found I could get prints done in about 30% of the time it would take the Prusas, so I was very pleased.
Initial resonance graphs:


390 print hours
One of the hotend heater wires in the umbilical broke and I tore it all down to go CANbus, and make a few other changes while I was there:
- CANbus with EBB36, mounted to the LGX Lite with one of these mounts. Using this as a starting config.
- Umbilical
- Euclid, thanks to the EBB36 not having any 24v for the probe without mucking around
- BTT Smart Filament Sensor
- Twin fan exhaust setup
- X endstop relocated to toolhead – the stock STLs have a place for it. Hooked up to PB6
- Y endstop relocated to rear gantry using these STLs
- FAN1/PE5 became the new exhaust fan header.
- Moved to a 12V PWM fan until the 24v ones arrive – FAN0/PE8 became the new hotend fan header.
- STOP0/PG6 became the tacho pin for the hotend fan.
- Hotend thermistor on PA3
24v fan arrived – it’s now on FAN1/PA0 with the tacho wire on PB7 NOTE:NOW PB5 @1763 hours. I went with the OD4010-24HB01A – 9.2 CFM (0.258m³/min) airflow and 0.200 in H2O (49.8 Pa) static pressure. 1.45W, ball bearing, 33.4dB.
530 hours
The Voron was taken offline briefly to install Noctua 60mm fans in place of the GDStime fans. They only move half as much air at 3k RPM but the GDStime fans were running at 60% power anyway – and the Noctua fans are vastly quieter. Jumper set to 12v for them.
Also replaced the USB cable between the Raspberry Pi and the Octopus MCU to see if it makes a difference to an odd issue (sporadic stuttering).
- Noctua front right fan – PD15, RPM pin PG13
- Noctua rear right fan – PD14, RPM pin PG12
- LED strip was moved to PA8
- Filter fan is now on PD12
The hotend RPM monitoring has paid off once already – a loose piece of filament was sucked into the hotend fan hub which jammed it. Ellis’ macros worked perfectly and the I received a Telegram message, print paused so I could remove the jam and the print was then able to continue. The Telegram aspect isn’t part of Ellis’ scripts, it’s from the Moonraker Telegram plugin.
550 hours
Frustrated with variable first layer squish, I installed the Klipper Z calibration plugin from here. It still varies by a frustrating degree so I am left with replacing the Z endstop switch to see whether that is the culprit or ditching the kinematic bed mounts (the bed shifts with <600gm force applied so won’t work with TAP unless something is modified) and going TAP. I have a kit on the way for that, and some Chainflex cable arrived too for the umbilical. There’s an odd problem where the toolhead pauses mid-movement randomly throughout the print and I’ll be interested to see whether that’s resolved with better wiring.
I figured out how to set up a Git backup of the config files… then found there’s a tutorial on that out there. Oh well!
714 hours
- Tap probe – PB9 for signal
- X Endstop – PB8/GND
- 2010 fan for EBB36 – PB3 for tacho pin
- Moved to Igus Chainflex CF140.07.04.UL (4 cores, 18AWG, screened, 8.5mm OD, PVC sheath – it was what was available in an appropriate length) for the umbilical
- Accidentally bought 16mm cable glands rather than 12mm so the standard STLs had to be modified
- Modified the A/B mount from here to take a 16mm thread and endstop. I was looking at this one but the other is a bit higher and allows for a bump stop on the right side of the gantry to be extended and thus adjust the rear trigger point.
- Pi camera installed using this mount.
- Printed these magnet panels to try.
Post-Tap the resonance graphs were not great on one axis…


Turns out I had reinstalled the Stealthburner incorrectly and the lower bolts weren’t actually in the heatset inserts. Fixed that, and:


Fitted shaper ‘zv’ frequency = 53.6 Hz (vibrations = 2.9%,
smoothing ~= 0.060)
To avoid too much smoothing with ‘zv’, suggested max_accel <= 11200 mm/sec^2
Fitted shaper ‘mv’ frequency = 53.0 Hz (vibrations = 0.0%, smoothing ~= 0.073)
To avoid too much smoothing with ‘mv’, suggested max_accel <= 8300 mm/sec^2
Fitted shaper ‘ei’ frequency = 56.4 Hz (vibrations = 0.0%, smoothing ~= 0.101)
To avoid too much smoothing with ‘ei’, suggested max_accel <= 5900 mm/sec^2
Fitted shaper ‘hump_ei’ frequency = 80.2 Hz (vibrations = 0.0%, smoothing ~= 0.084)
To avoid too much smoothing with ‘hump_ei’, suggested max_accel <= 7200 mm/sec^2
Fitted shaper ‘hump_ei’ frequency = 96.8 Hz (vibrations = 0.0%, smoothing ~= 0.087)
To avoid too much smoothing with ‘hump_ei’, suggested max_accel <= 6900 mm/sec^2
Recommended shaper is mzv @ 53.0 Hz
Fitted shaper ‘zv’ frequency = 38.4 Hz (vibrations = 1.3%, smoothing
~= 0.108)
To avoid too much smoothing with ‘zv’, suggested max_accel <= 5700 mm/sec^2
Fitted shaper ‘mzv’ frequency = 39.0 Hz (vibrations = 0.0%,
smoothing ~= 0.134)
To avoid too much smoothing with ‘mzv’, suggested max_accel <= 4500 mm/sec^2
Fitted shaper ‘ei’ frequency = 46.6 Hz (vibrations = 0.0%, smoothing ~= 0.148)
To avoid too much smoothing with ‘ei’, suggested max_accel <= 4000 mm/sec^2
Fitted shaper ‘hump_ei’ frequency = 58.0 Hz (vibrations = 0.0%, smoothing ~= 0.160)
To avoid too much smoothing with ‘2hump_ei’, suggested max_accel <= 3700 mm/sec^2
Fitted shaper ‘hump_ei’ frequency = 69.6 Hz (vibrations = 0.0%, smoothing ~= 0.169)
To avoid too much smoothing with ‘hump_ei’, suggested max_accel <= 3500 mm/sec^2
Recommended shaper is zv @ 38.4 Hz
So… MZV went from 15k to 11k on X and ZV went from 8100 to 5700. I didn’t have to change profiles to accomodate that – still using a slightly modified Ellis’ PIF profile.
753 hours
- Added Klipper Adaptive Meshing (not the purging part)
- Tap probe – fantastic results, very reliable so far and excellent first layer consistency
774 hours
Got the profiles dialed in (Pressure Advance via Ellis’ tool here) and the Voron is back to churning out products without any babying with stellar quality and at triple the rate of the Prusa Mk3S+/Bear frame/Bondtech BMG units we have. Very pleased with the output.
At this point the printer has put through 7,534.7 meters of PLA – about 22.65kg, or about 700gm a day.
860 hours
The belts were riding up and down post-Tap install – this was fixed by tweaking the Rama idler screws slightly which caused the belts to track true.
1032 hours
The original 0.4mm Phaetus plated copper nozzle was partially occluded so I swapped it out for a generic 0.4mm brass nozzle. Took less than 60 seconds and the printer was back in business. 10,548m of filament or approx. 31.72kg – 737gm a day.
1188 hours
I found the Fast Gyroid Infill github page which promises much faster gyroid infill rates… it works as advertised. Very pleased with that. I also set up variables so that Klipper turns Nevermore off and turns on the exhaust fans for PLA, and the reverse for ABS. I tried this as an initial speed for SQV and it’s working well:
SET_INFILL_SQV SQV=20
I also found reference on Reddit to the BTT filament runout sensor requiring large detection figures if it’s not solidly mounted, and mine is a little loose in the mount. So far I’m getting false runouts detected with detection figures of below about 100mm, which is far above the 7mm that it defaults to. Time to re-design the mount.
I also found the retraction calibration tool, which looks worth a try! I also found the Bondtech github with the newly released LGX LIte toolhead STLs.
1250 hours
Trying out these panel latches (6mm, to match 3mm foam + 3mm acrylic sheet) to make adding or removing panels easier. Not that I have had to do that for a while, but I’m sure it’ll make future maintenance easier.
Also printing this thermistor holding Z chain guide to add a chamber temp thermistor into.
Found a replacement LCD screen holder to replace the one I accidentally broke 1300 print hours ago here.
1763 hours
Got a fan RPM warning; the hotend fan was recording 0rpm despite spinning. Changed sensor ports to PB5 and it’s working again. No idea why PB7 stopped working. Took about twenty minutes to sort. While the printer was offline I checked my cabling for the Raspberry Pi camera and it was fine, so that isn’t why the camera doesn’t work… I ran raspi-config and enabled the camera, will reboot and see if that fixes it.
Update: Checked the crowsnest logs and saw “Error 127 occured on line 31” – ran sudo make install in ~/crowsnest/ and that fixed it right up after it installed a missing dependency. Using this camera mount with success.
Next time I have the back apart I’m going to put the Z chain underneath using this.
2021 hours
Enabled stealthchop on the Z motors to see if I can reduce the noise coming from them. X/Y are basically silent, where Z can be heard through two walls… will see how it goes. Longest print 19 hours 20 mins, ~23km/69kg of filament put through so far.
2084 hours
Stealthchop has cut down the noise substantially and there appears to be zero effect on print quality, so that’s a win. The BigTreeTech filament sensor had a scrap piece of filament jam it tonight which meant I had to pause a print, take the back off and clear it. Found a resonance holder here – may try that to help improve the graphs.
2485 hours
Changed nozzle for another cheap brass one. Wasn’t the problem. Printed fine at low flow rates. Had a look at the Capricorn tubing in the hotend and it has gone from 1.95mm ID to 2.15mm… which probably wasn’t the issue. Replaced it anyway.
2564 hours
Quite a few upgrades. I couldn’t figure out why the can0 network was refusing to come up, until I realised that I had not yet flashed Klipper onto the Octopus and that’s required before can0 appears.
- EBB36 replaced
- X/Y motors upgraded
- Bed thermistor replaced
New resonance graphs:


Auto speed:
AUTO SPEED found maximum acceleration after 188.85s
| X max: 89687
| Y max: 38640
| DIAG X max: 23171
| DIAG Y max: 22140
Recommended values:
| X max: 71750
| Y max: 30912
| DIAG X max: 18537
| DIAG Y max: 17712
Recommended acceleration: 17712
AUTO SPEED found recommended acceleration and velocity after 437.47s
| X max: a71750 v1380
| Y max: a30912 v503
| DIAG X max: a18537 v374
| DIAG Y max: a17712 v384
Recommended accel: 17712
Recommended velocity: 374
13:20
AUTO SPEED found maximum velocity after 248.61s
| X max: 1725
| Y max: 629
| DIAG X max: 468
| DIAG Y max: 480
Probe accuracy:
Tap mode detected
Running all tests
Test probe around the bed to see if there are issues with individual drives
Leveling
4…3…2…1…Done
min max first last … std count range drift
test …
1:corner 30samples (40, 260) 1.494592 1.519592 1.494592 1.519592 … 0.006835 30 0.0250 0.0250
2:corner 30samples (260, 260) 1.532092 1.544592 1.532092 1.544592 … 0.002979 30 0.0125 0.0125
3:corner 30samples (40, 40) 1.538342 1.553342 1.538342 1.553342 … 0.004049 30 0.0150 0.0150
4:corner 30samples (260, 40) 1.499592 1.514592 1.499592 1.514592 … 0.003482 30 0.0150 0.0150
[4 rows x 9 columns]——————————————————————————–
Take 20 probe_accuracy tests to check for repeatability
Test number: 20…19…18…17…16…15…14…13…12…11…10…9…8…7…6…5…4…3…2…1…Done
min max first last mean std count range drift
test
01: center 10samples 1.480842 1.488342 1.480842 1.488342 1.485717 0.002240 10 0.00750 0.00750
02: center 10samples 1.484592 1.489592 1.484592 1.488342 1.487842 0.001467 10 0.00500 0.00375
03: center 10samples 1.488342 1.492092 1.488342 1.490842 1.490342 0.001054 10 0.00375 0.00250
04: center 10samples 1.487092 1.489592 1.487092 1.489592 1.488717 0.001029 10 0.00250 0.00250
05: center 10samples 1.487092 1.490842 1.487092 1.490842 1.490092 0.001344 10 0.00375 0.00375
06: center 10samples 1.488342 1.490842 1.488342 1.490842 1.490342 0.000874 10 0.00250 0.00250
07: center 10samples 1.487092 1.494592 1.487092 1.494592 1.492217 0.002316 10 0.00750 0.00750
08: center 10samples 1.490842 1.497092 1.490842 1.494592 1.493092 0.002108 10 0.00625 0.00375
09: center 10samples 1.490842 1.493342 1.490842 1.493342 1.492467 0.001029 10 0.00250 0.00250
10: center 10samples 1.493342 1.498342 1.493342 1.497092 1.496092 0.001748 10 0.00500 0.00375
11: center 10samples 1.494592 1.498342 1.494592 1.497092 1.497217 0.001243 10 0.00375 0.00250
12: center 10samples 1.495842 1.498342 1.495842 1.498342 1.497342 0.000986 10 0.00250 0.00250
13: center 10samples 1.498342 1.499592 1.498342 1.498342 1.498967 0.000659 10 0.00125 0.00000
14: center 10samples 1.493342 1.499592 1.493342 1.499592 1.497967 0.001773 10 0.00625 0.00625
15: center 10samples 1.497092 1.500842 1.497092 1.500842 1.499717 0.001243 10 0.00375 0.00375
16: center 10samples 1.499592 1.502092 1.499592 1.500842 1.501092 0.000986 10 0.00250 0.00125
17: center 10samples 1.498342 1.499592 1.498342 1.499592 1.499467 0.000395 10 0.00125 0.00125
18: center 10samples 1.497092 1.502092 1.497092 1.502092 1.499967 0.001449 10 0.00500 0.00500
19: center 10samples 1.499592 1.503342 1.499592 1.502092 1.502467 0.001186 10 0.00375 0.00250
20: center 10samples 1.498342 1.500842 1.498342 1.500842 1.499967 0.000844 10 0.00250 0.00250
Your probe config uses median of 3 sample(s) over 20 tests
Below is the statistics on your median Z values, using different probe samples
mean min max std range sample_count
0 1.492530 1.480842 1.499592 0.005565 0.018750 1
1 1.493155 1.482092 1.500842 0.005483 0.018750 2
2 1.493780 1.483342 1.502092 0.005445 0.018750 3
3 1.494248 1.483967 1.502092 0.005321 0.018125 4
4 1.494654 1.484592 1.502092 0.005169 0.017500 5
5 1.494842 1.485217 1.502717 0.005087 0.017500 6
6 1.494905 1.485842 1.502092 0.004865 0.016250 7
7 1.494967 1.485842 1.502717 0.004969 0.016875 8
8 1.495092 1.485842 1.503342 0.005023 0.017500 9
9 1.495217 1.486467 1.502717 0.004841 0.016250 10
——————————————————————————–
Take 100 samples in a row to check for drift
min max first last mean std count range drift
test
center 100samples 1.498342 1.505842 1.498342 1.504592 1.503254 0.001551 100 0.0075 0.00625
Future ideas…
Klipper LED effects – https://github.com/julianschill/klipper-led_effect
Links
Links to sort
- https://maz0r.github.io/klipper_canbus/toolhead/ebb36-42_v1.1.html
- https://github.com/Arksine/CanBoot
- https://github.com/rlaferla/Voron/blob/main/CAN_Bus_Guide.md
- https://github.com/akhamar/voron_canbus_octopus_sb2040
- https://github.com/mandryd/VoronUsers/tree/master/printer_mods/Long/Mantis_Dual_5015
- https://github.com/AndrewEllis93/Ellis-SuperSlicer-Profiles
- https://www.reddit.com/r/VORONDesign/comments/xoryn4/what_is_the_actual_proper_way_to_make_a_voron/