스마트홈 구축을 위해 시놀로지(Synology) NAS Docker 환경에서 Zigbee2MQTT(Z2M)나 Home Assistant를 운영하는 분들이 흔히 겪는 고질적인 문제가 있습니다.
바로 “NAS를 재부팅하고 나면 Zigbee 동글 인식이 끊겨 Z2M 컨테이너가 시작되지 않는 현상”입니다. 동글이나 유전원 허브를 뺐다 꽂아야만 다시 인식되는 번거로운 문제를 깔끔하게 소프트웨어적으로 해결한 과정을 공유합니다.
증상
- 정상 구동 중 재부팅 시 먹통: 평소에는 Zigbee2MQTT가 기기들과 잘 통신하다가, NAS DSM 업데이트나 재부팅을 진행하면 Z2M 컨테이너가 CrashLoop(재시작 무한 루프)에 빠집니다.
- 장치 노드 실종: SSH 터미널에서 확인해 보면 기존에 잡혀 있던 시리얼 장치 경로(
/dev/ttyACM0또는/dev/ttyUSB0)가 완전히 사라져 있습니다. - 수동 재연결 시 일시적 정상화:
- USB 동글을 물리적으로 뽑았다 꽂거나,
- 유전원 USB 허브의 전원 코드를 껐다 켜면 거짓말처럼 즉시 장치가 다시 잡히고 Z2M이 정상 구동됩니다.
- 원인 분석:
- 동글 하드웨어 고장이 아닙니다.
- 유전원 허브를 껐다 켤 때 정상화되는 이유는, 전원이 끊겼다 들어오는 순간 메인보드가 이를 ‘신규 USB 장치 삽입(Hot-plug)’ 이벤트로 감지해 드라이버를 강제로 올려주기 때문입니다.
- 즉, 시놀로지 DSM 커널이 재부팅(Boot-up) 시점에 이미 포트에 꽂혀 있던 시리얼 모뎀 칩셋용 커널 모듈(
cdc-acm,usbserial등)을 자동으로 로드하지 않고 건너뛰는 것이 핵심 원인입니다.
해결 방법
DSM의 [작업 스케줄러] 기능을 활용해, NAS가 켜질 때마다 백그라운드에서 시리얼 통신 커널 드라이버를 root 권한으로 강제 로드하도록 자동화 스크립트를 등록합니다.
1단계: SSH 터미널에서 확인
재부팅 직후 장치가 보이지 않을 때 SSH에서 아래 명령을 내려 장치가 즉시 잡히는지 테스트해 볼 수 있습니다.
ShellScript
# CDC-ACM(Sonoff E 동글, ConBee 등) 및 시리얼 모듈 로드
sudo modprobe usbserial
sudo modprobe cdc-acm
# 장치 생성 여부 확인
ls -l /dev/ttyACM*명령어 실행 즉시 /dev/ttyACM0가 나타난다면 이 방법으로 100% 자동화가 가능합니다.
2단계: DSM 작업 스케줄러 부팅 스크립트 등록
DSM 웹 관리자 페이지에서 다음 순서대로 설정을 진행합니다.
- 작업 스케줄러 열기:
DSM 제어판→작업 스케줄러로 이동합니다. - 트리거된 작업 생성:상단 메뉴에서
생성→트리거된 작업→사용자 정의 스크립트를 클릭합니다. - 일반 설정 탭 구성:
- 작업 이름:
Load Zigbee USB Drivers(알아보기 쉬운 이름) - 사용자: 반드시
root선택 (커널 모듈 적재는 root 권한 필수) - 이벤트:
부팅(Boot-up) - 사전 조건: 없음
- 활성화됨: 체크 확인
- 작업 이름:
- 작업 설정 탭 (스크립트 입력):‘사용자 정의 스크립트’ 입력창에 아래 내용을 그대로 복사해 붙여넣습니다.
ShellScript
modprobe usbserial # 1. USB 시리얼 통신의 기반이 되는 표준 모듈을 올림
modprobe cdc-acm # 2. 통신 모뎀 규격(ACM) 장치를 제어하는 드라이버를 올림 -> ttyACM0 생성
modprobe cp210x # 3. 실리콘랩스 칩셋 드라이버 (필요시)
modprobe ch341 # 4. WCH 칩셋 드라이버 (필요시)(팁: cdc-acm 외에도 향후 다른 동글 교체를 대비해 대표적인 시리얼 칩셋 드라이버인 cp210x, ch341도 함께 적재해 두면 안전합니다.)
- 저장 및 즉시 1회 실행:[확인]을 눌러 저장한 뒤, 목록에서 생성된 작업을 클릭하고 상단의 [실행] 버튼을 눌러 스크립트를 즉시 한 번 실행합니다.


