hyeonsig notes

약 두 달 전에 라즈베리 파이(Raspberry Pi) 두 번째 버전을 손에 넣었습니다. 라즈베리 재단에서 추천하는 운영체제 라즈비안(RASPBIAN)[각주:1]을 설치하고 사용해보니 기존 라즈레이 파이와 비교하면 속도가 상당히 빨라진 것이 인상적이었습니다. 체감속도는 광고 효과 이상이었던 것 같습니다. 하지만 라즈베리 파이를 설정하는 과정에서 인터넷 속도가 지나치게 느렸습니다. 원인을 분석해보니 제가 위치한 지역의 무선 네트워크 환경이 나쁘다는 결과를 얻을 수 있었습니다. 이 문제를 해결하기 위해 다양한 시도를 해보았으나 마땅한 해결책이 없었습니다. 


그러던 중 혹시나 하는 마음에 5G 대역을 사용하는 환경을 테스트해보니 아주 쾌적한 것이었습니다. 네트워크 속도가 2.4G 대역과 비교했을 때 약 10~50배 이상 빠른 결과를 얻을 수 있었습니다[각주:2]. 그래서 5G를 지원하는 무선 네트워크 인터페이스 카드(Wireless Network Interface Card, W-NIC)를 구매했습니다. 단지 실험용도로 활용하기 때문에 좋은 장비가 필요하지 않아서 저렴한 모델인 ipTime N500U를 구매했습니다.


ipTime N500U를 구매한 후, 라즈베리 파이 2에 연결하니 정상적으로 인식되지 않았습니다. 디바이스 드라이버를 설치하기 위해 ipTime N500U의 제작사(EFM Networks & Multimedia) 홈페이지에서 검색해보니 라즈베리 파이용 디바이스 드라이버를 제공하지 않는다는 답변을 찾았습니다. 조금(?) 실망스럽기도 하고 당황스럽기도 했습니다. 그렇지만 구매한 장비를 사용해야 했기에 디바이스 드라이버를 설치하는 방법을 찾아보았습니다. 


결론부터 이야기하면 아주 약간의 시행착오를 거친 후에 문제를 해결할 수 있었습니다.


라즈베리 파이(Raspberry Pi)

라즈베리 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 만든 소형 컴퓨터입니다. 2015년 6월 시점으로 4개의 모델이 출시되었으며, 가격은 25~35$로 아주 저렴하게 보급하고 있습니다. 실제로 가격 대비 성능은 매우 우수합니다. 라즈베리 파이는 교육용을 목적으로 개발되었으나, 최근 Internet of Things(IoT)의 이슈로 일반 대중에게도 많이 보급되어 있습니다. 실제로 시중에 라즈베리 파이를 활용한 다양한 예제를 담은 서적도 다수 출간되고 있습니다.


라즈베리 파이를 구동하는 운영체제는 리눅스를 기반으로 하였으나, 라즈베리 파이 2를 출시하는 시점에 윈도우(Windows)도 지원한다고 발표했습니다[각주:3]. 하지만 라즈베리 파이 2의 성능으로 윈도우를 원활하게 운영할 수 있을지는 두고 봐야 할 것 같습니다. 라즈베리 파이에 윈도우 설치에 대한 자세한 사항은 다음 링크를 참조하십시오.


라즈베리 파이는 아주 매력적인 시스템입니다. 이 글에서 라즈베리 파이에 대한 이야기를 자세히 다루기는 분량상 어려울 것 같습니다. 라즈베리 파이에 대한 더 자세한 내용은 다음 링크에서 확인하실 수 있습니다.


ipTime N500U Device Driver Install Guide

디바이스 드라이버를 검색하기 위해 ipTime N500U의 칩셋을 확인해보니 리얼텍에서 제조한 RTL8192DU 칩셋을 사용했습니다. RASPBIAN에서는 기본적으로 리얼텍에서 제작한 대부분의 칩셋을 지원했지만, RTL9182DU 칩셋은 지원하지 않았습니다. 아주 작은 기대감으로 제조사 홈페이지를 방문했지만, 예상대로 라즈베리 파이용 디바이스 드라이버는 제공하지 않았습니다. 


