Arch Linux | intel WiFi用のファームウェアをインストール
Arch Linuxをインストール完了前は、WiFiを普通に使えていたのに、Arch Linuxをインストール完了し、PCでArch Linuxを立ち上げるとWiFiインターフェースの名称(wlo*)などPCが認識すらしていない現象が起こり、しばらく有線接続でしかインターネット接続できませんでした。
PCは、Thinkpad X260です。
まずPCが認識しているインターフェースを確認。
$ ip a
下のように、インターフェースが表示されます。
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
上記の例ではwlan0がWiFiのインターフェース名で、ip aの結果で表示されているので、PCに認識されているということなので、あとは設定すればWiFi使えるはずです。
僕の場合、上記に表示されてなかったので、下記コマンドでエラーなど確認が必要です。まずNetwork Controllerの名称を調べます。
$ lspci -v
iwlwifiなど、wifiを示唆する表示を探します。https://note.com/noabou/n/n079e14ca141b
僕の場合、kernel driver in use : iwlwifiと書かれた項目が該当でした。
Network Controller: の項目をメモなどで覚えておく。
または、テキストファイルなどにコマンドの結果を保存してあとで見れるようにします。
$ lspci -v < [デキトーなファイル名(log.txtなど)]
僕の場合、PCに取り付けられているWiFiデバイスはIntel Corporation Wireless 8260 (rev 3a) という名称 でした。
dmesgコマンドでwifi関係のメッセージを確認
$ dmesg | grep iwlwifi
僕の場合、iwlwifi-8000c-22〜36.ucodeの読み込みに関して failed with error-2というメッセージがあり、no suitable firmware found!というメッセージもありましたので、firmwareが見つからないことが原因として推測できました。
firmwareはすでにlinux-firmwareを下記コマンドでインストールしている状態でした。
$ sudo apt install linux-firmware
ここで、自分でfirmwareをインストールしなくちゃいけないと判断、
ググっていると、下記のページを発見しました。
Arch Linux Forumsというユーザーの知恵袋みたいなコーナーもあるみたいで、僕と似たような現象だったので参考にしました。
上記リンクの中で、IntelのWiFiドライバiwlwifiのfirmwareをダウンロードできるページがあったので、そこの一覧から8260用のfirmwareをダウンロードしました。
一覧に載っているやつは古いfirmwareみたいですが、Forumの中でも古いやつを入れると解決したっぽいので、まずはダウンロードしてみました。
古いやつから新しいfirmwareまで、firmwareについては下記リンクにもあるみたい。
// iwlwifi-8000C-13.ucodeをダウンロード
$ curl -O https://wireless.wiki.kernel.org/_media/en/users/drivers/iwlwifi-8000-ucode-25.30.13.0.tgz
// iwlwifi-8000C-16.ucodeをダウンロード
$ curl -O https://wireless.wiki.kernel.org/_media/en/users/drivers/iwlwifi-8000-ucode-16.242414.0.tgz
一覧からfirmwareを2つともダウンロードしたら、tgzという圧縮ファイルなので展開します。
$ tar xvzf [圧縮ファイル名]
展開したら、iwlwifi-8000C-13.ucodeおよびiwlwifi-8000C-16.ucodeの入っているディレクトリに移動し、それぞれのファイルを/lib/firmwareに移動させます。
$ cd Downloads/iwlwifi-8000-ucode-25.30.13.0/
sudo cp iwlwifi-8000C-13.ucode /lib/firmware
$ cd Downloads/iwlwifi-8000-ucode-16.242414.0/
sudo cp iwlwifi-8000C-16.ucode /lib/firmware
以上でファイルが移動されるみたいですが、ls /lib/firmwareでディレクトリ内を見ても、移動したはずのファイルが見つかりませんでした。
直接mvコマンドで入れてみても同じ。しかし、ip aコマンドで確認すると、WiFiをちゃんと認識してくれました。何かすっきりしないですが、次に進めました。
netctlでWiFi接続設定をします。
接続設定の方法については、下記の記事でnetctlを使った方法が載ってますので参照ください。