Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Questions #1

Open
mavidser opened this issue Jan 30, 2024 · 19 comments
Open

Questions #1

mavidser opened this issue Jan 30, 2024 · 19 comments

Comments

@mavidser
Copy link

mavidser commented Jan 30, 2024

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?
@jlodew0
Copy link

jlodew0 commented Jan 30, 2024

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.

@mavidser
Copy link
Author

mavidser commented Feb 6, 2024

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

@mavidser
Copy link
Author

mavidser commented Feb 6, 2024

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

@inkeliz
Copy link

inkeliz commented Feb 8, 2024

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.

@consp
Copy link

consp commented Feb 20, 2024

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.

@nativeit
Copy link

@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!

@jtenniswood
Copy link

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

@Lavacrabz
Copy link

@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. 网页界面(方便通过手机查看状态)

@mBlinkii
Copy link

mBlinkii commented Mar 1, 2024

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...).

@AJolly
Copy link

AJolly commented Apr 19, 2024

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

@Avpman2
Copy link

Avpman2 commented Apr 19, 2024 via email

@AJolly
Copy link

AJolly commented Apr 20, 2024 via email

@Avpman2
Copy link

Avpman2 commented Apr 20, 2024

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

@consp
Copy link

consp commented Apr 20, 2024

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).

@Avpman2
Copy link

Avpman2 commented Apr 20, 2024

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.

@Avpman2
Copy link

Avpman2 commented Apr 20, 2024

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

@rav101
Copy link

rav101 commented May 11, 2024

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

@MACCAMENZIES
Copy link

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

@rispeed
Copy link

rispeed commented Jul 13, 2024

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests