2015年10月16日金曜日

OpenWrt イメージビルダー brcm47xx で課題山積

先日 パソコンを無線 LAN ルータにする X86 用のファームウェアをイメージビルダー(Image Builder)で作ってみましたが、今回はブロードコムの brcm47xx 用のファームウェアをイメージビルダーで作ってみました。

狙いは Brcm-wl ドライバ

イメージビルダーで独自のパッケージを組み込んだファームウェアを製作する目的は、wl ドライバで無線 LAN ルータの無線 LAN 部分を動作させることにあります。今までにも通常版の Brcm47xx 用のファームウェアをインストールした後、b43 ドライバから wl ドライバへ入れ替えて無線LAN部分を動作させることによって b43 では動作しなかった 5GHz 帯での動作も可能となっていました。このドライバの入れ替え方式でもよいのですが、フラッシュメモリが 4MB のものの場合、Attitude Adjustment 12.09 のものまでしかインストールすることができませんでした。そこでイメージビルダーを使って Barrier Breaker 14.07 や Chaos Calmer 15.05 のファームウェアを作ってみようと考えたわけです。

ビルドの方針

単純にドライバの入れ替えだけでは 4MB のフラッシュメモリの容量を越えてしまう可能性もあるため、ルータ機能も削除して、単純な無線LANアクセスポイントとしての動作に絞りました。
include/target.mk
DEFAULT_PACKAGES.router:= (ルータパッケージなし)

kmod-brcm-wl-mini の罠

イメージビルダーにはプロファイルが事前に幾つか用意されていますが、その中に "Broadcom-wl" という目的にぴったりのプロファイルが存在しています。しかしこのプロファイルでビルドした場合、ドライバには標準の kmod-brcm-wl ではなく小型版の kmod-brcm-wl-mini がインストールされてしまいます。かなりファイル容量の小さなドライバですが、問題は 5GHz 帯で動作しないドライバだったことでした。そこでプロファイルは通常版の "Broadcom-b43" を使用して、パッケージオプションで b43 と b43legacy を削除した後、wl ドライバを追加する方法でビルドしました。
$ make image PROFILE=Broadcom-b43 PACKAGES="-kmod-b43 -kmod-b43legacy kmod-brcm-wl wlc nas uhttpd luci"

思わぬ結果

上記のようにしてようやく作り上げた wl ドライバによる Brcm47xx のファームウェアですが、意外な結果が待ち受けていました。

今までは主に 8MB のフラッシュメモリを持つ無線LANルータに限って wl ドライバで動作確認を行なっていました。今回 4MB のフラッシュメモリにも対応したことから多くの無線LANルータに対応できるようになりました。そこで判明したことは、何と!バッファローの Mini-PCI 型の無線LANカードの多くが wl ドライバで認識しないことでした。バッファローの無線LANルータに数多く搭載されている 2.4GHz 帯の WLI-MPCI-G54 でさえ認識しないのです。5GHz 帯の WLI-MPCI-AG54 も認識しませんでした。オンボード上のチップも WHR-AMPG の 5GHz 帯のチップも認識しないようで、wl ドライバで動作しないものが続出の状況でした。

wl ドライバは DD-WRT や Tomato のファームウェアで使用されており、上記の問題だった無線LANカードでも 2.4GHz のものについては認識して動作していました。ドライバをビルドするのに何らかのパッチ対応(デバイス ID の追加)が必要ではないかと考えているところです。

検討課題

今回バッファローの製品で wl ドライバがチップを認識しないことが判明したことから、これらのチップを認識できるようにデバイス ID の追加などを検討してみたいと考えています。またチップを認識した後にも正常に動作するかの問題も待ち構えているため、wl ドライバによるファームウェア作りは前途多難の様相を呈してきました(涙)。

なお今回の不認識の問題は、ドライバにデバイス ID が登録されていない問題だけなのか?疑問があります。lspci コマンドで無線LANチップの情報を読み取ろうとしたところ、wl ドライバが認識ない無線LANカードは、コマンドがハングアップしてしまうのです。PCI 情報のプロファイルデータにも情報が登録されていませんでした。もともとバッファロー社が組み込み用の無線LANカードを登録していない模様でした。単純なデバイス ID の追加で認識するかかなり不安な感じがします。

0 件のコメント:

コメントを投稿