古いMacbookにFreeBSD 12.0-Release をインストールしてみた part.2
無線LANがうまく使えなかったMacBook4,1 on FreeBSD 12.0-Release を使えるように挑戦していきます。
いろいろ検索で出てきましたがこちらの記事が参考になりました。
【FreeBSD】無線LAN(Wi-Fi)に接続したい - HacoLab
dmesg で起動ログを確認。/var/log/messages でも可。6系以来のFreeBSDですがファイル構成も懐かしいです。
kernel: bwn0:mem 0x18001000-0x18001dff,0x18001f00-0x18001fff,0x18001e00-0x18001eff irq 1 at core 1 on bhnd0 kernel: bwn0: bwn_phy_n_attach: BWN_GPL_PHY not in kernel config; no PHY-N support kernel: bwn0: failed kernel: device_attach: bwn0 attach returned 6
搭載されている wi-fi のデバイスは Broadcom 802.11 MAC/PHY/Radio, rev 12 として認識はされているようですが最終的に認識に失敗しているようです。
% sysctl net.wlan.devices net.wlan.devices: bwn0
ジェネリックカーネルの設定ファイルでは bwn がコメントアウトされているので有効にして options BWN_GPL_PHY を追加します。
GENERICカーネルでは使わない機能もあるのでGENERICカーネルの設定ファイルをコピーしてMacBook4,1用のカーネルを作るのも良いと思います。
/usr/src/sys/amd64/conf/GENERIC
device bwn # Broadcom BCM43xx wireless NICs. options BWN_GPL_PHY
カーネルをコンパイルしてインスールします。古いマシンではないと思っていたのですがカーネルのコンパイルは1時間以上かかりますね...
# cd /usr/src # make buildkernel # make installkernel
カーネルを設定ファイルを変えた場合は KERNCONF= 指定しましょう。久しぶりにカーネルコンパイルしたら オプションを間違ってKERNELCONF と指定して GENERIC カーネルを作ってしまいました...(汗)
【参考】第8章 FreeBSD カーネルのコンフィグレーション
第8章 FreeBSD カーネルのコンフィグレーション
ports から net/bwn-firmware-kmod をインストールします。
# cd /usr/ports/net/bwn-firmware-kmod # make install clean # ls /boot/modules bwn_v4_lp_ucode.ko bwn_v4_n_ucode.ko bwn_v4_ucode.ko linker.hints
/boot/modules にbwn〜.ko が作られるはずです。(インストール前後でチェックしていませんでした...)
boot/loader.conf に 下記の設定を追加します。
# cat /boot/loader.conf if_bwn_load="YES"
これで起動すると メッセージが変わりましたが wi-fi の設定でエラーが出てうまくIPアドレスやssid が設定出来ません。
bwn0: <Broadcom 802.11 MAC/PHY/Radio, rev 12> mem 0x18001000-0x18001dff,0x18001f00-0x18001fff,0x18001e00-0x18001eff irq 1 at core 1 on bhnd0 bwn0: WLAN (BCM4321 rev 12) PHY (analog 5 type 4 rev 2) RADIO (manuf 0x17f ver 0x2055 rev 4) bwn0: DMA (64 bits) bwn0: Note: compiled with BWN_GPL_PHY; includes GPLv2 code bwn0: ucode fw: ucode11 bwn0: the fw file(bwn_v4_ucode11) not found bwn0: ucode fw: ucode11 bwn0: the fw file(bwn-open_v4_ucode11) not found bwn0: need multicast update callback
bwn_4_ucode11 というのが見つからないみたい....。
検索をかけてもあまり情報が見つからないのでダメ元で /boot/modules の bwn_v4_ucode.ko をコピーして bwn_v4_ucode11.ko にしたらwi-fiデバイス使えるようになりました。
%ls /boot/modules
bwn_v4_lp_ucode.ko bwn_v4_ucode.ko linker.hints
bwn_v4_n_ucode.ko bwn_v4_ucode11.ko
とりあえずIPアドレスは固定もDHCP経由でも設定できて普段使いのPCからネットワーク経由で接続出来るようになりました。
bwn0: WLAN (BCM4321 rev 12) PHY (analog 5 type 4 rev 2) RADIO (manuf 0x17f ver 0x2055 rev 4) bwn0: DMA (64 bits) bwn0: Note: compiled with BWN_GPL_PHY; includes GPLv2 code bwn0: ucode fw: ucode11 bwn0: firmware version (rev 410 patch 2160 date 0x751a time 0x7c0a) bwn0: need multicast update callback bwn0: ucode fw: ucode11 bwn0: firmware version (rev 410 patch 2160 date 0x751a time 0x7c0a) bwn0: ucode fw: ucode11 bwn0: firmware version (rev 410 patch 2160 date 0x751a time 0x7c0a) bwn0: MAC suspend failed bwn0: MAC suspend failed bwn0: ucode fw: ucode11 bwn0: firmware version (rev 410 patch 2160 date 0x751a time 0x7c0a)
IP固定で起動するとMAC〜failed が出ますがDHCPでIPアドレスを取得する時は出ていなかったような気がします。