OpenBSDはサポートされているWiFi USBアダプタのファームウェアをロードできません。

OpenBSDはサポートされているWiFi USBアダプタのファームウェアをロードできません。

最近1つ買いました。Edimax EW-7811Un WiFi USBアダプタAmazonで。一部のOpenBSDユーザーは、この機能が成功したことを報告し、以下でサポートされているとリストされてurtwn(4)います。マニュアルページ

私は現在、Asus Netbookで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 installrootとして実行します/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ドライバーは何度も言及されています。[Eメール保護]。たとえば、USB関連の問題がいくつかあります。公開する前に見ているものに関連するものがあることを確認してください。


次に追加:

これでソースコードを見てきましたが、このエラーメッセージを表示する唯一の方法は関数のurtwn_load_firmware()atsys/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アダプタのメモリにロードしようとします。ファイルが見つからないため、報告されたエラーメッセージが表示されます。

関連情報