3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

FreeBSDAdvent Calendar 2022

Day 17

Linux 様のIntel WiFi ドライバ iwlwifi をありがたくFreeBSD上で動かすという仕組みが FreeBSD 13.1 から入ってます

Posted at

Linux のドライバを拝借する仕組み LinuxKPI

新しいハードウェアは次々生まれるが FreeBSD 向けにドライバを作るのは大変、ということで Linux のドライバを動かせたら……、しかし GPL コードは取り込みたくない、ということで生まれたのが LinuxKPI というサブシステムです。

 LinuxKPIはカーネルレベルの Linux の互換レイヤーです。作成はプログラマが GPL ソースを見ないで作成されています。この互換レイヤーにより、Linuxのドライバを修正することなくFreeBSD でコンパイル&実行できるようになります。
 この仕組みはグラフィックドライバ drm ですでに使用されていて、Intel / AMD の新しいグラフィックボード対応が拡充されました。
 この成功で波に乗って、WiFi ドライバでも LinuxKPI を使っちゃおうということで、Linux 向けの Intelチップ用 WiFi ドライバ iwlwifi が FreeBSD に取り込まれました。iwlwifi 自体は GPLv2とBSD 3-clause のデュアルライセンスなので、FreeBSD ソースツリーにcontrib として入れることができます(src/sys/contrib/dev/{iwlwifi,iwlwififw} )。

対応は13.1-RELEASE から

iwlwifi は FreeBSD 13.1-RELEASE から導入されました。12系には入らない予定のようです(FreeBSD wiki のFAQ "Will you support FreeBSD 13 or 12? "より)。

対応チップ

current の iwlwifi の man (14-current)によると、

     •   Intel(R) Dual Band Wireless AC 7260
     •   Intel(R) Dual Band Wireless N 7260
     •   Intel(R) Wireless N 7260
     •   Intel(R) Dual Band Wireless AC 3160
     •   Intel(R) Dual Band Wireless N 3160
     •   Intel(R) Wireless N 3160
     •   Intel(R) Dual Band Wireless AC 3165
     •   Intel(R) Dual Band Wireless AC 3168
     •   Intel(R) Dual Band Wireless AC 7265
     •   Intel(R) Wireless N 7265
     •   Intel(R) Dual Band Wireless N 7265
     •   Intel(R) Dual Band Wireless AC 8260
     •   Intel(R) Dual Band Wireless N 8260
     •   Intel(R) Dual Band Wireless AC 4165
     •   Intel(R) Dual Band Wireless AC 8265
     •   Intel(R) Dual Band Wireless AC 8275
     •   Killer (R) Wireless-AC 1550 Wireless Network Adapter (9260NGW) 160MHz
     •   Killer (R) Wireless-AC 1550s Wireless Network Adapter (9560NGW)
     •   Killer (R) Wireless-AC 1550i Wireless Network Adapter (9560NGW)
     •   Killer(R) Wireless-AC 1550s Wireless Network Adapter (9560D2W) 160MHz
     •   Killer(R) Wireless-AC 1550i Wireless Network Adapter (9560NGW) 160MHz
     •   Killer(R) Wi-Fi 6E AX1690s 160MHz Wireless Network Adapter (411D2W)
     •   Killer(R) Wi-Fi 6E AX1690i 160MHz Wireless Network Adapter (411NGW)
     •   Intel(R) Wireless-AC 9260-1
     •   Intel(R) Wi-Fi 6 AX200 160MHz
     •   Killer(R) Wi-Fi 6 AX1650w 160MHz Wireless Network Adapter (200D2W)
     •   Killer(R) Wi-Fi 6 AX1650x 160MHz Wireless Network Adapter (200NGW)
     •   Intel(R) Wi-Fi 6 AX201 160MHz
     •   Killer(R) Wi-Fi 6 AX1650s 160MHz Wireless Network Adapter (201D2W)
     •   Killer(R) Wi-Fi 6 AX1650i 160MHz Wireless Network Adapter (201NGW)
     •   Killer(R) Wi-Fi 6 AX1650s 160MHz Wireless Network Adapter (201NGW)
     •   Killer(R) Wi-Fi 6 AX1650i 160MHz Wireless Network Adapter (201D2W)
     •   Intel(R) Wi-Fi 6E AX211 160MHz
     •   Intel(R) Wi-Fi 6 AX210 160MHz
     •   Killer(R) Wi-Fi 6E AX1675w 160MHz Wireless Network Adapter (210D2W)
     •   Killer(R) Wi-Fi 6E AX1675x 160MHz Wireless Network Adapter (210NGW)
     •   Intel(R) Wi-Fi 6E AX411 160MHz
     •   Killer(R) Wi-Fi 6E AX1675s 160MHz Wireless Network Adapter (211NGW)
     •   Killer(R) Wi-Fi 6E AX1675i 160MHz Wireless Network Adapter (211NGW)
     •   Intel(R) Wireless-AC 9461 160MHz
     •   Intel(R) Wireless-AC 9461
     •   Intel(R) Wireless-AC 9462 160MHz
     •   Intel(R) Wireless-AC 9462
     •   Intel(R) Wireless-AC 9560 160MHz
     •   Intel(R) Wireless-AC 9560
     •   Intel(R) Wireless-AC 9270 160MHz
     •   Intel(R) Wireless-AC 9270
     •   Intel(R) Wireless-AC 9162 160MHz
     •   Intel(R) Wireless-AC 9162
     •   Intel(R) Wireless-AC 9260 160MHz
     •   Intel(R) Wireless-AC 9260
     •   Intel(R) Wi-Fi 6 AX101
     •   Intel(R) Wi-Fi 6 AX203
     •   Intel(R) Wi-Fi 6E AX221 160MHz
     •   Intel(R) Wi-Fi 6E AX231 160MHz
     •   Intel(R) TBD Bz device
     •   Intel(R) Wi-Fi 6 AX204 160MHz

