Klipper A-Z phần 3: Flash firmware và tạo file printer.cfg
Bây giờ Pi đã sẵn sàng với Klipper, trong bài này mình sẽ hướng dẫn bạn flash firmware Klipper lên board điều khiển máy in và tạo file cấu hình đầu tiên. Đừng lo nếu bạn chưa từng làm, chúng ta sẽ làm từng bước một cách an toàn.
Danh sách bài viết:
- Giới thiệu Klipper
- Chuẩn bị phần cứng và cài đặt Klipper
- Flash firmware và tạo file printer.cfg
- Hiệu chỉnh cơ bản
- Input Shaper và Pressure Advance
- Tạo macro Klipper cơ bản
- Khắc phục sự cố và bảo trì hệ thống
Chuẩn bị trước khi bắt đầu
Backup quan trọng
Trước khi làm gì, hãy backup: Nếu dùng Marlin, backup file .bin hoặc .hex
Settings máy in: Ghi lại các thông số như:
- Steps/mm cho các trục
- PID values cho hotend/bed
- Z-offset nếu có probe
- Mesh bed leveling data
Chụp ảnh board: Để biết cách đấu dây ban đầu
Kiểm tra kết nối
Cáp USB: Đảm bảo có cáp USB A to Micro B (hoặc USB-C tùy board)
Test kết nối:
# SSH vào Pi và kiểm tra USB
ssh pi@[IP-address]
lsusbTắt máy in an toàn
- Tắt nguồn máy in (chưa rút cáp USB)
- Đợi 30 giây để tụ điện xả hết
- Kết nối cáp USB từ Pi đến board máy in
- Bật lại máy in
Xác định board mạch chủ
Các board phổ biến tại Việt Nam
BigTreeTech SKR Series
- SKR Mini E3 V2/V3: Thay thế trực tiếp cho Ender 3
- SKR 1.4 Turbo: Board cao cấp cho máy custom
- SKR 2: Thế hệ mới với STM32F407
Creality Boards
- V4.2.2/4.2.7: Board stock trên Ender 3 Pro/V2
- V1.1.5: Board cũ trên Ender 3 2018
- CR-6 SE Board: Cho dòng CR-6
Arduino Based
- RAMPS 1.4: Board DIY phổ biến
- MKS Gen L: Clone RAMPS với cải tiến
Cách xác định board
Kiểm tra vật lý:
- Mở nắp máy in và xem board
- Tìm tên model trên board
- Đếm số cổng stepper driver
Kiểm tra qua USB:
# Kết nối USB và chạy
lsusb
# Tìm dòng có "STMicroelectronics" hoặc "Arduino"Kiểm tra trong firmware hiện tại:
- Vào LCD menu → About/Info
- Hoặc gửi lệnh
M115qua terminal
Chi tiết từng board
SKR Mini E3 V2.0
- Chip: STM32F103RET6
- Bootloader: 28KiB
- Communication: USB
SKR Mini E3 V3.0
- Chip: STM32G0B1RET6
- Bootloader: 8KiB
- Communication: USB
Creality V4.2.2/4.2.7
- Chip: STM32F103RET6 hoặc GD32F103
- Bootloader: 28KiB
- Communication: Serial trên PA10/PA9
RAMPS 1.4
- Chip: Arduino Mega 2560 (ATmega2560)
- No bootloader
- Communication: USB
Tạo Klipper firmware cho từng board
Sử dụng KIAUH (khuyến nghị)
Bước 1: SSH vào Pi và mở KIAUH
cd ~/kiauh
./kiauh.shBước 2: Chọn Advanced menu
[4] Advanced → [2] Build firmwareBước 3: Chọn board từ menu hoặc manual config
Thủ công
Bước 1: Truy cập thư mục Klipper
cd ~/klipperBước 2: Mở menuconfig
make menuconfigCấu hình cho từng board
SKR Mini E3 V2.0
Micro-controller Architecture: STMicroelectronics STM32
Processor model: STM32F103
Bootloader offset: 28KiB bootloader
Clock Reference: 8 MHz crystal
Communication interface: USB (on PA11/PA12)SKR Mini E3 V3.0
Micro-controller Architecture: STMicroelectronics STM32
Processor model: STM32G0B1
Bootloader offset: 8KiB bootloader
Clock Reference: 8 MHz crystal
Communication interface: USB (on PA11/PA12)Creality V4.2.2/4.2.7
Micro-controller Architecture: STMicroelectronics STM32
Processor model: STM32F103
Bootloader offset: 28KiB bootloader
Clock Reference: 8 MHz crystal
Communication interface: Serial (on USART1 PA10/PA9)
# Nếu là GD32F103 thì thêm:
☑ Disable SWD at startupRAMPS 1.4 (Arduino Mega)
Micro-controller Architecture: Atmega AVR
Processor model: atmega2560
Clock Reference: 16 MHz crystal
Communication interface: USB (on USART0 PA0/PA1)Build firmware
Bước 3: Thoát và save config
- Nhấn
Qđể quit - Nhấn
Yđể save
Bước 4: Compile
make clean
make -j4Kết quả: File firmware sẽ có tại ~/klipper/out/
klipper.bincho STM32 boardsklipper.elf.hexcho Arduino boards
Flash firmware lên board
Phương pháp flash tùy board
STM32 Boards (SKR, Creality)
- Phương pháp: SD Card
- File:
klipper.binđổi tên thànhfirmware.bin
Arduino Boards (RAMPS)
- Phương pháp: USB với avrdude
- File:
klipper.elf.hex
Flash cho SKR boards
Bước 1: Chuẩn bị thẻ SD
# Tạo file firmware từ klipper.bin
cp ~/klipper/out/klipper.bin ~/firmware.binBước 2: Copy ra máy tính
# Tạo web server tạm để download
cd ~
python3 -m http.server 8000
# Truy cập http://[PI-IP]:8000 và tải firmware.binBước 3: Flash firmware
- Tắt nguồn máy in
- Rút thẻ SD từ máy in (nếu có)
- Copy
firmware.binvào thẻ SD (format FAT32) - Cắm thẻ SD vào máy in
- Bật nguồn máy in
- Đợi 10-15 giây cho quá trình flash
- Tắt máy và rút thẻ SD
Lưu ý: File firmware.bin sẽ được đổi tên thành firmware.cur sau khi flash thành công.
Flash cho Creality boards
Tương tự SKR nhưng lưu ý:
- File phải có tên khác với lần flash trước
- Ví dụ:
firmware1.bin,firmware2.bin... - Một số board cần file tên
firmware.bin.renamed
Flash cho RAMPS/Arduino
Bước 1: Xác định USB port
ls /dev/ttyUSB* /dev/ttyACM*
# Thường là /dev/ttyUSB0 hoặc /dev/ttyACM0Bước 2: Flash trực tiếp
cd ~/klipper
make flash FLASH_DEVICE=/dev/ttyUSB0Nếu lỗi: Thử với avrdude thủ công
avrdude -p atmega2560 -c wiring -b 115200 -P /dev/ttyUSB0 -U flash:w:out/klipper.elf.hex:iTạo file printer.cfg
Tìm template phù hợp
Klipper có sẵn nhiều template:
# Xem danh sách config có sẵn
ls ~/klipper/config/printer-*Template phổ biến:
printer-creality-ender3-2018.cfg: Ender 3 board cũprinter-creality-ender3pro-2020.cfg: Ender 3 Pro V4.2.2printer-creality-ender3-v2-2020.cfg: Ender 3 V2generic-bigtreetech-skr-mini-e3-v2.0.cfg: SKR Mini E3 V2
Copy template vào Mainsail
Bước 1: Xem nội dung template
cat ~/klipper/config/printer-creality-ender3pro-2020.cfgBước 2: Copy nội dung vào Mainsail
- Mở web Mainsail
- Vào tab "Machine"
- Click "Create file" hoặc edit
printer.cfg - Paste nội dung template
- Click "Save & Restart"
Ví dụ printer.cfg cơ bản cho Ender 3
Template cơ bản cho Ender 3 + SKR Mini E3 V2:
# SKR Mini E3 V2.0 config for Ender 3
# Firmware: STM32F103 with 28KiB bootloader, USB communication
[mcu]
serial: /dev/serial/by-id/usb-Klipper_stm32f103xe_[YOUR_ID]
[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 3000
max_z_velocity: 5
max_z_accel: 100
[stepper_x]
step_pin: PB13
dir_pin: !PB12
enable_pin: !PB14
microsteps: 16
rotation_distance: 40
endstop_pin: ^PC0
position_endstop: 0
position_max: 235
homing_speed: 50
[tmc2209 stepper_x]
uart_pin: PC11
tx_pin: PC10
uart_address: 0
run_current: 0.580
interpolate: False
[stepper_y]
step_pin: PB10
dir_pin: !PB2
enable_pin: !PB11
microsteps: 16
rotation_distance: 40
endstop_pin: ^PC1
position_endstop: 0
position_max: 235
homing_speed: 50
[tmc2209 stepper_y]
uart_pin: PC11
tx_pin: PC10
uart_address: 2
run_current: 0.580
interpolate: False
[stepper_z]
step_pin: PB0
dir_pin: PC5
enable_pin: !PB1
microsteps: 16
rotation_distance: 8
endstop_pin: ^PC2
position_endstop: 0.0
position_max: 250
[tmc2209 stepper_z]
uart_pin: PC11
tx_pin: PC10
uart_address: 1
run_current: 0.580
interpolate: False
[extruder]
step_pin: PB3
dir_pin: !PB4
enable_pin: !PD2
microsteps: 16
rotation_distance: 33.500
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PC8
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PA0
control: pid
pid_Kp: 21.527
pid_Ki: 1.063
pid_Kd: 108.982
min_temp: 0
max_temp: 250
[tmc2209 extruder]
uart_pin: PC11
tx_pin: PC10
uart_address: 3
run_current: 0.650
interpolate: False
[heater_bed]
heater_pin: PC9
sensor_type: ATC Semitec 104GT-2
sensor_pin: PC3
control: pid
pid_Kp: 54.027
pid_Ki: 0.770
pid_Kd: 948.182
min_temp: 0
max_temp: 130
[heater_fan nozzle_cooling_fan]
pin: PC7
[fan]
pin: PC6
[board_pins]
aliases:
EXP1_1=PB5, EXP1_3=PA9, EXP1_5=PA10, EXP1_7=PB8, EXP1_9=<GND>,
EXP1_2=PA15, EXP1_4=<RST>, EXP1_6=PB9, EXP1_8=PB15, EXP1_10=<5V>
[virtual_sdcard]
path: ~/printer_data/gcodes
[display_status]
[pause_resume][include mainsail.cfg]
Điều chỉnh thông số quan trọng
Serial ID: Thay thế bằng ID thực
# Tìm serial ID
ls /dev/serial/by-id/
# Copy ID và paste vào [mcu] sectionKích thước máy in: Điều chỉnh position_max cho X, Y, Z
- Ender 3: 220x220x250mm
- Ender 3 Pro: 235x235x250mm
Rotation distance: Kiểm tra theo máy
- X/Y: 40mm (thường)
- Z: 8mm (lead screw 8mm pitch)
- Extruder: 33.5mm (Bowden) hoặc 22.6mm (Direct drive)
Cảm biến nhiệt độ: Chọn đúng loại cảm biến
- Đa số các máy Creality:
EPCOS 100K B57560G104F - E3D V6:
ATC Semitec 104GT-2 - Thông dụng:
Generic 3950
Kết nối USB và test
Kiểm tra kết nối
Bước 1: Restart Klipper service
sudo systemctl restart klipperBước 2: Kiểm tra logs
tail -f ~/printer_data/logs/klippy.logThành công: Thấy dòng "MCU connection established"
Lỗi: Thấy "Unable to connect" - xem phần troubleshooting
Test cơ bản trong Mainsail
Trang chủ: Phải hiển thị nhiệt độ và trạng thái
Console: Test các lệnh cơ bản
# Kiểm tra firmware version
VERSION
# Test endstop
QUERY_ENDSTOPS
# Home từng trục (CẨN THẬN!)
G28 X
G28 Y
G28 ZTest chuyển động
Lưu ý an toàn:
- Đảm bảo không có gì cản đường di chuyển
- Tay luôn sẵn sàng nhấn Emergency Stop
- Test từng trục một cách từ từ
Test các motor:
# Test stepper motors (sẽ buzz)
STEPPER_BUZZ STEPPER=stepper_x
STEPPER_BUZZ STEPPER=stepper_y
STEPPER_BUZZ STEPPER=stepper_z
STEPPER_BUZZ STEPPER=extruderTest di chuyển nhỏ:
# Home trước khi di chuyển
G28
# Di chuyển nhỏ từng trục
G1 X10 F1800
G1 Y10 F1800
G1 Z5 F300Troubleshooting
Lỗi kết nối MCU: "Unable to connect to MCU"
Serial ID sai:
# Kiểm tra lại USB devices
ls /dev/serial/by-id/
# Cập nhật serial trong printer.cfgBoard chưa flash firmware:
- Kiểm tra file
firmware.curcó xuất hiện trên thẻ SD - Thử flash lại với tên file khác
USB cable lỗi:
- Thử cáp USB khác
- Kiểm tra connection:
lsusb
Board không tương thích:
- Kiểm tra lại cấu hình make menuconfig
- Đảm bảo đúng chip và bootloader offset
Lỗi cấu hình printer.cfg
Trỏ pin sai:
# Kiểm tra pin mapping trong template chính thức
cat ~/klipper/config/generic-bigtreetech-skr-mini-e3-v2.0.cfgThiếu sections bắt buộc:
[virtual_sdcard][display_status][pause_resume]
PID chưa tune:
# Thay thế control: pid bằng:
control: watermark
# Hoặc comment out pid valuesMotor quay sai hướng
Giải pháp: Đảo direction pin
# Từ:
dir_pin: PB12
# Thành:
dir_pin: !PB12Endstop không hoạt động
Test endstop:
QUERY_ENDSTOPS
# Nhấn tay endstop và test lạiCấu hình pullup:
# Thử các biến thể:
endstop_pin: ^PC0 # pullup
endstop_pin: ^!PC0 # pullup + invert
endstop_pin: PC0 # no pullupTemperature sensor lỗi
Triệu chứng: "ADC out of range" hoặc temperature sai
Giải pháp:
# Đổi sensor type
sensor_type: Generic 3950
# Hoặc
sensor_type: ATC Semitec 104GT-2
# Thêm ADC voltage nếu cần
adc_voltage: 5.0 # cho Arduino
adc_voltage: 3.3 # cho STM32Màn hình không hoạt động
Cho LCD 12864:
# Thêm vào printer.cfg
[display]
lcd_type: st7920
cs_pin: EXP1_7
sclk_pin: EXP1_6
sid_pin: EXP1_8
encoder_pins: ^EXP1_5, ^EXP1_3
click_pin: ^!EXP1_2
[output_pin beeper]
pin: EXP1_1Các lệnh kiểm tra khác
# Kiểm tra Klipper service
sudo systemctl status klipper
# Real-time logs
tail -f ~/printer_data/logs/klippy.log
# Moonraker logs
tail -f ~/printer_data/logs/moonraker.logLưu ý an toàn
- Test tất cả chuyển động ở tốc độ chậm
- Kiểm tra quá nhiệt
- Backup config sau khi ổn định
- Luôn sẵn sàng tắt nguồn tổng khi có sự cố không thể kiểm soát
Nếu có vấn đề: Luôn có thể quay lại Marlin bằng cách flash firmware cũ.
Bài tiếp theo: Hiệu chỉnh cơ bản - PID, E-steps và Bed leveling
Nguồn tham khảo
Tài liệu chính thức:
Community configs:
Nguồn tham khảo: