
CFS Bus Adapter R1
fake-name/cfs-reverse-engineering
Reverse engineering the Creality CFS for use as a general AMU/MMU system

Reverse engineering the Creality CFS for use as a general AMU/MMU system
CFS Bus Adapter R2 is an open-source printed circuit board by fake-name, from the fake-name/cfs-reverse-engineering repository on GitHub. It is a 2-layer board of 56 × 70 mm with 66 parts on 69 nets, routed with 362 tracks and 72 vias.
It is built around the STM32G0B1CBT6, TJA1051T/3 and AMS1117-3.3, with the IP4234CZ6 and NUP2105L among its other parts. Its parts include 14 resistors, 13 capacitors, 9 diodes, 8 connectors and 5 ICs. It belongs with the interfaces and adapters boards and the STM32 boards of this library.
Creality CFS Filament system Reverse Engineering
This is part of an effort to use the Creality CFS feeder system as a general AMS system for any Klipper-based printer.
This should be trivial, as the printer this normally interoperates with is also a Klipper-based machine. However, as usual, Creality are violating the GPL by not releasing their changes and additions to klipper (Creality implemented a custom bus type, and a bunch of utility bits to talk to the filament box).
Given that, the other option is reverse engineering how the feeder works. Fortunately, that should be pretty straightforward for most of the bits.
Anyways, high resolution board images are here.
Some attempts at analyzing the various binary firmware and python objects are here
Overall system structure:
The board can be flashed with klipper by just treating it as having a STM32F106VET6 (which is binary compatible with the GD32F303VET6). You loose a bit of potential clock-rate by not doing giga-device specific stuff, but this is fairly slow anyways so it should be fine.
Specifying the klipper host connection to be on PA2/PA3 even works (albeit with RS485).
Current plan to convert the system to klipper in a neat way involves a simple interposer board to re-purpose the RS-485 lines:
The adapter board sits between the existing rear-panel connector and the existing controller board. It basically has 3 connectors, a CAN transciever, and a bypass capacitors. It simply carries all other signals + power through the PCB, but replaces the two RS-485 lines with CAN signalling.
Since the IO needed to drive a CAN interface is exposed on the unused "J10" connector, that is connected to an appropriate CAN bus transciever IC (a TCAN332G).
The other end is another custom PCB. In this case, it's another custom PCB heavily inspired by the candleLight FD (read: I used some of their schematics for a starting point, the entire layout is my own work). It breaks out the CFS bus to a usb-CAN adapter (via candleLight_fw and the 24V power in via either a DC Barrel jack or a 2-pin micro-fit connector (there are pads for both on the PCB).
It also has a pair of LEDs to indicate buffer status, and some activity LEDs.
Both boards are up at Adapter. License for them is GPL3, since the candleLight FD is GPL3.
I had JLCPCB do the PCBs, they work out to ~$7 ea (CAN Adapter) and ~$10 ea (CFS-Bus Adapter), at qty 5 of each. I'm also trying LCSC's custom-cable service to make the short interposing cables, which wound up being ~$50 for 10 of each.
Full production files for each of the PCBs are in the respective folders, they should drag & drop into JLCPCB's PCBA service. The cables are based on a lot of guesswork about what the right connectors are, once I confirm I have the right part-numbers, I'll document that here as well.
Note that immediately after ordering the CFS-Bus-Adapter, I realized it would be super neat to allow the CAN transciever to be either connected to the CAN peripheral in the MCU (which is how it is now), and a UART interface. That would let this interact with the existing firmware if/when it get's properly reverse engineered, or Creality finally stops violating the GPL and provides the source for their distributed-in-compiled-form-only klipper extensions (see all .so files, which are compiled with cython to make them opaque).
First rev board issues:
| Qty | Value | Footprint | References |
|---|---|---|---|
| 7 | LED | LED_THT:LED_D3.0mm | D1, D2, D3, D4, D5, D7, D9 |
| 6 | TestPoint | TestPoint:TestPoint_Loop_D1.80mm_Drill1.0mm_Beaded | TP6, TP7, TP8, TP9, TP10, TP11 |
| 4 | 100n_0603_X7R_10%_50V_-40C..125C_Chip-Capacitor | Capacitor_SMD:C_0603_1608Metric | C8, C9, C12, C13 |
| 4 | 10u_0805_X7R_10%_10V_-40C..125C_Chip-Capacitor | Capacitor_SMD:C_0805_2012Metric | C6, C7, C10, C11 |
| 4 | 5k1 | Resistor_SMD:R_0603_1608Metric | R1, R2, R12, R13 |
| 4 | MountingHole | MountingHole:MountingHole_3.2mm_M3_Pad_Via | H1, H2, H3, H4 |
| 3 | 100n | Capacitor_SMD:C_0603_1608Metric | C3, C4, C5 |
| 3 | 1k_0603_100mW_1%_E24_Chip-Resistor | Resistor_SMD:R_0603_1608Metric | R5, R8, R9 |
| 3 | TP2.0mm | TestPoint:TestPoint_Loop_D1.80mm_Drill1.0mm_Beaded | TP1, TP2, TP3 |
| 2 | 120R_0805_125mW_1%_E24_Chip-Resistor | Resistor_SMD:R_0805_2012Metric | R7, R11 |
| 2 | 120R_0805_125mW_1%_E24_Chip-Resistor | Resistor_THT:R_Axial_DIN0411_L9.9mm_D3.6mm_P5.08mm_Vertical | R10, R14 |
| 2 | 5k1_0603_100mW_1%_E24_Chip-Resistor | Resistor_SMD:R_0603_1608Metric | R3, R4 |
| 2 | 6p2_0603_C0G_5%_50V_-40C..125C_Chip-Capacitor | Capacitor_SMD:C_0603_1608Metric | C1, C2 |
| 2 | Conn_01x03 | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J5, J7 |
| 2 | Conn_02x03_Top_Bottom | Connector_Molex:Molex_Micro-Fit_3.0_43045-0610_2x03-1MP_P3.00mm_Horizontal | J1, J6 |
| 2 | NUP2105L | Package_TO_SOT_SMD:SOT-23 | D6, D8 |
| 2 | TJA1051T3 | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U3, U6 |
| 2 | TP1.0mm | TestPoint:TestPoint_Loop_D1.80mm_Drill1.0mm_Beaded | TP4, TP5 |
| 1 | 10k_0603_100mW_1%_E24_Chip-Resistor | Resistor_SMD:R_0603_1608Metric | R6 |
| 1 | 629722000214_pasteInHole | Connector_USB:USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_Horizontal | X1 |
| 1 | 830108313809 | Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm | Y1 |
| 1 | AMS1117-3.3 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U5 |
| 1 | Barrel_Jack_Switch_MountingPin | Connector_BarrelJack:BarrelJack_GCT_DCJ200-10-A_Horizontal | J3 |
| 1 | CONN_01X02 | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | P2 |
| 1 | Conn_01x02 | Connector_Molex:Molex_Micro-Fit_3.0_43045-0200_2x01_P3.00mm_Horizontal | J4 |
| 1 | Conn_01x05 | Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_Vertical | J2 |
| 1 | IP4234CZ6 | Package_TO_SOT_SMD:SC-74-6_1.55x2.9mm_P0.95mm | U4 |
| 1 | STM32G0B1CBT | Package_QFP:LQFP-48_7x7mm_P0.5mm | U1 |

