流体モーションを全画面表示で(HD6450編)

目的は一つ

「BD品質な1920×1080(以下FHD)の24fps約35Mbpsの映像ファイルを流体モーションで60fpsにして全画面表示で見たい!」

であります。そのためならどんな犠牲(金銭面を除く)をする覚悟です。現状をまとめましょう。

が今回のテーマであります。A6-7400Kのマザー(ASRockを買ってしまったw)に余っているHD-6450を差しました。

(BlueskyFRCの最新版1.1.0だと状況が少し変わります)

 

1.接続環境

 うちの環境ではモニターが一台だけ。今時の液晶モニターは複数の入力端子を持っていますのでAPUとHD6450の出力をモニターにぶち込みます(実際はケーブルが無いのでDVI-D-HDMI変換ケーブル経由)。HD6450側の出力映像で流体モーションを有効にする(映す)ためにWindows上でのメインとサブの関係は次のようになります。

注:BlueSky1.1.0からサブスクリーンのみの表示で流体モーションが効くようになりました。

imageimage 

  • A6-7400Kをメインディスプレイ
  • HD-6450をサブディスプレイ
  • MPC-HCの再生はHD-6450のディスプレイを選択して全画面再生
  • 液晶モニターは②のHD-6450の出力を映す

MPC-HCは全画面表示の時のディスプレイを選択できます。この機能が何気に効いているかも。また、キーボード操作で液晶モニターを切り替える方法は後述します。描画の負担をAPUから削除すると・・・・

2.GPU使用率はこうなる

2.1 EVR-CP(GPUデコードなし) 

image

「再生開始時にもたつく感はありますが、VMR-7でしか再生できなかったAPU単体の頃と比べると雲泥の差。感じられる音ずれはない」

緑がAPUの使用率、水色がCPU使用率。50%で頭打ちになっている紫がHD6450の使用率です。

ちなみにカチューシャと1話のオープニングのシーンはこうなります。数フレーム破棄される時もありました。

image

 

CTRL+Jで表示される統計情報はこーなります。image

レンダラーがHD6450でデコーダがBlueskyFRCなんですね、不思議だ、そーゆもんだとして納得しておこうw。

2.2 EVR-CP(GPUデコードあり) 

「CPU使用率も減るのでこれで決定かも。GPUデコードなしの時よりは若干重い気がするが、感じられるような音ずれはなし」

image

同じくカチューシャと1話のオープニングのシーン時は

 image

というわけで重いEVR-CPで動くなら他は余裕なので以下のテストは略!充分に実用範囲だと感じました。

 

3.液晶モニターの切り替え

3.1 Windowsキー+Pで試す

 液晶モニターによって動きは異なると思いますが、うちの環境では映したい画面をメインにした後にデュアルモニタに切り替えると希望のGPU側の映像がモニターに映ります。

1)モニタでAPUを映すには

image

のAPUオンリー状態からデュアルモニタにすると

image

APU側が映ります。

 

2)モニタでHD6450側を映すには

image

のHD6450オンリー状態からデュアルモニタにすると

image

HD6450側が映ります。

注:BlueSky1.1.0からサブスクリーン(セカンドスクリーン)のみの表示で流体モーションが効くようになりました。節電です。

 

3.2 モニター切り替えのバッチファイル化

Display ChangerIIを使用すればモニター切り替えのバッチファイルが簡単に作成できます。本来は解像度を保存するのがメインなソフトですが、”メインのみ”、”サブのみ”、”デュアル”の状態を保存し簡単に切り替えられます。具体的には

z:
cd Z:\download\Windows7\As\dc2
Z:\download\Windows7\As\dc2\dc2.exe -configure="sub.xml"
timeout 3
Z:\download\Windows7\As\dc2\dc2.exe -configure="dual.xml"
timeout 5
"C:\Program Files\MPC-HC\mpc-hc64.exe" "%*"
Z:\download\Windows7\As\dc2\dc2.exe -configure="normal.xml"

こんな感じのバッチファイルを右クリックで送るに入れておけば、自動的にHD6450側に切り替わって再生、終了後はもとに戻ります。BDMVなディレクトリだとBDチャプターが有効になるということだが、BDはリッピング出来ないので詳しくは知りません!!

 

4.こんなこともあろうかと

2月22日Bluesky Frame Rate Converter Version 1.1.0が出ましたw。今までの苦労が水の泡になりそうな感じw

  • DXVAデコードのサポートを追加
  • GPU使用率を低減
  • 処理時間を短縮

Bluesky氏、曰く?「こんなこともあろうかとV1.1.0を用意しておいたのさ!」・・・・さっそく試そうっとw。

 

