Microsoft MVP성태의 닷넷 이야기
글쓴 사람
홈페이지
첨부 파일
 

Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 이더넷 카드로 쓰는 방법

우선, 간단하게 라즈베리 파이 제로를 다음의 명령어로 환경 구성을 해줍니다.

# 비밀번호 변경 & 국제화 옵션 변경 (ko_KOR.UTF-8 UTF-8, en_us.UTF-8 UTF-8)
# SSH 활성화
sudo raspi-config

# apt의 cache 업데이트
sudo apt-get update

# 설치된 소프트웨어 업그레이드
sudo apt-get upgrade

# firmware 업데이트
sudo rpi-update

# 한글 폰트 설치 (없으면, chromium browser에서 한글이 깨짐)
sudo apt-get install fonts-unfonts-core fonts-unfonts-extra

# 디스크 공간 확인하고,
df -h

# 파이 전원 끄거나
sudo shutdown -h now

# 재시작
sudo reboot

이 외에 samba를 구성해 윈도우 PC에서 파일 교환을 쉽게 할 수 있도록 추가!

Samba를 이용해 윈도우와 Raspberry Pi간의 파일 교환
; https://www.sysnet.pe.kr/2/0/11352




자, 그럼 본격적으로 여러분들의 라즈베리 파이를 이더넷 카드로 변신시켜 볼까요? ^^

사실 이에 대해서는 다음의 글에 자세하게 나와 있습니다.

Raspberry Pi Zero - Programming over USB! (Part 1)
; https://blog.gbaman.info/?p=699
; https://gist.github.com/gbaman/50b6cca61dd1c3f88f41

즉, Raspberry Pi Zero에 있는 OTG 기능 덕분에 파이 장치 자체를 다른 컴퓨터의 USB 장치로 인식시키는 것이 가능합니다.

Because of this, if setup to, the Pi can act as a USB slave instead, providing virtual serial (a terminal), virtual ethernet, virtual mass storage device (pendrive) or even other virtual devices like HID, MIDI, or act as a virtual webcam!


그러니까, 다음과 같은 식으로 컴퓨터에 연결해 독자적인 사용자 정의 USB 장치로써 구동시킬 수 있다는 것입니다.

raspberry_otg_ether_0.PNG


OTG 모드로 가장 쉽게 장치로 인식시킬 수 있는 것이 가상 이더넷인데요, 바로 이번 글에서 실습해 볼 대상입니다. ^^

자, 그럼 Raspberry Pi Zero - Programming over USB! (Part 1) 글의 내용에서 설명한 대로 따라 해 볼까요? ^^

우선, 라즈베리 파이에 설치한 운영체제가 Jessie 이상이어야 한다고 하는데 근래에 구매한 것이라면 모두 Jessie 이상 버전이니 그냥 넘어가면 됩니다. 그래도 굳이 확인하고 싶다면 os-release 파일 내용을 봐야 합니다.

$ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL=="http://www.raspbian.org/RaspbianBugs"

VERSION 값이 8인 경우가 jessie이고, 9로 오면서 stretch로 바뀐 것입니다.

운영체제의 OTG 지원을 확인했으니, 이제 "File Manager"를 이용해 "/boot" 디렉터리의 "config.txt" 파일을 열어 다음의 라인을 추가해줍니다. (관리자 권한이 필요하기 때문에 "sudo nano /boot/config.txt"와 같은 식으로 파일을 열어야 합니다.)

dtoverlay=dwc2

그다음 역시 같은 디렉터리의 "cmdline.txt" 파일을 열어 rootwait 다음에 "modules-load=dwc2,g_ether" 내용을 추가해 줍니다. 같은 라인에 추가하는 것이기 때문에 다음과 같이 파일 내용이 출력되어야 합니다.

$ sudo cat /boot/cmdline.txt
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p7 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait modules-load=dwc2,g_ether

