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."
정성태

[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
12222정성태6/3/202010VS.NET IDE: 146. error information: "CryptQueryObject" (-2147024893/0x80070003)
12221정성태6/3/202032Windows: 168. 비어 있지 않은 디렉터리로 symbolic link(junction) 연결하는 방법
12220정성태6/3/202029.NET Framework: 907. C# DLL로부터 TLB 및 C/C++ 헤더 파일(TLH)을 생성하는 방법
12219정성태6/1/2020104.NET Framework: 906. C# - lock (this), lock (typeof(...))를 사용하면 안 되는 이유파일 다운로드1
12218정성태5/31/202074.NET Framework: 905. C# - DirectX 게임 클라이언트 실행 중 키보드 입력을 감지하는 방법
12217정성태5/24/202030오류 유형: 615. Transaction count after EXECUTE indicates a mismatching number of BEGIN and COMMIT statements. Previous count = 0, current count = 1.
12216정성태5/15/2020116.NET Framework: 904. USB/IP PROJECT를 이용해 C#으로 USB Keyboard 가상 장치 만들기
12215정성태5/12/2020139개발 환경 구성: 490. C# - (Wireshark의) USBPcap을 이용한 USB 패킷 모니터링파일 다운로드1
12214정성태5/5/2020114개발 환경 구성: 489. 정식 인증서가 있는 경우 Device Driver 서명하는 방법 (2) - UEFI/SecureBoot
12213정성태5/3/2020206개발 환경 구성: 488. (코드로 가상 USB 장치를 만들 수 있는) USB/IP PROJECT 소개
12212정성태5/1/2020102개발 환경 구성: 487. UEFI / Secure Boot 상태인지 확인하는 방법
12211정성태4/27/2020210개발 환경 구성: 486. WSL에서 Makefile로 공개된 리눅스 환경의 C/C++ 소스 코드 빌드
12210정성태4/20/2020311.NET Framework: 903. .NET Framework의 Strong-named 어셈블리 바인딩 (1) - app.config을 이용한 바인딩 리디렉션 [1]파일 다운로드1
12209정성태4/13/2020169오류 유형: 614. 리눅스 환경에서 C/C++ 프로그램이 Segmentation fault 에러가 발생한 경우 (2)
12208정성태4/12/2020206Linux: 29. 리눅스 환경에서 C/C++ 프로그램이 Segmentation fault 에러가 발생한 경우
12207정성태4/2/2020196스크립트: 19. Windows PowerShell의 NonInteractive 모드
12206정성태4/2/2020274오류 유형: 613. 파일 잠금이 바로 안 풀린다면? - The process cannot access the file '...' because it is being used by another process.
12205정성태4/2/2020177스크립트: 18. Powershell에서는 cmd.exe의 명령어를 지원하진 않습니다.
12204정성태4/1/2020169스크립트: 17. Powershell 명령어에 ';' (semi-colon) 문자가 포함된 경우
12203정성태3/18/2020362오류 유형: 612. warning: 'C:\ProgramData/Git/config' has a dubious owner: '...'.
12202정성태3/18/2020389개발 환경 구성: 486. .NET Framework 프로젝트를 위한 GitLab CI/CD Runner 구성
12201정성태3/18/2020195오류 유형: 611. git-credential-manager.exe: Using credentials for username "Personal Access Token".
12200정성태3/18/2020488VS.NET IDE: 145. NuGet + Github 라이브러리 디버깅 관련 옵션 3가지 - "Enable Just My Code" / "Enable Source Link support" / "Suppress JIT optimization on module load (Managed only)"
12199정성태3/17/2020190오류 유형: 610. C# - CodeDomProvider 사용 시 Unhandled Exception: System.IO.DirectoryNotFoundException: Could not find a part of the path '...\f2_6uod0.tmp'.
12198정성태3/17/2020199오류 유형: 609. SQL 서버 접속 시 "Cannot open user default database. Login failed."
[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...