{"id":13586216,"url":"https://github.com/Mrnt/OctoPrint-FlashForge","last_synced_at":"2025-04-07T14:34:01.154Z","repository":{"id":50646719,"uuid":"189740263","full_name":"Mrnt/OctoPrint-FlashForge","owner":"Mrnt","description":"OctoPrint plugin to support closed source printers from FlashForge, PowerSpec, Dremel","archived":false,"fork":false,"pushed_at":"2024-03-29T20:54:09.000Z","size":745,"stargazers_count":87,"open_issues_count":32,"forks_count":13,"subscribers_count":12,"default_branch":"master","last_synced_at":"2024-03-29T21:44:01.430Z","etag":null,"topics":["3d-printing","octoprint","octoprint-plugin"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Mrnt.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-06-01T14:09:20.000Z","updated_at":"2024-08-01T16:32:14.605Z","dependencies_parsed_at":"2022-09-22T01:10:55.321Z","dependency_job_id":"0bee25fb-fc31-4781-a234-b3615adfc49c","html_url":"https://github.com/Mrnt/OctoPrint-FlashForge","commit_stats":null,"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mrnt%2FOctoPrint-FlashForge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mrnt%2FOctoPrint-FlashForge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mrnt%2FOctoPrint-FlashForge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mrnt%2FOctoPrint-FlashForge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mrnt","download_url":"https://codeload.github.com/Mrnt/OctoPrint-FlashForge/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223285170,"owners_count":17119852,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d-printing","octoprint","octoprint-plugin"],"created_at":"2024-08-01T15:05:24.362Z","updated_at":"2024-11-06T04:31:15.571Z","avatar_url":"https://github.com/Mrnt.png","language":"Python","funding_links":["https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=S4TNWVKFLPL5C\u0026source=url"],"categories":["Python"],"sub_categories":[],"readme":"# OctoPrint-FlashForge\n\nAdds support to the [OctoPrint](https://octoprint.org) 3D printer web interface for communication with closed source\nprinters such as the:\n- FlashForge Creator Max, FlashForge Dreamer, FlashForge Dreamer NX, FlashForge Finder, FlashForge Finder II, FlashForge\nGuider II, FlashForge Guider IIs, FlashForge Inventor, FlashForge Ultra 2.0\n- PowerSpec Ultra 3DPrinter 2.0\n- Dremel Idea Builder 3D20, 3D40, 3D45\n\nAt the current time, plugin will only work with printers that support a connection to a host computer (eg RaspberryPi)\nvia a USB connection (using a USB type B connector on the printer).\n\n\nThese printers are not supported by [Octoprint-GPX](https://github.com/markwal/OctoPrint-GPX).  Octoprint-GPX works on\nolder printers such as the FlashForge Creator Pro and a few similar printers which use the GPX protocol.\n\n## March 9th 2022 - IMPORTANT PLEASE READ\n**Neither FlashForge or Dremel have provided details of the commands or protocol supported by the various models - almost \nall the work herein was done by reverse engineering the communication between FlashPrint and the two printers I had access \ntoo, trial and error, and subsequently spending many, many hours studying debug logs including those graciously provided by \nusers.** \n\n**However, this is ultimately a losing battle - every new device or firmware change by FlashForge can and has broken the limited \ncapabilities of this plugin. I have therefore made the decision not to spend more time on this plugin. I am grateful to the \nfew users that were generous enough to send me a donation and I hope that they will understand this decision.\nMoving forward, the best solution for FlashForge printers is to use a well documented, open source firmware such as Marlin, \nwhich will fully support OctoPrint, Cura, etc. I am working on converting my remaining FlashForge printer to use Marlin firmware\nso that I can focus on using it to its full potential.**\n\n\n## Current Capabilities\n\n- Automatically detect and connect to the above printers\n- Use Octoprint Control UI to:\n    - Set and monitor printer temperature\n    - Move extruder, bed*\n    - Turn fans on and off\n    - Extrude, retract*\n    - Set color of the enclosure light, turn it on/off\n- Upload a FlashPrint prepared .gx or .g file using the \"Upload to SD\" button which will immediately start a print (like\nFlashPrint), you should be able to pause, resume, cancel the print using the respective buttons.\n- Upload a Cura prepared .gcode file using the \"Upload to SD\" button or directly to the SD card from Cura (note that some \nCura generated g-code commands are not compatable with FlashForge printers, see\n[Wiki](https://github.com/Mrnt/OctoPrint-FlashForge/wiki) for details).\n- Print directly from within OctoPrint - i.e. using the \"Upload\" button to upload a file into OctoPrint (prepared using\nFlashPrint or another slicer) and then selecting file within OctoPrint. **Note: this is a new feature and there may be\nissues with reliability or even whether it will work at all on a given printer (it has only been tested on a PowerSpec\nUltra 3D, FlashForge Finder v1) - please tread carefully and provide detailed bug reports.**\n- Print directly from Cura via OctoPrint to SD card or direct (see warnings on previous 2 items).\n\n\n### Printer Compatibility\n**IMPORTANT: This plugin uses a USB connection to communicate with the printer - if the printer cannot be connected \ndirectly to a computer via USB, then it will not work with this plugin.**\n\nShows current state of printer Compatibility for core OctoPrint functionality and will be updated as users provide\nfeedback.\n|Printer\t\t\t|Upload File to SD Card |Control Movement and Temperature\t|Print Directly From OctoPrint\t|\n|---\t\t\t\t|---\t\t\t\t\t|---\t\t\t\t\t\t\t\t|---\t\t\t\t\t\t\t|\n|Adventurer 4 \u003cbr\u003e**Not supported** *(no USB to host port)*|-|-|-|\n|Adventurer 3 \u003cbr\u003e**Not supported** *(no USB to host port)*|-|-|-|\n|Adventurer 3C \u003cbr\u003e**Not supported** *(no USB to host port)*|-|-|-|\n|Adventurer 3 \u003cbr\u003e**Not supported** *(no USB to host port)*|-|-|-|\n|Creator 3 \u003cbr\u003e**Not supported** *(no USB to host port)*|-|-|-|\n|Creator Max\t\t|Yes\t\t\t\t    |Yes\t\t\t\t\t\t\t\t|Yes, unreliably\t\t\t\t|\n|Creator Pro\t\t|No\t(Use GPX plugin)\t|No\t(Use GPX plugin)\t\t\t\t|No\t(Use GPX plugin)\t\t\t|\n|Creator Pro 2\t\t|No\t(Use GPX plugin)\t|Yes                \t\t\t\t|Yes (IDEX in development)\t\t|\n|Dreamer\t\t\t|Yes\t\t\t\t\t|?\t\t\t\t\t\t\t\t\t|?\t\t\t\t\t\t\t\t|\n|Dreamer NX\t\t\t|Yes\t\t\t\t\t|?\t\t\t\t\t\t\t\t\t|?\t\t\t\t\t\t\t\t|\n|Finder v1\t\t\t|Yes\t\t\t\t\t|Yes\t\t\t\t\t\t\t\t|Yes, unreliably\t\t\t\t|\n|Finder v2*\t\t\t|Yes\t\t\t\t\t|Temp - Yes, Movement - ?\t\t\t|?\t\t\t\t\t\t\t\t|\n|Explorer\t\t\t|Yes\t\t\t\t\t|?\t\t\t\t\t\t\t\t\t|?\t\t\t\t\t\t\t\t|\n|Guider\t\t\t\t|Yes\t\t\t\t\t|?\t\t\t\t\t\t\t\t\t|?\t\t\t\t\t\t\t\t|\n|Guider II*\t\t\t|Yes\t\t\t\t\t|Temp - Yes, Movement - ?\t\t\t|?\t\t\t\t\t\t\t\t|\n|Guider II S*\t\t|Yes\t\t\t\t\t|Temp - Yes, Movement - ?\t\t\t|?\t\t\t\t\t\t\t\t|\n|Inventor\t\t\t|Yes\t\t\t\t\t|?\t\t\t\t\t\t\t\t\t|?\t\t\t\t\t\t\t\t|\n|Inventor II\t\t|Yes\t\t\t\t\t|?\t\t\t\t\t\t\t\t\t|?\t\t\t\t\t\t\t\t|\n|Dremel 3D20\t\t|Yes\t\t\t\t\t|?\t\t\t\t\t\t\t\t\t|?\t\t\t\t\t\t\t\t|\n|Dremel 3D40**\t\t|?\t\t\t\t\t\t|?\t\t\t\t\t\t\t\t\t|?\t\t\t\t\t\t\t\t|\n|Dremel 3D45**\t\t|?\t\t\t\t\t\t|?\t\t\t\t\t\t\t\t\t|?\t\t\t\t\t\t\t\t|\n|PowerSpec Ultra 3d\t|Yes\t\t\t\t\t|Yes\t\t\t\t\t\t\t\t|Yes, unreliably\t\t\t\t|\n\n\\* May be issues with FlashForge Finder II, Guider II, Guider IIs - these printers do not support relative positioning\nso when you create your Printer Profile in OctoPrint you will need to go to the \"Axes\" tab and select \"G91 Not Supported\". \nIf you still experience issues when using the controls please report with debug log files (see below for how to enable \ndebugging).\n\n\\** Dremel 3D40, 3D45 seem to talk a little differently from the other printers and cannot be controlled directly. At the \npresent time upload to SD card is not working either.\n\n\n## Install\n\nInstall via the OctoPrint [Plugin Manager](https://docs.octoprint.org/en/master/bundledplugins/pluginmanager.html)\nby clicking \"Get More\" and entering \"FlashForge\" to search the Plugin Repository, or in the box \"...enter URL\" put:\n\n    https://github.com/Mrnt/OctoPrint-FlashForge/archive/master.zip\n\nthen click \"Install\".\n\nPlugin requires the libusb1 library: https://pypi.org/project/libusb1/\n which should install automatically if you install the plugin via the Octoprint UI.\n \nIf you are using Linux (eg you installed OctoPi on a Raspberry Pi), then after installing the plugin (and restarting \nOctoPrint), you will need to access the Pi using SSH to give the OctoPrint permissions to access the printer. Instructions \nfor adding a udev rule to allow configure permissions will appear in the \"Terminal\" tab of OctoPrint the first time you \nattempt to connect to your printer.\n\n## Configuration\n\nThe following steps should get you up and running on OctoPrint/OctoPi:\n\n### Settings\n\nThe plugin attempts to set default values for the following (so on a fresh install, no tweaking should be necessary):\n\n* Under OctoPrint \u003e Settings \u003e Serial Connection \u003e Intervals \u0026 Timeouts:\n    * Temperature Interval (polling) 5s When printing or idle\n    * Temperature Interval (polling) 2s When idle and a target temperature is set\n    * Temperature Interval (autoreport) 2s Autoreport interval to request from firmware\n\n* Under OctoPrint \u003e Settings \u003e Serial Connection \u003e Firmware \u0026 Protocol:\n    * Disable \"Enable automatic firmware detection\"\n    * Enable \"Always assume SD card is present\"\n    * Change \"Send a checksum with the command\" to \"Never\"\n    * Under \"Protocol fine tuning\" click \"Advanced\" and make sure the \"Hello\" command is set to `M601 S0`\n\n* Under OctoPrint \u003e Settings \u003e Serial Connection \u003e Behaviour:\n    * Un-check \"Attempt to abort any blocking heatups on cancel via M108.\"\n\n* Under OctoPrint \u003e Settings \u003e GCODE Scripts:\n    * Make sure all the script fields are empty (the default \"After print job is cancelled\" script generates commands\n    that causes the printer to hang). You can tweak this after you have the plugin working - use the G-code Dictionary\n    in the Wiki to help you.\n\n* Under OctoPrint \u003e Settings \u003e Printer Profiles:\nEdit the default printer profile or create a new one to reflect the number of extruders, build volume, etc.\n\n* Under Octoprint \u003e Settings \u003e Features:\n    * Edit \"Terminal Auto Uppercase Blacklist\" to display `M146` (to allow the control of the lights inside the printer).\n\n* Under OctoPrint \u003e Settings \u003e Plugin Manager:\nVerify that the FlashForge plugin is enabled\n\n### Connection\n\nUnder the main interface select \"Auto\" for \"Serial Port\".\n\n### Additional Information\n\nAdditional information on g-code supported by the printers, etc can be found in the\n[Wiki](https://github.com/Mrnt/OctoPrint-FlashForge/wiki).\n\nPlugin was inspired by work by [Noneus](https://github.com/Noneus) and information on these printers provided by users.\nIf you discover an issue, figured out how to make out how to make it work better or have an idea for improvement please\nraise it as an [issue](https://github.com/Mrnt/OctoPrint-FlashForge/issues).\n\n## Known Issues\n\n* Currently will only reliably print using the \"Upload to SD Card\" button. As described above, the print from OctoPrint\nfunctionality is in place but is currently only tested (and somewhat reliable) on PowerSpec Ultra 3D, FlashForge Finder\nv1.\n* Clicking any button in the \"Control\" tab after clicking a \"Home\" button may cause the printer to drop the connection\nif it has not finished \"homing\".\n* Cannot use any controls (besides Pause, Cancel) while a print is in progress. Temperatures, and printer status CAN be\nmonitored because these rely on  *unbuffered* g-code commands - see\n[G Code Commands](https://github.com/Mrnt/OctoPrint-FlashForge/wiki/G-Code-Reference) for a list of unbuffered commands\nthat should work via the Terminal tab when a print is in progress.\n\n## Troubleshooting\n\n* Verify the plugin is enabled (Settings \u003e Plugin Manager - \"FlashForge\" should be enabled), Octoprint may need to be\nrestarted.\nIf plugin does not appear in Plugin Manager list `libusb1` may need to be installed manually - current version of\nplugin should do this automatically.\n\n* Verify that you are not connected to the printer using FlashPrint, Dremel Digilab, etc via WiFi or Ethernet while also \ntrying to connect OctoPrint to the printer.\n\n* If the plugin fails to detect or connect to the printer check the Terminal tab in Octoprint for errors and verify\nthat you set up the Serial Connection settings as described in the Configuration section above.\n\n* If you are on OctoPi/Linux and see a USB permissions error then you will need to add a udev rule to allow access to\nthe printer - see error message in the Terminal tab of Octoprint for instructions.\n\n* Verify that the Serial Connection settings are set correctly, in particular the \"Send a checksum with the command\"\nsetting.\n\n* Turn on debug messages for the plugin (see Debugging below) to help troubleshoot connection issues.\n\n* After attempting to connect to the printer with debug messages turned on, review the log (Settings \u003e Logging,\noctoprint.log) for clues. If you cannot resolve it, create an\n[Issue](https://github.com/Mrnt/OctoPrint-FlashForge/issues) in github providing the platform (Windows/OctoPi/etc),\nhardware (PC/Raspberry Pi 3b/etc), Printer Model, Printer Firmware Version and upload the octoprint.log as a zip file.\n\n* If you have a printer such as Finder II, Guider II and find that the movement controls under the \"Control\" tab do not\nseem to work,\nthere is a setting under \"Settings\" \u003e \"Printer Profiles\" \u003e \"Axes\" where you can select G91 (relative positioning) not\nsupported.\n\n\n## Debugging\nTurn on debug messages for the plugin by going to Settings \u003e Logging and under \"Logging Levels\" set \n`octoprint.plugins.flashforge` to \"DEBUG\"\n\n![](https://github.com/Mrnt/OctoPrint-FlashForge/wiki/images/LoggingSettings.png)\n\n**IMPORTANT**: click the \"+\" sign next to it, then click \"Save\".\n\n\n## Support Further Development\n\nThis plugin was/is developed by painstakingly reverse engineering the communication\nbetween FlashPrint and FlashForge printers with much trial and error. If you find it\nuseful and/or want to see continued development, please consider making a donation.\n\n[More chocolate, more code](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=S4TNWVKFLPL5C\u0026source=url)\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMrnt%2FOctoPrint-FlashForge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FMrnt%2FOctoPrint-FlashForge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMrnt%2FOctoPrint-FlashForge/lists"}