current の man なので 13.1-RELEASE とは状況が違うかもしれません。

 上記には従来 iwm でサポートされていたチップも含まれていますので、古いチップならばどちらのドライバを使うか選ぶこともできます。

使い方

 肝心の使い方ですが、だいたい従来の WiFi ドライバと同じです。

 ドライバのカーネルモジュールを明示的にロードするため/etc/rc.conf の kld_list にif_iwlwifiを追記します。

kld_list="if_iwlwifi"

 グラフィックドライバも Intel を使っている人はすでに i915kms.ko が入っていると思うので、

kld_list="/boot/modules/i915kms.ko if_iwlwifi"

 という風にスペースを挟んで追記する形になると思います。

あとは他の WiFiドライバと同様に設定します。

/etc/rc.conf には

wlans_iwlwifi0=wlan0
ifconfig_wlan0="DHCP WPA -powersave"

上記では DHCP を設定しています。

あとは wpa_passphrase コマンドで

wpa_passphrase お家のssid password

でssidとパスワード指定して出力された

network={
	ssid="お家のssid"
	#psk="password"
	psk=a11c3e81e37118ce8e640b076239ef95f3cbc5a3b961010e10255b31ba69aace
}

を /etc/wpa_supplicant.conf に書き込めばWiFi 設定完了です。

dmesg で確認です。ThinkPad X250 で、Intel(R) Wireless N 7265 が認識されています。

Intel(R) Wireless WiFi based driver for FreeBSD
iwlwifi0: <iwlwifi> mem 0xf1000000-0xf1001fff at device 0.0 on pci2
iwlwifi0: successfully loaded firmware image 'iwlwifi-7265D-29.ucode'
iwlwifi0: Found debug destination: EXTERNAL_DRAM
iwlwifi0: Found debug configuration: 0
iwlwifi0: loaded firmware version 29.4063824552.0 7265D-29.ucode op_mode iwlmvm
iwlwifi0: Detected Intel(R) Wireless N 7265, REV=0x210
iwlwifi0: Applying debug destination EXTERNAL_DRAM
iwlwifi0: Allocated 0x00400000 bytes for firmware monitor.
iwlwifi0: base HW address: 18:5e:0f:24:e3:39, OTP minor version: 0x0

lagg が使えない

 私の環境では iwm ドライバでも使用可能です。現状私が使う上で2つのドライバの大きな違いは、iwlwifi では lagg が使えないということです。
 有線と WiFi が両方使用できるノートPCでは、有線のインターフェースと無線のインターフェースを フェイルオーバーのlaggでまとめて、有線接続時は有線、有線ケーブルを外したら WiFiに切り替わるように設定するのが定番です。それが今は iwlwifiではできないので、私はまだ iwm ドライバを使っています。ここらへんはそのうち改善されると思うので、今後に期待です。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?