What's new
VORON Design

Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members!

Project 7000: Voron 2.4 350mm - Magic Phoenix (MPX) Canbus/Tap Kit


Active member
The Machine


Background / The Kit:

Having finished my first Voron (build log here), it seems I have caught the bug! The main goal of that printer was to use the 0.2r1 to print all parts for a 2.4r2. The main goal of this printer is to aim for Serial #7000!

I researched for a few days, self-source vs kits and decided that a kit would be the best value for my own needs. Even adding on the options I wanted to a kit was cheaper than self-source for me. Although I really loved my Formbot 0.2r1 kit, I settled with a fully comprehensive kit from Magic Phoenix (MPX) as it ticked a few more boxes 1) Canbus and TAP included - plus all the boards and hardware, 2) Cheaper - living in a post-Brexit UK meant a huge bill for import tax. MPX had an option of slow shipping with taxes included. 3) Support - before I bought the kit, I was in regular contact with the owner on the official Voron Discord and their Discord to make sure my needs were met. I already had a 120mm V0.2, a 225mm CR6-SE so 350mm was the right size for me.

[V0.2r1 on top of shipping box]

Additional items I bought:
  • Galileo 2 kit from OneTwo3d
  • Hardware for THE FILTER
  • Hartk hardware - Pins mod and GE5C bearings
  • Stainless Steel MGN12 with medium pre-load
  • BTT Octopus Pro (Whilst the MPX kit contains M8Pv2+CB1, I wanted to have separate MCU and RPI 3b+ for better hardware / software support)
  • BTT PI TFT50
  • Meanwell PSU RS-25-5 (To power the RPI)
  • CNC Metal Tap (Vitalli design)
  • Rainbow BARF LEDs
  • Klipper Expander
  • Aukey PC-LM1E USB webcam
  • Stainless Steel MGN12 linear rail with medium pre-load

Last edited:
The Build
The Parts / Colour Choice

The Voron Colour Configurator was very helpful in visualising the final build colours, as was VoronDB. Eventually I settled on SUNLU ABS Black for the gantry/chain parts, eSUN ABS+ SkyBlue for the accent parts only (not for structural) and Polymaker Polylite ABS Light Grey for internals. For external parts I used SUNLU ABS White and various mixtures of multi-filament Black/Blue/Grey.


Magic Phoenix has a comprehensive wiki with a print and build guide. I adapted their Google spreadsheet for my own needs, meticulously tracking everything (files, colour, quantity, time etc) carefully due to the number of mods from the outset.


Setting the Voron 0.2 to work...


Last edited:
The MPX Kit

The Magic Pheonix Kit came extremely well packaged, with different custom-cut foam layers for each section of the build.




Hardware was labelled appropriately and everything was individually bagged




There were not many parts of the kit which I needed to replace, given the quality of the original BOM. I optionally ordered steel Y-backers and DiscoXXL lights from MPX directly.

Whilst the MPX kit comes with a BTT M8Pv2+CB1, I wanted to have separate a MCU and RPI 3b+ for better hardware / software support, as well as power-control. I wanted to use a DSI screen which made the CB1 obsolete, and I also may consider 48V in the future which pointed me towards an Octopus Pro. The price for the Raspberry Pi 3b+ had come down and I managed to snap one up from eBay for £20!

I already had a genuine Omron SSR purchased through Mouser. However, the Omron SSR supplied by MPX looked absolutely identical and did not appear counterfeit, much to my surprise.

The MPX kit comes with black linear rails in non-stainless steel with what felt like light-preload. I replaced the MGN12 with a stainless steel rail with medium-preload


Overall the quality of the kit is superb, considering the value. It is one of the cheapest kits on the market, especially with shipping inclusive of tax to UK. All components appear genuine, genuine Phaetus hotend, extrusions perfectly cut, no additional surplus parts (Canbus and Tap included), surplus of hardware. I couldn't be happier.

