본문 바로가기

내가 작업한 것들/소프트웨어

Rock960A/B/C 용 rtl8152 커널 드라이버 소스

 Rock960A/B/C 를 쓰는 사용자라면 아마 VAMRs 에서 배포하는 리눅스를 사용하고 있으시거나, 제가 따로 배포하는 AARCH64 빌드를 높은 확률로 사용 중 이실 것 입니다만, 이 커널이 4.4 에 기반을 하고 있는지라 Realtek 의 RTL8152 계열 USB LAN 이 ( 보통 USB 3.0 GbE 지원 제품 ) 위 화면처럼 (unnamed net_device) (uninitialized) 오류를 뱉으면서 커널에서 인식을 못하고 있는 상황을 경험 할 것입니다.

 이는 커널에 포함된 r8152 내장드라이버가 너무 옛날 것이라 생기는 문제로 최신 드라이버는 ACPI 와 개선된 net API 등을 사용해서 또 바로 사용해서 컴파일 할 수 없으므로, 이를 기존 kernel 4.4 에 맞도록 수정한 드라이버를 올립니다. 당연 DIY 로 kernel 을 새로 빌드 한 다음, rkdeveloptool 로 boot 영역을 새로 쓰시거나, dd if=boot.img of=/dev/mmcblk ... 등으로 직접 부팅 된 상태의 보드에서 이미지를 flashing 하셔도 됩니다.

  드라이버를 적용하는 방법은 kernel/drivers/net/usb 에 있는 먼저 원래 드라이버 r8152.c 를 백업 해 두시고, 아래 첨부된 파일을 덮어 씌운 다음 빌드하면 됩니다. 빌드가 정상적으로 (위 이미지 처럼) 되면, 부팅시 dmesg 로 확인해 보면 드라이버가 붙는걸 확인 할 수 있습니다.

다만 장치 이름이 바로 eth0 으로 붙거나 하지 않고, 좀 괴상하게 붙는데, 이는 어디 문제인지 확인이 필요 하며, 혹시 드라이버 상 해결 해야 하는 부분이면 개선 버젼을 올려 두도록 하겠습니다.

드라이버 다운로드

r8152_20190430-1.zip


주의사항

 본 드라이버는 realtek 에 최신 Linux Kernel 에 드라이버로 제공하는 오픈소스를 그대로 낮은 버젼의 Kernel 로 이식한 드라이버 이며, 이 드라이버 사용으로 발생하는 문제점 등은 모든 드라이버 소스가 그렇듯, 제가 책임지지 않습니다.