#Athlon5350でもHD6450を付ければEVRで全画面できそうな気配ですね。でも再生時はもちろん、アイドル時にも消費電力が15wぐらい上がった感じなので省電力に反しますな。

広告
カテゴリー: 20世紀プログラマ, コンピューターとインターネット | タグ: | コメントをどうぞ

流体モーションを全画面表示で(APU編)

目的は一つ

「BD品質な1920×1080(以下FHD)の24fps約35Mbpsの映像ファイルを流体モーションで60fpsにして全画面表示で見たい!」

であります。そのためならどんな犠牲(金銭面を除く)をする覚悟です。現状をまとめましょう。

ハードウェア系

APU AMD A6-7400K O.C.でMAX4.0G
メモリ 16G DDR3-1600(うち8Gは1333をO.C.)

ソフトウェア系

OS Window8.1 x64 pro
再生 MPC-HC x64 1.7.8
BlueskyFRC 1.0.2
ドライバー 14.501.1003.1001-141204m-178280E

(BlueskyFRCの最新版1.1.0だと状況が少し変わります)

1.検証

 検証というにはあまりにも感覚的なのですがご容赦を。条件は以下の通り。

  • BD品質な35秒の動画ファイル(戦車が水平パンするやつw)をMPC-HCで全画面再生
  • CCCのビデオ品質補正はいっさいなし
  • MPC-HCのレンダラー設定は既定

GPUへの負荷はMPC-HCのレンダラーの設定で大きく変化することが今更ながらにwわかってきました。MPC-HCのレンダラーの設定は[表示]-[オプション]-出力です。普段は全然気にしていなかったですわ。

image

そうそう、レンダラーに付いてはこんな理解のレベルです。

  • VMR-7 DirectDrawで描画される
  • VMR-9 Direct3Dで描画される
  • EVR WindowsVistaからの新しいレンダラー
  • EVRカスタムプレゼンタ(以下EVR-CP) さらに新しいレンダラー 
  • madVR Corei7にしか許されない夢の高性能レンダラー
  • Haali あれ?削除したつもりでもまだ残っていたのかレンダラー

もう一つGPUへの負荷を左右するのはDxVAでのデコードです。DxVAの画像補正とややこしいので以下GPUデコードとします。設定は[表示]-[オプション]-内部フィルタ-ビデオデコーダで表示されるLavの設定で指定します。

image

ちなみにBlueskyFRCを使うとDXVA2(native)を設定してもGPUデコードは行れません。GPUデコードを有効にするにはDXVA2(copy-back)を指定する必要があります。GPUデコードを行っているかはどうかは、これまたBlueskyさんのDXVA Checkerで確認できます。BlueskyFRC1.1.0からDXVA2(native)でGPUデコードが有効出来ます。

imageimage

 

というわけでMPC-HCでレンダラーを色々変えて再生状況をテストしてみました。

 

1.1 EVR-CP(MPC-HCのデフォルト設定) 

「音の再生が途中で何度も停止しぐだぐだな状態」

image

緑がGPU使用率、青がCPU使用率、どえらいことになっています(名古屋弁)。平均フレームレートは60fpsにほど遠く、同期オフセット(ずれ)は変な値です。

1.2 EVR 

「音声の再生が終わった後、3秒くらい遅れて映像が終わる」

image

いい感じなのですが3秒程度ずれているというのが実情です。

1.2 VMR-9 

「映像が途切れ途切れでしかも音が遅れる」

image

これも論外です。GPU使用率が時々落ちているのは描画をあきらめたところでしょうかw。

1.3 VMR-7(GPUデコード)

「音にワンテンポ遅れて映像が終わる」

image

惜しい。GPUデコードなのでCPU使用率は下がりますが、微妙に映像が遅れます。某戦車アニメでカチューシャの所を再生すると明らかですw。で、再生していると同期オフセットの値が少しずつ増加します。

1.4 VMR-7

「◎」

image

音ずれはありませんでした。再生開始時に負荷が高く、同期オフセットはそれなりの値なのですが、そこからどんどん減少していき最後は0になります。

 

2.総評

 結局、VMR-7のGPUデコードなし以外では全画面表示は無理でした。さらに悪いことにGPUの負荷がちょっとでも重くなるとVMR-7でも音ずれします、ギリギリです。現にBlueskyFRC1.0.0でGPUの負荷が重くなったときは映像が遅れるようになりました(1.0.1以降は大丈夫)。流体モーションではGPUがいっぱいいっぱいです。

