バッファローの無線LANルータWHR-HP-G300NのDD-WRT化

またまた未完成のまま放っぽっていた草稿を完成させることなくそのまま投稿する。未完成であっても、自分で集めた情報なので、参照したくなることがあるから。

なお、この記事は元々はAtword.jpで持っていたブログ用に書いていたもので、そこで公開した他の記事に対するリンクが入っている場合、残念ながらそれは行き先のないリンクになってしまっている。いつか一括して解決しようとは思ってるが…。


玄関やトイレにWifi電波がなかなか届かないことの対策の一つとして、我が家のLANの根幹を担っている無線LANルーターWZR-HP-AG300HのファームウェアをDD-WRTに入れ替えてごにょごにょ、という手があることを書いた。だが、根幹を担っているだけにヘタを打つと大変なことになる。それにそもそもDD-WRT化のメリットがどれくらいかもわからない。そこで、友人のバッファローの無線LANルータWHR-HP-G300Nをお借りして、DD-WRT化でどの程度メリットが得られるのか調べてみることにした。 “DD-WRT WHR-HP-G300N”で検索するとたくさんヒットするし、DD-WRT WikiにもWHR-HP-G300N専用のページがある。何も考えずに現時点の最新版の04-15-2013-r21286をインストールしようと思ったが、念のため評判を確認しようと2chの「【無線LAN】DD-WRT【強化ファーム】8」スレッドキャッシュ)を見てみると、r21286軒並み評判悪い。調べてよかった。 どうも、素のDD-WRTではなく、バッファローがカスタマイズしたバージョン1.93というのが安定しているらしい(バッファローは前者を”Pro”版、後者を”User-Friendly”版と呼んでいる)。DD-WRT WikiにあるWHR-HP-G300N専用のページには、双方のファームウェア(バージョンは不明)がftp://whr-hp-g300n:whr-hp-g300n@83.244.133.35/から入手できるという記述があるが、このリンクは生きてない模様。

ちなみに、最終的なターゲットの私自身の所有するWZR-HP-AG300Hについては、DD-WRTのWikiでWZR-600DHPが後継機種とされており、それぞれの機種のcommunity buildsの入手先が記されている他、USバッファローのサイトでは、バッファローブランドのファームウェア(バージョン1.91)と、DD-WRTのが公開されているが、後者のバージョンはDD-WRT Wikiで公開されているものとバージョンが違う。

DD-WRTについてはDDWRTまとめWikiというサイトが参考になるが、特にデバッグモードが重要。Telnetdを起動できたりする。「World Wide版Professionalファームウェア」で上述のUSバッファローから入手できるファームウェアについての記述がある。日本版、米国版との入れ替えについては、U-Bootの”region”環境編集の変更が必要だとあるが、それについてはそこで書かれている方法ではなく、先の2chにあった以下の方が簡便:

11 anonymous@p22199-ipngn4002marunouchi.tokyo.ocn.ne.jp==2012/12/05(水) 22:01:22.78 ID:FP3c057/
BUFFALO WZRシリーズ 1.http://192.168.11.1/cgi-bin/cgi?req=frm&frm=py-db/55debug.html 2.ユーザー名:bufpy 3.パスワード:otdpopy +『設定しているパスワード』 4.コマンドラインに『ubootenv set region US』を入れて実行 5.ルーターを再起動 これで、殻割せずにTFTPによる転送(4秒以内)が可能になります。 DD?WRT ⇔ 純正ファーム 行き来が可能。


74 WHR-HP-G=sage=2012/12/24(月) 09:49:14.78 ID:???
WHR-HP-G の日本語版に戻す方法1. WHR-G125-revert-to-original.bin を使ってTFTPでUS版に戻す 2. 『ubootenv set region US』を使って、US版にする 3. 管理画面の”/cgi-bin/cgi?req=frm&frm=py-db/firmup.html ”から日本語版のファームを流す 4. 完了


