はじめに
で書いたように、Raspberry Pi をアクセスポイントとして使っているのですが、
OTA でのアップデートの機構を追加したかったので、アクセスポイントとして動かすのと同時に STA としても動かしたくなりました。
Raspberry Pi に内蔵されている無線通信用のチップは 1 枚だけで、まずは 1 枚のチップで AP と STA を同時にやる方法を試したのですが、安定しなかったので、最終的に USB Wi-Fi dongle を 1 枚追加する構成に落ち着きました。
USB Wi-Fi dongle を選ぶ際に、互換性や追加のドライバーの有無など考慮するところがいくつかあったので、その辺についてまとめます。
内蔵されている無線通信用のチップ 1 枚で AP と STA を同時にやろうとした
調べてみた感じ、内蔵されている無線通信用のチップには、複数のネットワークインターフェースを割り当てることができて、AP と STA を両立できそうでした。
うまくいく場合もありましたが、再現性が低く安定しなかったので、深追いはやめて、USB Wi-Fi dongle を使うことにしました
最終的な構成
内蔵されている無線通信用のチップ と USB Wi-Fi dongle で、STA と AP の役割をそれぞれ分担させました。
- 内蔵されている無線通信用のチップ: STA
- USB Wi-Fi dongle: AP
チップが分かれているので、チャンネルを共有する必要も、AP と STA を同一チップの中でやりくりする必要もなくなりました。
USB Wi-Fi dongle を選ぶ
どの USB Wi-Fi dongle を Raspberry Pi (Linux) で動かすことができるかを調べる必要があります。
以下のページに対応状況がまとまっていたので参考にしました。
- kernel にビルトインのドライバーで動かすことができる
- AP として動かすことができる
- 2.4 GHz で動く
- Raspberry Pi Pico 2 W を接続デバイスとして使っているため
を条件に探しました。
kernel にビルトインのドライバーで動かすことができる USB Wi-Fi dongle は以下のページにまとまっています。
AP mode への対応状況もこのリストのチップセットごとのエントリに書かれていて、Supported interface modes として AP モードがどの kernel バージョンから使えるかまで載っています。
手元の Raspberry Pi で動かしている Linux の kernel バージョンは hostnamectl で確認できるので、これと照らし合わせます。
$ hostnamectl
Static hostname: raspberrypi4-1
Operating System: Debian GNU/Linux 12 (bookworm)
Kernel: Linux 6.12.34+rpt-rpi-v8
また、対応帯域もリストのカテゴリ見出しに「2.4 GHz and 5 GHz」のように明記されているので、ここで 2.4 GHz 帯に対応しているチップセットに絞り込むことができます。