MagicPhoenix have their own Discord server, as well as their on channel on the official Voron Discord. They were highly responsive to any issue, small or large. They are light-years ahead of BTT support in this regard. There was a small minor issue of missing a chain-end piece, but this was shipped via rapid courier and arrived in a few days from China, at their expense. Excellent.
Last edited:
The Frame

I used a couple of machinist blocks and a kitchen worktop to square my frame build. The size of the 350mm was huge compared to my v0.2. It can easily swallow it's baby brother up..



I tested all the kit's black linear rails and found the 4x with the least preload for the Z rails. Following a 99.99% alcohol bath, I re-greased the carriers with Silverhook EP2 Lithium Grease. I found that greasing the BBs directly the most efficient method. The MPX carriers didn't come with a grease port and greasing the back through-hole gave me too much grease.


Attaching the Z-drives was simple. The tensioner mechanism is a brilliant bit of Voron design - simple yet effective. I elected to use MPX's electronics layout and placed the DIN rails as per their plan.



(yes that is CPAP tubing in the background)

Print Bed

Again quite straight forward as per manual. I used the standard Voron method to prevent bed warp (fixed 1 point, loose 3 points). I did research kinematic mounts, but found that Voron's standard method was more than good-enough. Whilst here, I added a few mods...

Bed Wagos

The MPX heater is a 800W unit which is pre-prepared and pre-soldered with a thermal fuse. I needed 6 Wago 221-412s for:
  • Heater ~
  • Heater ~
  • Earth
  • 24V for THE FILTER (centre and sides)
  • Ground for THE FILTER (centre)
  • Ground for THE FILTER (sides)

Flex Plate Stops

Invaluable in loading spring steel sheets. I ended up using M5 socket-head screws in the end for better rigidity. They are @1mm away from the bed to allow for plate expansion.

Nozzle Scrubber

Cheap version with sawn off brushes. I might change this to Bambu Labs style silicone ones, but this works fine for the time being.

(good example of harsh light issues)

THE FILTER - Centre and 2 Sides

Having a family meant that a filter was a must. In fact, I modified the original CAD to add another 0.2 layer for the accent pattern (3 layers instead of 2). The MPX kit came with GDStime blowers for a Nevermore. The side fans are dual-BB Winsinn ones. I decided to buy cheaper as these fans are not critical.

A small Wago mount let me consolidate 24v for all 3 modules and the two side module grounds.

The cheap POGO connectors I used (10mm) were too small for the original mounts. I crated some adapters so that I could fit them perfectly snug (Printables link).

AB Drives / Hartk Pins Mod

I wanted to use Hartk's pins mod and originally bought a 500mm x 5mm length stainless steel rod. I found this dremel cutting mount on Printables and went to work. However, despite printing in the ABS, the cutting mount could not tolerate the heat generated by the cutting friction. Even more frustratingly, having taken 30 minutes to cut one pin, the pin was too tight to fit. I then found out that commercial "pins kits" were 4.9 - 4.95mm so I ordered a kit. Lesson learnt, cutting stainless steel rods with a Dremel is no fun at all. Saving £5 was not worth the time and effort.



Y-Gantry Backers

The MPX kit was ordered with optional Y-gantry backers (steel in black) for an extra $10. Bargain. I didn't feel an obvious need for an X-backer given the vertical orientation of the X rail.


Hartk GE5C Mod

I used the slimmer mount of the Hartk GE5C Mod. Whilst the bearings were expensive, I did not want to run any risk of QGL issues.

The Gantry

To avoid issues with part strength, I used Beefy Z-Idlers (part of the Beefy Front Idlers pack). I had to order some more pins and at that point I realised how much of a hassle it would have been to self-source everything (respect to you all!).