86 anonymous=sage=2013/01/03(木) 17:45:41.37 ID:???
>>69 すごいですね。管理画面の下に3つのリンクが出てくるいちばんしたのファームアップ画面から、リージョンJPのままでも いろいろなバッファロー日本語純正ファームが入ります。WZR-HP-AG300HとWZR-600DHPとハードが同じようなので、 WZR-HP-AG300HがWZR-600DHPに変身しました。また、WHR-G301NがWHR-300にも、WHR-HP-G300にも、WHR-300HPにも 変身します。(WHR-G301NとWHR-HP-G300とはハード的に外部アンテナの有無の違いのようです。) リージョンをusにしたらWHR-G301NがUSA版のファームでWHR-300(USA)にもなります。USA版のファームにしたらWDSを設定 することにより、イーサネットコンバータにもなります。ただし、USA国内の11n/g/bのチャンネルが11チャネルしかなく、バッファロー 日本語純正ファームで使用できる12、13チャンネルは使用できないので、USAファームでイーサネットコンバータの設定をする場合 はチャネルを1-11チャネルのうちで固定するなどの注意が必要です。

ファームウェア・設定ファイルなどのバックアップ・書き込み」を参考に、バックアップ。PPPoEの設定くらいなので、特に心配する必要もないとは思うが念のため。

yasuro@AsusEeePC1005HA:~$ telnet 192.168.11.1 
Trying 192.168.11.1... Connected to 192.168.11.1. 
Escape character is '^]'.  
BusyBox v1.00 (2012.05.23-04:29+0000) Built-in shell (msh) 
Enter 'help' for a list of built-in commands.  
# ls /dev/mtdblock 0  1  2  3  4  5  6 
# cat /proc/mtd dev:    size   erasesize  name 
mtd0: 0003e000 00001000 "uboot" 
mtd1: 00002000 00001000 "uboot_environ" 
mtd2: 000c0000 00010000 "linux" 
mtd3: 002e0000 00010000 "rootfs" 
mtd4: 00010000 00010000 "user_property" 
mtd5: 00010000 00010000 "ART" 
mtd6: 003a0000 00010000 "firmware" 
# dd if=/dev/mtdblock/2 of=/tmp/orig-mtdblock-2.bin 
1536+0 records in 
1536+0 records out

さて、米バッファローの公式プレスリリースで、WHR-300HPがWHR-HP-G300Nの後継機だと明記していうえ、 “Present customers running the prior AirStation HighPower router models WZR-HP-AG300H, WZR-HP-G300NH and WHR-HP-G300N are invited and encouraged to upgrade to the updated firmware”とまで書いている。なので、WHR-300HPのUSバッファローのウェブサイトのダウンロードセクションを見てみると、ファームウェア単独では以下だけリストされていた。

2013-03-06 1.93 WHR-300HP Firmware version 1.93

まず最初これで試してみたが(Web UIでフラッシュ)、単にインタフェース言語が英語に変わったくらいで、電波出力が変えられる設定画面もなく、結果実際の電波出力も特筆変わったようにはなかった。米国版ということで、デフォルト値が違ったりしないか、と思ったのだが。 実は、WHR-300HPのUSバッファローのウェブサイトのダウンロードセクションで、最後の方にある

2013-03-19 1.05 Windows, Mac CD image for WHR Series wireless router.

というCDの内容の中に、WHR-300HP用とは別に、WHR-HP-G300N用のファームウェアの”Pro”版Professional_v24sp2_19154.encが含まれていた。しかし、上で述べたように米バッファローはWHR-300HP用のファームウェアを使うことを推奨しているようであったので、Professional_v24sp2_19438.encファームをフラッシュしようとしたが失敗。理由は不明。そこで、WHR-HP-G300N用のファームウェアの”Pro”版Professional_v24sp2-19154.encをフラッシュすると、こちらは成功。 さて、肝心の電波出力であるが、DD-WRTのWikiを参考にしいし、Tx Powerの値をどうしようと、Statusページに表示されるのは

TX Power22.0 dBm (EIRP av.) / 26.9 dBm (Peak)

であった。詳しい測定条件は失念したが、Tx Powerを確か20 dBmと200 dBmに設定して、その電波をある地点(繰り返すが詳しくは失念した)でAndroidのWifi Analyzerアプリで測定してみると、ほとんど全く変わっているように見えない。 “WHR-HP-G300N Tx Power & Antenna Gain Settings“では以下のような投稿がある:

As far as power goes, it really doesn’t matter… set it to anything above 16 dBm. You could set it to 30 dBm (probably even 100) and it wouldn’t matter. The dd-wrt driver implementation is limited to ~ 16 dBm (even though the status may show 20 if your lucky). This is and has been an ongoing issue with all dd-wrt atheros ar7xxx/ar92xx based routers (except for those that involve a special activation fee).

という投稿がある。この内容が正しいかどうか私には知る由もない。仮に正しくても、2011年時点での話。ただ、今も正しいのだとすると、本来のターゲットであるWZR-HP-AG300HもCPUがAtheros AR7161だから、それにも当てはまってしまう。「dd-wrtの電波出力調整に関して」でバッファロールーターの出力がDD-WRTで大して変わらないことを書いておられる方がいるが、ひょっとして同じ現象ではないだろうか。 そもそも、それ以前に、そもそも出力を上げることに意義があるかについては、OpenWrtのFAQに以下のような記載がある:

Can I adjust the transmit power?

Yes, but cranking the power to the maximum won’t help you any. You might transmit farther but the noise level will be higher (and will probably bleed into the neighbouring channels; that looks like this then) and your recieve sensitivity won’t be improved any, limiting your distance. If you want better range go buy better antennae.

似たよった内容の記述はWeb上のあちこちにみられる。 しかしその一方、それを真っ向から否定する “Increasing a Router’s Transmit Power“という記事もある。   倍速設定 倍速(40MHz)モードを出す に従うとできた。 Wireless Channel Wireless-N Configuration WHR-300HPの”Pro”版ファームウェアへのアップグレードが成功しない WZR-HP-G301NHを純正ファームに復元しました ちなみに、WHR-HP-G300Nはオプションの指向性アンテナで特定方向に通信距離拡大できるという、WZR-HP-AG300Hにない特徴がある。バッファローの製品としてはWLE-2DAがあるが、アマゾンで現在3,700円。レビューを見ると、効果はソコソコ、ということのようだ。 ただ、玄関やトイレにWifi電波がなかなか届かないことの対策を考えたときには、WZR-HP-AG300Hには当てはまらないとして排除したWindsurferという名のパラボリック反射板はやはりダメなんだろうが(WHR-HP-G300NもMIMOを採用しているので)、WHR-HP-G300NはLa Foneraと同様「リバースSMAコネクター」を採用しているようなので(「RP-SMA、SMAP(R)コネクタとも言う」らしい)、それに準拠した指向性アンテナが使用できそうだ。実際、Fonera Simplの外付けアンテナをそのままWHR-HP-G300Nの付属アンテナの代わりに使えることは確認した。 La Fonera Wikiで「”dbi アンテナ”を検索」しろという指示があるので、実際Aliexpress.comで”dbi antenna”で検索するといろいろヒットするOmni Antenna vs. Directional AntennaMIMOとは ダイバーシティとビーム・フォーミング MIMO ダイバーシティ

広告

ChromecastクローンEzCast

Chromecastが日本でも発売になった。本体価格4,200円で税込み4,536円。600円分のGoogle Play用クレジットが期間限定で付くといっても、それでも米国での販売価格$35に比べて高い。それだけでも個人的には非常に違和感を感じるのだが、一部の日本人には好意的に受け止めらられているようだ。

2年ほど前から、全く同じ様式のAndroidデバイス、つまり、HDMI端子に直挿しするスティック状筐体で、USBケーブルで給電するタイプのAndroidデバイスは存在し、特に中国から安価に入手できる。かつてAndroidメディア・プレーヤーを選定したときにもそういう製品は存在した。例えば今なら、$35も出せばAndroid 4.1を搭載したCortex A9デュアル・コア 1.6GHz, 1GB RAMのMK809 IIが手に入ってしまう。もし自分がそういうものを買う必要があれば、こちらを選ぶだろう。いろいろできて「ツブシがきく」からだ。

そうはいっても、Android端末やタブレットを持っている人で、手間を掛けることなく、自分のAndroidデバイス上のアプリの画面をTVの大画面に表示したいような人には、簡単操作のChromecastは便利だろう。Google謹製だという点も中華デバイスにない大きな安心材料。

ただ、iPhoneやiPadなどのiOSデバイスを使っている人に対するサポートは今ひとつだと聞く。iOSにはAirPlayという、Googleが「キャスト」と呼んでいることに相当することを実現する技術が元々あり、Apple TVはそれを利用している。AndroidデバイスのみならずiOSデバイスも持つ人(ないしは家庭)であれば、AirPlayサポートしていることが望ましかろう。もしそうなら、iOSデバイス側では特にアプリのインストールなどは必要ないからだ。

そんなことを考えたのは、たまたま知り合いの家庭がまさにそういう家庭だったからだ。そこで少し興味を持って、Chromecastのように素人でも使いやすく、かつAirPlayをサポートするようなデバイスはないかと探してみると、あった。早い話がChromecastのクローンだが、製品の括りとしては、英語では”Miracast dongle”と呼ばれている一群の製品で、EZCastというブランドの製品がよく知られているようだ。これは、「『Chromecast』そっくりな製品が優秀過ぎる! 『AppleTV』のようにミラーリングも可能&サブディスプレイにもなる」などを読んで知った。ちなみにこの記事には、「※とある関係上、実際には使っていません。」などという注意書き付きがついていてなんともいい加減だ。

XDA上のEZCast aka Miracast dongle vs Chromecast (discussion, similarities and differences)によるとiezu.comが大元。ここからOEM供給を受けた製品がたくさんあるようだ。これに限らず中国製コンピューター製品全般に言えるのだが、サポートがしっかりしているかが不安。特に、ファームウェア/OSについて。しかしこの製品については、BBSのファームウェアスレッドを見ると、公的に、かつ頻繁に更新が行われていることが分かる。これは中華製品としてはポイント高い。

AirPlayが使えることが重要だったので、YouTubeのプレイリストを見て確認。

Amazonで検索してみるとたくさんヒットする。製品がたくさんあって、しかも外部wifiアンテナがあったり、なかったり、という細かな仕様の差はあるものの、大きな差はなさそうだ。EZCastのOEMだと確認できないものは選から外した(バージョンアップなどのサポート面で不安だから)上で、最終的には値段で選ぶことになって、Aliexpressで見つけたHot M2 III Google Android 1080P Hdmi Ezcast Mirroring Feature&Pushing Local Content To Tv Player Wifi Dongle Receiver/Adapterを$20.90で購入。日本でChromecastを買う場合のほぼ半額だ。とはいえ、Chromecastの方がなんといっても信頼でき安心なので、その信頼性が2,000円の差額で買えるのなら通常はそちらの方を選ぶ、が、今回はEZCastの方が多機能なのであえてこちらを選んだ。

EZCastと連動させるAndroid端末で使うメインのアプリはEZCast。EZCast(デバイス)でない一般Androidデバイスでも、EZCast ScreenアプリをインストールすることでEZCastアプリから「キャスト」を受けることができる。ただ、AirPlayのレシーバとしても動作する、つまり、「なんちゃってApple TV」になる、という点の方が重要だろう。調べてみると、他のAndroidアプリにもAirPlay receiverの機能を提供するのがある。EZCast(デバイス)ではなく、このEZCast Screenアプリを古Android端末にインストールすることで「なんちゃってEZCastデバイス」として再利用することも考えたが、残念ながらHDビデオの再生に耐えられるだけのハードウェア機能を持つものは手元にないのであった。

では、Androidデバイスを「なんちゃってChromecast」にするものとしては、後述のKoushによるAllShareツール群の他には、Cheapcastというのがあった(Google+のコミュニティー)。が、Googleがこれを使えないような措置をとったため、機能は制限されてしまった上、Google Playからは入手できない模様。

EZCastはMiracastをサポートしている(受信側)ことがChromecastに対する優位点。送信元となるAndroidデバイスでMiracastがサポートされたのはAndroid 4.2からで、それ未満のAndroid OSでは直接利用できない。しかし、代替策はあるようだ。