끝났습니다. 이제 Raspberry Pi Zero를 유선 USB 이더넷 카드처럼 사용하면 됩니다. 다음 화면에 보이는 것처럼, 전원 케이블과 HDMI 케이블도 모두 떼어내고 "USB to Micro B" 타입의 케이블로 직접 파이와 컴퓨터를 연결해 주면 됩니다.

raspberry_otg_ether_1.PNG

컴퓨터에 연결하면 USB 케이블로부터 전원을 공급받아 파이가 가상 이더넷 카드로써 동작을 합니다. 이로 인해 컴퓨터에는 유선 랜 장치가 다음과 같이 "USB Ethernet/RNDIS Gadget"으로 뜨게 됩니다.

raspberry_otg_ether_2.PNG

우와~~~ OTG는 정말 재미있는 기능입니다. ^^




더욱 재미있는 것은, OTG 모드라고 해서 파이를 운영체제로 사용할 수 없는 것은 아니기 때문에 이때 모니터를 연결하면 파이가 부팅된 화면을 볼 수 있습니다. 심지어 컴퓨터와의 USB 연결을 해제하고 다시 그 USB 단자에 키보드/마우스를 연결하면 여전히 파이의 입력 도구로 사용이 됩니다.

한 마디로 정리하면, 단지 기존의 파이 운영체제 동작에 OTG 기능이 추가되는 것이나 다름없습니다.

참고로, 전원 케이블은 항상 연결해 두는 것이 좋습니다. 왜냐하면 무심코 컴퓨터로부터 파이의 USB 케이블을 빼면 (파이의) 전원이 일순간에 나가기 때문입니다. 따라서, 그냥 전원 케이블은 꽂아 두고 컴퓨터의 USB 장치로 동작시키고 싶을 때에만 연결하는 식으로 동작시키는 것이 안전합니다.



윈도우즈 사용자를 위한 라즈베리 파이 제로 W 모델을 설정하는 방법
; https://www.sysnet.pe.kr/2/0/11372

Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 이더넷 카드로 쓰는 방법
; https://www.sysnet.pe.kr/2/0/11353

Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 키보드로 쓰는 방법
; https://www.sysnet.pe.kr/2/0/11354

Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 마우스로 쓰는 방법
; https://www.sysnet.pe.kr/2/0/11355

Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 마우스 + 키보드로 쓰는 방법
; https://www.sysnet.pe.kr/2/0/11356

Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 마우스로 쓰는 방법 (절대 좌표)
; https://www.sysnet.pe.kr/2/0/11364

Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 키보드 및 마우스로 쓰는 방법 (절대 좌표, 상대 좌표, 휠)
; https://www.sysnet.pe.kr/2/0/11369

라즈베리 파이 용 C++ 프로젝트에 SSL Socket 적용
; https://www.sysnet.pe.kr/2/0/11411

Raspberry Pi/Windows 다중 플랫폼 지원 컴파일 관련 오류 기록
; https://www.sysnet.pe.kr/2/0/11373

Linux 3: 라즈베리 파이 - (윈도우의 NT 서비스처럼) 부팅 시 시작하는 프로그램 설정
; https://www.sysnet.pe.kr/2/0/11374


[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]





[최초 등록일: ]
[최종 수정일: 8/9/2018 ]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer@outlook.com

비밀번호

댓글 쓴 사람
 



2017-11-15 01시07분
참고로, 라즈베리 파이 제로 모델에서는 .NET Core가 지원되지 않습니다. 실행하게 되면 다음과 같은 식의 오류가 발생하는데,

$ dotnet
Segmentation fault

다음의 글에서 그 이유를 설명합니다.

.NET Core on Raspberry Pi
; https://github.com/dotnet/core/blob/master/samples/RaspberryPiInstructions.md

"Note: Pi Zero is not supported because the .NET Core JIT depends on armv7 instructions not available on Pi Zero."
정성태

