Macbook Air のfedora29 を fedora30にアップグレードしたらwifiに繋がらなくなった

結論から言うと、wifiに繋るようになりました。
私の場合、原因は下記3つでした。

  1. 無線LANのドライバが使えなくなっていた
  2. wpa_supplicantというパッケージが、私の内蔵無線LAN(BCM4360)だときちんと機能しない
  3. wifiを管理するネットワークマネージャのパッケージが消えてしまっていた

ほんとに疲れた😖
以下記録です。

内蔵無線LANが認識されているか確認する

lspciコマンドを使ってpciスロットに接続されているデバイスを表示します。
(usbに刺さっているデバイスを見る感覚なのかなぁー😔)
内蔵無線lanはここに刺さっているので、このコマンドで見ました。
オプションkでドライバがロードされているかも確認します。

$ lspci -k

03:00.0 Network controller: Broadcom Inc. and subsidiaries BCM4360 802.11ac Wireless Network Adapter (rev 03)
Subsystem: Apple Inc. Device 0117
Kernel modules: bcma


内蔵無線LANは認識しているけれど、ドライバは何も表示されていませんでした。


無線LANインターフェイス名を確認する

wlで始まる名前があるかを確認します。

$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s20u2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether xxxxxx brd ff:ff:ff:ff:ff:ff

インターフェイス名が出てきていません。


とりあえず、ドライバを入れることにしました。

BCM4360のドライバを入れる

lshwコマンドで、無線LANの全体的なHW情報を表示してちょっと状況を整理。
[root@localhost ~]# lshw -class network
  *-network UNCLAIMED     
       description: Network controller
       product: BCM4360 802.11ac Wireless Network Adapter
       vendor: Broadcom Inc. and subsidiaries
       physical id: 0
       bus info: pci@0000:03:00.0
       version: 03
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress bus_master cap_list
       configuration: latency=0
       resources: memory:b0600000-b0607fff memory:b0400000-b05fffff

ドライバがあれば、ドライバ名はconfigurationに出て来る。
インタフェースもきちんと認識していればここに表示されます。
UNCLAIMEDとか出ていてぼろぼろです。


以前入れていたドライバbroadcom-wlを削除して新しいのを入れることにします。

Arch Linux のサイトのBroadcom ワイヤレスを参照すると、ヒントの欄にbroadcom-wlはカーネルをアップグレードするたびに再インストールする必要があると書いてあって驚きました😱


古いドライバbroadcom-wlを削除します。
[root@localhost ~]#dnf remove broadcom-wl


既存のリポジトリにbroadcom-wlがないようなのでRPMFusionのリポジトリを追加してインストールしました。

[root@localhost ~]#dnf install broadcom-wl

そして再起動します。




lshwコマンドで、もう一度無線LANの状態を確認します。
[root@localhost ~]# lshw -class network
  *-network DISABLED     
       description: Wireless interface
       product: BCM4360 802.11ac Wireless Network Adapter
       vendor: Broadcom Inc. and subsidiaries
       physical id: 0
       bus info: pci@0000:03:00.0
       logical name: wlp3s0
       version: 03
       serial: xxxxxxxx
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress bus_master cap_list ethernet physical wireless
       configuration: broadcast=yes driver=wl0 driverversion=6.30.223.271 (r587334) latency=0 multicast=yes wireless=IEEE 802.11
       resources: irq:18 memory:b0600000-b0607fff memory:b0400000-b05fffff


driver,driverversionという変数が表示され、無線LANがDISABLEDになりました。

logical nameのwlp3s0がインタフェース名なので、有効にしてみました。
[root@localhost ~]# ip link set wlp3s0 up
[root@localhost ~]# lshw -class network
  *-network               
       description: Wireless interface
       product: BCM4360 802.11ac Wireless Network Adapter
       vendor: Broadcom Inc. and subsidiaries
       physical id: 0
       bus info: pci@0000:03:00.0
       logical name: wlp3s0
       version: 03
       serial: xxxxxx
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress bus_master cap_list ethernet physical wireless
       configuration: broadcast=yes driver=wl0 driverversion=6.30.223.271 (r587334) latency=0 multicast=yes wireless=IEEE 802.11
       resources: irq:18 memory:b0600000-b0607fff memory:b0400000-b05fffff

DISABLEDが消えましたが、まだ繋がりません。画面の隅にいつも出てくる無線のアイコンや接続先のリストも表示される気配なし。どうなってるの…。

wpa_supplicantを入れる

こちらの記事Can’t connect to wifi after update (bcm4360 with broadcom-wl driver)によると、dcaratti/wpa_supplicantのリポジトリにあるwpa_supplicantをインストールすると上手くいくようです。

既存のwpa_supplicantを削除して、dcaratti/wpa_supplicantを入れて再起動します。
先程ドライバを入れたときに利用したRPMFusionのリポジトリは無効にしておいたほうがいいかも。

[root@localhost ~]# dnf copr enable dcaratti/wpa_supplicant
[root@localhost ~]# dnf update
でも、この時点でも全くつながらず。

NetworkManager-wifiを入れる

こちらの記事【Linux CentOS 7 64bit】WIFI接続の設定方法(コマンドラインで「nmcli」を使用する。)で、NetworkManager-wifiを入れないと無線LANが利用できないというお話が!

dnf list installedでインストール済みパッケージを確認してみると、確かにNetworkManager-wifiは入っていませんでした。
(後で確認してみたんですが、wpa_supplicantを削除するときに一緒に消えます)

[root@localhost ~]# dnf install NetworkManager-wifi

ネットワークマネージャを再起動します。
[root@localhost ~]# systemctl restart NetworkManager.service

繋がりました〜👏

参考