世界を動かす技術を、日本語で。

FreeBSDには私の古いMacBook用のWi-Fiドライバーがありません。AIが一つ作ってくれますか?

概要

古い2016年製MacBook ProをFreeBSDの実験台として再利用した体験談。 Broadcom BCM4350 Wi-FiチップのFreeBSD未対応問題に直面。 AI(Claude, Pi, Codex, Gemini等)を活用したLinuxドライバのFreeBSD移植プロジェクト。 AIによる仕様書作成・検証・コーディングの工程とその課題。 最終的にAIだけでFreeBSD用ドライバを完成させた記録。

2016年製MacBook Proの再活用とFreeBSD挑戦

  • 古い 2016 MacBook Pro、Flexgate問題で放置していた端末の再利用
  • FreeBSD の実験台として使用、長年の夢の実現
  • Broadcom BCM4350 Wi-Fiチップ 搭載、FreeBSDでは未対応
  • FreeBSDフォーラムの一般的な対策: wifibox (Linux VM経由でWi-Fi利用)
  • brcmfmacはLinux用の Broadcom FullMAC用ドライバ、ファームウェア依存設計
  • FreeBSD用カーネルモジュールの移植を検討、理論上は単純な“管理”部分の移植で済む想定

Act 1:AIによるドライバ移植の試み

  • 「既存コードをAからBに移す」= AI活用 が現代的発想
  • Claude Code にbrcmfmacサブツリーをFreeBSD対応に変換させる
  • FreeBSDには LinuxKPI 互換レイヤーが存在、iwlwifiドライバを参考に指示
  • モジュールは ビルド成功 するが、ハードウェア未認識で動作せず
  • ハードウェア認識後に カーネルパニック 発生、AIによる修正と試行錯誤
  • LinuxKPIの不足機能 や複雑化するFreeBSD用ラッパー等、困難が増大

Act 2:仕様書生成とAIによる多重校正

  • brcmfmacドライバは中規模で複雑、 対象範囲をBCM4350/PCI/クライアント限定 に絞る
  • Piエージェント に詳細な仕様書の作成を依頼、読者はクリーンルーム実装者想定
  • 11章構成の 仕様書 が完成
  • Codexモデル で仕様書のコード整合性をAI校正、複数の修正点・改善案を発見
  • Opusモデル 等で再校正、複数AIによるクロスチェック
  • Geminiは 幻覚(誤情報) が多い印象、単純なコーディングには有効だが信頼性に課題

Act 3:仕様書から新規FreeBSDドライバ開発

  • 仕様書を基に 新規プロジェクト 開始、AIに重要事項や意思決定点の質問を依頼
  • プロジェクトドキュメント に意思決定履歴を記録、AGENTS.mdで明示
  • 当初はLinuxKPI利用を想定するも、途中で ネイティブFreeBSD実装に方針転換
  • SSH経由でAIがビルド・テスト を自動実行、進捗もAIがドキュメント化
  • 問題発生時は 別セッションで調査・記録、自己学習サイクルを構築
  • 最終的に Wi-Fiスキャン、2.4/5GHz接続、WPA/WPA2認証対応 のFreeBSDカーネルモジュールが完成
  • ソースコードは github.com/narqo/freebsd-brcmfmac で公開、著者自身は一切コードを書かず
  • 既知の問題点あり、学習用途以外での実用は非推奨

AI開発体験のまとめと今後の課題

  • AIによるコード移植・仕様書生成 の可能性と限界
  • 複数AIの クロスチェック体制 が品質向上に有効
  • AIによる自動化開発 は「退屈なルーチン」化し得るが、意思決定や方針転換は依然人間の役割
  • 今後も AIエージェント に課題解決を依頼予定
  • 本プロジェクトは AI開発時代の象徴的事例 として位置付け

参考リンク:

Hackerたちの意見

どのOSでもハードウェアのサポートが普及するのは、もうすぐ解決される問題になりそうな気がする。AIのコーディングエージェントを使って、何にでもドライバーを強引に作れるところまで来てるんじゃないかな。もし本当にそれを禁止したいなら、ハードウェアデザイナーはインターフェースを難解にする必要があるけど、BSDやLinuxのようなOSをサポートしないだけじゃ済まないと思う。

AIのコーディングエージェントを使って、何にでもドライバーを強引に作れるところまで来てる。 それはちょっとナイーブな考えだし、そんなに簡単じゃないよ。著者も慎重になっていて、コードを見たわけじゃないからドライバーがどれだけ堅牢か分からないって言ってるしね。仮にそのアイデアを考えても、すでにファームウェアのブロブがあるクローズドソースのNvidiaドライバーとか、他のファームウェアのブロブがあるドライバーをオープンな代替品に置き換えられてるはずだよ。(Nouveauはあるけど、クローズドソースのドライバーほどのパフォーマンスは出せないから不利だし)それは読者がやるべきタスクだね。