3.こんなこともあろうかと

 iGPUを強化する秘密技に「AMD Dual Graphics Technology」(以下DG)があります。グラフィックカードを外付けしてGPUのパワーを引き上げます。しかし、KaveriでDGをするにはR7 240か250が必要なのです。最安値で6000円代かぁ・・・・年末にAM3+が壊れてFM2+に乗り換えたばかりなので予算が・・・・A8-7600にしておけば・・でも売り切れだったし・・・・ こんなこともあろうかとR7 240もついでに買っておけば良かったのですがw

というわけで、去年までAM3+で使用していて現在は引退中のHD6450を外付けして、何とかすることにしました(HD6450編に続く)

 

 

#ある日突然VMR-7の画面が真っ暗になりました。再生は進んでいるけど真っ暗。ドライバーを削除してもダメ。途方に暮れていたのですがCCCの色設定でAMD設定にしたら治りました。

image      

たぶんHD5450(5450も試した時w)差したあとになったので、これ(VMR7 black screenで検索)だと思いますが、いちおうTipsとして。

  それにしても普段遊んでいるGPUが汗をかいて働いている姿を見ると微笑ましいですなw。

カテゴリー: 20世紀プログラマ, コンピューターとインターネット | タグ: | コメントをどうぞ

流体モーションを試す

 あけましておめでとうございます。面白い話が合ったら、役に立つのか立たないのか思い込みで間違っているかもな話を今年も続けます。そーいえばDropboxに置いておいた怪しいもの置き場が勝手に削除されていました。怪しいものは削除されるんだなw。

 さて、去年の12月30日にPCが起動しなくなりました。最初のCPU認識の所から進まない。その前から起動SSDは壊れる(突然8Mしか認識しなくなる)はHDMIキャプチャーを認識しないわ、BIOS画面にたどり着けないわ、やばかったのです。でもsocketFM2+にするチャンスと決断、近所のヨドバシ、Sofmap、ドスパラを回り、ようやくFM2+のマザーを見つけました。が、CPUがFM2(Richland)しかなく確保、そしてヨドバシのポイントを利用して通販、ようやくKaveriが届きました。

 しかし、店舗を回って見て自作の寂れ方は想像以上でした。AMDのCPUなんか在庫なしばかり。

 というわけで、PC環境は

  • socketAM3+とOpteron 3260 HE(4コア2.7G)

から

  • socketFM2+とA6-7400K(2コア3.5G)

 以前はPhenomの6コアを使っていたことを考えると順調にダウングレードしていますw。主の経験の中では長期間壊れずにつかえていたAM3+とCPUでした。パイルドライバーも2Gで回すならパワー的にも電力的にも不満はなかったです。

 

流体モーションを試す

 一部でかなり話題になっている流体モーションを試してみます。震源地はこちら(事情があってこちらに移転されています。ソフトはまだ落とせません)、バージョン2ぐらいの頃から愛用しているA’s Video Converterの作者さんであります。そして、知ったのはこちら、録画とAMDとウィルコムに強い末路さん、RSSを購読していて知りました。なんとなく理解している流体モーションの内容は

映画は24fpsである。PCは普通60fpsである(HDMIの制限か?)。60は24で割れないから本来の映像は見れない。ならば、24fpsから中間画像を生成して60fpsにすればいいじゃないの。プルダウン変換とかややこしい話はわからんw。

 設定的には末路さんの記事の通り。AMDのCCCでインターレスの解除を無効にしなければCCCで流体モーションの設定が出てこなかったような記憶が(あいまい)w。MPCへの組み込み方とかはBlueskyさんのページを参照

image 

で、実際どーなるのかというと

元動画 241 242 243

 

流体 601 602 603 604 606

 

といった感じで中間フレームが生成されます。特に流体の4枚目はなぜ、この機能が流体なのかよくわかります。MPCの統計表示では

imageimage

という感じで60fpsになっているのが確認できます。で、実際どうなるかを伝えるのは、主の知識では非常に難しいのです。並べて再生するとヌルヌルになっているのは分かるが、どーやってそれを動画にするか・・・・アマレコのデスクトップキャプチャは30fpsなので画面で24fpsの動画もそれなりにヌルヌルになってしまいます。ちゃんとしていない動画を上げて評判を落とすのもなんですから、今回は略

では実際のアニメでどーなるか、流体が効きそうなシュタインズゲート映画のBDのOPだと・・・・・微妙です。というか細かすぎでわからない感じ。

image

で次のコマが

image

になる感じ。中間フレームの生成は確認できましたが、細かすぎで微妙ですw。そーいわれてみればヌルヌルですかね・・・・ラブライブとかだと違うのかもしれないw

追記一応サンプルを上げました。どーしても55fpsでしかキャプチャできなかったので一部カクカクですが、実機ではヌルヌルです

