Creality K2 series GPLv3 violation: Difference between revisions
Background update, references pending to be reviewed and cleaned up |
Quotation formatting: use italics for quoted passages in blockquotes and run-in quotes |
||
| (5 intermediate revisions by 3 users not shown) | |||
| Line 1: | Line 1: | ||
{{IncidentCargo | {{IncidentCargo | ||
|Company=Creality | |Company=Creality | ||
|StartDate=2025- | |StartDate=2025-02-03 | ||
|Status=Active | |Status=Active | ||
|ProductLine=K2 Series 3D Printers | |ProductLine=K2 Series 3D Printers | ||
}}The Creality K2 series 3D printer firmware ( | |Product=Creality K2 SE, K2, K2 Pro, K2 Plus | ||
|ArticleType=Product | |||
|Type=Repairability,Software Licensing | |||
|Description=Creality K2 firmware ships Cython-compiled binary blobs inside GPLv3 Klipper without source; developers allege a GPLv3 violation | |||
}} | |||
The Creality K2 series 3D printer firmware (covering the K2 SE, K2, K2 Pro, & K2 Plus) ships proprietary modules compiled with Cython into the GPLv3-licensed Klipper host environment without releasing the corresponding source code.<ref name="creality_forum_tracker" /><ref name="cfs_github" /> Klipper's community developers & the independent reverse-engineering project fake-name/cfs-reverse-engineering have documented these closed binaries as a violation of the GNU General Public License v3 (GPLv3), the license under which Klipper is distributed.<ref name="creality_forum_tracker" /><ref name="cfs_github" /> [[Creality]] opened a public GitHub repository for the K2 line in December 2025 & markets it as open source, but the published code lacks the source for several hardware communication modules.<ref name="creality_forum_launch" /> A correspondence log uploaded to the Internet Archive in May 2026 records Creality support telling a requester it was ''unable to directly provide the corresponding source code,'' & shows the requester copying the [[Software Freedom Conservancy]] (SFC) & the Free Software Foundation (FSF) on the demand.<ref name="email_demand" /> | |||
==Background== | ==Background== | ||
The | The K2 series firmware is built on Klipper, the open-source 3D-printer host software that its creator Kevin O'Connor distributes under the GPLv3.<ref name="klipper_discourse_violation" /> In December 2025, Creality opened a public GitHub repository for the K2 series & promoted the line as open source.<ref name="creality_forum_launch" /> Community developers found that the published code was outdated, out of sync with shipping printer configurations, & missing the source for several hardware communication modules.<ref name="creality_forum_launch" /><ref name="creality_forum_tracker" /> The dispute predates that repository: a Creality-forum thread asking where the required K2 Klipper sources were had been open since February 2025.<ref name="creality_forum_tracker" /> | ||
The missing modules ship as Cython-compiled shared objects. The reverse-engineering project fake-name/cfs-reverse-engineering describes these files as compiled with Cython ''to make them opaque.''<ref name="cfs_github" /> Because the wrappers sit inside Klipper's own process directory, the GPLv3-licensed Klipper host loads & executes the closed binaries at runtime.<ref name="creality_forum_tracker" /><ref name="cfs_github" /> | |||
The missing source affects the firmware images shipped across the K2 line: | |||
*'''K2 SE:''' V2.3.6.49 | *'''K2 SE:''' V2.3.6.49 (<code>CR4CU220812S11_ota_img_V2.3.6.49.img</code>) <ref name="email_demand" /> | ||
*'''K2:''' V1.1.5.5 ( | *'''K2:''' V1.1.5.5 (<code>CR0CN200400C10_R_202605061516_ota_img_V1.1.5.5.img</code>) <ref name="email_demand" /> | ||
*'''K2 Pro:''' V1.1.5.5 ( | *'''K2 Pro:''' V1.1.5.5 (<code>CR0CN200400C10_R_202605061516_ota_img_V1.1.5.5.img</code>) <ref name="email_demand" /> | ||
*'''K2 Plus:''' V1.1.5.5 ( | *'''K2 Plus:''' V1.1.5.5 (<code>CR0CN240110C10_R_202605081127_ota_img_V1.1.5.5.img</code>) <ref name="email_demand" /> | ||
==Incident== | ==Incident== | ||
Creality distributes Cython-compiled shared | Creality distributes Cython-compiled shared objects (<code>.so</code>) inside Klipper's process directory at <code>/usr/share/klipper/klippy/extras/</code> without the matching source.<ref name="creality_forum_tracker" /><ref name="extracted_fw" /> Extracted K2 Plus firmware lists six such wrappers in that directory: | ||
* | *<code>serial_485_wrapper.cpython-39.so</code>, which the cfs project ties to the RS-485 serial link between the mainboard and the CFS feeder bus <ref name="creality_forum_tracker" /><ref name="cfs_github" /> | ||
* | *<code>box_wrapper.cpython-39.so</code> <ref name="creality_forum_tracker" /> | ||
* | *<code>filament_rack_wrapper.cpython-39.so</code> <ref name="creality_forum_tracker" /> | ||
* | *<code>motor_control_wrapper.cpython-39.so</code> <ref name="creality_forum_tracker" /> | ||
* | *<code>prtouch_v2_wrapper.cpython-39.so</code> <ref name="creality_forum_tracker" /> | ||
* | *<code>prtouch_v3_wrapper.cpython-39.so</code> <ref name="creality_forum_tracker" /> | ||
A Klipper community thread on the K2 Plus documents that these compiled modules implement the printer's automatic filament-changing feature & ship only as shared-object files, & a moderator there describes Creality as in violation of the GPLv3.<ref name="klipper_discourse_k2" /> | |||
According to a correspondence log uploaded to the Internet Archive in May 2026, a requester pressed Creality for the complete GPLv3 source code, & Creality support acknowledged the request on May 15, 2026.<ref name="email_demand" /> The log's outgoing letters, signed by a sender identifying himself as Alex Mercer, were copied to the [[Software Freedom Conservancy]] ([email protected]) & the Free Software Foundation (license-[email protected]) on May 27 & May 29, 2026, & state that the violation is ''logged with the Software Freedom Conservancy and the Free Software Foundation.''<ref name="email_demand" /> The log records a single recurring demand, that Creality either release the source or stop shipping the firmware. The May 29, 2026 letter reads: | |||
<blockquote>''I reiterate my demand: immediately provide the complete corresponding source code or halt all distribution of the K2 series firmware until compliance is achieved.''</blockquote><ref name="email_demand" /> | |||
Creality continues to distribute the same firmware images while the source remains unreleased.<ref name="creality_forum_tracker" /> | |||
===Creality's response=== | |||
Through May 2026, community members documented a repeating set of stalling & denial templates from Creality's front-line support on GPL inquiries.<ref name="creality_forum_tracker" /> | |||
In the correspondence log, a May 15, 2026 reply from Creality Customer Service reads: | |||
<blockquote>''We have officially forwarded your application for the complete GPLv3 source code for all firmware versions of the K2 series to our R&D team for processing. ... Please stay tuned for further announcements on our official website.''</blockquote><ref name="email_demand" /> | |||
A May 24, 2026 reply in the same log, attributed to Creality Service, reads: | |||
<blockquote>''Due to the involvement of custom firmware modules, underlying dependencies, and the need to clarify copyrights from multiple parties, the compilation of relevant materials requires a considerable period of time. Currently, we are unable to directly provide the corresponding source code or updated repository links.''</blockquote><ref name="email_demand" /> | |||
A May 29, 2026 follow-up in the log states: | |||
<blockquote>''cleaning up a fully compliant source code package without affecting commercial proprietary code does require an internal process that, for now, does not have a publicly available timeline.''</blockquote><ref name="email_demand" /> | |||
The log records no substantive reply after May 29, 2026; per the log, Creality forwarded the case to its internal legal department & R&D manager without giving a compliance timeline.<ref name="email_demand" /> | |||
==Consumer response & hardware bypass== | |||
The K2 firmware drew criticism on the Creality forums, where the cfs project author argued that withholding the source for the parts that matter moved Creality from incompetent to ''actively malicious'': promoting a printer as open source while keeping its core features behind closed binaries.<ref name="creality_forum_tracker" /> | |||
The closed binaries created practical problems for owners: blocked hardware repair, no support for third-party toolheads, & restricted access to the printer's underlying Linux system.<ref name="creality_forum_tracker" /> | |||
Creality had faced the same complaint over the earlier K1 series. Issue #9 on its K1_Series_Klipper GitHub repository flagged binary-only extensions as a GPLv3 violation & demanded the corresponding source; the issue remained open as of March 2025.<ref name="k1_github_issue" /> On the later K1C, Creality removed root access; owners on the Creality forum note that the printer's own documentation describes the removal as intentional.<ref name="creality_k1c_forum" /> | |||
Independent developers started the fake-name/cfs-reverse-engineering project to map the Creality Filament System (CFS) feeder bus.<ref name="cfs_github" /> The project documents that the CFS uses a GigaDevice GD32F303VET6 microcontroller, which its firmware notes describe as binary-compatible with an ''STM32F106VET6''.<ref name="cfs_github" /> By building a hardware interposer board to reroute the isolated RS-485 lines to an unused MCU header, the developers converted the CFS link into a standard CAN bus running candleLight_fw & upstream Klipper, bypassing Creality's closed serial protocol.<ref name="cfs_github" /> | |||
Kevin O'Connor, the | Kevin O'Connor, the creator of Klipper, restated the license terms on the Klipper Discourse forum: | ||
<blockquote>''Klipper is licensed under the GNU GPLv3. Any redistribution of that code is required to follow the license. I have not dual-licensed the code nor provided any exceptions.''</blockquote><ref name="klipper_discourse_violation" /> | |||
==Prior violations & the Bambu Lab AGPLv3 case== | |||
Creality already appears on TH3D Studio LLC's 3D Printer GPL Violation List for withholding source code on its Marlin-based printers & the Klipper-based Sonic Pad.<ref name="th3d_list" /><ref name="klipper_discourse_violation" /> | |||
Creality's open-source disputes go back to 2018. After it shipped its CR-10 line with Marlin, a GPLv3-licensed firmware, without releasing complete corresponding source, US distributor Printed Solid stopped selling Creality printers over the non-compliance.<ref name="hackaday_marlin" /> Community pressure followed, & technology figure Naomi Wu was credited, alongside that pressure, with getting Creality to release the Marlin source for the CR-10S, including its filament-sensor & power-loss-recovery code, in April 2018.<ref name="3dprintingnerd_nw" /> | |||
Creality's | |||
On May 18, 2026, the Software Freedom Conservancy published a response to violations of the GNU Affero General Public License v3 (AGPLv3) by [[Bambu Lab]] over its proprietary networking library <code>libbambu_networking.so</code>.<ref name="sfc_bambu" /><ref name="toms_hardware_bambu" /> After Bambu issued a cease-and-desist to Pawel Jarczak, the developer of an OrcaSlicer fork, the SFC announced Project baltobu (''Bringing Affero Licensed Things (On)to Bambu Users'') to reverse-engineer the closed library & host an independent slicer fork.<ref name="sfc_bambu" /> | |||
==References== | ==References== | ||
<references> | <references> | ||
<ref name="creality_forum_launch">[https://forum.creality.com/t/creality-open-source-3d-printer-firmware-is-here/47218 "Creality Open-Source 3D Printer Firmware is Here!"], Official Creality Forum.</ref> | <ref name="creality_forum_launch">[https://forum.creality.com/t/creality-open-source-3d-printer-firmware-is-here/47218 "Creality Open-Source 3D Printer Firmware is Here!"], Official Creality Forum.</ref> | ||
<ref name="creality_forum_tracker">[https://forum.creality.com/t/where-are-the-required-to-be-released-sources-for-crealitys-modifications-to-klipper-the-k2/30019 "Where are the (required to be released) sources for Creality's modifications to Klipper the K2"], Creality Forum | <ref name="creality_forum_tracker">[https://forum.creality.com/t/where-are-the-required-to-be-released-sources-for-crealitys-modifications-to-klipper-the-k2/30019 "Where are the (required to be released) sources for Creality's modifications to Klipper the K2"], Creality Forum.</ref> | ||
<ref name=" | <ref name="email_demand">[https://archive.org/details/creality-k-2-gplv-3-compliance-demand-may-2026 "Creality K2 GPLv3 Compliance Demand Correspondence Logs (May 2026)"], correspondence log uploaded to the Internet Archive.</ref> | ||
<ref name="extracted_fw">[https://github.com/Guilouz/Creality-K2Plus-Extracted-Firmwares/tree/main/Firmware/usr/share/klipper/klippy/extras Guilouz/Creality-K2Plus-Extracted-Firmwares, /Firmware/usr/share/klipper/klippy/extras directory], GitHub Repository.</ref> | |||
<ref name=" | <ref name="k1_github_issue">[https://github.com/CrealityOfficial/K1_Series_Klipper/issues/9 "This repository contains binary-only extensions, violating the Klipper GPLv3 license"], K1 Series GitHub Issue #9.</ref> | ||
<ref name=" | |||
<ref name="klipper_discourse_k2">[https://klipper.discourse.group/t/creality-k2-plus-and-gpl-violations/22402 "Creality K2 Plus and GPL violations"], Klipper Discourse Group.</ref> | <ref name="klipper_discourse_k2">[https://klipper.discourse.group/t/creality-k2-plus-and-gpl-violations/22402 "Creality K2 Plus and GPL violations"], Klipper Discourse Group.</ref> | ||
<ref name="creality_k1c_forum">[https://forum.creality.com/t/k1c-2025-orcaslicer-workarounds-for-missing-web-interface/47164 "K1C 2025 + OrcaSlicer: Workarounds for Missing Web Interface"], Creality Community Forum.</ref> | <ref name="creality_k1c_forum">[https://forum.creality.com/t/k1c-2025-orcaslicer-workarounds-for-missing-web-interface/47164 "K1C 2025 + OrcaSlicer: Workarounds for Missing Web Interface"], Creality Community Forum.</ref> | ||
<ref name="hackaday_marlin">[https://hackaday.com/2018/08/27/gpl-violations-cost-creality-a-us-distributor/ "GPL Violations Cost Creality A US Distributor"], Hackaday, Tom Nardi, August 27, 2018.</ref> | |||
<ref name="3dprintingnerd_nw">[https://web.archive.org/web/20210509124858/https://the3dprintingnerd.com/creality-gpl-update-naomi-wu-released-cr-10s-marlin-source-code/ "Creality GPL Update: Naomi Wu Released CR-10S Marlin Source Code"], 3D Printing Nerd, April 9, 2018 (archived).</ref> | |||
<ref name="klipper_discourse_violation">[https://klipper.discourse.group/t/creality-violating-klipper-license/8990 "Creality Violating Klipper License"], Klipper Discourse Group.</ref> | <ref name="klipper_discourse_violation">[https://klipper.discourse.group/t/creality-violating-klipper-license/8990 "Creality Violating Klipper License"], Klipper Discourse Group.</ref> | ||
<ref name="cfs_github">[https://github.com/fake-name/cfs-reverse-engineering fake-name/cfs-reverse-engineering], GitHub Repository.</ref> | <ref name="cfs_github">[https://github.com/fake-name/cfs-reverse-engineering fake-name/cfs-reverse-engineering], GitHub Repository.</ref> | ||
<ref name="th3d_list">[https://web.archive.org/web/20231109014621/https://www.th3dstudio.com/3d-printer-gpl-violation-list/ "3D Printer GPL Violation List"], TH3D Studio LLC (archived November 9, 2023).</ref> | |||
<ref name="sfc_bambu">[https://sfconservancy.org/news/2026/may/18/bambu-studio-3d-printer-agpl-violation-response/ "Comprehensive Response to Bambu's AGPLv3 Violations"], Software Freedom Conservancy.</ref> | <ref name="sfc_bambu">[https://sfconservancy.org/news/2026/may/18/bambu-studio-3d-printer-agpl-violation-response/ "Comprehensive Response to Bambu's AGPLv3 Violations"], Software Freedom Conservancy.</ref> | ||
<ref name="toms_hardware_bambu">[https://www.tomshardware.com/3d-printing/open-source-non-profit-claims-bambu-lab-violated-license-move-follows-cease-and-desist-demand-on-orcaslicer-fork-that-restored-cloud-printing-features-without-using-bambu-connect "Open-source non-profit claims Bambu Lab violated license"], Tom's Hardware.</ref> | <ref name="toms_hardware_bambu">[https://www.tomshardware.com/3d-printing/open-source-non-profit-claims-bambu-lab-violated-license-move-follows-cease-and-desist-demand-on-orcaslicer-fork-that-restored-cloud-printing-features-without-using-bambu-connect "Open-source non-profit claims Bambu Lab violated license"], Tom's Hardware.</ref> | ||
</references> | </references> | ||