FreeBSD 8.0 で SOTEC C103 の無線 LAN (Atheros AR928X) を有効にする手順
現状と下準備
一応、FreeBSD 8.0-RELEASE-p2 で起動時に、ath0 というデバイスは表示されるものの、私ではこれをうまく設定することができなかった。そこで今回も、ndis0 を使用することにした。とりあえず参考までにうまくいかなかった例も、この記事の末尾に示した。
まず、windows 用のドライバである athw.sys と oem26.inf を用意して、ndis 用のデバイスドライバを作成する。その手順は、FreeBSD 7.2 で SOTEC C103 の無線 LAN を有効にする手順 - r_coppeliaの日記 に記述したので今回は省略。
ndis を使用する例。
athw_sys.ko の生成と /boot/loader.conf の設定。
上の blog の手順に従って、athw_sys.ko というファイルを生成し、それを下のようにして /boot/kernel/ ディレクトリなどに配置。
# cp -i athw_sys.ko /boot/kernel/
そして /boot/loader.conf に、下記の一行を書き加えた。この一行によって、FreeBSD が起動時に、自動的にこの作成したデバイス・ドライバが読み込まれる。
athw_sys_load="YES"
/etc/rc.conf の設定と、パスワードのために /etc/wpa_supplicant.conf を設定する。
つぎは、/etc/rc.conf の設定と、パスワードなどの設定。まず /etc/rc.conf の末尾に、下記の二行を書き加える。これで(無線 LAN ルータなどで DHCP が有効になっているのなら) FreeBSD を起動したさいに、wlan0 というデバイスに、IP アドレスなどが割り振られることになる。
wlans_ndis0="wlan0" ifconfig_wlan0="WPA DHCP"
また、/etc/wpa_supplicant.conf というファイルを作成した。ここにパスワードなどを記述する。
その中身は以下の通り。
ctrl_interface=/var/run/wpa_supplicant ap_scan=2 network={ ssid=" この中には ssid キーが入っている。 " bssid= ここにも bssid を入力 scan_ssid=1 key_mgmt=WPA-PSK psk=" この中には、psk のキーが入ってる。" }
再起動
あとは再起動。再起動後に ifconfig などと入力すれば、ndis0 と wlan0 というデバイスが生成されているはず。そして wlan0 に IP アドレスなどが割り振られているはず。割り振られていたら、めでたしめでたし。
再起動後の ifconfig wlan0 の出力結果
> ifconfig wlan0 wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 ether 省略 media: IEEE 802.11 Wireless Ethernet OFDM/54Mbps mode 11g status: associated ssid 省略 channel 3 (2422 Mhz 11g) bssid 省略 country US authmode WPA2/802.11i privacy OFF powersavemode CAM powersavesleep 100 txpower 0 bmiss 7 mcastrate 6 mgmtrate 6 scanvalid 60 protmode CTS roaming MANUAL bintval 0
参考までに、 ndis を使わず、うまくいかなかった例その1
その設定。
/boot/loader.conf には以下の一行を記述。
if_ath_load="YES"
/etc/rc.conf には以下の二行を記述。
wlans_ath0="wlan0" ifconfig_wlan0="WPA DHCP"
再起動時の dmesg
> dmesg | grep ath module ath already present! ath0: <Atheros 9280> mem 0xd0000000-0xd000ffff irq 16 at device 0.0 on pci2 ath0: [ITHREAD] ath0: AR9280 mac 128.2 RF5133 phy 13.0
ifconfig wlan0 と ifconfig ath0 の出力結果。
# ifconfig wlan0 wlan0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500 ether (この記述は省略。) media: IEEE 802.11 Wireless Ethernet autoselect (autoselect) status: no carrier ssid "" channel 1 (2412 Mhz 11b) regdomain 96 indoor ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF txpower 20 bmiss 7 scanvalid 450 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 1 wme burst roaming MANUAL bintval 0 #
# ifconfig ath0 ath0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 2290 ether (この記述は省略。) media: IEEE 802.11 Wireless Ethernet autoselect (autoselect) status: no carrier #
さらに wpa_supplicant を手動で実行した結果
起動後、一応、念のためにさらに wpa_suuplicant を wlan0 と ath0 に対して、手動で実行してみたときの実行結果。
# wpa_supplicant -c/etc/wpa_supplicant.conf -iwlan0 ctrl_iface exists and seems to be in use - cannot override it Delete '/var/run/wpa_supplicant/wlan0' manually if it is not used anymore Failed to initialize control interface '/var/run/wpa_supplicant'. You may have another wpa_supplicant process already running or the file was left by an unclean termination of wpa_supplicant in which case you will need to manually remove this file before starting wpa_supplicant again. ioctl[SIOCS80211, op 26, arg 0x0]: Operation not supported Failed to disable WPA in the driver. ELOOP: remaining socket: sock=4 eloop_data=0x28406140 user_data=0x2840d040 handler=0x8069f40 #
# wpa_supplicant -c/etc/wpa_supplicant.conf -iath0 ioctl[SIOCG80211, op 98, len 32]: Invalid argument Failed to initialize driver interface ELOOP: remaining socket: sock=4 eloop_data=0x28406140 user_data=0x2840d040 handler=0x8069f40 #
うまくいかなかった例その2。/etc/rc.conf に ifconfig_ath0="WPA DHCP" と記述した例。
設定
/boot/loader.conf はその1と同じ。/etc/rc.conf は、以下のように記述。
ifconfig_ath0="WPA DHCP"
wpa_supplicant を手動で実行した結果
起動後、一応、念のために wpa_suuplicant を手動で実行してみたときの実行結果。
# wpa_supplicant -c/etc/wpa_supplicant.conf -iath0 ioctl[SIOCG80211, op 98, len 32]: Invalid argument Failed to initialize driver interface ELOOP: remaining socket: sock=4 eloop_data=0x28406140 user_data=0x2840d040 handler=0x8069f40 #