OpenBSD는 지원되는 WiFi USB 어댑터에 대한 펌웨어를 로드할 수 없습니다.

OpenBSD는 지원되는 WiFi USB 어댑터에 대한 펌웨어를 로드할 수 없습니다.

최근에 하나 샀어요Edimax EW-7811Un WiFi USB 어댑터아마존에서. 일부 OpenBSD 사용자는 이 기능이 성공했다고 보고했으며 다음 에서 urtwn(4)지원하는 것으로 나열됩니다.매뉴얼 페이지.

저는 현재 Asus 넷북에서 OpenBSD 5.5 amd64(지난 주말에 다운로드함)를 실행하고 있습니다. 예상대로 무선 어댑터 urtwn0를 연결하거나 제거하면 무선 어댑터가 인식 되고 보고됩니다. /etc/hostname.urtwn0맨 페이지에 설명된 대로 작성했습니다 .

nwid mynetwork
wpakey mykey
dhcp

내 Wi-Fi 네트워크 이름과 비밀번호는 각각 어디에 있고 mynetwork는 무엇입니까? mykey네트워크는 실제로 WPA2이므로 자체 문제가 발생할 수 있지만 OS는 펌웨어를 로드할 수 없는 것 같습니다. 을 실행하면 sh /etc/netstart urtwn0다음과 같은 결과가 출력됩니다.

urtwn0: failed loadfirmware of file urtwn-rt18192cfwT (error 2)
urtwn0: no link ............ sleeping

펌웨어가 손상되었을 가능성이 있나요? 어댑터를 처음 사용해 봤습니다. 아마도 Edimax가 펌웨어를 변경하고 OpenBSD의 현재 urtwn구현을 중단했습니까? 아니면 제가 멍청한 실수를 한 걸까요?

답변1

첫째, hostname.urtwn0파일이 괜찮아 보이는데, 파일에 오류가 있으면 완전히 다른 오류 메시지가 표시됩니다.

이 메시지는 urtwn0: failed loadfirmware of file urtwn-rt18192cfwT (error 2) 펌웨어가 올바른 위치에 설치되지 않았음을 나타냅니다.

설명된 대로loadfirmware(9), 이 함수는 errno스타일 오류 코드를 반환합니다.errno(2)설명하다:

2 ENOENT No such file or directory.
    A component of a specified pathname did not exist, or the pathname
    was an empty string.

/etc/firmware/urtwn-rt18192cfwT드라이버가 로드할 파일이 있어야 합니다 . 1 트리에서 이 파일을 찾을 수 없을 가능성이 높습니다.

1자세한 내용은 답변 끝부분에 있습니다.


당신이 가지고 있다고 가정일부상자를 인터넷에 연결하는 방법:

펌웨어 설치를 실행하여 fw_update -v파일이 올바른 위치에 있고 손상되지 않았는지 확인하십시오. 운이 좋으면 그게 전부입니다.

실패하면 다음에서 펌웨어를 설치해 볼 수 있습니다.패키지 또는 포트(먼저 이 FAQ를 읽어보세요!) 내 로컬 이미지에는 관련 패키지가 없으므로 urtwn포트 트리를 사용해야 할 수도 있습니다.

에 설명된 대로 포트 트리를 설정합니다.자주 묻는 질문, 그런 다음 make install루트로 실행합니다 /usr/ports/sysutils/firmware/urtwn.


상자를 인터넷에 연결할 수 없는 경우:

펌웨어는 다음에서 구할 수 있습니다.http://firmware.openbsd.org/firmware-dist/urtwn-1.1p0.tgz. 거기에서 가져와서 USB 스틱에 넣고 OpenBSD 상자에 복사하세요. 아카이브를 추출하고 파일 urtwn-*/etc/firmware/.

fw_update -v이것이 작동한다면, 네트워크에 연결된 후에 실행하는 것이 가장 좋습니다 . 이런 방식으로 시스템 유지 관리 스크립트는 필요할 때 펌웨어를 모니터링하고 업그레이드합니다.


이 모든 것이 도움이 되지 않는다면 아마도메일링 리스트. 그곳 사람들은 일반적으로 친절하고 숙제를 하면 도움을 줍니다 2 .

2 드라이버가 여러 번 언급됩니다.[이메일 보호됨]. 예를 들어, USB 관련 문제가 일부 있는데, 게시하기 전에 보고 계신 것과 관련된 것이 있는지 확인하시기 바랍니다.


다음에 추가:

이제 소스 코드를 살펴보았는데 이 오류 메시지를 표시하는 유일한 방법은 함수의 urtwn_load_firmware()at sys/dev/usb/if_urtwn.c라인을 이용하는 것입니다 2194.

   /* Read firmware image from the filesystem. */
   if ((sc->chip & (URTWN_CHIP_UMC_A_CUT | URTWN_CHIP_92C)) ==
       URTWN_CHIP_UMC_A_CUT)
           name = "urtwn-rtl8192cfwU";
   else
           name = "urtwn-rtl8192cfwT";
   if ((error = loadfirmware(name, &fw, &len)) != 0) {
           printf("%s: failed loadfirmware of file %s (error %d)\n",
               sc->sc_dev.dv_xname, name, error);
           return (error);
   }

함수 loadfirmware()( sys/dev/firmload.c)는 경로를 생성 /etc/firmware/urtwn-rtl8192cfwT하고 파일을 USB 어댑터의 메모리에 로드하려고 시도합니다. 파일을 찾을 수 없기 때문에 보고된 오류 메시지가 나타납니다.

관련 정보