The firmware of the Flashforge Adventurer 3 seems to understand only a subset of typical marlin gcode:
- no G0 support (use G1 instead)
- if XYZ coordinates are combined within G1, the bed leveling mesh seems to be ignored (use two G1 (one for Z and one for XY) instead)
- M140 does not support decimal point numbers (only e.g. S50 instead of S50.0)
- M104 does not support decimal point numbers (only e.g. S50 instead of S50.0)
- no relative E value support (cura produces absolute E values either way)
- a Z-Offset needs to be included in each Z coordinate if required (use cura Z-Offset plugin and tick "extensive z-offset processing")
-> I've created a bash script to convert cura gcode to flashforge gcode. I'm not sure I've covered all edge cases, but it seems to work.
Update: I've done more extensive testing on Linear Advance and the Adv3 definitely doesn't support it. I did calibration tests where the Kf values were only set at the beginning of the print job, doing each calibration line as a separate print job. I tried Kf values for new 0.0 ->2.0 and old 0.0 -> 200.0 values. None of these showed any differences in the output.
I've also noticed that the particular combination of gcode commands it uses suggests the firmware is descended from MakerBot. I got this from the documentation of M132 on MakerBot, which seems to be the only firmware documented as supporting this particular use of that command, but also G161 and G162 support this theory. That means the other gcode documented as supported by that firmware at https://reprap.org/wiki/G-code probably also works, but there are clearly additional tweaks like M651 re-purposed (probably by defining the documented macro) to control the case fan, and M652 added for turning the case fan off. Note M900 is documented as not supported by MakerBot which matches with my testing.
I've been playing with OrcaSlicer for the Adv3 and its looking very promising, but it needs a few tweaks that I'm working on. I'll post more details when I have them ready.