60fps版を上げておきました。元プログラマーのくせにデスクトップキャプチャーの力技ですw。32ビット版GraphEditを使えば楽勝だろうと思って数年ぶりに立ち上げたらDirectShowフィルタの一覧で落ちました。そうだ、だから使わなくなったんだとw。64ビット版はオブジェクトが少なく30fpsでしか保存できないし、いよいよAvisynthに手を出さざるを得ない状況ですw。

追記2:GraphStudioNext(32ビット)でAMD Video Scalerをかますと行けるようになりました。こんな感じ

image

Graphでvfwのエンコーダが使えるとは気づかなかったw。x.264でも行けるのですがそちらは○カパー録画(1080i)で使っているので設定を変えたくない。相性抜群だろうと思われるvfwVCEを使用。記念に破たんしている場面をw

AMD Video Scalerはatimpenc.dllにあります。古いDLLが残っていてラッキーでした。

image

image

 

#さて、本命VCEでのエンコードを試しますかな。結局GPGPUはフィルタ系でしか使えないのでは?と思います。流体もいい感じなのですがもう一声ですね。そういえばうちのPowerDVDはバージョン10のままです。

追記3:Blueskyのホームページで最新版1.0.0の配布が開始されました。AsVideoConverterも流体モーションありになりました。

カテゴリー: 20世紀プログラマ, アニメ, コンピューターとインターネット | タグ: | 1件のコメント

WT1520を救え!(初めてのシリアルコンソール)

 上海問屋DN-84749ことNexx社WT1520をOpenWrt化する際に文鎮化してしまったWT1520が2台wあります。シリアルコンソール経由で復活を試みました。とりあえずフラッシュROMの書き換えに失敗した方から。ブートはこんな感じで止まってしまいます。

image

 

1.USB-シリアル変換ケーブル

 WT1520は3台持っているのに、このためだけにケーブルを買うのもったいないなぁと思っていたwのですが、なぜかArduinoを持っていました。

image

こいつが出力を3.3vと5.0Vに切り替えられるというので、行けるんじゃないかということで採用です。

2.WT1520との接続

 さっそくWT1520と接続します。

2.1 WT1520の開腹

 個人的ですけど壊れたのも多いけど、でも、開腹されてうちの機器は一人前ですw。さて、WT1520は固くて開腹できそうにないのですが、USBの所に-ドライバーを入れて強引に開腹します。ボケた写真ですいませんw。はがれているところにドライバーを入れて開けましたw。

 image

2.2 Arduinoとの接続

 image

Arduino側はD0ピンがRX、D1ピンがTXです。上の図の赤い部分。手元のものにはRX、TXと印刷されていました。ちなみにシリアル通信が行われると青い部分のLEDが点滅します。もちろん3.3v出力に切り替えておきます。

WT1520側は上の図の通り。ただし、とても小さく(RXとTX合わせて2mmぐらい)なので常人には半田付けは無理です。そこで

image

こんなのをこしらえて、左手でWT1520に押し付けながらの片手作業となりますw。

ちなみにGNDはUSBのガワと接続しています。

image

 

2.3 接続ピン

 試行錯誤の上、ようやく接続方法が分かりました。

  • TXとTX、RXとRX 、GNDはUSBのガワ
  • bpsは57600
  • Arduinoのスケッチは空

image

 ArduinoのD0(RX)とWT1520 のRX、ArduinoのD1(TX)とWT1520のTXを接続します。

 おじさんの記憶的にはシリアルで直につなぐとき、TXとRXを接続するものだと思っていましたが、まぁこれで動いたんだからこれでいい。Arduino側もSetSirialとかしていません!w。動けばおkがモットーのWindows使いですから、でも、壊れたらごめんなさい、自己責任で。

 注:たまたま動いているだけかも知れないのでこの辺りを見てちゃんとArduinoをセットアップしてくださいね。一応、2台ともこの方法で再生できました。

 そして、リンク先の図で納得しました。PCシリアルとArduinoはクロス接続になっていてその信号がそのままD0(RX)とD1(TX)に出ているイメージ。PCとWT1520を通信させるのだからこれでおkのはず。

image

Arduinoとルータを通信させる場合にはArduino-ルータ間はクロス接続で。まぁ、ちゃんと3.3vになっているか不安ですが壊れていないから大丈夫w

 

 

3.シリアルコンソール

3.1 下準備

 PCとWT1520をLAN接続しておきます。PCのアドレスを10.10.10.3、そしてTFTPサーバを立ち上げます。シリアルコンソールからのアップデートはWT1520がTFTPクライアント10.10.10.123となって、サーバ(10.10.10.3)のtest.binを取得してフラッシュROMを書き換えます。mtd3をtest.binとしてTFTPサーバにおいておきます。

image

 

