
UCAN is an open source USB-to-CAN interface board, based on the STM32F072 chip and candleLight open source firmware. It supports linux, windows, and mac. Of course, you can also develop your own firmware to use on it, as it is completely open source.
Supports CAN2.0A and B, with baud rates up to 1M
Compatible with candleLight V1 hardware
Featrues a native socketcan support with candleLight firmware
3-pin screw terminal: CANH, CANL, GND
Headers to enter bootloader for firmware updates and SWD interface
Headers to CAN interface before transceiver
Headers to enable/disable termination,On-board termination resistors(2 x 59R) are used by default
UCAN is based on the STM32F072CBT6, so PA11/PA12 is connected to USB-C, and PA8/PA9 is connected to CAN interface. Please refer to the circuit diagram for more information.
Currently there are two ways to terminate the resistor. The default termination is composed of two 59R resistors (R1/R2), as shown in the red position in the figure below. The alternate location consists of a 120R resistor and a two-pin jumper, shown in magenta. There is no performance difference, but the default is the 2 59R resistors. For more info please check the Schematic Diagram.
我们提供了两种端接电阻的方式,默认是由两颗59R电阻(R1/R2)组成,如图红色位置。备用位置是由120R电阻和一个两pin跳线组成,如图洋红色所示。一般地使用这并没有区别,默认板载即可。

UCAN has the firmware flashed when it leaves the factory, so there is no need to flash it again in most cases. If the CAN device appears on the computer when plugged in via USB, it means that it is working properly.
If you want to flash the firmware again, follow the steps below:
Prepare tweezers or wire and a USB-C data cable that can communicate.
Use tweezers or wires to short-circuit BOOT0 and 3.3V until the USB cable is plugged in and the board is powered. At this time, the board will enter DFU mode, and the webpage will be able to detect the device.

Click the “Connect and Upload” button to flash the firmware
The FYSETC UCAN uses an STM32F072CBT6 microcontroller. If you want to use it as a USB-to-CAN adapter with Klipper, you can flash it with candleLight firmware.
This guide explains how to do that using a Raspberry Pi connected over SSH. It does not require a Windows PC or the original FYSETC flashing website.
Once flashed, the UCAN is recognised by Linux using the gs_usb driver and appears as a SocketCAN interface (normally can0).
Important: This guide is for candleLight USB-to-CAN firmware. It is not for Klipper's USB-to-CAN bridge firmware.
candleLight_fw.binDownload the candleLight firmware package and extract it. (https://github.com/candle-usb/candleLight_fw/releases)
The firmware file used in this procedure was:
bin/candleLight_fw.bin
Copy the binary onto the Raspberry Pi. For example, if you have transferred it to your home directory, check that it is there:
ls -lh ~/candleLight_fw.bin
The file used in this procedure was approximately 128 KB.
Firmware selection matters: Make sure you use the candleLight binary intended for the STM32F072xB hardware, rather than a binary intended for the STM32F042 CANable hardware.
Connect to the Raspberry Pi over SSH and install the DFU utility:
sudo apt update
sudo apt install dfu-util
Check that it is installed:
dfu-util --version
The UCAN must be placed into its STM32 bootloader mode before flashing.
Check detection:
lsusb
You should see an entry similar to:
0483:df11 STMicroelectronics STM Device in DFU Mode
You can also check the available DFU interfaces:
sudo dfu-util -l
The output should include an internal flash interface similar to:
Found DFU: [0483:df11] ... alt=0, name="@Internal Flash /0x08000000/064*0002Kg"
This confirms that the STM32 bootloader is accessible and that internal flash starts at 0x08000000.
Important: Use the internal flash interface (-a 0). Do not select or write to the option bytes interface.
With the UCAN still connected in DFU mode, run:
sudo dfu-util -d 0483:df11 -a 0 -s 0x08000000:leave -D ~/candleLight_fw.bin
What the command does:
-d 0483:df11 selects the STM32 DFU device.-a 0 selects the internal flash interface.-s 0x08000000:leave sets the flash address and requests the device leave DFU mode after flashing.-D ~/candleLight_fw.bin specifies the firmware file.You should see the erase and download operations complete:
Erase done.
Download done.
File downloaded successfully
Submitting leave request...
A note about the final message: In our procedure, dfu-util displayed an error during get_status after reporting that the file had downloaded successfully. This did not prevent the firmware from working. The important check is whether the device subsequently boots into candleLight mode.
You may also see a warning about an invalid DFU suffix signature. This warning alone does not mean the firmware is unusable.
After flashing:
Check the USB device:
lsusb
The expected candleLight USB identity is:
1d50:606f
You should see something similar to:
Product: candleLight USB to CAN adapter
Manufacturer: bytewerk
Check the kernel messages:
dmesg | tail -30
A successful detection should include lines similar to:
idVendor=1d50, idProduct=606f
Product: candleLight USB to CAN adapter
Manufacturer: bytewerk
gs_usb ... Configuring for 1 interfaces
The gs_usb message confirms that Linux has loaded the correct driver for the adapter.
Now check whether Linux has created the CAN interface:
ip link show
You should see an interface named can0, similar to:
can0: <NOARP,UP,LOWER_UP,ECHO> mtu 16
link/can
Check its detailed configuration:
ip -details link show can0
In our case, the output showed:
can state ERROR-ACTIVE
bitrate 1000000
This confirmed that the UCAN was configured for 1 Mbps.
ERROR-ACTIVE is the normal CAN controller operating state. It does not indicate a fault by itself.
If Klipper is installed on the Raspberry Pi, use its CAN bus query script:
~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0
If other compatible Klipper CAN devices are connected and communicating on the bus, their UUIDs should be reported.
For example:
Found canbus_uuid=xxxxxxxxxxxxxxxx
Total 1 uuids found
If the result is:
Total 0 uuids found
the UCAN may still be working correctly. It simply means that no Klipper devices were discovered on the CAN bus.
Check that:
The FYSETC UCAN should now be running candleLight firmware and recognised by Linux as a USB-to-CAN adapter.
The successful checks in this procedure were:
| Check | Result |
|---|---|
| STM32 DFU bootloader detected | Passed |
| Firmware erase and download | Passed |
CandleLight USB identity 1d50:606f |
Passed |
Linux gs_usb driver loaded |
Passed |
can0 interface created |
Passed |
| CAN bitrate | 1 Mbps |
| Klipper CAN device discovery | Requires another CAN device on the bus |
This provides a way to recover and use the FYSETC UCAN without relying on the original FYSETC flashing website.
Useful commands at a glance
sudo apt update
sudo apt install dfu-util
lsusb
sudo dfu-util -l
sudo dfu-util -d 0483:df11 -a 0 -s 0x08000000:leave -D ~/candleLight_fw.bin
lsusb
dmesg | tail -30
ip link show
ip -details link show can0
~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0
All files (Include Schematic Diagram and 3D Step file.) are all on github at: