前回の GentooでDvorak配列を設定して”control”と”caps Lock”キーを入れ替える に続き
今回は無線LANの設定をしたいとおもいます。
使っているMacBookのバージョンは4,1(13-inch, Early 2008)です。
1. 接続されているデバイスを確認
$ lspci | less
02:00.0 Ntework controller [0280]: Broadcom Corporation BCM4321 802.11a/b/g/n [14e4:4328] (rev 03)
『Broadcom Corporation BCM4321』を利用していることが解りました。
(lspci
コマンドは emerge sys-apps/pciutils
で使えます)
2. デバイスの状態を確認
$ dmesg
...
b43-phy0: Broadcom 4321 WLAN found (core revision 11)
b43-phy0 ERROR: FOUND UNSUPPORTED PHY (Analog 5, Type 4, Revision 1)
b43: probe of ssb0:0 failed with error -95
Broadcom 43xx driver loaded [ Features: PML ]
...
正しく認識されていないことが解りました。
それでは、カーネルの設定〜アクセスポイントの設定までの
作業履歴を残していきたいと思います。
3. カーネルの設定
$ cd /usr/src/linux
$ make menuconfig
Device Drivers --->
Broadcom specific AMBA
<M> BCMA support
[x] Support for BCMA on PCI-host bus
[x] BCMA Broadcom GBIT MAC COMMON core driver
[ ] BCMA debugging (NEW)
[*] Network device support
[*] Wireless LAN
[ ] Broadcom 43xx debugging
< > Broadcom 43xx-legacy wireless support (mac80211 stack)
<M> Broadcom IEEE802.11n PCIe SoftMAC WLAN driver
<M> Broadcom IEEE802.11n embedded FullMAC WLAN driver
[*] USB bus interface support for FullMAC driver (NEW)
-*- Networking support
-*- Wireless
<M> cfg80211 - wireless configuration API
[*] cfg80211 wireless extensions compatibility
4. ドライバの変更
こちら のREADME.txtに従って”wl.ko”ファイルを作成します。
$ mkdir /tmp/hybrid_wl
$ cd /tmp/hybrid_wl
$ wget http://www.broadcom.com/docs/linux_sta/hybrid-portsrc_x86_32-v5_100_82_112.tar.gz
$ tar xzf hybrid-portsrc_x86_32-v5_100_82_112.tar.gz
手順書に従ってmake
を実行すると、以下のメッセージが出て失敗します。
KBUILD_NOPEDANTIC=1 make -C /lib/modules/`uname -r`/build M=`pwd`
make[1]: Entering directory `/usr/src/linux-3.8.13-gentoo'
Wireless Extension is the only possible API for this kernel version
Using Wireless Extension API
LD /tmp/hybrid_wl/lbuilt-in.o
CC [M] /tmp/hybrid_wl/src/shared/linux_osl.o
CC [M] /tmp/hybrid_wl/src/wl/sys/wl_linux.o
/tmp/hybrid_wl/src/wl/sys/wl_linux.c:43:24: fatal error: asm/system.h: No such file or directory
compilation terminated.
make[2]: *** [/tmp/hybrid_wl/src/wl/sys/wl_linux.o] Error 1
make[1]: *** [_module_/tmp/hybrid_wl] Error 2
make[1]: Leaving directory `/usr/src/linux-3.8.13-gentoo'
make: *** [all] Error 2
“src/wl/sys/wl_linux.c”ファイルを編集します。
-- 43行目
#include <asm/system.h>
↓
#include <asm/switch_to.h>
-- 388行目
.ndo_set_multicast_list = wl_set_multicast_list,
↓
.ndo_set_rx_mode = wl_set_multicast_list,
ファイルを編集したらmake
から手順書の作業を再開します
$ make
$ make install
$ depmod
$ modprobe wl
生成された”wl.ko”ファイルを、既存のものと置き換えます。
$ rmmod wl
$ mv /lib/modules/3.8.13-gentoo/kernel/net/wireless/wl.ko /lib/modules/3.8.13-gentoo/kernel/net/wireless/wl.ko.org
$ cp ./wl.ko /lib/modules/3.8.13-gentoo/kernel/net/wireless/
$ depmod
$ modprobe wl
不要なモジュールを読まない様に、ブラックリストに追記し
“wl”モジュールをリロードします
$ echo "blacklist ssb" >> /etc/modprobe.d/blacklist.conf
$ echo "blacklist bcma" >> /etc/modprobe.d/blacklist.conf
$ echo "blacklist b43" >> /etc/modprobe.d/blacklist.conf
$ rmmod ssb
$ rmmod bcma
$ rmmod b43
$ rmmod wl
$ modprobe wl
これで『Broadcom BCM4321』が認識されました。
$ iwconfig
enp2s0 IEEE 802.11abgn ESSID:""
Mode:Managed Frequency:2.447 GHz Access Point: Not-Associated
Bit Rate:130 Mb/s Tx-Power:24 dBm
Retry min limit:7 RTS thr:off Fragment thr:off
Power Managementmode:All packets received
Link Quality=5/5 Signal level=0 dBm Noise level=-57 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
5. ドライバの設定
”/etc/conf.d/net”ファイルに以下を追記
module_enp2s0="wpa_supplicant dhcpcd"
config_enp2s0="dhcp"
dhcpcdデーモンの自動起動が設定されている場合は削除します。
$ rc-update del dhcpcd
それでは、アクセスポイントの設定に進みます。
6. アクセスポイントの設定
サンプルの設定ファイルを流用します。
まずは、”/usr/share/doc/wpa_supplicant-
”/etc/wpa_supplicant/wpa_supplicant.conf”に展開し
557行目の『Example blocks:』以下の行を消しちゃいます。
そこにアクセスポイントの情報を追記していきます。
wpa_passshpase
コマンドで、アクセスポイント名、暗号化したパスフレーズを追記します。
$ wpa_passphrase {アクセスポイント名} {パスフレーズ} >> /etc/wpa_supplicant/wpa_supplicant.conf
“wpa_supplicant.conf”ファイルを開き、その他の情報を追記します。
network={
scan_ssid=1
ssid="{アクセスポイント名}"
psk={暗号化されたパスフレーズ}
priority=1
}
7. 自動起動の設定
$ cd /etc/init.d
$ ln -s net.lo net.enp2s0
$ rc-update add net.enp2s0 default
8. 起動
$ /etc/init.d/net.enp2s0 start
これで設定は完了です。
iwconfig
でアクセスポイントに接続されていることを確認します。
$ iwconfig enp2s0
enp2s0 IEEE 802.11abgn ESSID:"{アクセスポイント名}"
Mode:Managed Frequency:2.447 GHz Access Point: xx:xx:xx:xx:xx:xx
Bit Rate:130 Mb/s Tx-Power:24 dBm
Retry min limit:7 RTS thr:off Fragment thr:off
Power Managementmode:All packets received
Link Quality=5/5 Signal level=0 dBm Noise level=-57 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
9. 有線LANの自動起動設定を削除
有線LANは利用は限定的になるので、自動起動の設定を削除します。
$ rc-update del net.eth0
苦節1週間、寝落ち3回、何度も外付けのUSB無線LANアダプタに逃げたくなりましたが
なんとか内蔵の無線LANが使える様になりました。
これでやっと、スタバでドヤ顔できます。
あとは、enp2s0
って名前をwlan0
とかに変更したいな。。。