3.2 起動

 そして起動!シリアルコンソールの接続が正常な場合はメニューが表示され、4からカウントダウンが始まります。シリアル接続がNGな場合にはカウントダウンなしで速攻でルータが起動してしまいます。

image

ここで2(改行なし)で送信。その次のAre you sure?もy(改行なし)で送信

image

次にIPアドレスの設定とかを聞いてきますが、左手はシリアルコンソールを押し付けているので片手作業、文字を打つのは困難w。ですんで、全部デフォルト値を選択しました。LFのみを選択して空文字列を3回ぐらい送信

image

WT1520がPCのTFTPサーバからtest.binを取得してアップデートが始まります。

image

色々ワーニングが出ているが、結果として文鎮なWT1520が復活!

image

image

ただし、mtd3.binがOpenWrtの物なのでOpenWrtで復活です。

 

WT1520オリジナルのmtd3.binを持っていればそれで復活すると思います。オリジナルファームではddコマンドが使えなかったのでWT1520オリジナルのmtd3は持っていないんですよw。RT5350のSDKを手に入れた今ならmtd3をバックアップできたのにw。というわけでWT1520のOpenWrt化を検討中の方はddコマンドが使えるbusyboxを導入してちゃんとバックアップしてからやりましょうw

お客様の中でオリジナルのmtd3をお持ちの方はいらっしゃいませんか?

ちなみにダウンロードできるファーム1.15はやはり暗号されていてだめでした多分、圧縮されているからよくわからん。

お客様の中でファームからファイルを取り出すノウハウをお持ちの方はいらっしゃいませんか?

 

 

#シリアルコンソールから文字が出てきた時は歓喜でした。初めてのシリアルコンソール堪能しましたw。サインスマート、中国企業らしいですがオリジナル+αは素晴らしい。野菜では不安だけど弱電は中国ですね。

カテゴリー: 20世紀プログラマ, コンピューターとインターネット, OpenWrt | タグ: , | 1件のコメント

REX-WIFIUSB1を探る(USB-LAN増設編)

 rootになれば何でもできる!とOpenWrt通(自称)の主は意気込んでいたのですが、 REX-WIFIUSB1にOpenWrtを入れるのはやめました。技量がない&REX-WIFIUSB1に入っている商用版のntfsとexfatのドライバが勿体ない(もちろん、OpenWrtでは動きませんでしたw)。というわけで、どうやってREX-WIFIUSB1を機能アップするか!が課題となります。

 ネットを徘徊していたらRT5350のSDKを手に入れました。そしてクロスコンパイラ込のRT288x_SDKも手に入ってしまいました(情報元はここ、でも前者はまぁ信頼できるが後者のSDKのリンクは怪しいサイトなので最後にまとめておいておきますわ)。3年くらい前にRT5350を遊び尽くしているとは、やっぱり周回遅れな主ですw。そら2chもメルコ一色になるわな

 さてやる気を戻して、GPLかなんかに従って開示されているんだよなSDK、英語読めないけどそんな風に書いてあるよな、と自分に言い聞かせてユーザマニュアルを見てみるとUSB Ethernetが使えるようになるではないですか。というわけで、さっそくやって見ました。最初はushareを入れるつもりだったのですがw。

image

 

1.開発環境

 RT5350のSDKとRT288XのSDKをインストールします。5350のSDKを適当に展開して、クロスコンパイラ等はは5350SDKの中にあるユーザマニュアル33ページを参照してぶち込みます。主はVMWare+CentOs6.5にぶち込みました。

2.USB-LANドライバの作成

 ユーザマニュアル99ページ参照。

 ①make menuconfig実行

 OpenWrtの時と同じ様なメニューが出てきます。Custmize Kernel Settingsを選択して一旦Exitします。

image

 
 ②LANドライバの選択

 つらつらとコマンドが流れて再びメニューが出ます。ここでユーザマニュアル99ページに従いMマークを付けます。

image

 ちなみに手元にあるUSB-LANアダプタはグリーンハウスのやつ

イメージこいつUSB-LANの中ではメジャーなASIXのチップでした。

 ③make実行

 最初OpenWrtのtoolchainを入れようと思った主には信じられないほど簡単にmakeが走りますw。autoconf.hが無いというエラーがでましたがmakeを実行したディレクトリにあったのでそれをコピーしました。主はlzmaを入れてていないのでいつもそこでエラー終了しますが、romfsの下にドライバーが生成されますので問題なしです。

image

他にもいろいろなドライバが生成できそうで楽しみです。

 

2.REX-WIFIUSB1への導入

2.1 REX-WIFIUSB1のファイルシステム

 ROMとRAMしかないという、OpenWrtをやってきた身としてはいやらしいファイルシステムです。

