타지마 자수기에 무선 USB 메모리 달기, 라즈베리파이 제로 W로 4만 원에 해결한 이야기

⚡ 3줄 요약

문제 — 타지마 자수기 뒤에 랜 포트가 달려 있지만 전용 소프트웨어(DG16 by Pulse)를 사야만 쓸 수 있다. 윌컴이 파는 무선 USB 장치(EmbroideryConnect)는 국내에서 살 수 없고, 윌컴 정품 소프트웨어가 있어야 동작한다.

방법라즈베리파이 제로 W를 “WiFi 달린 USB 메모리”로 위장시켰다. 자수기에는 USB 메모리로 보이고, PC에는 공유 폴더로 보인다. 폴더에 DST를 넣으면 파이가 USB를 뽑았다 꽂는 시늉을 해서 자수기가 새 파일을 읽는다.

결과 — 부품비 약 4.3만 원, 소요 시간 반나절. 해치(Hatch)에서 “내보내기”를 누르면 5~8초 뒤 자수기 USB 목록에 도안이 뜬다. 설치 스크립트는 글 끝에 첨부했다.

타지마 자수기 테이블 위에 놓인 라즈베리파이 제로 W와 USB 케이블 두 가닥
자수기 테이블 위의 파이 제로 W. 케이블 하나는 자수기 USB 포트, 하나는 전원이다. 케이스는 3D 프린터로 뽑았다.

도안 하나 옮기려고 USB 메모리를 뽑아 들고 자수기까지 걸어가는 일, 하루에 몇 번이나 하고 있는지 세어본 적 있는가. 우리 공방에서는 수정 한 번에 한 번씩이었다. 이 글은 그 걸음을 없애려고 라즈베리파이로 자수기 무선 USB를 직접 만든 기록이다. 부품값 4만 원 남짓에 반나절 걸렸고, 삽질 세 번을 거쳐 지금은 매일 잘 돌아간다.

왜 직접 만들게 됐나?

랜 포트는 있는데 못 쓰고, 사서 해결하려니 국내에서 안 팔았기 때문이다.

우리 공방엔 타지마 TMBP2 컴퓨터 자수기가 있다. 뒤에 랜 포트가 버젓이 달려 있는데, 타지마 전용 소프트웨어(DG16 by Pulse)를 사야만 동작한다. 타지마 LAN 프로토콜이 공개돼 있지 않아서 다른 프로그램으로는 연결 자체가 안 된다.

문제는 자수 도안 작업하는 사람이 전부 타지마 프로그램을 쓰지는 않는다는 데 있다. 나는 윌컴 해치(Hatch)를 쓴다. 그러니 랜 포트는 장식이고, 도안 하나 옮길 때마다 아래 과정을 반복했다.

  1. 해치에서 DST 내보내기
  2. USB 메모리 꽂고 복사
  3. USB 뽑아서 자수기까지 걸어가기
  4. 자수기에 꽂고 도안 불러오기
  5. 수정 사항 생기면 1번으로

하루에 몇 번씩 하다 보면 진짜 짜증난다.

찾아보니 윌컴에서 EmbroideryConnect라는 물건을 판다. 자수기 USB 포트에 꽂아두면 윌컴 소프트웨어에서 무선으로 도안을 밀어넣는 장치다. 딱 내가 원하던 건데, 한국에는 판매 대리점이 없다. 게다가 윌컴 EmbroideryStudio나 Hatch가 있어야만 동작하는 종속 구조다.

그런데 이 장치 원리를 뜯어보니 별거 없었다. 자수기 입장에선 그냥 USB 메모리로 보이고, PC 쪽에서 WiFi로 파일을 넣는 식이다. 그러면 라즈베리파이로 똑같이 만들 수 있지 않을까 싶어 클로드랑 얘기해 봤더니 가능하다길래, 같이 만들었다.

자수기 무선 USB, 어떤 원리로 동작하나?

라즈베리파이가 USB 메모리인 척하고, 그 안의 이미지 파일을 PC에는 공유 폴더로 열어주는 구조다.

핵심은 라즈베리파이의 USB 가젯 모드다. 보통 파이는 USB 호스트(키보드·마우스를 꽂는 쪽)로 동작하는데, 일부 모델은 반대로 USB 장치인 척할 수 있다. 우리는 “USB 대용량 저장장치(mass storage)”인 척하게 만든다.

[PC / 해치] ──WiFi (공유 폴더)──▶ [라즈베리파이 제로 W] ──USB (가젯 모드)──▶ [타지마 자수기]
                                        │
                                   piusb.bin (4GB FAT32 이미지 파일)
                                   ↑ PC엔 공유 폴더로, 자수기엔 USB 메모리로 보임

