最近Amazonで Edimax EW-7811Un WiFi USBアダプター を購入しました。少数のOpenBSDユーザーがそれで成功したと報告しており、 manページ のurtwn(4)
によってサポートされているとリストされています。
私は現在、AsusネットブックでOpenBSD 5.5 AMD64(先週末にダウンロード)を実行しています。ワイヤレスアダプタは、予想どおりurtwn0
として認識され、挿入または削除するとそのように報告されます。マニュアルページで説明されているように、次の内容で/etc/hostname.urtwn0
を作成しました。
nwid mynetwork
wpakey mykey
dhcp
ここで、mynetwork
とmykey
は、それぞれ私のWifiネットワーク名とパスワードです。ネットワークは実際にはWPA2であり、それ自体が問題を引き起こしている可能性がありますが、OSはファームウェアをロードすることさえできないようです。 sh /etc/netstart urtwn0
を実行すると、次の出力が得られます。
urtwn0: failed loadfirmware of file urtwn-rt18192cfwT (error 2)
urtwn0: no link ............ sleeping
ファームウェアが破損している可能性はありますか?アダプターを使うのはこれが初めてです。おそらく、Edimaxはファームウェアを変更し、OpenBSDの現在のurtwn
実装を壊しましたか?また、私はばかげた間違いをしているだけですか?
まず最初に:_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
関連のパッケージなので、おそらくportsツリーを使用する必要があります。
FAQ で説明されているようにポートツリーを設定し、_make install
_からrootとして_/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 ドライバーは [email protected] で数回言及されています。たとえば、USB関連の問題がいくつかありました。投稿する前に、表示されている内容に関連するものがあるかどうかを確認してください。
追加:
ここでソースコードを確認しましたが、このエラーメッセージを取得する唯一の方法は、_sys/dev/usb/if_urtwn.c
_の_2194
_行にある関数urtwn_load_firmware()
からです。
_ /* 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アダプターのメモリーにロードしようとします。ファイルが見つからないため、報告したエラーメッセージが表示されます。