⚡ 3줄 요약
문제 — 타지마 자수기 뒤에 랜 포트가 달려 있지만 전용 소프트웨어(DG16 by Pulse)를 사야만 쓸 수 있다. 윌컴이 파는 무선 USB 장치(EmbroideryConnect)는 국내에서 살 수 없고, 윌컴 정품 소프트웨어가 있어야 동작한다.
방법 — 라즈베리파이 제로 W를 “WiFi 달린 USB 메모리”로 위장시켰다. 자수기에는 USB 메모리로 보이고, PC에는 공유 폴더로 보인다. 폴더에 DST를 넣으면 파이가 USB를 뽑았다 꽂는 시늉을 해서 자수기가 새 파일을 읽는다.
결과 — 부품비 약 4.3만 원, 소요 시간 반나절. 해치(Hatch)에서 “내보내기”를 누르면 5~8초 뒤 자수기 USB 목록에 도안이 뜬다. 설치 스크립트는 글 끝에 첨부했다.

도안 하나 옮기려고 USB 메모리를 뽑아 들고 자수기까지 걸어가는 일, 하루에 몇 번이나 하고 있는지 세어본 적 있는가. 우리 공방에서는 수정 한 번에 한 번씩이었다. 이 글은 그 걸음을 없애려고 라즈베리파이로 자수기 무선 USB를 직접 만든 기록이다. 부품값 4만 원 남짓에 반나절 걸렸고, 삽질 세 번을 거쳐 지금은 매일 잘 돌아간다.
왜 직접 만들게 됐나?
랜 포트는 있는데 못 쓰고, 사서 해결하려니 국내에서 안 팔았기 때문이다.
우리 공방엔 타지마 TMBP2 컴퓨터 자수기가 있다. 뒤에 랜 포트가 버젓이 달려 있는데, 타지마 전용 소프트웨어(DG16 by Pulse)를 사야만 동작한다. 타지마 LAN 프로토콜이 공개돼 있지 않아서 다른 프로그램으로는 연결 자체가 안 된다.
문제는 자수 도안 작업하는 사람이 전부 타지마 프로그램을 쓰지는 않는다는 데 있다. 나는 윌컴 해치(Hatch)를 쓴다. 그러니 랜 포트는 장식이고, 도안 하나 옮길 때마다 아래 과정을 반복했다.
- 해치에서 DST 내보내기
- USB 메모리 꽂고 복사
- USB 뽑아서 자수기까지 걸어가기
- 자수기에 꽂고 도안 불러오기
- 수정 사항 생기면 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·가젯 드라이버를 전부 펌웨어로 직접 짜야 해서 포기했다. 목적은 자수기 무선화지 펌웨어 개발이 아니니까.

어떻게 만드나? 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/udc에 20980000.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는 공유 폴더에 DST를 넣으면 5~8초 뒤 자수기 USB 목록에 띄운다. 해치 내보내기 경로를 이 공유 폴더로 잡아버리면 “내보내기” 버튼이 곧 자수기 전송이 된다.
- PC 탐색기에서
\\tajima-lan.local\tajima열고 DST 넣기 - 5~8초 뒤 자수기 USB 목록에 등장
- 한글 파일명은 파이엔 들어가지만, 자수기 조작판이 한글을 제대로 못 보여준다. 도안 파일명은 영문·숫자로 (예:
260831_bichon_back.dst)


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/*/state가configured인지) 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은 본인 파이 계정명으로 바꿀 것.