As mentioned, Beefy Front Idlers (BFI) was deployed for the AB idlers. Instead of the standard faceplate, I used MapleLeafMaker's RGBFI with the original intention of running Neopixels in there. Whilst I think it would be just about possible to run 3-4x lengths of thin wiring in the gantry and Z-chain, I felt it would be too much of a tight fit near the idler bearing. Perhaps a project for a (very) lazy Sunday.


I used simple zip-ties to "hang" the gantry, findings the printed Z-lockers a bit too flimsy.


I replaced the MPX MGN12 black steel rail with a stainless steel one with medium-preload. YOUMETONG was recommended quite a lot in the Voron Discord as the best balance between cost/quality.


The Gantry mount on to the GE5C mod perfectly and I went through the usual squaring and de-racking guides. I eventually replaced the washes with these aluminium spacers (8mm diameter, 5mm hole, 3mm length).

IMG_1464.thumb.jpg.5a5e09bacef384eee7c24762ab642170.jpg IMG_1463.thumb.jpg.03a1cb9f7f0dabfea863d0d2c14d1254.jpg

With most of the gantry installed, I relocated the Z chain to below the gantry. Aesthetically this worked better for me, removing the awkward vertical Z-chain for a neater solution. The original Z-chain supplied in the MPC kit was too big for this purpose, with too large a bend-radius and too wide a channel. Instead I ordered a small bend-radius chain (R18, 10x11 open - matching the original XY chain spec).


I then placed my camera and a thermistor on the rear gantry, running through the Z-chain.

Voron TAP

For probing, the MPX kit comes with all the necessary hardware for a Voron TAP as standard. I initially printed all the parts out in ABS but elected to treated myself to a CNC part. I use 2x Magnets and 2x Screws for the configuration of the TAP, finding it a good balance between rigidity and movement. The CNC part really made the whole carriage super sturdy, with hardly any toolhead flex.



I noticed when using the CNC TAP, it hardly takes any vertical movement to trigger the optical switch. About 0.5-1.0mm before triggering. I'm not sure whether this is a good or a bad thing.

After using the TAP for a while, my conclusion is that it is very accurate. I'm getting reasonably good standard deviation on my PROBE_ACCURACY tests. However, meshing and QGL is slow. I use adaptive-meshing in my PRINT_START so I may consider swapping everything over to an Eddy sensor in the future.

Whilst I finally settled on a DragonBurner in my v0.2, I elected for a standard StealthBurner for this build. 1) I quite like the aesthetic, 2) I wanted to run KNOMI2 at the toolhead, 3) I will print mainly in ABS so am not too fussed about having jet-engine part cooling and 4) I have all the hardware ready to switch to CPAP using this muffler by Mammoth-FDM if I ever decide to print more PLA.

For the hotend, I ordered the Phaetus Rapido 2 via MPX directly as an upgrade option. In to this went a 0.4mm CHT nozzle.


In a surprising touch of quality, the MPX kit comes with dual ball bearing GDSTime fans throughout.


My extruder of choice was the Galileo 2, a drop-in replacement in the StealthBurner. I originally printed beta-release parts, later rebuilding with the final release-candidate STL/CAD parts.



The MPX kit also comes with BTT's SB2209 can board as standard. The squeeze was a bit tight and I eventually had to buy pre-crimped connectors to make the thermistor connection a bit more reliable. Trying to crimp 1.25 connectors was possibly the most traumatic thing of the toolhead build so I gave in! Thankfully the MPX kit included everything else pre-crimped (X-endstop and OptoTap PCB).


I added a 27mm RPi fan to the cover using this great mod. Power supply is 5V through the selectable PWM fan port of the SB2209 breakout board.


I settled on this fancier front plate and used Rainbow BARF for the logo light running the Klipper LED effects plugin. The KNOMI2 recently had a new mount published which seemed a bit more rigid. However, it was a total pain to fit and rubbed against the part-cooling fan. I had to increase the "inner diameter" of the mount by manually filing it down (CAD published but too cumbersome to edit for me).


Job done.

