FlashForge/AD5M_Series_Klipper

Questions

Opened this issue · 20 comments

Hi. Thanks for he effort to open up the firmware. This repo seems to be a slightly modified klipper 0.11 release. Can we re-push this with new commits on top, so maintainability with future klipper releases gets easier? It would allow to pull in upstream changes, and give visibility into changes from upstream that FlashForge did.

I ran a diff with the v0.11.0 release and copied over changes to this repository onto this branch. Feel free to take that as a base, or recreate your own.

This is the bulk of the changes (a lot of which look like debugging), The other changes are :

  • Deleted.github : Makes sense
  • Deleted .gitignore : Not needed
  • Present .'pyc' files, due to the removed .gitignore
  • The generated .bin and .hex files.
  • Updated README
  • Deleted Makefile : I do not understand why. This makes it harder to trust binaries.

Also, specific questions regarding this repo:

  • Will you upload the .cfg file used for the 5M? This doesn't seem any useful without it.
  • Why has the Makefile been removed? Can we get the build instructions please.
  • What are the steps to flash this firmware?

I hope that this is not just an effort to avoid gpl violation and nothing else wil happen.
If I'm not mistaken, changes to the code must be provided as well as instructions to make a functional build.

Yes, looks like they might not do much for this. Come on @FlashforgeOfficial , why lock down good hardware from people who actually want to use it? I'm sure sales would only increase with that.

Good news is their config files are present in the 2.3.7 firmware.
The config file

Also, it could be that FF doesn't intends to open up more functionality and this repo is very likely only for GPL compliance.

Luckily its almost stock Klipper (and we might be able to build and replace the klipper binaries with newer versions in their latest provided firmware).

There also seems to be active work in the community to set up external Mainsail+Moonraker: g992/flashforge-ad5m-5mpro-research#6

I'm not a lawyer, but if it don't have any proper way to build and no way to flash: is impossible to verify if the content of this repo is the actual firmware used by Flashforge.

I think that repo is only one minimal-effort to comply with the license. But, in the current state I'm almost sure that it still not complaint. Have one random "pre-compiled binary" is another proof of that. The lack of any scripts to build immediately violates the definition of "Corresponding Source", far I understand.

Removing the Makefile is a clear GPL violation: you cannot ever make reproducable builds from this source without it.

Luckily its almost stock Klipper

As a bonus the diff vs v0.11.0 (as already mentioned):

$ diff -r klipper/src AD5M_Series_Klipper/src

no changes there