잠시 고민한 후 구글에서 라즈베리 파이용 RTL8192DU 칩셋 디바이스 드라이버를 검색했습니다. 역시 아주 멋진 분(https://github.com/lwfinger) 이 기존 디바이스 드라이버를 라즈베리 파일에 맞게 변경하여 제공하고 있었습니다. 이 분이 제작한 디바이스 드라이버 덕분에 아주 편하게 설치할 수 있었습니다.


제가 사용한 보드는 Raspberry Pi 2 Model B V1.1입니다. 다른 Raspberry Pi 보드에서는 정상적으로 동작하지 않을 수도 있습니다.


1. 먼저 디바이스 드라이버를 다운로드 합니다. 디바이스 드라이버를 다운로드 하는 방법은 다음과 같습니다. 

pi@raspberrypi ~ $ wget https://github.com/lwfinger/rtl8192du/archive/master.zip


2. 다운로드 받은 파일의 압축을 해제합니다.

pi@raspberrypi ~ $ unzip ./master.zip


3. 압축을 해제한 경로로 이동하여 Makefile을 에디터[각주:4]로 열고, /ARCH를 검색합니다. 그럼 ARCH ?= $(SUBARCH)를 찾을 수 있으며, 이 부분을 ARCH=arm으로 변경합니다.


4. 다운로드 한 디바이스 드라이버를 컴파일하기 전에 본인 시스템의 환경을 확인해야 합니다. 시스템 정보를 확인하기 전에 설치된 패키지 인덱스와 패키지 정보를 업데이트합니다.

pi@raspberrypi ~ $ sudo apt-get update
pi@raspberrypi ~ $ sudo apt-get upgrade


5. 현 시스템의 커널 버전을 확인합니다. 2015년 5월 5일 이후에 출시된 라즈비안의 커널은 3.18.11-v7+입니다. 커널 버전은 /lib/modules/ 디렉토리에서 확인할 수 있습니다.

pi@raspberrypi ~ $ cd /lib/modules/3.18.11-v7+


6. 라즈베리 파이 커널과 펌웨어 업데이트를 위해 환경 구축(컴파일 환경)이 필요합니다. 컴파일 환경을 확인하기 위해 다음 명령어를 입력합니다.

pi@raspberrypi ~ $ gcc --version


7. 이후 단계를 진행하기 위해 최소한 gcc-4.7 이상의 버전이 필요합니다. 만약 현재 시스템에 gcc 4.7 이하의 버전이 설치되어 있으면 다음 명령으로 gcc를 업데이트합니다.

pi@raspberrypi ~ $ sudo apt-get install gcc-4.7 g++-4.7


8. 7단계가 완료되면 다음 명령을 활용하여 라즈베리 파이를 업데이트하고 시스템을 다시 시작을 합니다.

pi@raspberrypi ~ $ sudo rpi-update


9. 커널 버전을 확인합니다. 2015년 6월 19일 기준으로 8단계가 완료되면 3.18.16-v7+로 갱신됩니다.

pi@raspberrypi ~ $ cd /lib/modules/3.18.16-v7+


10. 다음 웹 사이트에 접속해서 커널 헤더를 다운로드 합니다. 반드시 9단계에서 확인한 커널 버전으로 다운받아야 합니다. 다음 명령은 커널 3.18.16-v7+의 예입니다.

pi@raspberrypi /lib/modules/3.18.16-v7+ $ sudo wget http://www.niksula.hut.fi/~mhiienka/Rpi/linux-headers-rpi/linux-headers-3.18.16-v7%2b_3.18.16-v7%2b-2_armhf.deb


11. 다음 명령을 실행합니다. 수행이 완료된 후 에러 메시지가 없는지 확인합니다.

pi@raspberrypi /lib/modules/3.18.16-v7+ $ sudo dpkg -i linux-headers-3.18.16-v7+_3.18.16-v7+-2_armhf.deb


12. 11단계가 정상적으로 완료되면, /lib/modules/3.18.16-v7+에 빌드(build) 디렉토리가 생성되었는지 확인합니다[각주:5].


13. 디바이스 드라이버의 압축을 해제한 디렉토리로 이동한 후, 다음 명령을 수행합니다.

pi@raspberrypi ~/rtl8192du-master $ sudo make


14. ls 명령을 입력하여 디바이스 드라이버가 제대로 컴파일되었는지 확인합니다. 정상적으로 컴파일 되었다면 8192du.ko 파일이 생성됩니다. 


15. 8192du.ko 파일이 생성되었으면, 다음 명령을 수행합니다. 

pi@raspberrypi ~/rtl8192du-master $ sudo make install


16. 라즈베리 파이을 부팅하는 동안 이 디바이스 드라이버 모듈이 시스템에 등록되도록 설정합니다. sudo vi /etc/modules/ 에서 파일의 제일 마지막에 8192du를 입력한 후 시스템을 다시 시작합니다.


17. dmesg를 입력하여 부팅할 때 출력된 커널 메시지를 확인하거나, lsmod를 입력하여 모듈에 정상적으로 등록되었는지 확인합니다. 정상적으로 등록되었으면 시스템에 디바이스(ipTime N500U)를 장착합니다. 


18. ifconfig를 입력하여 디바이스(ipTime N500U)가 정상적으로 등록되었는지 확인합니다.


마치면서

지금까지 라즈베리 파이 2 Model V1.1에 ipTime N500U 디바이스 드라이버를 설치하는 방법에 대해 알아보았습니다. 처음 시작하기 전에 이 과정이 꽤 복잡할 것 같았지만, 디바이스 드라이버와 커널 헤더를 라즈베리 파이에 알맞게 변경하여 제공하는 분들이 계셔서 어렵지 않게 디바이스 드라이버를 설치할 수 있었습니다. 필자도 앞으로 더 노력해서 이 분들처럼 사회에 기여할 수 있는 사람이 되었으면 좋겠습니다.


한 가지 주의사항을 알려드리면, 각 단계마다 로그 메시지를 확인하십시오. 예기치 않은 오류나 예외가 발생할 수 있습니다. 각 메시지를 확인한 후, 상황에 알맞게 대처해야 합니다. 위 예제는 RASPBIAN을 처음 설치한 환경에서 진행한 것으로 여러분의 시스템에서는 예기치 않은 예외가 발생할 수 있습니다. 대부분 메시지를 확인하면 해결할 수 있으니, 꼭 메시지를 확인하십시오.

  1. 최근에는 라즈비안보다 NOOBS를 추천하는 것 같습니다. [본문으로]
  2. 필자의 환경과 여러분의 환경은 다를 수 있습니다. [본문으로]
  3. 2015년 6월 기준으로 Windows Preview 버전이 출시되어 있습니다. [본문으로]
  4. 대부분 vi 또는 nano를 사용할 것 같습니다. [본문으로]
  5. 11단계가 정상적으로 완료되지 않아도 build 디렉토리가 생성될 수 있습니다. [본문으로]
DISQUS 로드 중…
댓글 로드 중…

블로그 정보

hyeonsig notes - 천사마음

Carpe Diem~♥ 내일이 기대되는 사람이 되자.

최근에 게시된 글