본문 바로가기
Linux 관련

별도의 Raspberry pi4에 Zigbee 동글 설치해서 n100 서버에 연결하기

by binary012 2025. 5. 11.
반응형

 

usbip

usbip를 사용해서 system 간에 usb를 공유해보자. 

 

이번에는 zigbee usb동글을 라즈베리파이 시스템에 꽂고 실제 zigbee동글의 정보는 n100 미니pc에서 받아서 사용하는 것으로 할 것이다. 

 

- 라즈베리파이 : zigbee usb 동글 연결

- n100 미니 pc : usbip로 zigbee 정보를 받아서 사용ㅎ함.

 

 

 

 

usbip를 설치하자.

sudo apt update
sudo apt install usbip

 

 

usbip를 사용하여 자동 loading을 위해서는 /etc/modules 파일에 아래의 코드를 추가한다.

usbip_core
usbip_host

 

수동으로 추가할 때는 아래 명령어를 사용한다.

sudo modprobe usbip_core
sudo modprobe usbip_host

 

usb에 연결된 장치를 확인하자. 

sudo usbip list -l

 

 

 

추가된 usb장치는 1-1.2임을 잘 기억하자.

 

다음은 bind 해보자.

sudo usbip bind -b 1-1.2

 

 

이제는 n100 미니 pc에서 설정하자.

 

동일하게 usbip를 설치하고, /etc/modules에 아래의 내용을 업데이트 하자.

 

vhci_hcd

 

그리고, 라즈베리파이의 ip주로를 통해서 usbip가 open되어 있는지 확인하자.

sudo usbip list -r 192.168.0.33

 

 

라즈베리파이(192.168.0.33)의 ip device가 잘 올라왔다. 

이제는 n100 미니 pc에 attach 해보자.

 

sudo usbip attach -r 192.168.0.33 -b 1-1.2

 

 

아래는 bind 안되었을때 usbip port의 상황이고, 

아래는 bind 되었을때 usbip port의 상황이다. 잘 물려있다. 

 

 

lsusb로 device가 잘 올라왔음을 알 수 있다. 

 

 

아래는 usbip로 연결하지 않았을 때의 결과이다. 

 

 

 

이제 home assistant에 zigbee 동글 설정하러 가자!

 

 

 

 

========= 25.05.14 ==========================

 

usbip 서버인 라즈베리파이에서 usbipd가 activation 되지 않는다. 

binary012@raspberrypi:~ $ sudo systemctl status usbipd
× usbipd.service - USBIP Daemon
     Loaded: loaded (/etc/systemd/system/usbipd.service; enabled; preset: enabled)
     Active: failed (Result: start-limit-hit) since Wed 2025-05-14 00:14:33 KST; 642ms ago
   Duration: 18ms
    Process: 17439 ExecStart=/usr/sbin/usbipd -D (code=exited, status=0/SUCCESS)
   Main PID: 17439 (code=exited, status=0/SUCCESS)
        CPU: 23ms

May 14 00:14:33 raspberrypi systemd[1]: usbipd.service: Scheduled restart job, restart counter is at 5.
May 14 00:14:33 raspberrypi systemd[1]: Stopped usbipd.service - USBIP Daemon.
May 14 00:14:33 raspberrypi systemd[1]: usbipd.service: Start request repeated too quickly.
May 14 00:14:33 raspberrypi systemd[1]: usbipd.service: Failed with result 'start-limit-hit'.
May 14 00:14:33 raspberrypi systemd[1]: Failed to start usbipd.service - USBIP Daemon.

 

그래서, 다음과 같이 실행하자.

 

# 실행되는지 확인하기(메세지 없이 종료되면 커널 모듈이나 의존성 문제가 있는 것이다.)
sudo usbipd -d

#커널 모듈 수동 로드
sudo modprobe usbip_core
sudo modprobe usbip_host

# 확인하기
lsmod | grep usbip

# 정상 수행되는지 재확인
sudo usbipd -d

 

 

/etc/systemd/system/usbipd.service 파일을 새로 만들어 아래 내용을 추가한다. 복붙하자.

 

[Unit]
Description=USBIP Daemon
After=network.target

[Service]
ExecStart=/usr/sbin/usbipd -d
Restart=always
RestartSec=2
StartLimitIntervalSec=0

[Install]
WantedBy=multi-user.target

 

-d는 포그라운드 실행 모드이며, systemd가 프로세스를 감시할 수 있게 한다.
StartLimitIntervalSec=0은 재시도 제한을 제거한다.

 

 

 

sudo systemctl daemon-reload
sudo systemctl reset-failed
sudo systemctl restart usbipd

sudo systemctl status usbipd

 

 

==== 25.05.14 업데이트 ================================

재부팅시 자동으로 설정되게 하자. 

 

1) 서버쪽 설정

 

아래 파일을 만들어 코드를 추가하자. 

sudo nano /etc/systemd/system/usbip-bind.service

[Unit]
Description=Bind USB devices for USBIP
After=usbipd.service

[Service]
Type=oneshot
ExecStart=/usr/sbin/usbip bind -b 1-1.2

[Install]
WantedBy=multi-user.target

 

 

device를 추가하려면 ExecStart=/usr/sbin/usbip bind -b 1-1.2 아래에 추가하자. 

reload 및 enable 시켜준다. 

sudo systemctl daemon-reload
sudo systemctl enable usbip-bind

 

 

 

2) 클라이언트쪽 설정

 

아래 파일을 열어 코드 2줄 추가해 준다. 

sudo nano /etc/modules

vhci_hcd
usbip_core

 

 

부팅시 자동 스크립트를 만들기 위해 아래 파일에 코드를 추가해 준다. 

 

sudo nano /usr/local/bin/usbip-autoattach.sh

#!/bin/bash

# 서버 IP
SERVER=192.168.0.33

# attach할 장치 busid (서버 기준)
BUSID=1-1.2

# attach 시도
/usr/sbin/usbip attach -r $SERVER -b $BUSID

 

실행 권한 부여하자.

sudo chmod +x /usr/local/bin/usbip-autoattach.sh

 

 

systemd를 서비스로 등록하자.

아래 파일을 열어서 코드를 추가하자.

sudo nano /etc/systemd/system/usbip-attach.service

 

[Unit]
Description=USBIP Attach Script
After=network-online.target
Wants=network-online.target

[Service]
Type=oneshot
ExecStart=/usr/local/bin/usbip-autoattach.sh
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

 

 

서비스 등록하자.

 

sudo systemctl daemon-reload
sudo systemctl enable usbip-attach

 

 

 

 

 

 

반응형

'Linux 관련' 카테고리의 다른 글

debian12에서 wifi 활성화 하기  (0) 2025.05.09
시스템 사용자 확인 및 ssh 사용자 등록  (0) 2025.03.03
debian 한글화 설정  (0) 2025.03.03
crontab 확인하기  (0) 2025.03.01
debian 지역/시간 설정하기  (0) 2025.03.01

댓글