diff -r klipper/klippy AD5M_Series_Klipper/klippy
Only in AD5M_Series_Klipper/klippy/chelper: c_helper.so
diff -r klipper/klippy/chelper/__init__.py AD5M_Series_Klipper/klippy/chelper/__init__.py
269,275c269,275
<         if check_build_code(srcfiles+ofiles+[__file__], destlib):
<             if check_gcc_option(SSE_FLAGS):
<                 cmd = "%s %s %s" % (GCC_CMD, SSE_FLAGS, COMPILE_ARGS)
<             else:
<                 cmd = "%s %s" % (GCC_CMD, COMPILE_ARGS)
<             logging.info("Building C code module %s", DEST_LIB)
<             do_build_code(cmd % (destlib, ' '.join(srcfiles)))
---
>        # if check_build_code(srcfiles+ofiles+[__file__], destlib):
>        #     if check_gcc_option(SSE_FLAGS):
>        #         cmd = "%s %s %s" % (GCC_CMD, SSE_FLAGS, COMPILE_ARGS)
>        #     else:
>        #         cmd = "%s %s" % (GCC_CMD, COMPILE_ARGS)
>        #     logging.info("Building C code module %s", DEST_LIB)
>        #     do_build_code(cmd % (destlib, ' '.join(srcfiles)))
Only in AD5M_Series_Klipper/klippy/chelper: __pycache__
diff -r klipper/klippy/chelper/stepcompress.c AD5M_Series_Klipper/klippy/chelper/stepcompress.c
29c29
< #define QUEUE_START_SIZE 1024
---
> #define QUEUE_START_SIZE 2048
Only in AD5M_Series_Klipper/klippy/extras: bus.pyc
Only in AD5M_Series_Klipper/klippy/extras/display: __pycache__
Only in AD5M_Series_Klipper/klippy/extras: ds18b20.pyc
Only in AD5M_Series_Klipper/klippy/extras: fan.pyc
Only in AD5M_Series_Klipper/klippy/extras: __pycache__
diff -r klipper/klippy/extras/tmc.py AD5M_Series_Klipper/klippy/extras/tmc.py
327,329c327,329
<             did_reset = self.echeck_helper.start_checks()
<             if did_reset:
<                 self.mcu_phase_offset = None
---
>             #did_reset = self.echeck_helper.start_checks()
>             #if did_reset:
>             #    self.mcu_phase_offset = None
diff -r klipper/klippy/extras/virtual_sdcard.py AD5M_Series_Klipper/klippy/extras/virtual_sdcard.py
8c8
< VALID_GCODE_EXTS = ['gcode', 'g', 'gco']
---
> VALID_GCODE_EXTS = ['gcode', 'g', 'gco','gx']
177,178c177,178
<             if fname not in flist:
<                 fname = files_by_lower[fname.lower()]
---
>             #if fname not in flist:
>                 #fname = files_by_lower[fname.lower()]
180c180
<             f = io.open(fname, 'r', newline='')
---
>             f = io.open(fname, 'r', errors='ignore', newline='')
Only in AD5M_Series_Klipper/klippy/kinematics: __pycache__
diff -r klipper/klippy/mcu.py AD5M_Series_Klipper/klippy/mcu.py
744a745,749
>         move_msg = "My Configured MCU '%s' (%d moves)" % (self._name, move_count)
>         logging.info(move_msg)
>         log_info = self._log_info() + "\n" + move_msg
>         self._printer.set_rollover_info(self._name, log_info, log=False)
>
Only in AD5M_Series_Klipper/klippy: mcu.pyc
Only in AD5M_Series_Klipper/klippy: pins.pyc
diff -r klipper/klippy/queuelogger.py AD5M_Series_Klipper/klippy/queuelogger.py
27c27
<             self, filename, when='midnight', backupCount=5)
---
>             self, filename, when='h', interval=4, backupCount=6)

So it's stock (if this version is actually what runs on the device).