The MPX kit comes with CAN toolhead boards (BTT SB2209) and hardware (cable reliefs, cable braid, steel wire). The default build option from MPX is to connect the toolhead to the rear AB mount via a steel wire. After all, no one likes it floppy. For this, they have their own printed part, with supplied custom PCB for the y-endstop and an onboard SMD thermistor. I did consider this but doing a dry-fit with the gantry at maximum Z-height, I really did not fancy the umbilical rubbing the top panel. I also disliked the aesthetic of the wiring.


Instead, I elected to run the CAN cable via the exhaust with the filament tube, resulting in a cleaner aesthetic and better routing in my opinion...





Internally I used these parametric clips to route the filament and CANBUS cables together, with the CANBUS cable running through a braid (purely for bling).


For the back panel, I combined VEFACH with this exhaust remixed with an additional M12 mount for a CAN cable. This was run through this exhaust fan grill (which I modified to remove the thermistor port).



CANBUS Electronics

The BTT can cable was routed as shown. I modified these clips so that the panel can still be removed with clips in situ. The clips also route the filament sensor and the VEFACH mount cables.


This fed into a 4x2 Wago mount near the rear of the electronics bay, through this modified centre skirt, supplying 24v, GND, CAN-H and CAN-L.


This in turn was run directly to the Octopus Pro RJ11 CAN port in a custom twisted-pair loom (dark blue braid). This type of adapter was used.


The whole system is setup with Katapult and an automated update script for one-command flashing (my custom update-all.sh bash script)...

# --------------------------
# Full Update Script (MCU and Toolhead only)
# sh update-all.sh
# --------------------------
echo -e "\e[1;31m --- Stopping and Updating Klipper --- \e[0m"
sudo service klipper stop
cd ~/klipper
git pull

echo -e "\e[1;33m --- Building Octopus Klipper Firmware --- \e[0m"
make clean KCONFIG_CONFIG=config.octopus
make menuconfig KCONFIG_CONFIG=config.octopus
make KCONFIG_CONFIG=config.octopus

read -p "Octopus firmware built, please check above for any errors. Press [Enter] to continue flashing, or [Ctrl+C] to abort"

echo -e "\e[1;31m --- Flashing Octopus Firmware --- \e[0m"
python3 ~/katapult/scripts/flash_can.py -u 3dbe73805ca0
python3 ~/katapult/scripts/flash_can.py -d /dev/serial/by-id/usb-katapult_stm32f429xx_2A004E000551313133383438-if00

read -p "Octopus firmware flashed, please check above for any errors. Press [Enter] to continue, or [Ctrl+C] to abort"

echo -e "\e[1;33m --- Building Toolhead Klipper Firmware --- \e[0m"
make clean KCONFIG_CONFIG=config.toolhead
make menuconfig KCONFIG_CONFIG=config.toolhead
make KCONFIG_CONFIG=config.toolhead

read -p "Toolhead (SB2209) firmware built. Please check for errors. Press [Enter] to continue flashing or [CTRL+C] to abort"

echo -e "\e[1;31m --- Flashing Toolhead Firmware --- \e[0m"
python3 ~/katapult/scripts/flash_can.py -u b6819f9796d7

read -p "Toolhead firmware flashed, please check above for any errors. Press [Enter] to continue, or [Ctrl+C] to abort"

echo -e "\e[1;32m --- Restarting Klipper --- \e[0m"
sudo service klipper start
Last edited:

I really wished to keep the exhaust filter to run VEFACH. Unfortunately the MPX kit closes off the exhaust filter in their recommended print list / build. Thankfully I had a 12V 60mm high-RPM Delta fan from a couple of decades-old PC build. It sounds like an Airbus A380 taking off at 100% speed!

The VEFACH was easy to print and thankfully worked fine with my modified CAN-cable housing.



I customised a VEFACH config...

