| Next revision | Previous revision |
| pub:projects:3d_printers_and_3d_printing:flashforge_creator_3_pro [2026/03/27 16:08] – created admin | pub:projects:3d_printers_and_3d_printing:flashforge_creator_3_pro [2026/04/03 00:40] (current) – admin |
|---|
| |
| ===== Flashforge Creator 3 Pro - fan fix ===== | ===== Flashforge Creator 3 Pro - fan fix ===== |
| During various tests with different kind of filaments, some material would stick better to the build plate than other material. Most of the time ABS would stick very well, but PLA just didn't. Naturally one tries to change slicer settings, starts a new print to verify if the change made an improvement. In this iterative approach, one of the important settings for having PLA to stick to the printbed, is to let the cooling fan cool down the extruded material. I wasn't sure whether fans would spin at all, since these were hidden inside the printing enclosure and were hard to see. Furthermore, from the display status, fan information was not updated with actual fan rotating speed. | Did you ever try to turn on the left or right cooling fan at the Flashprint((The Slicer provided by Flashforge, currently at Version 5.8.7, [[https://www.flashforge.com/pages/software-flashprint]])) control panel and observed that only the right cooling fan actually spins? I stumbled upon this, contacted Flashforge customer support, but after many fruitless discussions, it was also clear that Flashforge wasn't interested to fix anything at all. |
| |
| What complicated matters even more was that with the official slicing software from Flashforge, Flashprint, there is a manual machine control window, which let one press buttons for "cooling fan control". Interestingly with this feature it did not seem to be possible to control the left fan: Regardless of pressing the button for starting the left or right cooling fan here, only the right fan would actually spin. This behaviour made me initially think that this was the reason, why PLA would not stick when printing with the left extruder. I contacted Flashforge customer support about this, but after many fruitless discussions with them, it was also clear that Flashforge wasn't willing to fix anything at this printer. | When testing with a gcode file((The printer uses a .gx format, which is similar to gcode but with an additional header at the top. Further info can be found here: [[https://github.com/slic3r/Slic3r/issues/4869]] and [[https://bkienzle.com/posts/converting-flashforge-file-format/]].)). |
| | |
| | This long article is about getting the left cooling fan to work, starting reverse engineering with Ghidra and patching the firmware and much more. |
| | |
| | So, I needed to verify if cool would only not spin at all. since these were hidden inside the printing enclosure and were hard to see. Furthermore, from the display status, fan information was not updated with actual fan rotating speed. |
| | |
| | What complicated matters even more was that with the official slicing software from Flashforge, Flashprint, there is a manual machine control window, which let one press buttons for "cooling fan control". Interestingly with this feature it did not seem to be possible to control the left fan: Regardless of pressing the button for starting the left or right cooling fan here, only the right fan would actually spin. This behaviour made me initially think that this was the reason, why PLA would not stick when printing with the left extruder. I |
| |
| So after spending more time on it, I found out that when printing from a file, both fans would actually work as expected. Measurements with an oscilloscope confirmed that for both fans, rotation speed was controlled with PWM (Something which did not work on a Creator Pro 2, for example. See [[https://github.com/moonglow/flashforge_fan_fix]] for more information.). At that point, I had already started to reverse engineer the printers' firmware, trying to understand why one fan did not spin with the manual control in Flashprint. And it took just a few more months to understand the binary and create a patch, which then fixed the left cooling fan control. | So after spending more time on it, I found out that when printing from a file, both fans would actually work as expected. Measurements with an oscilloscope confirmed that for both fans, rotation speed was controlled with PWM (Something which did not work on a Creator Pro 2, for example. See [[https://github.com/moonglow/flashforge_fan_fix]] for more information.). At that point, I had already started to reverse engineer the printers' firmware, trying to understand why one fan did not spin with the manual control in Flashprint. And it took just a few more months to understand the binary and create a patch, which then fixed the left cooling fan control. |
| |
| <columns 100% *100%*> | <columns 100% *100%*> |
| IMAGE1 | | {{pub:projects:3d_printers_and_3d_printing:20240531.ff_c3p_machine_control.png?direct&400|}} | |
| | | //Flashprint right and left "Cooling Fan Control"// | |
| </columns> | </columns> |
| |
| Please note the tiny little R and L character next to the fan symbol when clicking on the picture above. It is a mystery to me why Flashforge decided to place the button for the left cooling fan on the right and the button for the right cooling fan on the left. This is something probably overlooked with the software testers at Flashforge. I suspect they never had a chance to test themselves. Maybe they did not have the right hardware in front of them. | Please note the tiny little R and L character next to the fan symbol. Somehow Flashforge decided to place the button for the left cooling fan on the //right// and the button for the right cooling fan on the //left//. |
| |
| To see how the buttons should work, please see the following two video clips: | To see how the buttons should work, please see the following two video clips: |
| |
| <columns 100% *100%*> | <columns 100% *100%*> |
| | {{VIDEO1|Software 1.4.0}} | {{VIDEO2|Software 1.4.1}} | | | {{pub:projects:3d_printers_and_3d_printing:sw_1.4.0.mp4.stab.mp4|Software 1.4.0}} | {{pub:projects:3d_printers_and_3d_printing:sw_1.4.1.mp4.stab.mp4|Software 1.4.1}} | |
| | //Flashprint: broken left "Cooling Fan Control"// | //Flashprint: fixed left "Cooling Fan Control"// | | | //Flashprint: broken left "Cooling Fan Control"// | //Flashprint: fixed left "Cooling Fan Control"// | |
| </columns> | </columns> |
| |
| <columns 100% *100%*> | <columns 100% *100%*> |
| IMAGE2 | | {{pub:projects:3d_printers_and_3d_printing:board.jpg?direct&400|}} | |
| | | //Flashforge Creator 3 Pro Mainboard// | |
| </columns> | </columns> |
| |
| |
| The main role of the Allwinner cpu, apart from providing a graphical user interface, is to prepare gcode commands from internal saved files and/or commands sent over the network to the printer and forward them to the motion controller. In the other direction, the motion controller sends data, like temperature information to the main cpu. This can be seen when connecting a serial cable to the corresponding RX/TX pins (J25) on the main board. | The main role of the Allwinner cpu, apart from providing a graphical user interface, is to prepare gcode commands from internal saved files and/or commands sent over the network to the printer and forward them to the motion controller. In the other direction, the motion controller sends data, like temperature information to the main cpu. This can be seen when connecting a serial cable to the corresponding RX/TX pins (J25) on the main board. |
| |
| <columns 100% *100%*> | <columns 100% *100%*> |
| IMAGE3 | | {{ :pub:projects:3d_printers_and_3d_printing:ghidra_first_steps_01.png?direct&200 |}} | {{ :pub:projects:3d_printers_and_3d_printing:ghidra_first_steps_02.png?direct&200 |}} | {{ :pub:projects:3d_printers_and_3d_printing:ghidra_first_steps_03.png?direct&200 |}} | {{ :pub:projects:3d_printers_and_3d_printing:ghidra_first_steps_04.png?direct&200 |}} | |
| | | //1. Ghidra startup Screen// | //2. Starting a new Project// | //3. Select Project Type// | //4. Select Project Location// | |
| </columns> | </columns> |
| |
| |
| <columns 100% *100%*> | <columns 100% *100%*> |
| IMAGE4 | | {{ :pub:projects:3d_printers_and_3d_printing:ghidra_first_steps_05.png?direct&200 |}} | {{ :pub:projects:3d_printers_and_3d_printing:ghidra_first_steps_06.png?direct&200 |}} | {{ :pub:projects:3d_printers_and_3d_printing:ghidra_first_steps_07.png?direct&200 |}} | {{ :pub:projects:3d_printers_and_3d_printing:ghidra_first_steps_08.png?direct&200 |}} | |
| | | //5. Projects List// | //6. Import File...// | //7. Ready for Analysis// | //8. Analysis Options// | |
| </columns> | </columns> |
| |
| |
| <columns 100% *100%*> | <columns 100% *100%*> |
| IMAGE5 | | {{ :pub:projects:3d_printers_and_3d_printing:ghidra_first_steps_09.png?direct&300 |}} | {{ :pub:projects:3d_printers_and_3d_printing:ghidra_first_steps_10.png?direct&500 |}} | |
| | | //9. Import Results Summary// | //10. CodeBrowser// | |
| </columns> | </columns> |
| |