파이 안에 4GB짜리 이미지 파일을 하나 만들고 두 방향으로 열어준다.

  • 자수기 쪽에는 이 파일을 USB 메모리로 노출한다.
  • PC 쪽에는 같은 파일을 Samba 공유 폴더로 열어준다.

PC에서 공유 폴더에 DST를 넣으면, 파이가 자동으로 USB를 “뽑았다 꽂는” 동작을 해서 자수기가 새 파일 목록을 읽게 만든다. 여기까지가 전부다.

이 글에 나오는 용어 4개

USB 가젯 모드 — 라즈베리파이가 USB 호스트가 아니라 USB 장치(메모리·키보드 등)로 동작하는 모드. 리눅스 커널의 g_mass_storage 모듈이 담당한다.
DST — 타지마가 만든 자수 도안 파일 형식. 대부분의 산업용 자수기와 도안 프로그램이 읽고 쓴다.
Samba — 리눅스 폴더를 윈도우 탐색기에서 네트워크 드라이브처럼 열게 해주는 프로그램.
inotify — 폴더에 파일이 생기거나 바뀌면 즉시 알려주는 리눅스 기능. 이 프로젝트에서 “파일 들어왔다” 신호를 만든다.

준비물은 얼마나 드나?

보드 4만 원에 케이블 3천 원, 합쳐서 약 4.3만 원이다. SD 카드와 카드 리더는 집에 있는 걸 썼다.

품목 가격 비고
Raspberry Pi Zero W 약 2만 원 Zero 2 W는 국내 품절이라 Zero W를 국내에서 구입.
Zero 2 W는 알리에서도 10만 원대라 패스(반도체 이슈로 가격이 몇배 올랐다)
마이크로SD 64GB
(16GB 이상)
약 2만원 64GB 샀는데 4GB만 쓴다
(읽기 속도가 더 빠르다고 한다. 필요하면 더 늘릴 수도 있다)
마이크로 USB 데이터 케이블 ×2 3천 원 하나는 전원, 하나는 자수기 연결. 충전 전용 케이블은 안 된다
SD 카드 리더 있으면 됨 OS 굽는 데 필요

⚠️ 라즈베리파이 3 B/B+는 안 된다.

USB 포트가 내장 허브 칩 뒤에 있어서 가젯 모드가 불가능하다. 되는 보드는 Pi Zero / Zero W / Zero 2 W / Pi 4 / Pi 3 A+뿐이다. 집에 굴러다니는 Pi 3로 하려다가 이 함정에 빠질 뻔했다.

Pico 2 W도 검토했는데, 리눅스가 아니라 Samba·가젯 드라이버를 전부 펌웨어로 직접 짜야 해서 포기했다. 목적은 자수기 무선화지 펌웨어 개발이 아니니까.

자수기 무선 USB 준비물과 USB 가젯 모드 지원 라즈베리파이 목록

어떻게 만드나? 4단계

OS 굽기, SSH 접속, 설치 스크립트 실행, 재부팅. 이 네 단계면 끝난다. 삽질 없이 가면 30분이다.

1단계. OS 굽기

Raspberry Pi Imager로 Raspberry Pi OS Lite (32-bit)를 굽는다. Zero W는 ARMv6라 64-bit는 안 올라간다.

설정 편집에서 미리 넣어둘 것:

  • 호스트명: tajima-lan (나중에 \\tajima-lan.local로 접속)
  • 계정/비밀번호
  • WiFi SSID/비밀번호. 2.4GHz만 된다. 5GHz 전용 공유기면 안 붙는다
  • SSH 활성화

여기서 삽질 하나. Imager는 SD 카드에 굽는 프로그램이다. 파이를 PC에 USB로 꽂아놓고 “왜 인식이 안 되지?” 하고 있었다. Zero W는 USB로 OS 설치가 안 된다. 카드 리더를 쓰자.

2단계. SSH 접속

ssh admin@tajima-lan.local

.local이 타임아웃 나면 파이가 WiFi에 안 붙은 거다. 공유기 관리 페이지의 접속 기기 목록에서 IP를 찾아 직접 접속하면 된다.

3단계. 설치 스크립트 실행

클로드가 만들어준 스크립트 하나로 끝난다. 하는 일은 다음과 같다.

  • samba, inotify-tools 설치
  • USB 가젯 모드 활성화 (dtoverlay=dwc2,dr_mode=peripheral)
  • 4GB FAT32 이미지 파일 생성
  • 가젯 제어 스크립트 + 파일 변경 감시 서비스 등록
  • Samba 공유 설정
