USB Wi-Fiアダプターが必要になったとき、多くの人はオンラインで5ドルほどの商品を購入し、届くまで1日か2日待つでしょう。ところが、ソフトウェア開発者のBái Yìbai氏は、もっと面白い解決方法があるはずだと考えました。Wi-Fiドングルを買う代わりに、休日を含む週末を丸ごと使ってファームウェアを書き上げ、6ドルのRaspberry Pi Pico Wを、専用ドライバーをまったく必要としないUSB Wi-Fiアダプターへと変えてしまったのです。このプロジェクトは最近Adafruitの注目を集め、同社がファームウェアを取り上げたことで、はるかに幅広い読者に知られるようになりました。
一見すると、数ドルの出費を避けるためにずいぶん手間をかけたようにも思えます。しかし、まさにその点が、このプロジェクトが私たちの目に留まった理由です。これは節約の話ではありません。少し違った発想をするだけで、USB規格がどれほど柔軟に使えるのかを示すプロジェクトなのです。
通常、USB Wi-Fiアダプターをコンピューターへ接続すると、オペレーティングシステムは内部の無線ハードウェアと直接通信しようとします。そのため一般的には、アダプターに搭載された特定のWi-Fiチップセットを理解できるドライバーをインストールする必要があります。メーカーごとにハードウェア、ファームウェア、ソフトウェアの構成が異なるため、USB Wi-Fiアダプターを使う際には、従来からドライバーの導入がほぼ当然の作業になっていました。
Raspberry Pi Pico Wは、まったく異なる方法を取ります。
Wi-Fiアダプターとして名乗るのではなく、コンピューターに対して、自分は単なるUSB Ethernetアダプターだと伝えるのです。現在の主要なオペレーティングシステムは、すでにUSB Ethernetデバイスを理解しているため、新たにインストールするものはありません。Windows、macOS、Linuxはもちろん、多くのモバイル向けオペレーティングシステムにも、必要なサポートが最初から含まれています。
本当に巧妙な処理は、Picoの内部で行われます。コンピューター側は通常のEthernet通信をUSB経由で送っているつもりですが、Picoはその通信を、内蔵された無線機能を使って静かにWi-Fi通信へ変換します。オペレーティングシステムから見ると、特別なことは何も起きていません。利用者から見れば、専用のWi-Fiドライバーを一度も読み込んでいないのに、コンピューターが突然ワイヤレスネットワークへ接続できるようになったように見えます。
通訳を雇う場面を想像してみてください。
コンピューターが話せるのはEthernetだけです。無線ルーターが話せるのはWi-Fiだけです。コンピューターにまったく新しい言語を教える代わりに、Raspberry Pi Picoが片方の言語を聞き取り、もう片方の言語で話します。両側はこれまでとまったく同じ方法で通信を続け、その間にいるPicoが翻訳を担当するというわけです。
この発想は、USBが持つ最大の強みの一つをよく示しています。USBデバイスは、内部にどのようなハードウェアが入っているかだけで決まるものではありません。コンピューターに対して、自分を何として名乗るかによって決まります。
キーボードは自分をキーボードとして通知します。マウスは自分をマウスとして識別します。フラッシュドライブは自分をマスストレージとして識別します。Webカメラは映像デバイスとして現れます。一般にオペレーティングシステムは、ケースの中にどのプロセッサーが入っているかをそれほど気にしません。それよりも、USB列挙の際に、そのデバイスが自分をどのように識別するかを重視します。
こうした柔軟性は、長年にわたり数え切れないほどの創造的なUSBプロジェクトを生み出してきました。セキュリティ研究者は、コマンド入力を自動化するため、キーボードとして識別されるデバイスを作ってきました。小型の開発ボードも、動作させるファームウェアを変更するだけで、ロジックアナライザー、オシロスコープ、シリアルアダプター、MIDIコントローラー、デバッグインターフェースなどへと姿を変えてきました。ハードウェア自体はまったく同じままでも、USBデバイスとしての性格は完全に変わります。これとよく似た考え方については、以前の記事で、USBデバイスの識別方法を変えることで、オペレーティングシステムからの扱われ方まで変わる仕組みを解説しています。
このRaspberry Pi Pico Wプロジェクトも、増え続ける巧妙なUSBハックの一つに加わりました。無線ハードウェアのふりをするのではなく、あらゆるオペレーティングシステムがすでに理解しているデバイスのふりをします。開発者は複雑さより互換性を優先することで、独自ドライバーの必要性を完全になくしました。
このプロジェクト全体で最も面白い部分は、作者自身の説明かもしれません。作者は、5ドルのUSB Wi-Fiアダプターを買ったほうが速く、安く、そしてずっと簡単だったことを率直に認めています。それでも、実現可能かどうかを確かめたいという理由だけで、2日間とおよそ100万トークン分のAIコーディングを使い、ファームウェアを開発しました。
最も経済的な解決策ではなかったかもしれませんが、エンジニアリングの精神を見事に表しています。目的は、いつでも最も安いデバイスを作ることとは限りません。型破りなアイデアが本当に動くのだと証明すること自体が、目的になる場合もあります。
このようなプロジェクトは、USBがコンピューターの側面にある単なるコネクターではないことを思い出させてくれます。見慣れた長方形のプラグの奥には、登場から約30年が経過した今でも新しい発想を生み続ける、驚くほど柔軟な通信規格が存在しています。
関連情報:Adafruitは最近このプロジェクトを取り上げ、オープンソースのファームウェアを開発した人物として、ソフトウェア開発者のBái Yìbai氏を紹介しました。同社の記事では、プロジェクトの背景がさらに詳しく説明され、ソースコードへのリンクも掲載されています。Adafruitによる英語の記事はこちらから読むことができます。
編集部注:この記事は、ソフトウェア開発者のBái Yìbai氏が制作し、コミュニティによって開発されたオープンソースプロジェクトの内容をまとめたものです。組み込みシステムに関する専門知識がない読者にもプロジェクトの技術的な考え方を理解していただけるよう、技術概念の説明をわかりやすく整理しています。