FreeBSD の 15.0-RELEASE がリリースされました。ここのところ新しいバージョンがリリースされるごとに試すのが ThinxPad X13 に搭載されている Intel AX200 で 802.11ac に接続できるか試験。
このブログでも過去に何回か書いています。直近ですと 13.0-STABLE で if_iwlwifi を試していますね。が、その後も 802.11ac はダメで、結局 14.3-RELEASE になっても 802.11a 止まり、かつ suspend/resume に対応していなくて全然実用に耐えられないので、bhyve で ubuntu に PCI パススルーして ubuntsu 側で 802.11ac を利用などしていたのですけども。
では、今回新しく出た 15.0-RELEASE はどうか?
15.0-RELEASE の リリースノートを見ると・・。
https://www.freebsd.org/releases/15.0R/relnotes/#wireless-networking
ワイアレスネットワークでは LinuxKPI 由来の if_iwlwifi.ko と、新しく OpenBSD から持ってきた if_iwx.ko の二つが利用利用可能になったようですっ!! どちらも 802.11ac に対応したようです。
また RealTeK の RTL8821CE も利用可能になったようです。こちらは既に 14.3-RELEASE から 802.11n であれば if_rtw88.ko でフツーに使えるようになっていたのでまぁ、大丈夫でしょう。今回は if_rtw88.ko の話は無しです。
さてと。最初から結論を書いてしまいましょう。僕の持っている ThinkPad X13 (多分) Gen1 の Intel Wi-Fi 6 AX200 は iwlwifi0 でも iwx0 でも 802.11ac では動作しませんでした・・。orz。
pciconf -lv の結果は以下です。AX200 は 802.11ac で利用可能だと書いてあっただけど、型番とか違うのかな?
iwx0@pci0:3:0:0: class=0x028000 rev=0x1a hdr=0x00 vendor=0x8086 device=0x2723 subvendor=0x8086 subdevice=0x0080
vendor = 'Intel Corporation'
device = 'Wi-Fi 6 AX200'
class = network
|
残念なのですが、一応利用するための手順を書いておきます。
1.if_iwlwifi.ko を利用する
/etc/rc.conf に利用するカーネルモジュールを記載します。そして、ifconfig でデバイスを指定する。
kld_list="amdgpu.ko if_iwlwifi.ko"
wlans_iwlwifi0="wlan0"
ifconfig_wlan0="WPA DHCP ssid WiFi-AP"
|
pciconf -lv にもデバイスが iwlwifi0@pci0:3:0:0 になります。
if_iwlwifi.ko をロードすると起動時に以下のように認識するようになります。
wanchan kernel: iwlwifi0: mem 0xfd600000-0xfd603fff at device 0.0 on pci3
wanchan kernel: iwlwifi0: Detected crf-id 0x3617, cnv-id 0x100530 wfpm id 0x80000000
wanchan kernel: iwlwifi0: PCI dev 2723/0080, rev=0x340, rfid=0x10a100
wanchan kernel: iwlwifi0: Detected Intel(R) Wi-Fi 6 AX200 160MHz
wanchan kernel: iwlwifi0: successfully loaded firmware image 'iwlwifi-cc-a0-77.ucode'
wanchan kernel: iwlwifi0: loaded firmware version 77.0b4c06ad.0 cc-a0-77.ucode op_mode iwlmvm
wanchan kernel: iwlwifi0: Detected RF HR B3, rfid=0x10a100
wanchan kernel: iwlwifi0: base HW address: a8:7e:ea:aa:bb:cc
|
あとは /etc/rc.conf 内の設定や /etc/wpa_supplicant.conf の設定をしていれば利用可能になります。
ifconfig wlan0 scan とかコマンド打って AP を探して表示できれば使えています。
そもそも自分が使っている Wi-Fi 機器が 802.11ac や ax に対応しているか、確認するには以下のコマンドを打てば良いです。
$ ifconfig -v wlan0
wlan0: flags=8843 metric 0 mtu 1500
options=0
ether a8:7e:ea:aa:bb:cc
inet 192.168.1.38 netmask 0xffffff00 broadcast 192.168.1.255
inet6 fe80::aa7e:eaff:feaa:bbcc%wlan0 prefixlen 64 scopeid 0x3
groups: wlan
ssid WiFi-AP channel 48 (5240 MHz 11a) bssid 28:23:54:92:O3:a3
regdomain JAPAN country JP anywhere -ecm authmode WPA2/802.11i -wps
-tsn privacy ON deftxkey UNDEF
AES-CCM 2:128-bit
AES-CCM ucast:128-bit
powersavemode OFF powersavesleep 100 txpower 23 txpowmax 50.0 -dotd
rtsthreshold 2346 fragthreshold 2346 bmiss 7
11a ucast NONE mgmt 6 Mb/s mcast 6 Mb/s maxretry 6
11b ucast NONE mgmt 1 Mb/s mcast 1 Mb/s maxretry 6
11g ucast NONE mgmt 1 Mb/s mcast 1 Mb/s maxretry 6
11na ucast NONE mgmt 6 Mb/s mcast 6 Mb/s maxretry 6
11ac ucast NONE mgmt 6 Mb/s mcast 6 Mb/s maxretry 6
scanvalid 60 -bgscan bgscanintvl 300 bgscanidle 250
roam:11a rssi 7dBm rate 12 Mb/s
roam:11b rssi 7dBm rate 1 Mb/s
roam:11g rssi 7dBm rate 5 Mb/s
roam:11na rssi 7dBm MCS 1
roam:11ac rssi 7dBm MCS 1
-pureg protmode CTS -ht -htcompat -ampdu ampdulimit 64k
ampdudensity NA -amsdu -shortgi htprotmode RTSCTS -puren -smps -rifs
-stbc -ldpc -uapsd vht vht40 vht80 vht160 -vht80p80 wme -burst -dwds
roaming MANUAL bintval 100
AC_BE cwmin 4 cwmax 10 aifs 3 txopLimit 0 -acm ack
cwmin 4 cwmax 10 aifs 3 txopLimit 0 -acm
AC_BK cwmin 4 cwmax 10 aifs 7 txopLimit 0 -acm ack
cwmin 4 cwmax 10 aifs 7 txopLimit 0 -acm
AC_VI cwmin 3 cwmax 4 aifs 2 txopLimit 94 -acm ack
cwmin 3 cwmax 4 aifs 2 txopLimit 94 -acm
AC_VO cwmin 2 cwmax 3 aifs 2 txopLimit 47 -acm ack
cwmin 2 cwmax 3 aifs 2 txopLimit 47 -acm
parent interface: iwlwifi0
media: IEEE 802.11 Wireless Ethernet OFDM/54Mbps mode 11a
status: associated
nd6 options=21
drivername: wlan0
|
802.11ac に対応していそうな雰囲気ですが AP には 802.11a で接続していて、下のほうの media も OFDM/54Mbps mode 11a になっちゃっています・・。orz
parent interface: は 正しく iwlwifi0 になってます。
なんでなのだろう・・。残念。
しかし、802.11a でも AX200 は 20Mbps程度でるので、USB 接続の rtwn0 よりは 2,3Mbps 程度早い雰囲気でしょうか・・。
あ。追加で一点。iwlwifi0 は sysctl 設定があります。以下、ピックアップしましたが、 /boot/loader.conf に記載することができます。
compat.linuxkpi.80211.hw_crypto="1"
compat.linuxkpi.iwlwifi_11n_disable=1
compat.linuxkpi.iwlwifi_disable_11ac=0
compat.linuxkpi.iwlwifi_disable_11ax=0
|
ただし、この設定に準じて動作しているのかは良くわかりません・・。
2.if_iwx.ko を利用する
次に 15.0-RELEASE と同時に OpenBSD から移植されたという if_iwx.ko を利用してみます。こちらも /etc/rc.conf に設定が必要です。
kld_list="amdgpu.ko if_iwx.ko"
devmatch_blocklist="if_iwlwifi.ko"
wlans_iwx0="wlan0"
ifconfig_wlan0="WPA DHCP ssid WiFi-AP"
|
まぁ、一番上の kld_list への if_iwx.ko の記載は不要です。
devmatch_blocklist=”if_iwlwifi.ko” は必要です。 この行を入れないと、たとえ kldload if_iwx.ko を指定していても if_iwlwifi.ko がデバイスを持っていってしまうのでブロックリストに記載します。これで pciconf -lv しても iwx0@pci0:3:0:0: となります。
これは Intel Wireless-AC 9260 を使っている場合にも効果的で devmatch_blocklist=”if_iwm.ko” などと書いておくと if_iwlwifi.ko を利用するようになります。ただ、どちらのカーネルモジュールを利用してね 802.11a での通信になりますが・・。
話をもとに戻してと。起動時はこんな感じで認識します。
wanchan kernel: iwx0: mem 0xfd600000-0xfd603fff at device 0.0 on pci3
wanchan kernel: iwlwifi-cc-a0-77.ucode: could not load firmware image, error 8
wanchan kernel: uhub5: 4 ports with 4 removable, self powered
wanchan kernel: iwx0: hw rev 0x340, fw 77.0b4c06ad.0, address a8:7e:ea:be:3a:fc
wanchan kernel: iwx0: 11a rates: 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
wanchan kernel: iwx0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
wanchan kernel: iwx0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
wanchan kernel: iwx0: 2T2R
wanchan kernel: iwx0: 11na MCS 20MHz
wanchan kernel: iwx0: MCS 0-7: 6.5Mbps - 65Mbps
wanchan kernel: iwx0: MCS 8-15: 13Mbps - 130Mbps
wanchan kernel: iwx0: 11na MCS 20MHz SGI
wanchan kernel: iwx0: MCS 0-7: 7Mbps - 72Mbps
wanchan kernel: iwx0: MCS 8-15: 14.5Mbps - 144.5Mbps
wanchan kernel: iwx0: 11na MCS 40MHz:
wanchan kernel: iwx0: MCS 0-7: 13.5Mbps - 135Mbps
wanchan kernel: iwx0: MCS 8-15: 27Mbps - 270Mbps
wanchan kernel: iwx0: 11na MCS 40MHz SGI:
wanchan kernel: iwx0: MCS 0-7: 15Mbps - 150Mbps
wanchan kernel: iwx0: MCS 8-15: 30Mbps - 300Mbps
wanchan kernel: iwx0: 11ng MCS 20MHz
wanchan kernel: iwx0: MCS 0-7: 6.5Mbps - 65Mbps
wanchan kernel: iwx0: MCS 8-15: 13Mbps - 130Mbps
wanchan kernel: iwx0: 11ng MCS 20MHz SGI
wanchan kernel: iwx0: MCS 0-7: 7Mbps - 72Mbps
wanchan kernel: iwx0: MCS 8-15: 14.5Mbps - 144.5Mbps
wanchan kernel: iwx0: 11ng MCS 40MHz:
wanchan kernel: iwx0: MCS 0-7: 13.5Mbps - 135Mbps
wanchan kernel: iwx0: MCS 8-15: 27Mbps - 270Mbps
wanchan kernel: iwx0: 11ng MCS 40MHz SGI:
wanchan kernel: iwx0: MCS 0-7: 15Mbps - 150Mbps
wanchan kernel: iwx0: MCS 8-15: 30Mbps - 300Mbps
wanchan kernel: iwx0: [VHT] Channel Widths: 20MHz, 40MHz, 80MHz
wanchan kernel: iwx0: [VHT] Features: 31800020
wanchan kernel: iwx0: [VHT] NSS 1: TX MCS 0..9, RX MCS 0..9
wanchan kernel: iwx0: [VHT] NSS 2: TX MCS 0..9, RX MCS 0..9
|
ちょっといっぱい出力されますね。それにしも、ファームウェアの iwlwifi-cc-a0-77.ucode のロードに失敗しているのが気になりますが・・。
こちらも ifconfig -v wlan0 の出力結果を掲載しておきます。
$ ifconfig -v wlan0
wlan0: flags=8843 metric 0 mtu 1500
options=0
ether a8:7e:ea:aa:bb:cc
inet 192.168.1.38 netmask 0xffffff00 broadcast 192.168.1.255
inet6 fe80::aa7e:eaff:feaa:bbcc%wlan0 prefixlen 64 scopeid 0x3
groups: wlan
ssid WiFi-AP channel 48 (5240 MHz 11a) bssid 28:23:54:92:O3:a3
regdomain JAPAN country JP anywhere -ecm authmode WPA2/802.11i -wps
-tsn privacy ON deftxkey UNDEF
AES-CCM 2:128-bit
AES-CCM ucast:128-bit
powersavemode OFF powersavesleep 100 txpower 23 txpowmax 50.0 -dotd
rtsthreshold 2346 fragthreshold 2346 bmiss 10
11a ucast NONE mgmt 6 Mb/s mcast 6 Mb/s maxretry 6
11b ucast NONE mgmt 1 Mb/s mcast 1 Mb/s maxretry 6
11g ucast NONE mgmt 1 Mb/s mcast 1 Mb/s maxretry 6
11na ucast NONE mgmt 6 Mb/s mcast 6 Mb/s maxretry 6
11ng ucast NONE mgmt 1 Mb/s mcast 1 Mb/s maxretry 6
11ac ucast NONE mgmt 6 Mb/s mcast 6 Mb/s maxretry 6
scanvalid 60 bgscan bgscanintvl 300 bgscanidle 250
roam:11a rssi 7dBm rate 12 Mb/s
roam:11b rssi 7dBm rate 1 Mb/s
roam:11g rssi 7dBm rate 5 Mb/s
roam:11na rssi 7dBm MCS 1
roam:11ng rssi 7dBm MCS 1
roam:11ac rssi 7dBm MCS 1
-pureg protmode CTS ht htcompat ampdu ampdulimit 64k ampdudensity NA
-amsdutx amsdurx shortgi htprotmode RTSCTS -puren -smps -rifs -stbc
-ldpc -uapsd vht vht40 vht80 -vht160 -vht80p80 wme -burst -dwds
roaming MANUAL bintval 100
AC_BE cwmin 4 cwmax 10 aifs 3 txopLimit 0 -acm ack
cwmin 4 cwmax 10 aifs 3 txopLimit 0 -acm
AC_BK cwmin 4 cwmax 10 aifs 7 txopLimit 0 -acm ack
cwmin 4 cwmax 10 aifs 7 txopLimit 0 -acm
AC_VI cwmin 3 cwmax 4 aifs 2 txopLimit 94 -acm ack
cwmin 3 cwmax 4 aifs 2 txopLimit 94 -acm
AC_VO cwmin 2 cwmax 3 aifs 2 txopLimit 47 -acm ack
cwmin 2 cwmax 3 aifs 2 txopLimit 47 -acm
parent interface: iwx0
media: IEEE 802.11 Wireless Ethernet autoselect mode 11na
status: associated
nd6 options=21
drivername: wlan0
|
こちらも 802.11ac に対応していそうな気配はあるのですが、実際には 802.11a での接続でした。ファームウェアのロードに失敗しているのがちょっと気になりますが・・。
iwlwifi0 と iwx0 で 802.11a への接続時、どちらが速いか?と、言われれば iwlwifi0 のほうか、2,3Mbps くらい速いかなぁ。と、いう気はしますが、どちらも 802.11a での接続であることには変わりません。
あと、今回試してないのは AP がステスル機能を有効化している場合の接続状況についてです。 AP のステルス機能有効化については Apple も推奨してないので、僕の家のステルス機能は無効化しました。以前検証したときも iwlwifi0 はステルス有効時には接続できなかったので、今回は検証していません。
最後に suspen/retsume の対応について書いて終わりにします。iwlwifi0 と iwx0 の両方とも suspend/resume には対応していません。これは明示的に FreeBSD の forums にも記載がありました。ただ、 resume 後に service netif restart wlan0 を実行すると復活します。なので NotePC でも特に問題無く利用できます。
rtwn0 などは suspend/resume に対応しているのですが、まぁ、わかっていれば、こういう仕様でも良いのかな。と、思いました。
と、いうことで FreeBSD 15.0-RELEASE の個人的な目玉機能である Wi-Fi については以上になります。 AX201 とか持っている人は多分 802.11ac で通信できているのでしょうなぁ・・。
僕も AX201 とか、メルカリで探してみようかなぁ・・。