[gcode_macro _VEFACH]
variable_fan: 'VEFACH_Fan' # Name of fan
variable_fast: 0.4           # Default Fan speed fast
variable_slow: 0.2           # Default Fan speed slow
variable_timer: 600        # Default timer in seconds

[gcode_macro VEFACH_ON]
description: Turn on the VEFACH fan.
{% set vefachcfg = printer["gcode_macro _VEFACH"] %}
{% set SPEED = params.SPEED|default(vefachcfg.fast)|float %}

M118 Turning VEFACH ON ({SPEED*100}%)

[gcode_macro VEFACH_OFF]
description: Turn off the VEFACH fan.
{% set FAN = printer["gcode_macro _VEFACH"].fan %}

M118 Turning VEFACH OFF

[gcode_macro START_VEFACH_TIMER]
{% set vefachcfg = printer["gcode_macro _VEFACH"] %}
{% set TIME = params.TIME|default(vefachcfg.timer)|int %}

M118 Starting VEFACH Timer ({TIME}seconds)

[delayed_gcode STOP_VEFACH]

M118 Cancelling VEFACH Timer

with this in PRINT_END
# Turn on VEFACH if ABS bed
      {% if printer.heater_bed.target >= THRESHOLD %}            ; Continue only if target temp greater than threshold.
{% endif %}
THRESHOLD being called upon from a pre-set high bed temperature variable (i.e. ABS bed temp of 90C+).

This sets the VEFACH off at the end of the print with a delayed gcode to stop it after 10 minutes.

Filament Path

The pathing of the filament was through a BTT SFS v2.0 (later found to be quite an unreliable device, especially the 'smart encoder' part).



I'm blown away at how good this looks. I got the green light to start putting together my build list and will be using yours for inspiration. Amazing job.
  • Love
Reactions: Lik
congrats on V2.7000 🥂
your build is very well done. seeking inspiration for my trident build which is in progress.
Just checked out your build log, really clean documentation and loving the traffic light system!

I'm blown away at how good this looks. I got the green light to start putting together my build list and will be using yours for inspiration. Amazing job.
Really appreciate it. Took me a while to figure out the modifications I wanted and the aesthetics/colour choices.
The Electronics Bay

MPX documentation suggest their own wiring guide and electronics layout. This layout is different to Voron's official layout and LDO's layout, with the PSU mounted perpendicular across both DIN rails instead of parallel. They also helpfully supply din-mounted UK2.5 terminal blocks. Overall, I felt that the MPX layout was the neatest and most logical so I stuck with that. Additional Corner/T-piece cable trunking were printed (90% scale).





MCU / Host

Whilst the MPX kit came with a BTT M8Pv2 and CB1 host board, I went down the route of upgrading to BTT Octopus Pro (F429) with a RPi 3B+. I wanted the option of a possible future "upgrade" to 48v, liked the idea of using open-source Pi-OS instead of proprietary kernel builds, and wanted a DSI-screen.


I also added a (currently unused) BTT Relay to open the option of simple on/off via the RPi GPIO.


A Klipper Expander was added, supplying THE FILTER bed fans, the Disco XXL neopixel lighting and additional thermistors. A completely unnecessary add-on from a functionality point of view (the Octopus Pro board has enough IO ports). However, it enabled more convenient cable paths.


I added a DIN-mounted Wago 5V/GND distribution block for skirt lighting.



I added Winsinn 12V Sleeve Fans on both sides of the bay (in and out). Whilst the MPX kit came with GDSTime fans, I found them too loud and bulky (20mm vs 15mm). These are triggered in Klipper as controller-fans (i.e. on only when steppers/heaters are active), running 100% speed but on the 5V rail silently.


A 40mm RGB fan was used to cool the RPi 3B+ (a necessity, with the RPi running at 70-80C without) and a 92mm 12V fan (silently running on 5V) for the Octopus Pro.



Temperatures whilst printing (with chamber stabilising at 52-55C)...