image

 /etcだけは再起動前にmtd7にバックアップ、起動時にそれを読み込むみたいです。仕方ないのでUSBハブ(セルフパワー)を増設し、システム補助用のUSBメモリ(Candoで買った100円(税抜き)カードリーダー)とUSB-LANを接続しています。

 ちなみに、Web管理画面での再起動は/etcの中身が保存されますが、コマンドでやろうとすると、etc_tools pで保存してreboot –fで行けると思います。

image

 その他、USBに差すと勝手にマウントされる元凶の/etc/udev/scriptからadd_usb_storage.shをmvしています。

2.2 REX-WIFIUSB1への導入

 というわけで、増設したUSBメモリ(システム用)をSwapとデータに分けて、そして面倒なのでrc.localの末尾に起動コマンドを全部入れましたw。後で整理しますw。

image

imageext3はなぜかmountできませんでした

USB-LANも認識されています

image

 

3.性能向上

 さてお楽しみのベンチマークですUSBメモリ(ソフマップで1100円)をNTFSでフォーマットしてSamba共有書き込み実施!。

3.1 書き込み性能(NTFS)

image

5MB/sという数字、初めて見ました、感動。でもそんなに都合のいい話ばかりではなくwriteのキャッシュがいっぱいになると3MB/sに頻繁に落ち(グラフの波線)、Swapが発生したりするとさらに速度が落ちます。topコマンドで見ているとpdflushが頻繁に起動しています。

image

しかし、同じ環境でwifi接続(130M~150Mbps)で比べても十分高速であります。

image

 

3.2 読み込み性能(NTFS)

 ある意味キャッシュのごまかしが効きにくい読み込み性能が本来のものと言えます。

image

ちなみにwifiだと

image

なので有線LAN(100Mbps)の方が無線(802.11.n)よりも速いみたいです。暗号化とかの負荷が多いのでしょうか?

3.3 exFATの問題点

 負荷が軽いexFATが本命と思っていたのですが、REX-WIFIUSB1のドライバに問題がありそうです。大きなファイルをコピーすると

image

途中から転送速度が半減します。topコマンドで見ていた限りではwriteのキャッシュが効かなくなり同期モードで動いている(Idole時間が多い)になります。同じ事象はwifi接続でも発生します。

image

NTFSでは転送速度がSwap等で低下しても復帰しますのでexFATドライバ特有の現象ではないかと思われます。

 

4.結論

  REX-WIFIUSB1にUSB-LANとUSBメモリを接続しているため、USBの負荷が高く、mipsではいっぱいいっぱいな感じです(最大2.5wじゃ仕方ない)。多分、Nexx WT1520の純正ファームにREX-WIFIUSB1のNTFSドライバ(TUXERAの商用NTFSドライバ)を組み込んで使うのが最速だと推測されます。Nexx WT1520は純正ファームに戻せないので検証できませんがw。

#とりあえず、怪しいものを置いておきますw。
UDFドライバを動かして、寝ながらスマフォでエロDVD-PGが今の目標ですw。

カテゴリー: 20世紀プログラマ, コンピューターとインターネット | タグ: , | コメントをどうぞ

REX-WIFIUSB1を探る

 REX-WIFIUSB1にシリアルコンソールを付ける前に「やっぱrootじゃないと色々きついよな」ということでいろいろやって見ました。

1.Telnetが使える

  telnetdがデフォルトで立ち上がっています。adminでログインできますが、あまりできることは少ないです。

image

 

2.ファームウェアの中を見る

 現在最新のファームは2.000.036です。シリアル番号を無くしてしまったのでアップもダウンも出来なくなってしまいましたw。

image

 このファームウェア、重要なのは先頭から172行ぐらいがスクリプトになっています。秀丸で強引に開くとこんな感じ

image

で、このスクリプト部分を書けばファームウェアのアップ時に処理が走り自由自在じゃないか!と思ったらそんなに甘くはなかったです。スクリプト部分は動いていないみたい。しかし!ヒントがありました。チェックサムの作り方が記述されています。

sed '1,3d' ファイル名 | /usr/bin/cksum

これを実行すると2つ数字が出てきて最初の方がチェックサムになります。

image

 

3./etc/passwdを書き換える

 REX-WIFIUSB1の管理画面にはシステムの設定のバックアップと復元という機能があります。/etcの下をバックアップ&復元している感じです。これを利用します。

image

 rootのパスワードなしのpasswdと念のためshadowを用意してetcディレクトリを作りその中に入れtarします。

image

バイナリエディタで先頭に2.で表示されたチェックサムを付加します。先頭からアドレス2Cの’0A’までを付加しています。

image

そして設定の復元!

image

 

4.rootでログイン

 REX-WIFIUSB1が再起動するとrootでログインできるようになります。/etc/passwdファイルが書き換わっています。