あの厄介なGPLはもう私たちを止められないね、クールだ。

うまくいった主な理由は、ClaudeがLinuxドライバーをコピーできたからだよ。事前の作業がない状態で、AIはどうやってプロプライエタリなハードウェアを理解するんだろう?

いつかはできるかもしれないけど、まだそんなに近くはないみたい。OPの記事から見ると、動作するLinuxドライバーを渡して、これをFreeBSDに対応させてくれって頼んだら、できなかったみたいだね。OPは2ヶ月かけて、なんとか動くものを作るのにかなりの労力を使ったみたい。面白いのは、その作業が普通のマネジメントに似ていて、書面での仕様書を求めたり、校正したりしてるところだね。

ドライバーは、手で午後に組み立てられるくらい簡単なものから、集中して6ヶ月の努力が必要なほど複雑なものまで、幅広いからね。

ハードウェアドライバーのバグは、よく同時実行の不安定さやハイゼンバグとして現れることが多い。AIは、数週間ごとにしか問題を引き起こさないバグに対処するのが苦手なんだよね。

インスピレーションに使われたドライバーは完全にオープンソースだよ。https://github.com/torvalds/linux/tree/v6.18/drivers/net/wir... なんでBSDには取り入れられてないのかは分からないけど(多分ライセンスのせいかな)、彼らはOSに含めるものにはちょっと慎重みたい。

「もうすぐAIコーディングエージェントを使って、何でもドライバーを強引に作れるようになりそうだね。」 そうだけど、それってAIがデバイスを完全に壊すようなコマンドを強引に実行しない限りの話だよね。例えば、電圧コントローラーに異常に高い電圧を出させるコマンドを実行して、e-fuseを焼いたり、重要なEEPROMデータを消しちゃったりすることもあるし(工場出荷時のキャリブレーションプリセットが思い浮かぶ)。

ソフトウェアはまだまだ世界を飲み込んでる、しかも今はさらに早く。ソフトウェアが何にでもバイブコーディングされる新しい状況に、どれくらい早く適応できるのか気になるな。記事に書いてあったように、ほとんどの人にとっての主な違いは「動くか、問題を解決できるか」ってことになるだろうね。もうすぐ、バイブコーディングされたソフトウェアにマルウェアが仕込まれるのを目にすることになるだろうけど、誰が書き込み専用のソフトウェアのすべてのコミットをチェックするつもりなんだろう?

未来(10年後?)には、使い捨てのソフトウェアがたくさん出てくると思う。例えば、コンサートのチケットを買いたいとするじゃん。AIエージェントに「チケットが欲しい」って頼むと、その場でコードを生成してチケットを購入してくれる。コードは簡単なcurlコマンドか、いい感じのUI/UXを持ったフルアプリかもしれない。ユーザーとしては、コードを見る必要はないんだ。もし同じ日にもっとチケットを買いたくなったら、AIエージェントは同じコードを再利用するだろうけど、1年後にまたチケットを買うときは、新しいAPIバージョンに合わせてコードを再構築するだろうね。無駄に思えるけど、もっとダイナミックだよ。ベンダーは生のAPIを提供するだけで、エージェントが希望するUI体験を作り出せるからね。その点では、エージェントを持つ会社以外は、使っているソフトウェアにマルウェアを注入できない。ソフトウェアによっては、他より長持ちするものもあるだろうし(例えば、エージェントが提供した音楽プレーヤーは、新しい見た目や機能が欲しくない限り再構築されないだろうね)。ソフトウェアにも「ペットじゃなくて家畜」アプローチを採用することになると思う。

結局、人々はAIに監視なしで構築・運用させるのが安全なものと、実際に中身を理解して監査したり、メンテナンスしたりする必要がある問題のレベルを見極めるようになると思う。僕は自分のヴィンテージゲームと妻の大きなボードゲームコレクションを管理する方法が必要なんだ。意見は結構強いし、リスクも低いから、たぶんクロードに全部作らせて、僕はそれを動かすだけにすると思う。でも、もしそれが僕の財政を管理したり、支払いを期限通りに行ったり、家の安全を確保したり、車を運転してくれるようなソフトウェアだったら、たぶんそうはしないだろうね。その分野の専門家じゃないから、ちゃんと動くことと信頼できることが重要だし、そういうソフトウェアは専門知識と実績のあるベンダーが書いてメンテナンスしているものを選ぶと思う。

Hacker Newsで議論の続きを見る