Skip to the content
2 layers56 × 70 mmCFS Bus Adapter R2, the printed circuit board in 3D

Reverse engineering the Creality CFS for use as a general AMU/MMU system

Size
56 × 70 mm
Copper layers
2
Thickness
1.6 mm
Parts
66
Nets
69
Pads
256
Tracks, vias
362, 72
Pours
1
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
6 Feb 2025
Updated
19 Apr 2025

Overview

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.

Main components

5

README

readme.md

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:

screenshot

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:

screenshot

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:

  • Pinout on J3 for CFS Can adapter board is reversed.
    This can be fixed by just mirroring the routing of the jumper cable.
  • The open-collector buffer signals have pullups to 5V in the buffer. That means the buffer status LED resistors as implemented (i.e. between 24V and the buffer status pins) are effectively always on, since the 5V pullup winds up sinking current from the 24V LED rail.
    This needs to be fixed by rev-ing the board (or with track hackery). Right now, the CFS buffer just changes the LED brightness, rather then turning them on and off.

Parts

66
QtyValueFootprintReferences
7LEDLED_THT:LED_D3.0mmD1, D2, D3, D4, D5, D7, D9
6TestPointTestPoint:TestPoint_Loop_D1.80mm_Drill1.0mm_BeadedTP6, TP7, TP8, TP9, TP10, TP11
4100n_0603_X7R_10%_50V_-40C..125C_Chip-CapacitorCapacitor_SMD:C_0603_1608MetricC8, C9, C12, C13
410u_0805_X7R_10%_10V_-40C..125C_Chip-CapacitorCapacitor_SMD:C_0805_2012MetricC6, C7, C10, C11
45k1Resistor_SMD:R_0603_1608MetricR1, R2, R12, R13
4MountingHoleMountingHole:MountingHole_3.2mm_M3_Pad_ViaH1, H2, H3, H4
3100nCapacitor_SMD:C_0603_1608MetricC3, C4, C5
31k_0603_100mW_1%_E24_Chip-ResistorResistor_SMD:R_0603_1608MetricR5, R8, R9
3TP2.0mmTestPoint:TestPoint_Loop_D1.80mm_Drill1.0mm_BeadedTP1, TP2, TP3
2120R_0805_125mW_1%_E24_Chip-ResistorResistor_SMD:R_0805_2012MetricR7, R11
2120R_0805_125mW_1%_E24_Chip-ResistorResistor_THT:R_Axial_DIN0411_L9.9mm_D3.6mm_P5.08mm_VerticalR10, R14
25k1_0603_100mW_1%_E24_Chip-ResistorResistor_SMD:R_0603_1608MetricR3, R4
26p2_0603_C0G_5%_50V_-40C..125C_Chip-CapacitorCapacitor_SMD:C_0603_1608MetricC1, C2
2Conn_01x03Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ5, J7
2Conn_02x03_Top_BottomConnector_Molex:Molex_Micro-Fit_3.0_43045-0610_2x03-1MP_P3.00mm_HorizontalJ1, J6
2NUP2105LPackage_TO_SOT_SMD:SOT-23D6, D8
2TJA1051T3Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU3, U6
2TP1.0mmTestPoint:TestPoint_Loop_D1.80mm_Drill1.0mm_BeadedTP4, TP5
110k_0603_100mW_1%_E24_Chip-ResistorResistor_SMD:R_0603_1608MetricR6
1629722000214_pasteInHoleConnector_USB:USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_HorizontalX1
1830108313809Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY1
1AMS1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U5
1Barrel_Jack_Switch_MountingPinConnector_BarrelJack:BarrelJack_GCT_DCJ200-10-A_HorizontalJ3
1CONN_01X02Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalP2
1Conn_01x02Connector_Molex:Molex_Micro-Fit_3.0_43045-0200_2x01_P3.00mm_HorizontalJ4
1Conn_01x05Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ2
1IP4234CZ6Package_TO_SOT_SMD:SC-74-6_1.55x2.9mm_P0.95mmU4
1STM32G0B1CBTPackage_QFP:LQFP-48_7x7mm_P0.5mmU1

More from fake-name/cfs-reverse-engineering

2
  • 2 layers40 × 60 mmCFS Bus Adapter R1, the printed circuit board in 3D

    CFS Bus Adapter R1

    fake-name/cfs-reverse-engineering

    Reverse engineering the Creality CFS for use as a general AMU/MMU system

    46 parts58
  • 2 layers30 × 35 mmCAN Adapter Board - R1, the printed circuit board in 3D

    CAN Adapter Board - R1

    fake-name/cfs-reverse-engineering

    Reverse engineering the Creality CFS for use as a general AMU/MMU system

    8 parts58

Similar boards

  • 4 layers230 × 135 mmVancontroller, the printed circuit board in 3D

    Vancontroller

    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.

    259 parts
  • 2 layers119.1 × 80.4 mmCandleLightfd S01 3x3, the printed circuit board in 3D

    CandleLightfd S01 3x3

    linux-automation/candleLightFD

    USB CAN-FD interface based on the STM32G0 that works well with gs_usb on Linux

    375 parts62
  • 2 layers98 × 79.5 mmFlex over can, the printed circuit board in 3D

    Flex over can

    twisted-builds-llc/sloppy_holley_flex-over-can

    CAN bus input/output module for Holley Terminator X (also HP/Dominator class ECUs).

    86 parts1
  • 2 layers98 × 67 mmBoat PCB V3 1, the printed circuit board in 3D

    Boat PCB V3 1

    ka1e27/dreams

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

    75 parts
  • 4 layers52.5 × 57.5 mmFirst esp32, the printed circuit board in 3D

    First esp32

    Jnorth2/first_esp32

    First project on pcb design

    77 parts
  • 4 layers80 × 52.7 mmVFDClock, the printed circuit board in 3D

    VFDClock

    GraniteGobbler/VFDClock

    ESP32-S3 -based IV-22 desk clock

    84 parts
  • 2 layers65.1 × 30.3 mmDesk timer, the printed circuit board in 3D

    Desk timer

    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.

    35 parts
  • 4 layers55 × 35 mmCarrier, the printed circuit board in 3D

    Carrier

    jonsole/toyotune

    Daughter-board for reprogramming 1990's Toyota ECUs

    30 parts8GPL-3.0

Questions

How big is the CFS Bus Adapter R2 PCB?

It measures 56 × 70 mm and has 2 copper layers, 1.6 mm thick.

What parts does the CFS Bus Adapter R2 use?

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.

Where can I download the CFS Bus Adapter R2 KiCad files?

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.

Can I use the CFS Bus Adapter R2 design in my own project?

Its repository states no licence, so its author keeps all rights: ask fake-name before reusing the design.