image

 

5.OpenWrtを・・・・

 どうしましょうか?敷居がかなり高そうです。rootで入れたからと言ってなんでもできるわけじゃないだろうし。mtdもWT1520の時と違って難しそうです。フラッシュメモリは8Mあって楽そうではあるのですが・・・

Creating 9 MTD partitions on "raspi":
0x00000000-0x00800000 : "ALL"
0x00000000-0x00030000 : "Bootloader"
0x00030000-0x00040000 : "Config"
0x00040000-0x00050000 : "Factory"
0x00050000-0x001d0000 : "Kernel_RootFS"
0x001d0000-0x001e0000 : "params"
0x001e0000-0x001f0000 : "user_backup"
0x001f0000-0x00200000 : "user"
0x00200000-0x00800000 : "Rootfs"

 

#/binとか全部リードオンリーだし、/etcとかはRAMディスクだし、mtd7に書き出している感じだし、これこそOpenWrt化してほしいのだがw。「お客様の中でOpenWrtに詳しい方がいらっしゃいましたら・・・ 」

カテゴリー: 20世紀プログラマ, コンピューターとインターネット, OpenWrt | タグ: , | コメントをどうぞ

Windows使いのOpenWrt(ビルド編)

 上海問屋DN-84749ことNexx社WT1520についてさらに朗報があります。

 この人、RT5350Fを外して基板を解析するとはどれだけ暇、じゃなくて偉大なんだよ。ちなみにGPIOピンをうまく利用するとLEDを点灯できます!じゃなくてSDカードスロットを追加できたりします。

 実は重要なのはそこではなく、WT1520のリセットボタンはGPIO10番に繋がっていたということなのです。つまり、リセットボタンを効くようにできることになります。今まではOpenWrtを入れるとリセットボタンが効かなくなっていたんですよ。dtsファイルの修正が必要となりますのでImageBuilder版をビルドしながらおいおい説明します。

 でと思っていろいろやっていたら、ようやく気づきました。

WT1520がTrunk(開発版)でサポートされました!

 見よ!この勇姿

image

 日付を見る限り10月からサポートされたみたいw。とにかくめでたい。

 というわけで、make image PROFILE=”WT1520″でビルド完了!では面白くないのでリセットボタンを有効にする改造を含めて以下に示します。

 

 1. 準備

 Linuxを用意します。主の環境ではCentOS6.5をダウンロードしてVMWareにぶち込みました。ソースからコンパイルする環境と合わせて30Gぐらディスクを使っています。その他インストールするソフトはここを参考にその都度加えてください。CentOSはRedHatの所を見ればいいです。またインストールのコマンドはapt-getではなくyumになります。

 pythonとかバージョン違いで苦労した覚えがあります。

 2. ダウンロード

 http://downloads.openwrt.org/にアクセスするとOpenWrtの現在のバージョンがわかります。

image

ついこの前、14.07の正式版がでましたが、現在のTrunk版とかなり違う。まぁ、WT1520をサポートしているのはTrunk版なのでそれをダウンロードします。URLはOpenWrt-ImageBuilder-ramips_rt305x-for-linux-x8で10月20日版が最新ですね。800Mぐらいあります。

image

で、適当に展開してください。

 3. ビルド用スクリプト

 最初にWT1520を突破した方のビルド用スクリプトを改良して使っています。ImageBuilder版でファームを作る利点はパッケージの選択が楽な点ですね。

#!/bin/sh
# profile name
PROFILE="WT1520"
# packages to skip, packages to install^
PACKAGES="-6relayd -hostapd -ip6tables -kmod-ip6tables -kmod-ipv6 -kmod-ipv6 -libip6tc -odhcp6c -odhcpd -wpad -wpad-mini block-mount hostapd-mini \
kmod-fs-ext4 -kmod-fs-vfat -kmod-usb-net-cdc-ether kmod-usb-ohci -kmod-usb-serial -kmod-usb-serial-option -kmod-usb-serial-wwan kmod-usb-storage \
kmod-usb2 libuci libxtables luci -luci-app-ddns -luci-proto-3g \
mtd netifd opkg -ppp -ppp-mod-pppoe procd swconfig luci-i18n-japanese ntfs-3g  \
uboot-envtools ubox ubus ubusd uci usb-modeswitch -firewall \
-libip6tc "
# directory with files
FILES="FILES_1520"
# threads
J=4

