2026-06-24

Ender 3 V3 SE Klipper 전환 기록 (1) - 왜 Klipper인가

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

3D PrintKlipperLinux

Ender 3 V3 SE를 사용하면서 가장 불편했던 점은 G-code 파일을 SD 카드를 통해 직접 옮겨서 출력해야 한다는 점이었다. 매 출력마다 SD 카드를 뽑아 PC에 연결하고, 슬라이서에서 생성한 G-code를 저장한 뒤 다시 프린터에 꽂아 출력해야 했다. 한 번 정도는 괜찮지만, 출력 횟수가 늘어날수록 상당히 번거로운 작업이었다.

그래서 처음부터 Klipper만 생각했던 것은 아니었다. 구형 태블릿에 Octo4a를 설치하는 방법, ESP3D를 사용하는 방법, Wi-Fi 지원 SD 카드를 사용하는 방법도 함께 검토했다. 하지만 안정성, 호환성, 비용, 그리고 Wi-Fi 환경 등을 하나씩 따져 보니 결국 Klipper가 가장 현실적인 선택지로 남았다.

이 글에서는 Ender 3 V3 SE를 Klipper로 전환하기로 결정하기까지 어떤 대안들을 검토했는지, 그리고 현재 어느 정도까지 구축이 완료된 상태인지를 정리한다.

기존 Marlin 환경에서 불편했던 점

Ender 3 V3 SE는 순정 상태에서도 사용하기 편한 프린터다. 자동 레벨링 등 기본 기능도 충실하고, 특별한 튜닝 없이도 무난한 출력 품질을 보여 준다.

하지만 앞서 언급한 것처럼 SD 카드를 계속 옮겨야 한다는 점은 상당히 불편했다. 특히 잦은 삽입과 제거를 반복하다 보면 파일 시스템이 손상되는 경우도 발생한다. 실제로 문제가 생긴 SD 카드를 프린터에 삽입하면 프린터가 멈추거나 다운되는 현상을 경험하기도 했다.

이 때문에 무선으로 G-code를 전송할 수 있는 방법을 찾기 시작했고, 조사 과정에서 라즈베리 파이 제로를 이용해 쉽게 무선 출력을 구성할 수 있다는 글들을 접하게 되었다.

검토했던 대안들

라즈베리 파이 제로를 이용하는 방법은 주로 OctoPi를 사용하는 구성이었다. Cura 같은 슬라이서가 USB를 통해 프린터에 직접 명령을 전송하는 것처럼, 네트워크를 통해 G-code를 받은 라즈베리 파이가 프린터에 명령을 전달하는 구조로 이해할 수 있었다.

이것을 시작으로 검토한 선택지는 다음과 같았다.

  • OctoPi (Octo4a)
  • ESP3D
  • Wi-Fi SD 카드
  • Klipper

OctoPi

OctoPi는 기존 Marlin 펌웨어를 유지한 상태에서 별도의 호스트가 G-code를 수신하고 프린터에 전달하는 방식이다.

나는 이를 안드로이드 환경에서 사용할 수 있는 Octo4a를 이용해, 사용하지 않던 구형 태블릿(LG G Pad III)에 설치하는 방법을 시도했다.

이 태블릿은 USB-A 포트를 별도로 갖고 있어 연결 자체는 매우 편리했다. 특히 안드로이드 환경에서 흔히 문제가 되는 USB OTG 사용 중 동시 충전 문제를 자연스럽게 해결할 수 있다는 점이 장점이었다.

하지만 실제 사용 결과 안정성이 기대에 미치지 못했다. 또한 두 번째 시도에서는 태블릿이 프린터 자체를 인식하지 못하는 문제가 발생했다. 결국 이 접근은 일단 후순위로 미뤄 두게 되었다.

ESP3D

ESP3D는 ESP32를 이용해 네트워크로 G-code를 받아 프린터에 전달하는 방식이다.

ESP32는 가격이 매우 저렴하기 때문에 상당히 매력적인 선택지였다. 하지만 공식 문서를 확인해 보니 Ender 3 V3 SE와의 호환 여부가 명확하지 않았다.

게다가 이 프린터는 UART 인터페이스가 USB-C 포트를 통해서만 노출되는데, USB OTG 방식으로는 내장 USB-UART 변환기가 제대로 동작하지 않는 것으로 보였다. 결국 연결을 위해서는 프린터 메인보드에서 UART를 직접 추출하는 개조가 필요했다.

작동 여부가 확실하지 않은 상태에서 기판 개조까지 진행하는 것은 부담이 컸기 때문에 이 방법은 포기했다.

Wi-Fi SD

Wi-Fi를 통해 파일 업로드가 가능한 SD 카드를 사용하는 방법도 검토했다.

구성 자체는 매우 단순하다. SD 카드를 프린터에 삽입한 뒤 네트워크를 통해 파일만 전송하면 된다.

다만 최종적으로 출력을 시작하려면 여전히 프린터 앞으로 가서 직접 출력 버튼을 눌러야 한다는 한계가 있었다.

또한 생각보다 가격이 높았다. 당시 기준으로는 일부 제품이 저가 SBC보다도 비싸 보였다.

무엇보다 프린터가 설치된 위치의 Wi-Fi 수신 상태가 좋지 않았는데, 라즈베리 파이나 BTT Pi 같은 시스템은 외장 안테나나 USB 무선랜 등으로 대응할 수 있는 반면, Wi-Fi SD 카드는 확장성이 거의 없다는 점도 고민거리였다.

결국 우선순위에서 뒤로 밀리게 되었다.

Klipper

Klipper는 OctoPi와 달리 호스트와 MCU의 역할을 분리한다.

라즈베리 파이 같은 호스트가 상위 제어와 설정을 담당하고, 프린터의 MCU는 실제 모터와 히터 제어를 수행한다.

프린터 펌웨어를 교체해야 하기 때문에 초기 설정은 가장 복잡한 편이다. 하지만 그만큼 설정 변경과 기능 확장이 쉽고, 다양한 커스터마이징이 가능하다는 장점이 있다.

다른 대안들에 비해 자료도 풍부했고, 실제 성공 사례도 많았기 때문에 가장 현실적인 선택지로 보였다.

결국 Klipper를 선택한 이유

가장 마지막까지 고민했던 선택지는 Wi-Fi SD 카드와 Klipper였다.

하지만 당시 기준으로 Wi-Fi SD 카드 가격이 저가 SBC와 크게 차이나지 않았고, 경우에 따라서는 오히려 더 비싸게 느껴졌다.

그렇다면 단순히 파일 전송만 가능한 장치보다는 향후 확장성과 활용 범위가 훨씬 넓은 Klipper 환경을 구축하는 편이 낫다고 판단했다.

사실 이전에도 한 차례 Klipper 설치를 시도했다가 실패한 경험이 있었다. 그래서 이번에는 제대로 구축해 보고 싶다는 개인적인 동기도 있었다.

현재 상태

호스트로는 BTT Pi v1.2를 사용했다.

현재는 기본적인 출력이 가능한 상태이며, 출력 품질도 충분히 만족스러운 수준까지 확보했다.

다만 장시간 출력 안정성은 아직 충분히 검증하지 못했고, 배선 정리와 전원 통합, 케이스 제작 등의 작업이 남아 있다.

앞으로 다룰 내용

다음 글에서는 BTT Pi v1.2를 기준으로 Armbian을 설치하고, KIAUH를 이용해 Klipper 환경을 구축한 과정을 정리할 예정이다.

특히 설치 과정에서 겪었던 Wi-Fi 설정 문제와 인쇄 영역 설정 문제를 중심으로 다룰 계획이다.