MirrorOpによるMirrorOp SenderとMirrorOp Receiverの組み合わせで同様なことが可能。ただし、送信元デバイスはルート化済みであることが要件。音は送信されない。

また、Koushというニックネームの開発者が”AllShare”というブランド名の元で、Android, iOS, Chromeブラウザを含む各種プラットフォーム間でのミラリングをサポートするツールを開発しているようだ。

ちなみに、SlashtopではPC (Windows/Mac/Linux)側からAndroidを含む多くのプラットフォームのデバイスに送信できるが、Androidデバイスからの送信をサポートしていない。ただ、音も合わせて送信されることが有用。Slashtopについては、リモート・デスクトップの観点から”リモートデスクトップソフトウェアの選定“という記事でも触れた。

Android用SIPアプリCSipSimpleが着信に失敗する問題

またAndroid用SIPアプリCSipSimpletPBXホスティングサービスPBXes.comとを組み合わせをで遊んでいる。PBXes.comのtrunkとしてFusion IP-Phone Smartの自分のアカウントを追加してあるので、その番号宛の電話はPBXes.comを経由してCSipSimpleアプリに着信する…はず。ところが、端末自身は電源が入っていて、しかも確実にwifi圏内にいるのに、着信を逃してしまうことがそこそこな頻度で起こる。

この現象の説明として、ガセとしか思えないような情報もWeb上では散見されるが、「CSipSimple が着信しない!?!?(初心者には向いていない解決法)」、「CSipSimple が着信しない!?!?(簡単な解決法&バッテリー改善?)」に説明されていることは当たっているのだろう。自分が所有する端末は全てルート化してある(…というより、できる機種を意図して選んでる)のでこれら記事で提示されている解決策が実行可能。ただ、自分の場合、既にSysTune for Root Usersというアプリを購入していたので、それら記事で提供されているスクリプトではなく、このアプリを利用してGUIを通じて同様の設定してみた。これによる改善は期待できるだろう。できれば、ルート化していない端末にも使える方法があるといいのだが、これについてはおいおい考えていきたい。

しかし、それとは別の問題がある。CSipSimpleのログを見ると、STUNサーバーが正しく動作してくれていない。CSipSimpleからの問い合わせがタイムアウトしているのが原因でCSipSimpleが正しく動けてないことが多い。というか(CSipSimple自身が認識できる範囲では)全部そうかもしれない。STUNサーバーとして、このリストを見て、s1.taraba.net を設定したり、stun.l.google.com:19302にしてみたりしたが、この問題が完全には解消しない。ちなみに、pingしてみるとレスポンスにかかる時間が(ちゃんと動いているときは)前者のほうが後者より10倍ほど速い。

信頼性が重要なら自分でSTUNサーバーを立てるべきだとそこここで勧められている。残念がら今それはできないので、そういう機会ができるのを待つしかない。ちなみに、STUNだけならよいのだが、ICEも使うように設定すると、少なくともPBXes.com相手では発信も受信もできなくなる。Windows上のSIPクライアントLinphoneだとICEを有効化しても問題ない。理由はさっぱりわからない。

なお、「スマホ用ソフト設定: CSipSimpleの設定」が、わかっている人が書いているようで参考になる。ただ、パフォーマンスを上げるための設定と、節電のための設定が、明示的に区別されていないのが残念。そのまま全部コピーしたわけではないが、WebRTCを利用するようにする設定、オーディオ実装、DSCP値、メディアスレッド数は、指定に合わせてみた。登録SIPプロバイダごとの設定もすべきなんだろうが、とりあえずそこまではやっていない。


追記:

少なくともPBXes.comと合わせて使う、というシナリオにおいてはSTUNサーバーなしでも動作するということを確認した。少なくともこちらはNATの背後にいるわけで、何かしらNAT越えの技術を使わないといけないように思うんだが、何か誤解しているのだろうか。

いずれにせよ、STUNサーバーを使わないようにしてから、発信、受信ともに遅延なく、極めて快調。

PBXes.comに対する設定としては、このスレッドにあるようにT1の値を1000以上にするのが望ましいようだ。CSipSimpleのアカウント設定のウィザードでPBXes.orgを選ぶと自動で1000が設定される模様。