とっくにサポートが切れているfedora31を32にアップグレードしてみたところ、カーネルのバージョンも上がってまたもやwifiに繋がらなくなってしまいました。解決していこうと思います。
ソースコードをビルドして繋ぐ
私の MacBook Air に付いてる無線lanのハードウェアデバイスは以下です。[root@localhost ~]# lshw -class network *-network description: Wireless interface product: BCM4360 802.11ac Wireless Network Adapter vendor: Broadcom Inc. and subsidiaries今入っているwifiのドライバをビルドしてみて、何で失敗しているのかを確認します。
[root@localhost ~]# akmods Checking kmods exist for 5.10.22-100.fc32.x86_64 [ OK ] Building and installing wl-kmod [失敗] Building rpms failed; see /var/cache/akmods/wl/6.30.223.271-32-for-5.10.22-100.fc32.x86_64.failed.log for details Hint: Some kmods were ignored or failed to build or install. You can try to rebuild and install them by by calling '/usr/sbin/akmods --force' as root.エラーの詳細はログを見るように書いてあるので、ログを開いて確認します。
[root@localhost ~]#vim /var/cache/akmods/wl/6.30.223.271-32-for-5.10.22-100.fc32.x86_64.failed.log ... 2021/03/17 21:56:24 akmodsbuild: /tmp/akmodsbuild.6w8AdatF/BUILD/wl-kmod-6.30.223.271/_kmod_build_5.10.22-100.fc32.x86_64/src/wl/sys/wl_linux.c:1662:6: error: implicit declaration of function 'segment_eq' [-Werror=implicit-function-declaration] 2021/03/17 21:56:24 akmodsbuild: 1662 | if (segment_eq(get_fs(), KERNEL_DS)) 2021/03/17 21:56:24 akmodsbuild: | ^~~~~~~~~~ 2021/03/17 21:56:24 akmodsbuild: /tmp/akmodsbuild.6w8AdatF/BUILD/wl-kmod-6.30.223.271/_kmod_build_5.10.22-100.fc32.x86_64/src/wl/sys/wl_linux.c:1662:17: error: implicit declaration of function 'get_fs'; did you mean 'sget_fc'? [-Werror=implicit-function-declaration] ...
以下のサイトによると、新しいカーネルで削除されたマクロが使われているため、そのままだとエラーとなってビルドできないようです。
📕FS#68030 - [broadcom-wl-dkms] Doesn’t compile with kernel >= 5.9
前回はこちらのgithubのソースコードにお世話になっていて、上記問題への対応もされているのでgit pullしてからreadmeに書いてある手順通りにインストールしました。readmeのCompile and installでManuallyのほうの手順を実行すると、無事に繋がります。
fedora30のソフトウェアアップデートをしたらwifiに繋がらなくなった
カーネルのバージョンが上がって、使われないメソッドが出てきたのが原因のようです。
dnf install でドライバをインストールして繋ぐ
ずっとこちらのgithubのソースコードに頼っているので、今日はもうちょっと別の解決方法を考えてみます。
個人じゃなくて公式のようなところから取ってこれないかな。お世話になっているgithubのreadmeの最後のほうを見ていると、参考になりそうなリンクがあったので、その中のrpmfusionのリンクを見てみました。ここならdnfのリポジトリを登録してあるから取ってこれそう。
最初に参照したバグの報告のサイト📕FS#68030 - [broadcom-wl-dkms] Doesn’t compile with kernel >= 5.9でも、rpmfusionにドライバがアップされてるらしいことが書いてありました。fc34と書いてあるので、この問題へ対応されたドライバをdnf installしたい場合は、fedora34にしないと駄目そうなのかな🤔
現行バージョンで確認したいので、一度ドライバを削除して、dnf installでドライバを入れてみます。
ドライバは一旦消しちゃう(消し方がこれでいいのかはわからないので参考にしないでほしいmodprobe -r wl rm -f /lib/modules/5.10.22-100.fc32.x86_64/kernel/drivers/net/wireless/wl.ko
これでwifiが使えなくなりました。
一応ドライバが残ってないか一通り確認。(実行結果は省略)[root@localhost ~]# lsmod | grep wl [root@localhost ~]# rpm -qa | grep wl [root@localhost ~]dnf list installed |grep wldnf installでドライバをインストールします。
[root@localhost ~]# dnf install akmod-wlドライバをビルドしてみると、はじめと同じエラーが出ていました。
今回の修正が入ってない。
[root@localhost ~]# akmodsfedora33、fedora34へと順番にアップグレードしてから同じようにドライバをインストールします。
[root@localhost ~]# dnf install akmod-wl Copr repo for wpa_supplicant owned by dcaratti 158 B/s | 341 B 00:02 Errors during downloading metadata for repository 'copr:copr.fedorainfracloud.org:dcaratti:wpa_supplicant': - Status code: 404 for https://copr-be.cloud.fedoraproject.org/results/dcaratti/wpa_supplicant/fedora-34-x86_64/repodata/repomd.xml (IP: 52.44.175.77) Error: repo 'copr:copr.fedorainfracloud.org:dcaratti:wpa_supplicant' のメタデータのダウンロードに失敗しました : Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried Fedora 34 openh264 (From Cisco) - x86_64 1.2 kB/s | 2.5 kB 00:02 Fedora Modular 34 - x86_64 2.3 MB/s | 4.8 MB 00:02 Fedora Modular 34 - x86_64 - Updates 202 B/s | 257 B 00:01 Fedora Modular 34 - x86_64 - Test Updates 773 kB/s | 1.6 MB 00:02 Fedora 34 - x86_64 - Test Updates 3.9 MB/s | 14 MB 00:03 Fedora 34 - x86_64 - Updates 392 B/s | 257 B 00:00 Fedora 34 - x86_64 840 kB/s | 73 MB 01:28 RPM Fusion for Fedora 34 - Free - Test Updates 3.7 kB/s | 32 kB 00:08 RPM Fusion for Fedora 34 - Free 175 kB/s | 941 kB 00:05 RPM Fusion for Fedora 34 - Nonfree - Test Updat 700 B/s | 3.6 kB 00:05 RPM Fusion for Fedora 34 - Nonfree 70 kB/s | 243 kB 00:03 リポジトリーを無視します: copr:copr.fedorainfracloud.org:dcaratti:wpa_supplicant 依存関係が解決しました。 ================================================================================ パッケージ Arch バージョン リポジトリー サイズ ================================================================================ インストール: akmod-wl x86_64 6.30.223.271-37.fc34 rpmfusion-nonfree 5.5 M 依存関係のインストール: broadcom-wl noarch 6.30.223.271-16.fc34 rpmfusion-nonfree 24 k トランザクションの概要 ================================================================================ インストール 2 パッケージ ダウンロードサイズの合計: 5.5 M インストール後のサイズ: 5.5 M これでよろしいですか? [y/N]: y パッケージのダウンロード: (1/2): broadcom-wl-6.30.223.271-16.fc34.noarch. 20 kB/s | 24 kB 00:01 (2/2): akmod-wl-6.30.223.271-37.fc34.x86_64.rpm 234 kB/s | 5.5 MB 00:23 -------------------------------------------------------------------------------- 合計 224 kB/s | 5.5 MB 00:25 トランザクションの確認を実行中 トランザクションの確認に成功しました。 トランザクションのテストを実行中 トランザクションのテストに成功しました。 トランザクションを実行中 準備 : 1/1 インストール中 : broadcom-wl-6.30.223.271-16.fc34.noarch 1/2 インストール中 : akmod-wl-6.30.223.271-37.fc34.x86_64 2/2 scriptletの実行中: akmod-wl-6.30.223.271-37.fc34.x86_64 2/2 検証 : akmod-wl-6.30.223.271-37.fc34.x86_64 1/2 検証 : broadcom-wl-6.30.223.271-16.fc34.noarch 2/2 インストール済み: akmod-wl-6.30.223.271-37.fc34.x86_64 broadcom-wl-6.30.223.271-16.fc34.noarch 完了しました!
再起動すると繋がりました🤗
使ったコマンド
コマンド | 説明 |
---|---|
lsmod | grep wl | ロードされてるか |
dmesg|grep wl | 起動時のメッセージ |
dnf list installed |grep wl | akmod-wlをインストールしてないか |
modprobe -r | 依存関係を考慮して削除 |
参考
📕kmod-wl - Metapackage which tracks in wl kernel module for newest kernel
📕Linuxにおける無線LANのソフト構成 cfg80211ついて