zd1211 무선랜을 arm용 리눅스에 포팅하는데 펌웨어를 못찾는다는 에러가 납니다.
글쓴이: kim0709 / 작성시간: 월, 2008/03/24 - 1:34오후
사용하는 무선랜 디바이스는 3COM사의 "3CRUB10075" 라는 제품이구요 이녀석이 zd1211 이라는 모듈을 사용합니다.
포팅하는 보드는 arm9코어의 리눅스 2.6.21 커널이 현재 올라가 있습니다.
zd1211이 커널에 모듈로 포함되기 때문에 firmware만 rfs에 복사해 놓으면 될 줄 알았는데
무선랜을 꽂으면 반응을 합니다.
이후 "modprobe zd1211rw" 라고 치면 메세지가 뜨면서 잠시 멈췄다가
"couldn't find firm ware zd121... error -2... " 이런 에러메세지가 뜹니다.
lsmod 해보면 분명 올라가 있습니다.(zd1211, 80211stack) 그러나 iwconfig하면 wlan이 하나도 안잡혀 있습니다.
usr/lib/firmware에 현재 펌웨어 파일을 복사해놨는데.. 저 에러로 구글링을 해보니 저 메세지는 firmware를 복사하는 폴더가
틀렸다는 뜻이랍니다... 그리고는 "/sbin/firmware_helper" 이게 맞다는 사람도 있고...
한 서너 개의 폴더에 다 복사를 해 봤는데.. 여전히 같은 에러만 나더군요.
혹시 zd1211 포팅 해보신분.. 없으신가요? 저 에러.. firmware파일을 어디 복사해야 될까요?
Forums:
/lib/firmware
노트북에서 zd1211 USB 무선랜을 사용했었는데요, 펌웨어는 /lib/firmware 아래에 복사했습니다. /usr/lib/firmware 가 아니구요.
/lib/firmware 에도 시도해보았습니다만...
결과는 똑같네요...
/lib/firmware/zd1211/[bushi
/lib/firmware/zd1211/
이게 중요한게 아니고...
소스로만 봐서 정확하진 않지만, user mode helper 가 도와줘야되는 것 아닌가요 ?
커널 소스코드는 아무리 살펴봐도 sysfs 항목만들어 연결시켜주고 이벤트 날려주는 것 외에는 없는 것 같은데요.
firmware.sh 라는 스크립트가 실행되는군요.
busybox 사용하신다면 mdev 로 udev 비스무리하게 동작시킬 수 있습니다.
OTL
mdev 나 udev 가 뭔지도.. ㅠ.ㅠ
일단 bushi 님 글이 힌트가 되는거 같네요..
근데 아직 udev 니 mdev 니 하는 것들이 뭔지도 잘 모르는 상태에서는..
해결책이 안나오네요....
일단 udev 에 대해서 알아보고 mdev 설치에 대해서도 알아보고 해야겠네요..
에공.. 뭐 이리 어려운지.. ㅠ.ㅠ
저도 똑같은 에러로.. ㅠ.ㅠ
PXA320 보드에 Kernel 2.6.22.9 올리고 zd1211rw 모듈 올렸는데..
똑같은 에러 나네요..
역시 firmware 위치도 /lib/firmware/zd1211 에 넣어도 안되고..
여기저기 옮겨봐도 안되네요..
PC 에서는 /lib/firmware/zd1211 에 넣어서 성공했는데 말이죠..
대략 난감.. 답이 없네요.. ㅠ.ㅠ
답 위에
답 위에 썼잖습니까.
firmware subsystem 에서 뿌려주는 add 이벤트에 반응하는 뭔가가 있어야 합니다.
udev 나 mdev 안 쓰십니까 ?
OTL
네.. ㅠ.ㅠ
일단 udev 나 mdev 는 설치 안되어 있는거 같아요..
이제 막 임베디드 리눅스를 시작하다 보니.. 모르는게 많네요..
사실 bushi 님 글을 제대로 이해하지도 못했어요..
그래서 udev 나 mdev 에 대해 검색해 보는 중이에요.. ^^;;
지금 사용하는 busybox 는 v1.01 이네요..
busybox 설치부터 다 공부해야 할듯.. 헐헐..
아무튼 감사합니다..
열심히 검색해 보고 있는데..
mdev 에 대해서 검색해 보고 있는데..
초보를 위한 설명이 거의 없네요...
혹시 mdev 를 어떻게 써야 할 지 알려주실 수 있나요?
busybox 1.12.1 을 받아다가 mdev 넣은 상태로 컴파일 해서 설치는 했는데요..
부팅해서 보니 /sys 에 이것저것이 생겨 있고, 여기에 firmware 디렉토리도 있더라구요..
혹시 여긴가 싶어서 /sys/firmware 에 zd1211 디렉토리 만들고 firmware 넣을라고
시도해 봤는데 디렉토리 생성 자체가 안되더라구요..
아무래도 mdev 통해서 자동으로 만들어져야 하는거 같은데..
뭐 하나 쉽게 되는게 없네요.. ㅠ.ㅠ
좀만 더 도와주세요..
전에 hotplug 라는 놈이
전에 hotplug 라는 놈이 계셨었습니다.
커널안에서 발생하는 이벤트들을 유저프로그램을 전달하는 통로였습니다.
아직도 계십니다.
/proc/sys/kernel/hotplug
시험을 해 볼 수도 있습니다.
이라는 내용을 가진 hotplugd.sh 를 만듭니다. 아무데다 적당한 곳에.
/tmp/hotplugd.sh
라 치죠.
라는 명령으로 준비를 합니다.
준비가 되셨으면 드라이버 모듈을 올립니다.
그리고 /tmp/log.txt 에 뭐가 적혔나 봅니다.
udev 는 데몬 형태로 항상 떠 있으면서 커널의 이벤트를 netlink 로 받아옵니다.
추구하는 목적과 용도가 다양하기 때문에 덩치가 크고 구조도 복잡합니다.
열악한 환경에서 운용하기엔 오버헤드가 심하다는 얘깁니다.
그래서 busybox 에 구현된 mdev 는 데몬형태가 아닙니다.
물론 netlink 를 사용하지도 않습니다. 커널config 에서 네트웍이 완전히 빠지는 경우에도 사용할 수가 있죠.
위에 설명드린 hotplug 설비를 이용해서 udev 비스무리하게 동작합니다.
netlink 로 날아오는 메시지나 hotplug 를 통해서 들어오는 정보나 내용자체는 동일합니다.
udev 의 역할 중의 하나인 장치노드 만들기도 똑같이 해줍니다.
사실 2.6.12 이후로 devfs 가 커널에서 완전히 빠지면서 이게 가장 아쉬웠던 기능이었습니다.
사용법은 busybox 에 포함된 문서중 mdev 문서를 읽어보시면 됩니다.
udev 에 비하면 한강물에 병아리 오줌입니다. 꼭 읽어보세요.
문서를 읽어보시고 나면 mdev.conf 를 어떻게 만들어야겠다... 위의 댓글에 적혀있는 firmware.sh 를 어디다 어떤 식으로 복사해놓으면 되겠다... 하고 감이 올 겁니다.
OTL
감사합니다.. ^^
일단 테스트도 해 보고 문서도 열심히 번역해 봐야겠네요. ㅋ
답변 주셔서 감사합니다. :)
댓글 달기