Using the Monoprice Voxel (FlashForge Adventure 3) With Ultimaker Cura

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.

Update (January 2011): A YouTube user confirmed that these steps also work for the FlashForge Adventurer 3 Lite.


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.

Update (November 2021): I’m hearing from some people that after updating the printer to the latest firmware, that they get a “file format error” on the printer when using Cura sliced files. It seems like FlashForge have changed something (deliberate or otherwise) that is blocking Cura. I don’t have a solution to this right now, if you have more information, do get in contact. If this works for you do not update the printer.

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. If you’re feeling especially pleased, you can buy me a coffee.

Buy Me A Coffee

37 thoughts on “Using the Monoprice Voxel (FlashForge Adventure 3) With Ultimaker Cura

  1. Just for reference, for me on the latest Voxel firmware, this didn’t seem to properly deal with the temperature control, defaulting it to 235c no matter what. I’ll have to look into this a little more to find out why.


    1. For me, although the idea is great, it doesn’t work well. My printer stops every few minutes with a “Filament Error” and I have to continue it. After 5 or six times it gets a bit irksome.
      Not sure why this should be, although the Start gcode doesn’t match what FP produces, but even replacing Andy’s gcode with what FP inserts, I still get the filament error every few minutes, so I have given up.


  2. Hey, great guide, but I tried renaming the cura file from gcode to .g and it looks fine, but once on the usb and in the Monoprice Voxel, it says ‘file format error’ whenever I try to print. It’s a long shot, but any advice would save my bacon!


    1. Hm, interesting. I’ve not hit this problem myself so I’ll brain dump a few debugging steps and see if we can figure out what is going on:

      – Can you check the firmware version on the Voxel, please?
      – Can you check the version of Cura you used, please?
      – What Operating system / version did you use to slice it?
      – Have you tried another method for transferring the file, like FlashPrint or (*ahem* shameless plug for my own app) Adventurer Client?
      – Does your PC operating system hide the file extension from you and when you changed it to .g it actually ended up as File.gcode.g?
      – Can you open the .g file in a text editor and make sure the file looks reasonable – it should be a file of text a bit like this (in particular check that lines “M140 SXX T0” and “M104 SYYY T0” look good, where XX is the print bed temp and YYY is the extruder temp you used)

      ;Filament used: 4.64322m
      ;Layer height: 0.1
      ;Generated with Cura_SteamEngine 4.4.1
      M82 ;absolute extrusion mode
      ; Printer Start
      M118 X15.00 Y15.00 Z0.51 T0
      M140 S60 T0
      M104 S220 T0
      M104 S0 T1



      1. Great advice, I’m currently downloading your app now 😀 On the rest, I’ll get back to you, it’s been a wild day. Thank you!


  3. Hi Andy, thanks for your work on this. I am trying to get my printer working with Cura but the nozzle is always too low at the start of any Cura sliced file. I have made a detailed post on reddit with the steps I have taken – and I hope you don’t mind I have linked to your blog here as well as your Adventurer Client as I could not find these referenced elsewhere on reddit and felt it would benefit the community. The post is here – – if you care to take a look.


  4. Hi Andy,

    Thanks for the write up. I used your app to transfer a benchy file to my Adventurer 3 and it worked amazing.

    I did encounter a problem with the print though. About 40 minutes into the print, using a Cura sliced model, I get a generic filament error. I’ve tried checking for blockages, and can’t find any. Tried checking the spool movement, and it seems fine. Inspected the filament for inconsistencies and it also looks fine.

    I then switched back to a Flashprint slice, and it printed fine, with no error.

    Thinking it may have been an anomaly I went back to the Cura slice, and it errored in the exact same position as the first time.

    I’m new to this, so my troubleshooting knowledge is limited, would you happen to have any ideas on how to trouble shoot why the Cura slice based on your tutorial could be producing an error?

    Regards! and Thank you!


    1. I’ve not seen this error myself, but interestingly you’re the second person to report an issue part way though printing a print. The discussion on that is here:

      The current line of thinking is that the newer printer firmware has a new 9-point calibration mode that needs to be recalled in the start G-code, if you used this calibration mode it might be worth trying single point calibration and seeing if that made a difference.

      Otherwise, some generic debugging questions for you:
      – What version of Cura did you use
      – Wah is the printer Firmware version?
      – What settings did you use in Cura during slicing? Are the (roughly) equivalent to the ones in Flashprint?



      1. Thanks for the reply!

        Is there specific method of “choosing” the single point calibration? I had run a 9 point calibration previously.
        I just ran the single point again to “save” the new calibration settings and ran a benchy print again, and it failed in the same spot again.

        I’m using Cura 4.8
        Printer Software Version: 1.2.1

        Had the flashprint up at the same time and attempted to match as many settings as I could to the High quality setting of flashprint. And yet it still errored even though all the settings I could see were the same.

        Unless I have to somehow change the calibration outside of just running the single point manually.

        Only other thing i’m thinking of is possibly something to do with the material type in Cura? I used Generic PLA, not sure if that changes anything.

        I did notice that even though in Cura I had the printing temp set to 210, the printer was actually printing at 230+
        Not sure if that is a clue/issue.



      2. That should be enough to work around that issues, so its probably not related to the calibration. Are you willing to share the model & g-code files that are being problematic? They’ll probably need to be compared side by side to figure out if there’s anything odd in there.


      3. Thanks for sharing thoes. Comparing your g-code file to a few I generated from the same model, it looks like it is extruding very little material in each layer – much less than it seems to on its default settings.

        I was able to generate a very similar code file to you (I didn’t try printing it yet), by using Cura’s “normal” profile and changing the layer height to 0.1. Is possibly the same thing you did?

        I sliced the model using the Fine quality And it looks to be extruding quite a bit more material with the same 0.1mm layer height. My printer is busy at the moment (FlashForge, if you’re reading this and want to send me some test units, I’m listening), so I haven’t tried printing it myself but you can download It here if you want.



      4. Hmm that’s interesting.

        I believe I just used the default “Fine” 0.1mm profile, but then tweaked a few settings to be similar to Flashprint

        Which part of the gcode indicates how much is being extruded per layer? Maybe I can fiddle with it as well and see if I can self diagnose what the issue is.

        In the mean time, I’ll try print the model you provided.

        Thanks Andy!


      5. I’m looking at the “E” section of the G1 commands – which basically means, “move to this location while extruding this much material”, it seems like its consistently using less material.


      6. Okay, I’m trying to print the same file now. So far the skirt has printed okay, we’ll see if it fails later on.

        It sounds in your video like it was knocking quite a bit, was the extruder temp correct? Could there be a slight blockage? Might be worth hitting the load filament button and just pushing through a decent amount of plastic.


      7. Yeah a lot of people have reported that knocking/popping sound on the subreddit. And it seems to be that it is to do with the filament not coming through properly. I occasionally hear it in normal builds but never as much as in the video.

        “Might be worth hitting the load filament button and just pushing through a decent amount of plastic.”

        I actually printed a test cube immediately after to test the same thought, and it printed completely fine =( it seems like theres something in the cura file that is really not sitting right with my printer.


      8. It does rather, but I can’t imagine why it would be different. Do you have a Reddit post for this issue already? Might be worth getting some other ideas


      9. Hi Any,

        I checked both our Cura slices, and a Flashprint slice, and could not find a G29 or M420 code in any of the three.

        Happy to help 🙂


  5. Super helpful article and I really like the adventure client 🙂
    A couple of things I’ve noticed, when using Cura/Adventure I need to move the z-calibration up to -0.1mm as opposed to using FlashPrint where it needs to be -0.3mm. I haven’t found any settings in Cura that will allow for a z axis adjustment.

    Also would it be possible to update the adventure client to default to the last used IP?

    Thanks again!


    1. So glad you found it useful, thanks for getting in touch.

      You’re not the first person to notice this z-calibration anomaly, it was discussed on Reddit here:

      My understanding is that in the 9-point calibration added in newer firmware versions, the g-code needs a command in it for the printer to recall and use the calibration settings, else it uses its default. We’ve not isolated what that command is yet – some fiddling will be needed.

      Storing the last IP is already on the docket for the next update 🙂


  6. The information you give is very useful, thank you. I would like to ask you if you know what the maximum speed limit is for the Z axis of the Adventurer 3. In the Flashprint I see G1 Z 0.20 F420 while in Cura G1 Z 0.20 F600. I also tried the Prusaslicer and the speed in generated g_code for the Z axis is F4800 !!!. However, there is no Z axis speed adjustment in any Slicer.So I wonder if the firmware takes care of the max speed?


    1. I don’t know, sorry.

      If it’s pushed too far, I’d imagine either the firmware would clamp, or it would just move the stepper as fast as it could. I doubt this would harm the printer and seeing as its not extruding during a Z move it wouldn’t affect the print quality. Try it at your own risk, though, if in doubt I’d take FlashPrint’s numbers as it knows most about the printer.


  7. Andy, Have you been able to figure out anything with the 9-point leveling and printing too low? I too am seeing this issue.


    1. Hey. Unfortunately, I have’t had a chance to look into this beyond the original discussion. The best ‘solution’ so far is to disable 9-point calibration in the printer settings.

      I think the best avenue of investigation to get to the bottom of this is the figure out which G-Code commands need to be added to the start G-code by inspecting some known good slices from FlashPrint,


  8. Hey Andy

    I change file .g and transfer it with your adventure ( I like it) but it keep saying format error
    I even using gx and gcode to see if that would help but keep saying same thing. If u can help with this it be great.

    I have windows 10

    Flash forge Adventure 3 version 1.2.3
    Control Version 1.6
    Kernel version 1.0
    Library version 1.0

    Ultimaker Cura version 4.8.0


    1. Hi,

      Are you getting an error from the app, or the printer, or both? Can you check what version of the app you are using for the transfer, please?

      If the app is having errors, it should write a log file here, too – C:/Users//AppData/Roaming/adventurer-client which will be useful for knowing what’s happening.



  9. Hi Andy,

    thank you so much for this – this is just great!
    I managed to finally print with cura (4.8.0). My printer is an Adventurer 3 with Firmware 1.2.3.

    When slicing with cura there are a few things I noticed that are necessary with regards to the temperature settings: if in cura I use temperatures with decimals (such as 215.0), the printer does not understand that and just fails to heat. This is valid for both the nozzle as well as the bed.
    So once the print started with basically cold nozzle and bed, which obviously failed.

    I used the 1.5mm layer default preset in cura and after adjusting the tempertures to something w/o decimals (i.e. integers) for both the nozzle and the bed (e.g. 215 and 45, instead of 215.0 and 45.0) it printed fine.

    One further this is that I can confirm that the printer seems to heat to an offset of approx. +7°C (for my printer), i.e. the 215° set in cura result in 222° while printing.

    Last thing: I had to reduce the flow rate to 90% to get the right amount of filament extruded. This is also a “problem” in FlashPrint, where the printer has a default of 109% as a flow rate, which I had to reduce to approx. 100%. If I don’t do that the prints get a bit “chuky” and wall thicknesses are not very precise.

    Now I have to finetune cura, I guess, as the print layers look very irregular. So cura works, but the results as of now with FlashPrint are better. I’d highly appreciate anyone sharing his cura print config/settings to get better results.


  10. Hi Andy. We’re looking into getting a proper printer profile for the Adventurer 3 in Cura over at github:

    Feel free to join in. I’m currently the tester, and another guy is doing the coding to get this thing to work.

    I also did a side-by-side comparison of a xyz-cube sliced in Flashprint and in Cura with your start- and end gcode, and the Flashprint one comes out much nicer, sadly. If you want to help out, just jump into the discussion boards over at github!


  11. Hi,
    I’m not much of a programmer or anything, but I was curious, does having ” ; Printer Start” and “; Printer End” in the beginning of the start and end code do anything? Are they just comments?

    Also is there a reason that the estimated print time on Cura is different/ much shorter than the actual print time on the printer (usually nearly twice as long as estimated)?

    Thanks in advance,


    1. Yeah, they’re just comments – the printer ignores them. Cura adds quite a bit of stuff to the top of the file before the Start G-code is added, just having the comments around it is handy when debugging.

      In my experience using this printer with Cura, its estimates are always a bit optimistic. I’ve not used it enough with other printers, though, to know how accurate Cura is normally. My guess is that Cura is summing up all the speeds & distances it tells the print head to move and the printer is running slower than expected by some error margin that builds up over longer print jobs.


  12. It seems like at the end of the print, it doesnt really return to home, but instead just slightly raises the print head and puts the bed forward. im not sure if this is intentional. I just feel like it might collide with some models


    1. It’s possible to add the code to move print head elsewhere at the end of the print. If I recall correctly, FlashPrint doesn’t do this? Unless you’ve enabled an experimental mode in Cura, the model will always print from the lowest to highest layers without backtracking. So when the head moves up at the end it will always be higher than the last layer / highest point, so collision should not be an issue.


  13. Why am I just finding this now? I tried the app and it worked fine in both monitoring the printer as well as sending a file to print. I’m using an ADV3 LITE. Firmware 1.1.6 I think it is.

    I thought I had set Ironing on for the top layer but I didn’t see it in action. Printed a 20mm XYZ cube and it came out fine. I’m a CURA NOOB, but it was as smooth as any I’ve printed and dimensionally it was perhaps 0.025mm better than any I have printed with Flashprint. All sides were within 0.1mm or less.

    Now I’ve got to start learning what I can do with CURA.


  14. Well I was the anonymous poster that managed to print a good 20mm calibration cube. But since then I’ve had nothing but issues with CURA. I even went back and uninstalled and reinstalled 4.8.0 and recreated my printer etc.. It seems to really just have issues with the code at some level or another and you think it’s past one issue and then it starts to misbehave at another spot. I don’t think you can just cut and paste start and stop codes and expect an Adventurer to just make great prints.

    It seems to me there’s a whole lot more information that should go into a printer definition file and extruder file etc., and then maybe there might be some progress. But with closed proprietary firmware I just don’t see a solution here.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.