📶

Jetpack5.1(kernel 5.10)でAX210のWi-Fi 6EとBluetoothを使う方法

2023/09/24に公開

概要

Linux Kernel5.10はAX210に対応しておらず[1]、初期状態ではWi-Fi 6EはおろかWi-Fi 5やBluetoothすら使えません。
しかしながらJetpack5.1はNVIDIAの陰謀によってkernelのバージョンが5.10に据え置かれています。このままでは折角買ったAX210がWi-FiもBluetoothも使えない文鎮と化してしまいます。
そこで、この記事では様々方法によってJetpack5.1(kernel5.10)でもAX210のWi-FiとBluetoothを有効にする方法を書いておこうと思います。

Wi-Fi

Wi-Fiを有効化する

  1. まず、下記のGitHubリポジトリのReleaseページからIntel Wi-FiカードのドライバであるiwlwifiのCore69-51バージョンのソースコードをダウンロードしてきて展開します。
    https://github.com/intel/backport-iwlwifi/releases
  2. 中にiwlwifi-stack-devfw-binariesというディレクトリがあります。まずはiwlwifi-stack-devの中に入ります。
  3. sudo make installします。
  4. 次にfw-binariesの方に入り、中身をすべて/usr/lib/firmware/にコピーします。同じファイルがあるぞと怒られたら全て置き換えてやってください(不安な方はバックアップを取っても良いでしょう)。
    これで一度再起動してやると、ひとまずWi-Fiが有効化されていると思います。しかし、まだ6GHz帯は封じられており、6GHz帯のアクセスポイントは見えないと思います。

6GHz帯を開放する

  1. iwlwifiのlinux-firmware.gitリポジトリから最新のtagが付いたものをダウンロードしてきます(執筆時点ではiwlwifi-fw-2023-09-21)。
    https://kernel.googlesource.com/pub/scm/linux/kernel/git/iwlwifi/linux-firmware.git/
    GoogleGitのダウンロード分かりづらくね?
    Google Gitだとここにダウンロードリンクがあります。私は最初気付かず苦労しました
  2. こいつを展開すると山ほどのディレクトリとファイルが出てきます。これを先程と同じように/usr/lib/firmwareにブチ込んでやりましょう。同じファイルは置換安定です

    山のようなディレクトリ・ファイルの一部
  3. もう一度再起動すると、見事に6GHzのアクセスポイントが見えるはずです!!おめでとうございます、早速繋いでみましょう🎉






    あれ、接続失敗する……?

6GHz APに繋げられるようにする[2]

そうです、Ubuntu20.04だと認証の段階で6GHz APに接続失敗してしまいます。これはwpa_supplicantのバージョンが古く、6GHz APで使われている認証方式にうまく対応できないのが原因らしいです[要出典]。
なので、wpa_supplicantのバージョンを上げてやりましょう!(もちろんaptなんか使えません)

  1. 以下のコマンドを入力して最新のwpa_supplicantのソースコードをgit cloneしてきます。[3]
    git clone git://w1.fi/hostap.git
  2. 以下のコマンドを入力して、wpa_supplicantをインストールします。
cd hostap/wpa_supplicant
sudo apt install libssl-dev libdbus-1-dev libnl-genl-3-dev libnl-route-3-dev
cp defconfig .config
make
sudo make install
sudo cp -f wpa_supplicant /usr/sbin/.
sudo chmod 755 /usr/sbin/wpa_supplicant
  1. 再起動をかけます。起動したら6GHz APに接続できるか試してみましょう。きっとうまくいくはずです!🥳🥳🥳

Bluetooth

  1. まず、下記のリポジトリからパッチが当てられたlinux kernel5.10のbluetoothドライバ部分をダウンロードしてきます。
    https://gitlab.azka.li/l4t-community/kernel/t194/kernel-5.10/-/tree/jetson_35.3.1_ax210/drivers/bluetooth

    GitLab、GitHubと違って公式でディレクトリの部分ダウンロードできるの便利ですね
  2. これを展開して出てきたkernel-5.10-jetson_35.2.1_ax210-drivers-bluetooth/drivers/bluetooth/ディレクトリの中に入ります。
cd kernel-5.10-jetson_35.2.1_ax210-drivers-bluetooth/drivers/bluetooth/
  1. 以下のコマンドを入力して、カーネルモジュールをビルドします。
sudo make -C /lib/modules/5.10.120-tegra/build M={カレントディレクトリのフルパス} modules

しばらく経ってビルドが終わると、たぶんkernel-5.10-jetson_35.2.1_ax210-drivers-bluetooth/drivers/bluetooth/ディレクトリには.koファイルが13個くらい出来てると思います。
4. /lib/modules/5.10.120-tegra/kernel/drivers/bluetoothディレクトリ直下にある13個くらいの.koファイルを片っ端からリネーム(ないし削除)します。このとき、このディレクトリ[4]にはrealtekディレクトリがありますが、その中は特にいじらないでいいです。
5. 3.でビルドしたとき出来た.koファイルを/lib/modules/5.10.120-tegra/kernel/drivers/bluetoothの中にコピーします。
6. sudo depmod -aしてから再起動しましょう。Bluetoothが有効になっているはずです!!

おわり

以上の手順でWi-Fi 6EとBluetoothをフルに有効化することができました!
拙い文章とわかりにくい説明で恐縮ですが、何かの役に立ったら嬉しいです。

脚注
  1. 本当に対応していないかは確認していません。しかし、初期状態でWi-Fi 5すら使えないというのは流石に対応していないと言われても仕方がないのではないでしょうか? ↩︎

  2. 参考文献: How to connect Wi-Fi 6E AP over the 6 GHz band with Ubuntu 21.04? ↩︎

  3. 現状最新の安定版リリースであろうhostap_2_10のtagが付いたソースをダウンロードしてきてインストールしてもうまく動きません。恐らくまだ対応が不十分なのでしょう ↩︎

  4. /lib/modules/5.10.120-tegra/kernel/drivers/bluetooth ↩︎

Discussion