nano tajima-wifi-usb-setup.sh   # 내용 붙여넣기
sudo bash tajima-wifi-usb-setup.sh
sudo reboot

전체 스크립트는 글 하단에 첨부했다 (바로 다운로드).

4단계. 가젯 제어 스크립트의 핵심

파일이 바뀔 때마다 도는 cycle 부분이 이 프로젝트의 전부라고 보면 된다.

cycle)
    sync
    rmmod g_mass_storage          # 자수기에서 USB 뽑기
    sleep 3
    modprobe g_mass_storage file=/piusb.bin stall=0 removable=1 ro=0 \
      idVendor=0x0781 idProduct=0x5567 \
      iManufacturer="SanDisk" iProduct="Cruzer Blade"   # 다시 꽂기 (SanDisk인 척)
    ;;

inotifywait가 공유 폴더를 감시하다가 파일이 들어오면 5초 기다렸다가 이걸 실행한다. 자수기 입장에선 누가 USB를 뽑았다 다시 꽂은 것과 똑같다.

SanDisk VID/PID로 위장한 건, 일부 자수기 컨트롤러가 특정 제조사 메모리만 읽는다는 얘기가 있어서 미리 넣어둔 보험이다.

어디서 막혔나? 삽질 3건

config.txt 섹션 함정, 한글 파일명 거부, umount busy. 세 번 막혔고 셋 다 원인이 달랐다. 여기가 이 글의 진짜 알맹이다. 스크립트 돌리고 끝날 줄 알았는데 아니었다.

삽질 1. /sys/class/udc가 없다 — 가젯 모드가 안 켜짐

PC에 꽂아도 아무것도 안 뜬다. 확인해 보니 파이가 여전히 호스트 모드로 부팅되고 있었다.

원인은 최신 Pi OS의 config.txt였다. 기본으로 이런 줄이 들어 있다.

[cm5]
dtoverlay=dwc2,dr_mode=host

스크립트가 “dwc2 줄이 이미 있네” 하고 건너뛰었는데, 이 줄은 [cm5] 섹션 안이라 Zero W에선 무시된다. 그래서 커널이 기본 dwc_otg 호스트 드라이버로 떴던 거다.

해결은 파일 맨 끝 [all] 섹션 아래에 추가하는 것.

[all]
dtoverlay=dwc2,dr_mode=peripheral

재부팅 후 ls /sys/class/udc20980000.usb가 보이면 성공이다.

💡 config.txt[pi4], [cm5] 같은 섹션 헤더 아래 줄이 해당 모델에서만 적용된다. 뭔가 추가할 땐 무조건 [all] 아래에 넣는다.

삽질 2. “파일이 너무 커서 대상 파일 시스템에서 사용할 수 없습니다” — 9KB 파일인데?

영문 이름 DST는 들어가는데 비숑_찐이_뒤.DST 같은 한글 이름은 거부됐다. 윈도우 메시지는 완전히 엉뚱하다.

원인은 vfat 마운트 기본값이 iocharset=ascii라는 점이었다. 한글 파일명을 저장할 수 없으니 쓰기가 실패하고, 윈도우가 그걸 용량 오류로 보여준 거다.

해결은 마운트 옵션에 utf8=1 추가. (iocharset=utf8은 커널이 권장하지 않는다.)

mount -o loop,uid=1000,gid=1000,umask=000,utf8=1 /piusb.bin /mnt/usb_share

삽질 3. umount: target is busy — 옵션을 바꿨는데 적용이 안 됨

Samba가 폴더를 잡고 있어서 언마운트가 안 됐다. 알고 보니 파일 넣을 때마다 도는 재접속에서도 매번 조용히 실패하고 있었다. USB 쪽만 재접속돼도 동작은 해서 눈에 안 띄었을 뿐이다.

해결은 설계를 바꾸는 쪽이었다. 재접속 때 마운트는 건드리지 않고 USB 가젯만 뺐다 꽂는다. 언마운트가 필요 없어지니 busy 문제 자체가 사라졌다.

라즈베리파이 자수기 무선 USB 제작 중 겪은 문제 3건과 비용 비교

결과는 어떤가?

이렇게 만든 자수기 무선 USB는 공유 폴더에 DST를 넣으면 5~8초 뒤 자수기 USB 목록에 띄운다. 해치 내보내기 경로를 이 공유 폴더로 잡아버리면 “내보내기” 버튼이 곧 자수기 전송이 된다.

  • PC 탐색기에서 \\tajima-lan.local\tajima 열고 DST 넣기
  • 5~8초 뒤 자수기 USB 목록에 등장
  • 한글 파일명은 파이엔 들어가지만, 자수기 조작판이 한글을 제대로 못 보여준다. 도안 파일명은 영문·숫자로 (예: 260831_bichon_back.dst)