... 31  32  33  34  [35]  36  37  38  39  40  41  42  43  44  45  ...
NoWriterDateCnt.TitleFile(s)
11365정성태11/25/20172869오류 유형: 429. 이벤트 로그 - User Policy could not be updated successfully
11364정성태8/9/20183481사물인터넷: 11. Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 마우스로 쓰는 방법 (절대 좌표) [2]
11363정성태8/9/20183981사물인터넷: 10. Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 마우스 + 키보드로 쓰는 방법 (두 번째 이야기)
11362정성태12/26/20194473오류 유형: 428. 윈도우 업데이트 KB4048953 - 0x800705b4 [2]
11361정성태11/22/20174299오류 유형: 427. 이벤트 로그 - Filter Manager failed to attach to volume '\Device\HarddiskVolume??' 0xC03A001C
11360정성태11/22/20175652오류 유형: 426. 이벤트 로그 - The kernel power manager has initiated a shutdown transition.
11359정성태11/16/20175772오류 유형: 425. 윈도우 10 Version 1709 (OS Build 16299.64) 업그레이드 시 발생한 문제 2가지
11358정성태8/9/20186963사물인터넷: 9. Visual Studio 2017에서 Raspberry Pi C++ 응용 프로그램 제작 [1]
11357정성태11/15/20176182개발 환경 구성: 336. 윈도우 10 Bash 쉘에서 C++ 컴파일하는 방법
11356정성태5/13/20207482사물인터넷: 8. Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 마우스 + 키보드로 쓰는 방법 [3]
11355정성태4/27/20205322사물인터넷: 7. Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 마우스로 쓰는 방법 [2]파일 다운로드2
11354정성태8/9/20186876사물인터넷: 6. Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 키보드로 쓰는 방법 [4]
11353정성태8/9/20186048사물인터넷: 5. Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 이더넷 카드로 쓰는 방법 [1]
11352정성태8/9/20184074사물인터넷: 4. Samba를 이용해 윈도우와 Raspberry Pi간의 파일 교환 [1]
11351정성태12/22/20174985.NET Framework: 698. C# 컴파일러 대신 직접 구현하는 비동기(async/await) 코드파일 다운로드1
11350정성태11/1/20173498디버깅 기술: 108. windbg 분석 사례 - Redis 서버로의 호출을 기다리면서 hang 현상 발생
11349정성태10/31/20173664디버깅 기술: 107. windbg - x64 SOS 확장의 !clrstack 명령어가 출력하는 Child SP 값의 의미
11348정성태10/31/20173877디버깅 기술: 106. windbg - x64 역어셈블 코드에서 닷넷 메서드 호출의 인자를 확인하는 방법
11347정성태10/28/20176007오류 유형: 424. Visual Studio - "클래스 다이어그램 보기" 시 "작업을 완료할 수 없습니다. 해당 인터페이스를 지원하지 않습니다." 오류 발생
11346정성태10/25/20172993오류 유형: 423. Windows Server 2003 - The client-side extension could not remove user policy settings for 'Default Domain Policy {...}' (0x8007000d)
11338정성태10/25/20173410.NET Framework: 697. windbg - SOS DumpMT의 "BaseSize", "ComponentSize" 값에 대한 의미파일 다운로드1
11337정성태10/24/20173251.NET Framework: 696. windbg - SOS DumpClass/DumpMT의 "Vtable Slots", "Total Method Slots", "Slots in VTable" 값에 대한 의미파일 다운로드1
11336정성태10/20/20173503.NET Framework: 695. windbg - .NET string의 x86/x64 메모리 할당 구조
11335정성태10/18/20173884.NET Framework: 694. 닷넷 - <Module> 클래스의 용도
11334정성태10/18/20173588디버깅 기술: 105. windbg - k 명령어와 !clrstack을 조합한 호출 스택을 얻는 방법
11333정성태10/17/20174128오류 유형: 422. 윈도우 업데이트 - Code 9C48 Windows update encountered an unknown error.
... 31  32  33  34  [35]  36  37  38  39  40  41  42  43  44  45  ...