ThinkPad X220の無線LANカードをIntel 9260NGWに換装
ThinkPad X220に標準で搭載されている無線LANカードとBluetoothドーターカードでは、IEEE 802.11a/b/g/n、Bluetooth 2.0までしかサポートされていない。
そこで、これらをIntel 9260NGWに換装し、IEEE 802.11a/b/g/n/ac + Bluetooth 5に対応させる。
購入した商品
商品 | 価格 |
---|---|
Intel 9260NGW | $14.62 |
Fenvi M.2 NGFF Key A to Mini PCI E PCI Express Converter Adapter | $5.99 |
IPEX 4 IPEX MHF4 Gen4 UFL Female to IPEX 1 Connector Jack Male Pin | $3.68 |
最新の公式BIOSにアップデート
Intel 9260NGWを換装する前に、BIOSを最新のものにアップデートしておく。
この記事に沿って作業する。
- LinuxでThinkPad X220のBIOSをアップデートする - paz3のおもいつき
- How to update Lenovo BIOS from Linux without using Windows - nixCraft
ここからX220の最新のBIOS(1.4.6)をダウンロードする。
https://support.lenovo.com/jp/ja/downloads/DS018807
imgを作成する。
$ geteltorito.pl -o x220_bios.img 8duj31jp.iso
USBを挿してimageを書き込む。
$ sudo dd if=x220_bios.img of=/dev/sdb bs=64K
USBをX220に挿して起動する。起動画面でF12を押してUSBから起動し、「システム・プログラムの更新」を行う。
更新が終わり再起動し、F1でBIOS設定画面に入り、BIOSのバージョンが1.4.6になっていることを確認する。
もしくは以下をダウンロードしてWindows PEから実行、でもいいはず。(LinuxからのWindows PE環境の作成方法についてはこの記事を参照)
BIOS アップデート ユーティリティ (Windows 8 32bit, 64bit/ 7 32bit, 64bit/ Vista 32bit, 64bit/ XP) - ThinkPad X220, X220i, X220 Tablet - JP
Intel 9260NGWへの換装
キーボードの取り外しなどは、LenovoのThinkPad X220 ハードウェア保守マニュアルに則って行う。
購入したIntel 9260NGWと、変換アダプタ、アンテナ変換ケーブル。
元々挿さっている無線LANカードのIntel Centrino Advanced-N 6205とBluetoothドーターカードのBroadcom BCM2045Bを抜いて、Intel 9260NGWを挿す。
ただし、この状態で電源を入れると、公式BIOSのホワイトリストに阻まれて起動できない。
カスタムBIOSに変更する
公式BIOSのホワイトリストを回避して、Intel 9260NGWで起動できるようにBIOSをカスタムBIOSに変更する。
以下の記事を参考にして、USB起動のWindows PEから最新のBIOS(1.46)に更新し、カスタムBIOSのパッチを当てる。
Windows PEのUSBイメージの作成方法については以下を参照する。
Resources - ThinkPad X220 の "BIOS / FIRMWARE > WHITELIST REMOVED + ADVANCED MENU BIOS"の手順に従ってBIOSを入れ替える。
カスタムBIOSのX220_v1.46_Modified_BIOS.zipを以下からダウンロードする。
BIOS - ThinkPad X220
カスタムBIOS更新のための実行ファイルを含んだWindows PEイメージを作成する。
$ sudo mkdir /mnt/waik $ sudo mount KB3AIK_EN.iso /mnt/waik $ unzip X220_v1.46_Modified_BIOS.zip $ mv Lenovo\ X220\ v1.46\ Modified\ BIOS/ mod_bios $ mkwinpeimg --waik-dir=/mnt/waik --overlay=${PWD}/mod_bios winpe.img :: Copying primary boot files from the Windows Automated Installation Kit (/mnt/waik, X86 :: Extracting boot.wim from "/mnt/waik/WinPE.cab" :: Overlaying "/home/ryo/Downloads/bios/mod_bios" on the Windows PE filesystem :: Rebuilding WIM with changes made :: Making disk image "winpe.img" The image (winpe.img) is 139730944 bytes.
作成したイメージをUSBに焼く。
$ sudo dd if=winpe.img of=/dev/sdb bs=64K 2132+1 records in 2132+1 records out 139730944 bytes (140 MB, 133 MiB) copied, 15.3978 s, 9.1 MB/s $ sync
Windows PEを書き込んだUSBをX220に挿したまま電源を入れ、起動画面でF12を押して、USBから起動する。
WIndows PEが立ち上がる。
X直下まで移動し、LenovoカスタムBIOSのディレクトリに入り、flash.batを実行する。
実行中に3回くらいVerifyエラーになったが、その後通った。
再起動後、BIOSを確認するとAdvancedの項目が増えており、カスタムBIOSに変更できていることがわかる。
Linuxのlspciコマンドから、intel 9260が見えていることがわかる。
Intel 9260NGWを認識させる
lspciでIntel 9260NGWのモジュールは見えているが、ip linkでinterfaceが見えない。
$ lspci -k 03:00.0 Network controller: Intel Corporation Wireless-AC 9260 (rev 29) Subsystem: Intel Corporation Wireless-AC 9260 Kernel modules: iwlwifi $ 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: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
dmesgを確認すると、iwlwifiドライバのloadでエラーが出ているのがわかる。
$ dmesg | grep "iwlwifi" [ 5.264385] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-9260-th-b0-jf-b0-46.ucode failed with error -2 [ 5.264407] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-9260-th-b0-jf-b0-45.ucode failed with error -2 [ 5.264424] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-9260-th-b0-jf-b0-44.ucode failed with error -2 [ 5.264442] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-9260-th-b0-jf-b0-43.ucode failed with error -2 [ 5.264459] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-9260-th-b0-jf-b0-42.ucode failed with error -2 [ 5.264474] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-9260-th-b0-jf-b0-41.ucode failed with error -2 [ 5.264491] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-9260-th-b0-jf-b0-40.ucode failed with error -2 [ 5.264507] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-9260-th-b0-jf-b0-39.ucode failed with error -2 [ 5.264525] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-9260-th-b0-jf-b0-38.ucode failed with error -2 [ 5.264542] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-9260-th-b0-jf-b0-37.ucode failed with error -2 [ 5.264559] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-9260-th-b0-jf-b0-36.ucode failed with error -2 [ 5.264575] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-9260-th-b0-jf-b0-35.ucode failed with error -2 [ 5.264593] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-9260-th-b0-jf-b0-34.ucode failed with error -2 [ 5.264609] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-9260-th-b0-jf-b0-33.ucode failed with error -2 [ 5.264625] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-9260-th-b0-jf-b0-32.ucode failed with error -2 [ 5.264641] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-9260-th-b0-jf-b0-31.ucode failed with error -2 [ 5.264659] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-9260-th-b0-jf-b0-30.ucode failed with error -2 [ 5.264662] iwlwifi 0000:03:00.0: no suitable firmware found! [ 5.265300] iwlwifi 0000:03:00.0: minimum version required: iwlwifi-9260-th-b0-jf-b0-30 [ 5.266585] iwlwifi 0000:03:00.0: maximum version supported: iwlwifi-9260-th-b0-jf-b0-46 [ 5.267823] iwlwifi 0000:03:00.0: check git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
以下の情報を参考に、intel 9260NGWのFirmwareを入れる。
drivers - Ubuntu 18.04 cannot recognized Intel Wireless-AC 9260 - Ask Ubuntu
$ yay -S linux-firmware
これで再起動後に、wlp3s0のwlanインターフェースが見えるようになる。
$ lspci -k 03:00.0 Network controller: Intel Corporation Wireless-AC 9260 (rev 29) Subsystem: Intel Corporation Wireless-AC 9260 Kernel driver in use: iwlwifi Kernel modules: iwlwifi $ 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: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff 3: wlp3s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
この後に、 wicd
と bluetoothctl
を使用してWi-Fiへの接続及び、Bluetoothデバイスへのペアリングができることを確認した。