2026-07-13

Ender 3 V3 SE Klipper 전환 기록 (7) - Klipper 포크 전환

Ender 3 V3 SE를 Klipper로 전환하는 과정의 일곱 번째 게시글입니다.

3D PrintKlipperLinux

현재 사용 중인 Klipper 포크는 순정 디스플레이를 그대로 쓸 수 있도록 한다. 하지만 이후 계획하고 있는 방식은 이것의 연결에 쓰이는 UART를 호스트와 MCU 간 통신에 사용하는 것이다. 두 기능은 동시에 쓸 수 없으므로, 이 기능이 없는 포크로 전환해야 한다.

기존 환경 백업

원칙적으로 이번 작업에서 설정은 영향을 받지 않는다. 실제 작업에서도 설정 파일이 그대로 유지되었고 별도의 복구도 필요하지 않았다. 그러나 작업 중 실수하거나 예상하지 못한 문제가 생길 수 있으므로 백업을 권장한다.

전체 백업

가장 확실한 방법은, BTT Pi의 SD 카드를 통째로 백업하는 것이다. 이때 대표적인 방법은 dd를 사용해 SD 카드를 덤프하는 것이다.

주의: dd는 입출력 장치 등의 옵션을 잘못 지정하면 데이터를 손상시킬 수 있다. 실행 전 장치 경로를 반드시 확인하고, 실수 없이 입력했는지 점검해야 한다. 또한 백업 중 내용이 변경되지 않도록 SD 카드가 마운트되지 않은 상태여야 한다.

sudo dd if=/dev/sdb bs=64K status=progress | zstd -T0 -19 -o klipper-backup.img.zst

나는 위 명령을 사용해 백업했다. 이렇게 파이프를 사용하면 zstd로 동시에 압축되어 klipper-backup.img.zst로 저장된다.

if는 입력 장치를 지정하는 옵션으로, 여기서는 백업할 SD 카드를 의미한다. 일반적으로 USB SD 리더를 사용한 경우 /dev/sdX의 형태로 보일 것이다. 시스템마다 다르니 lsblk 등을 통해 확인해야 한다.

bs=64K는 데이터를 64 KiB 단위로 읽도록 하고, status=progress는 진행 상황을 표시한다. zstd-T0은 사용 가능한 CPU 스레드를 모두 사용하며, -19는 높은 압축 수준을 지정한다. 시스템 성능이나 작업 시간에 따라 -19보다 더 낮은 값을 사용해도 된다.

만약 복원해야 한다면 다음과 같은 명령을 사용할 수 있다.

주의: 여기도 마찬가지로 dd 옵션을 사용하며, 특히 복원에서는 출력 장치를 잘못 지정할 경우 잘못된 곳에 덮어쓸 수 있다. 반드시 실행 전 확인해야 한다.

zstd -dc klipper-backup.img.zst | sudo dd of=/dev/sdb bs=64K status=progress

백업 시와 달리 여기서는 of 옵션을 통해 출력 장치를 대상 SD 카드로 설정해야 한다. 다른 옵션은 대체로 동일하다.

설정 백업

설정 파일도 개별적으로 백업해 두면 좋다. 특히 개별 파일 단위의 복구만 필요할 경우 유용할 수 있다. ~/printer_data/config 디렉터리 전체를 복사해 두면 안전하다. 나의 경우 printer.cfg를 우선적으로 복사해 두었다. 혹은 Mainsail에서 각 설정 파일을 다운로드할 수 있으니 이것을 이용해도 된다.

Klipper 포크 전환

포크를 전환하는 것은 간단하다. klipper 폴더는 git 레포지토리인데, 이것의 원격을 원하는 포크로 바꾸면 된다. 나는 여기서 0xD34D의 자동 Z 오프셋 지원 포크를 사용하기로 했다. 메인라인 Klipper를 사용해도 좋지만, 자동 Z 오프셋이 유용하기 때문에 유지하고 싶었다.

작업 전 klipper 서비스를 중지한다. 이후 원하는 포크로 설정한 다음 다시 시작하면 된다.

주의: git reset --hard는 이 폴더 내의 변경 사항을 삭제한다. 혹시나 변경한 것이 있다면 백업해 두어야 한다.

sudo systemctl stop klipper

cd ~/klipper

git remote set-url origin https://github.com/0xD34D/klipper_ender3_v3_se.git
git fetch origin
git checkout master
git reset --hard origin/master

sudo systemctl restart klipper

설정 변경

printer.cfg에서 아래와 같은 기존의 디스플레이 지원 관련 내용은 주석 처리하거나 삭제한다.

[e3v3se_display]
language: korean

펌웨어 변경

호스트에서 Klipper를 변경했다면 프린터의 MCU의 펌웨어도 맞게 변경해야 한다. 이전 게시글을 참고해 펌웨어를 빌드 후 플래시한다.

확인

정상적으로 변경했다면 평소와 같이 동작해야 한다. Mainsail에서 Standby 상태로 프린터가 대기 중인지, Shutdown 상태이거나 오류가 있지는 않은지 등을 확인하면 된다.

다음에 다룰 내용

포크 전환 자체는 금방 완료되었고, 호스트 연결 방식을 바꾸기 위한 준비가 완료되었다. 그러나 이후 실제 UART 연결에서는, 호스트 설정, 프린터 MCU 펌웨어, 배선 등 거의 모든 단계에서 문제가 발생했다. 다음 포스트에서는 실제 UART 연결 방법과 이 과정에서의 트러블슈팅을 다루도록 하겠다.