Recently I bought a Monoprice Voxel (a rebranded FlashForge Adventurer 3) 3D printer, and I’ve spent the last couple of weeks getting to grips with it. I’m very impressed – it works well and I’ve had a lot of fun building parts of my projects.

One interesting this about the printer is that it comes with its own slicing software called FlashPrint. This seems to work quite well, slicing all the models I threw at it and sending them to the printer. However, I was curious if it was possible to use the printer with the Ultimaker Cura slicer, which has some more advanced features and is supported more widely by the community.

I did a load of research and found some interesting topics on reddit and Ultimaker forum, I also examined the .gx files produced by FlashPrint and thoes sent to the printer by PolarCloud. I’ve gathered all this together into a this guide for using Cura, but it stands on the shoulders of a whole bunch of other people in the community, so thanks to those people you really helped me figure all this out.


Every model I have printed in this way has worked well and I am very pleased. However, follow this guide at your own risk – If something bad happens to your printer, on your own head be it.


FlashPrint and the printer appear to use a custom file format for printing – .gx. This is identical to the .g file used by other printers but with some additional metadata at the top. I suspect this is the image of the model that’s shown while printing, as well as the print time estimation.

The printer is perfectly happy to print .gcode files, provided the file extension is changed to .g first. While printing a .g file the time estimation on the printer screen does not count down the remaining time, it counts up the elapsed time. Also instead of a small image of the model being shown, a generic icon is displayed.

Getting Cura

Firstly, you need to install the latest version of Cura from the Ulimaker website.

Adding a custom printer

  1. In Cura select Settings > Printer > Add Printer
  2. Select “Custom FFF Printer” and change the name to something meaningful
  1. On the machine settings, change the Height, Width and Depth to all be 150mm. Then tick the “Origin at Center” and “Heated Bed” settings.
  2. In the Start G-Code box, remove the text that is currently there and enter the following:
M118 X15.00 Y15.00 Z0.51 T0
M140 S{material_bed_temperature} T0
M104 S{material_print_temperature} T0
M104 S0 T1
M132 X Y Z A B
G1 Z50.00 F400
G161 X Y F3300
M7 T0
M6 T0
M907 X100 Y100 Z40 A100 B20
M108 T0
  1. In the End G-Code box, remove the text that is currently there and enter the following:
M140 S0
M104 S0 T0
G28 X Y
M132 X Y Z A B
  1. On the “Extruder 1” tab set the “Compatible material diameter” to 1.75mm
  1. Click “Next” to save your custom printer. You can now use Cura to slice your model as with any other printer.

Use The Sliced Model

Now that you’ve got your model into Cura and sliced with with your settings of choice, you need to get that onto the printer. To do that you have four options…

USB Stick

You can save the .gcode file from Cura onto a memory stick, move it to the USB port on the front of the printer and select the file from the build menu.

However, you must manually change the file extension from .gcode to .g or the printer will not see it. Unfortunately there’s no way to convince Cura to save it with the right extension – you’ll just end up with a .g.gcode file if you try.

With Adventurer Client

I recently released a little tool that allows you to quickly send files to the printer by dragging them into the app (no need to rename them as with FlashPrint). I’m still building it out with more functionality, but is available here now for both Windows and macOS.

With FlashPrint

If you rename the exported .gcode file to .g, you can simply open it with FlashPrint. This will allow you to print the file over the network. As this is an already sliced file, FlashPrint will not re-slice it – it will just send it to the printer.

[Advanced Users] With AdventurerClientDotNet

I wanted to know how files actually got transferred to the printer, so I spent some time sniffing the network traffic between FlashPrint and the printer. Then with the help of this command reference and DarkDiamondV’s comments on this thread I wrote a little library using C# and .NET core.

I’ve uploaded the source to GitHub here – its still a work in progress, it supports reading some information off the printer and transferring .gcode (no rename required) files from Cura.

A self contained build for Windows can be found on the releases tab – Simply run the .exe file and follow the prompts.

Using this method is obviously very experimental, so is probably best used only if you’re comfortable with digging into things when they don’t go to plan. I wrote it more as a interesting challenge as much as anything. Obviously, use this at your own risk :).


You can also follow this guide as a video, below.

Wrap Up

I’ve tested all of the above with the Monoprice Voxel, which should be the same as a FlashForge Adventurer 3, and possibly other FlashForge products, but as I do not have access to them right now, I’m not able to say with certainly.

If you do try this, and it works (or not) on your device, I’d love to hear your feedback or anything you learned along the way – leave a comment or tweet me.