# apply patch if not applied
#test -f target/linux/ramips/dts/NEXXWT1520.dts || patch -p1 < nexx-wt1520.patch
#test -f target/linux/ramips/dts/NEXXWT1520.dts || patch -R -p1 < support_for_nexx_wt1520.patch
# compile
#make V=s -j$J image PROFILE="$PROFILE" PACKAGES="$PACKAGES" && echo firmware is here: "$(pwd)/bin/ramips/openwrt-ramips-rt305x-nexx-wt1520-squashfs-sysupgrade.bin"

make -j$J image PROFILE="$PROFILE" PACKAGES="$PACKAGES" FILES="$FILES" && echo firmware is here: "$(pwd)/bin/ramips/openwrt-ramips-rt305x-nexx-wt1520-squashfs-sysupgrade.bin"

PACKAGESに加えるパッケージと削除するパッケージ(-を付ける)で指定、FILESはファームをWT1520に入れたときの初期設定(IPアドレスとか)を指定するファイルを入れておきます。主は今の所Luciで設定した/etc/config/networkを入れています。

image

fstabやパスワード関連も入れるとファームウェアをアップデートした時に楽になると思いますが、後日やりますw。

 

 4. ビルドを実行

 ビルドを実行するとつらつらと処理がながれてbin\ramipsの下にopenwrt-ramips-rt305x-wt1520-squashfs-sysupgrade.binファイルが出来ます。

image

ファイルサイズが3670020 バイトであることを確認してください。この大きさでないときは上手く動かなかった記憶があります。後はこちらの手順に従ってWT1520に導入してください。今更重要な注意点を

元のファームに戻す方法はシリアルコンソール経由しかない!(多分)

 元のファームはminidlnaが入っていなかったりしてひどいので後悔する人は少ないと思いますがw

 

 5. リセットボタンの有効化

 他のルータの例をみて多分正しいと思うのですが、自己責任で。

 ① DTSファイルの修正

 DTSファイルとはデバイスツリーソースのことらしいですw、詳しくはこちら、ってわかんねぇよ。何やらハードウェア構成を定義するファイル見たいです。修正するファイルは”[OpenWrtを展開したディレクトリ]/target/linux/ramips/dts/WT1520.dts”です。diffを取る能力が無いので、そのまま説明すると59行目辺りから始まる

    pinctrl {
        state_default: pinctrl0 {
            gpio {
                ralink,group = "jtag";
                ralink,function = "gpio";
            };
        };
    };

    pinctrl {
        state_default: pinctrl0 {
            gpio {
                ralink,group = "jtag","uartf";
                ralink,function = "gpio";
            };
        };
    };

“uartf”を加えます。そして、83行目辺りから末尾を変更

    ohci@101c1000 {
        status = "okay";
    };
};

にリセットキーの設定を加えます。

    ohci@101c1000 {
        status = "okay";
    };
    gpio-keys-polled {
        compatible = "gpio-keys-polled";
        #address-cells = <1>;
        #size-cells = <0>;
        poll-interval = <20>;
        reset {
            label = "reset";
            gpios = <&gpio0 10 1>;
            linux,code = <0x198>;
        };
    };

2つ目の変更はgpios=のgpio番号以外は他ルータと同じなのでわかりますが、問題は1つ目の変更のuartfを加えること。調べたがよくわからん、かろうじて

  • LinuxにはPINコントロールというサブシステムがある
  • PINコントロールにはGPIOをMUXする機能(共有みたいなもんか)がある
  • group=”xxx”で指定しないと共有機能が有効にならないような感じw
  • RT5350のデータシートや/sys/kernel/debug/pinctrl/pinctrl.1/pingroupsを見るとGPIOの10番はuartf(シリアル通信用のIC)が使っているみたい

    image

なお、PINのMUXについてはこちら。日本語ではいい説明が見つからなかった。英文で流し読みだけどまぁ、そんな感じでWindows使いなら動けばおk。

 

②リセットボタンの有効化

 ①で加えた変更を適用したファームウェアをWT1520に適用するとリセットボタンが有効になります。実際には/etc/rc.buttonの下のresetスクリプトが起動されます。長押しすると初期設定に戻ります。

image

嗚呼、この機能を有効にしておけばFirewallを削除し忘れて一切アクセスできなくなった文鎮WT1520を救えるのに・・・あの頃は今思えば若かったw・・・・・・・それはシリアルコンソール編で

そうそう、リセットボタンが効くようになってもOpenWrtのfailsafeモードで起動できませんでしたので、その点はご注意を。

 

#現時点でノータッチのシリアルコンソール編じゃなくてUSBIP編かもw

REX-WIFIUSB1を開腹したらWT1520と同じRT5350Fが出てきた。俄然、シリアルコンソールにやる気が出てきたぞ。exFATのドライバ(ry
image

カテゴリー: 20世紀プログラマ, コンピューターとインターネット, OpenWrt | タグ: , , | コメントをどうぞ