Without any way to officially get on the linux machine (shouldn't be too hard, sunxi is not known for hardening, only GPL violations), then we could try it out. I'm getting mine later this week, we shall see how long it takes. Someone already did it, ignore my rambelings.

@FlashforgeOfficial - Please stop it with the half-measures. Lean into the open source community. Just focus on what you do well--making solid 3D printers at a great price. Keep the source available and buildable. Give us the ability to flash firmware without the OTA crap.

Let your users help you make your hardware better!

@FlashforgeOfficial Please make a proper release of Klipper, you would honestly sell WAY more printers if you unlock this amazing hardware to the community

@jtenniswood is right @FlashforgeOfficial.

Release full Klipper support. You have put together a great piece of Hardware, and your quick change nozzle feature is fantastic. You risk falling behind other companies, like Creality, if you continue to avoid releasing Klipper (ex. the new Phrozen Arco kickstarter is openly advertizing Klipper as a marketing selling point)

Your 5M series could easily become the Ender 3 of CoreXY machines at the $399/299 discounted price. Think of how many people pick up the Ender as a starting point for price alone on microcenter deals. However, the real thing keeping the Ender selling is the modification community surrounding the Ender 3. If you release Klipper imagine the modification community interest people will have. Please don't miss the opportunity.

If you release Klipper, here are a few points I miss from my Klipper modded Ender 3... you could make a video showing the new expanded capaiblities of the machines with Klipper unlocked:

  1. Adaptive bed mesh leveling
  2. Adaptive purge line before print
  3. custom start g-code (ex. heat bed, wait 5min, level bed)
  4. timelapse support for other cameras (supporting modification community)
  5. PID tuning
  6. web-interface (easy to see status from mobile phone)

中文 below


您已经组装了一台出色的硬件,您的快速更换喷嘴功能非常棒。如果您继续不发布 Klipper(例如,新的 Phrozen Arco 众筹项目公开宣传 Klipper 作为营销卖点),您将面临被其他公司(如 Creality)超越的风险。

您的 5M 系列机器很容易成为 CoreXY 机器中的 Ender 3,售价为 399/299 美元。想象一下,有多少人仅因价格而选择 Ender 作为 Micro Center 交易的起点。然而,真正让 Ender 畅销的是围绕 Ender 3 的修改社区。如果您发布 Klipper,想象一下修改社区的兴趣会有多大。请不要错过这个机会。

如果您发布 Klipper,以下是我从我的 Klipper 改装的 Ender 3 中所遗漏的一些要点… 您可以制作一个视频,展示配备 Klipper 后机器的新扩展功能:

  1. 自适应床面网格校准
  2. 打印前自适应净化线
  3. 自定义启动 G-Code(例如,加热床,等待 5 分钟,校准床面)
  4. 支持其他相机的延时摄影(支持修改社区)
  5. PID 调整
  6. 网页界面(方便通过手机查看状态)

I can only agree with the guys here, this printer could become the Ender 3 of the Core XY printer. Creality's success is based on the Ender 3 and that printer was so well received because it was so easy to customise, both the hardware and the software.

Please give us the freedom to customise the software to our liking or at least add a WEB interface that can be accessed from other slicers and allow us to monitor the status of the printer without having FlashPrint open or the PC running all the time. A web interface like Mainsail would be accessible from all possible platforms with a browser (mobile phone, smart TV, tablet, etc...).

This is also missing the ~M601 codes that FF uses to communicate with Flashprint.

Thanks. But I don't understand how then people are already using the mod with Orcaslicer?

Thanks. But I don't understand how then people are already using the mod with Orcaslicer?

The flashforge printer software (firmwareExe) contains all the start code which is not "public" and orcaslicer uses some weird magic they call start code (which does not work on any normal printer). You need to change that, see the other thread you posted in for hints.

M601

Which is annoying since it a used gcode. The firmwareExe file catches it and does some logging and starts some communication. Haven't looked into it more since it's useless for anything other than the stock firmware. There are some other commands which are caught by the firmware and are not documented in the klipper code posted (like the 'start' code).

Can the Klipper Mod not detect the missing START/END_PRINT codes and automatically perform those steps if those codes are not in the gcode file sent to the modded printer? Seems logical, especially since we can't print without their inclusion.

This is the response I got from FlashForge support when I recently asked for the source code-

The modified part is internal information of our company, so we cannot share it with you.
Have a nice day.
Best regards,
Daisy(李文婕) | Aftersales

This is the response I got from FlashForge support when I recently asked for the source code-

The modified part is internal information of our company, so we cannot share it with you. Have a nice day. Best regards, Daisy(李文婕) | Aftersales

This sounds a whole lot like they aren't actually sharing the full codebase for the firmware used in their printer so they are still violating the klipper licences and missing the whole point of open source. You can't just take open source work, modify it and not share that when the original licences specifically prohibit this.

I'm currently looking at buying a 3d printer and this is massively turning me off Flashforge on pure principle

Totally. They are happy to use open source to get their machines running!!

Man i was going to buy one right now but then found it they can't even release the klipper files needed. come on man

Latest response. I'm trying to go back and forth with them and help them to understand what they need to still provide us.

"Based on the open source principle of Klipper, we have made public the part of the Klipper firmware that our company has used. The Klipper firmware on our official website cannot be used directly, please do not upgrade it directly.

The openness of the 3D printing community has driven the development of desktop 3D printing. Flashforge follows the open source protocol, and we open source Klipper firmware here.
Github link: FlashforgeOfficial/AD5M-Series_Klipper (Github. com)

Warning:
Please do not update the Klipper version on your own. Our printer uses Klipper motion control code and has been customized and developed with features suitable for this machine. The public version of Klipper does not directly match the overall firmware.

Modifying Klipper may cause the printer to not work, and there may be some issues that we may not be able to assist you remotely. And after modifying the firmware, the device's warranty will become invalid!

Flashforge has developed Klipper based on a special version and added many new features. The optimized code based on the model structure and hardware can better ensure the stable operation of the device.

If you have your own ideas about Klipper's updates, we do not restrict users from making modifications themselves, but we cannot provide any technical support for this."