Welcome Guest 
Login
Username:

Password:


Lost Password?

Register now!
サイト内検索
Main Menu
Site Info
Webmasters

m-naka
 


Who's Online
4 user(s) are online (2 user(s) are browsing MyWorks(記事))

Members: 0
Guests: 4

more...
Themes

(2 themes)
SmartSection is developed by The SmartFactory (http://www.smartfactory.ca), a division of INBOX Solutions (http://inboxinternational.com)
MyWorks(記事) > サーバ管理日記 > 無線LANアクセスポイント化【7】
無線LANアクセスポイント化【7】
Published by M-naka on 2005/11/27 (3824 reads)
ハードル高いな……。

 IEEE802.11gな無線LANアクセスポイントの構築に挑戦。

 従来使用していたアクセスポイントはPrismチップ+hostapドライバによるIEEE802.11b規格のもの。規格上は最大11Mbpsだが、実効速度は数Mbps程度。Webブラウズには支障が無いが、ファイルサーバへのアクセス、特に録画ファイルの読み出しが難しい。ビットレートの低いDivXで録画しているCasperのファイルは問題ないが、MPEG2で録画しているAmatsuのファイルは見られなかった。

 現在最も普及しているIEEE802.11gの無線LANチップはAtheros Communications製。で、Atherosチップには「Madwifi(Multiband Atheros Driver for wifi)」という、Linux用(でいいのか?)ドライバが存在する。このMadwifiはMasterモード、すなわちアクセスポイントモードをサポートしており、hostapのように無線LANアクセスポイントを構築することができる。

 このMadwifi、オープンソースではあるものの、コア部分の「HAL(Hardware Access Layer)」と呼ばれるモジュールはクローズドソースとなっている。どうもAtheros自身はオープンソースにしたいようなのだが、ハードウェア実装されている暗号化モジュール(WEPやらTKIPやら)の制御系までオープンにされるのが国家的にイクナイ!らしく、アメリカ連邦通信委員会にオープンソース化を止められているらしい(FCCレギュレーション)。そのため、HALモジュールはバイナリの形で配布されている。また、クローズドソースの部分があるためにLinuxカーネルにも取り込んでもらうことができない、ということらしい。機能的にはほぼ同等ながらオープンソースなドライバで動くPrism54とは対照的である。メーカーとしてフルオープンソースドライバを提供するのはダメだけど、コミュニティが勝手に出す分には構わない、ということなのだろうか?

 話が横に逸れたが、以下、Madwifiを使ったIEEE802.11g無線LANアクセスポイントの構築方法を記す。


1.サーバの設定と無線LANカードの準備
 今回IEEE802.11gアクセスポイント化するのはVine3.1で動作中のCasper。理由はIEEE802.11bアクセスポイントとして動作しており、原則としてカードの取替えとドライバのセットアップだけで済むと判断したため(実際はもっと大変だが)。
 手持ちのAtherosチップの載ったカードはアイオーデータの「WN-G54/CB3」とコレガの「CG-WLCB54GS」。これを使う。どちらも一応Madwifiで動作実績があるようだ。

2.Madwifiのコンパイルとインストール
 現在Madwifiは過渡期らしく、旧来の延長であるMadwifiと、新チップへの対応やSuper-G(高速化技術)やX-Range(長距離化技術)へのいち早い対応を表明しているMadwifi-ng(NewGenerationの略か?)の2種類がある。手持ちのカードは比較的新しいのと、Super-G対応モデルなので、Madwifi-ngを使うことにした。ソースtarボールもMadwifiとMadwifi-ngでダウンロードサイトが異なる。Madwifi-ngはここで入手。
 インストール自体は簡単で、tarボールを展開し、make→make installで終了。ドライバは/lib/modules/(kernel version)/net以下にインストールされる。インストール後、「modprobe ath_pci」でドライバモジュールがロードされる。

3.PCカードスロット周り
 hostapでIEEE802.11bなAPを構築したときにPCカードスロットを当然使えるようにしているので、とりあえずカードを交換することから始める。cardctl identでカード情報を拾える……ハズなのだが、認識できない。lspciではAtheros製チップが載っているという情報までは拾えているので、何か変だ。
 デバイスがドライバを掴んでいるかどうかを確認するため、dmesgを見てみると、「ath_pci: cannot reserve PCI memory region」というエラーが出ている。何じゃこれは?
 調べてみると、これはカーネル側の問題のようだ。メモリアロケーションエラーというやつ。以前Amatsuにキャプチャボードを取り付けたときにメモリスタック4KB上限問題があってカーネルを総入れ替えしたことがあったが、それと同様の問題のようだ(詳しく判らないのが悔しいが)。
 カーネルソースのdrivers/pcmcia/yenta.c「yenta_allocate_res」のmask 値を「~0xfff;」から「~0xffff;」に変更し、カーネルモジュールを作り直す(yenta_socketはモジュールなので)。これでメモリアロケーションの上限値が上がる。
 カーネルモジュールを入れ替えて再起動し、cardctl identするとAtheros Communicationsの文字が。正しく認識されたようだ。


 続く。

Navigate through the articles
Previous article 無線LANアクセスポイント化【8】 OpenVPNによるLAN間接続VPN Next article
The comments are owned by the poster. We aren't responsible for their content.
XOOPS Cube PROJECT
Powered by Mythril Networks © 2003-2022 The Mythril Networks Project