fake-name/cfs-reverse-engineering
Reverse engineering the Creality CFS for use as a general AMU/MMU system

fake-name/cfs-reverse-engineering
Reverse engineering the Creality CFS for use as a general AMU/MMU system

Camperlux/vancontroller
VanController: ESP32-S3 12 V campervan controller board (6 fused relays, 6 PWM dimmers, CAN, RS485, GPS) - KiCad 10 design, manufacturing files and enclosure. Free for non-commercial use.

linux-automation/candleLightFD
USB CAN-FD interface based on the STM32G0 that works well with gs_usb on Linux

twisted-builds-llc/sloppy_holley_flex-over-can
CAN bus input/output module for Holley Terminator X (also HP/Dominator class ECUs).

ka1e27/dreams
Autonomous survey catamaran: CV-based obstacle avoidance, environmental sensing, and cellular telemetry to a web dashboard.



nshcat/desk_timer
[ ] For some reason, I needed to add "-isystem /usr/arm-none-eabi/include/c++/14.2.0" to the compilecommands.json entry for main.cxx in order for clangd to find the system includes.

It measures 56 × 70 mm and has 2 copper layers, 1.6 mm thick.
66 parts, built around the STM32G0B1CBT6, TJA1051T/3, AMS1117-3.3 and IP4234CZ6. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the fake-name/cfs-reverse-engineering repository on GitHub, at the commit this page was made from: the board is Adapter/CFS-Bus Adapter R2/CFS-Bus Adapter R2.kicad_pcb and its schematic Adapter/CAN Adapter Board - R1/CAN Adapter Board - R1.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask fake-name before reusing the design.