윈도우 탐색기에서 연 tajima-lan.local 공유 폴더, DST 파일 3개가 보인다
PC 탐색기에서 연 공유 폴더. 여기에 DST를 넣기만 하면 된다.
타지마 자수기 조작판 파일 목록, 같은 DST 3개가 보이지만 한글 이름이 깨져 있다
자수기 조작판에 뜬 같은 파일 3개. 스티치 수까지 읽었다. 한글 이름은 뒷부분이 네모로 깨진다.

USB 들고 왔다갔다 하던 시절은 이제 안녕이다.

비용은 보드 2만 + 케이블 3천 + 마이크로 SD 2만으로 약 4.3만 원. 윌컴 EmbroideryConnect는 정가 $399, 실판매 $199 선(약 27만 원)이다. 그것도 국내에선 못 사고, 윌컴 정품 소프트웨어가 있어야 동작한다.

한계와 주의점은?

도안 읽는 중에 파일을 넣으면 끊기고, 2.4GHz WiFi만 되고, 전원을 그냥 뽑으면 SD가 깨질 수 있다. 솔직하게 적는다.

  • 자수기가 도안 읽는 중에 파일 넣으면 끊긴다. 재접속이 곧 USB 뽑기니까. 도안 로드가 끝난 뒤에 넣거나, 자수 시작 후에 넣자. 시작 후엔 기계 메모리에 있어서 영향 없다.
  • 2.4GHz WiFi만 된다. Zero W 한계다.
  • 이미지 용량 4GB. DST가 작아서 도안 2만 개는 들어가지만, 라이브러리 통째로 올리려면 이미지를 키워야 한다. 방법은 간단한데 데이터는 날아간다.
  • 파이 전원을 그냥 뽑으면 SD가 깨질 수 있다. 자수기 전원과 같이 내리는 구조면 읽기 전용 루트로 바꾸는 걸 고려한다.
  • TMBP2에서 확인한 거라 다른 기종은 확인이 필요하다. USB 포트로 DST 읽는 자수기면 이론상 다 된다.

다음에 할 것

  • 상태 LED: 자수기가 USB를 잡았는지(/sys/class/udc/*/stateconfigured인지) LED로 표시. 스크립트는 만들어뒀고 공방 가서 붙일 예정.
  • n8n 연동: 특정 폴더에 DST 떨어지면 자동 전송 + 텔레그램 알림 + 한글 파일명을 영문으로 자동 변환(자수기가 한글을 못 보여주니까).
  • 읽기 전용 루트 파일시스템으로 전원 뽑기 내성 확보.

자주 묻는 질문

라즈베리파이 4로도 되나?

된다. USB-C 포트가 가젯 모드를 지원한다. 다만 이 용도엔 과하고 전력도 많이 먹는다.

Zero 2 W가 아니라 Zero W로 충분한가?

충분하다. DST 파일 몇십 KB 옮기는 게 전부다. 재접속이 2~3초 느린 정도다.

윌컴 소프트웨어가 필요한가?

전혀. 파이는 그냥 USB 메모리라서 DST를 내보낼 수 있는 프로그램이면 뭐든 된다. 해치, 윌컴, 타지마 DG, 심지어 무료 Ink/Stitch도 된다.

한글 파일명은?

파이는 저장하지만 자수기 조작판이 제대로 못 보여준다. 영문·숫자로 저장하자. 나중에 n8n으로 자동 변환을 붙일 예정이다.

자수기가 파이를 못 읽으면?

스크립트의 SanDisk VID/PID 위장 줄을 지우고 재시도한다. 그래도 안 되면 이미지를 2GB·FAT16으로 다시 만들어본다. 구형 컨트롤러는 2GB 제한이 있는 경우가 있다.

브라더·바루단·SWF 자수기도 되나?

USB 메모리에서 도안을 읽는 기종이면 원리상 동일하다. 직접 확인한 건 타지마뿐이다.

첨부: 전체 설치 스크립트

📦 tajima-wifi-usb-scripts.zip 다운로드

압축 안에 두 파일이 있다.

tajima-wifi-usb-setup.sh — 설치 스크립트. 이 글의 삽질 3건이 전부 반영된 최종본.
tajima-status-led.sh — 상태 LED 추가 스크립트 (선택).

압축 풀어서 파이에 올린 뒤 sudo bash tajima-wifi-usb-setup.sh를 실행한다. 스크립트 상단 SHARE_USER=admin은 본인 파이 계정명으로 바꿀 것.

댓글 남기기