2010年6月16日水曜日

Wifi offでもキレテナーイ

おもちゃ(M001)にウィジットのカレンダーやらメモやら張ってたらどんどん重くなって、昨日、なぜか戻るボタンが利かなくなった。
やりすぎたか・・・(´∀`;
仕方ないので、ファームを一から入れなおしてるときに気が付いた。
scriptcmd
中を覗くと、
setenv wifi_powerdown D8110064|0x4,D811008C|0x4,D81100B4&~0x4
setenv wifi_powerup D8110064|0x4,D811008C|0x4,D81100B4|0x4
<略>
saveenv
( ゜д゜)・・・おまえかっ!!

こんなところにデバイスon/offの隠しコマンドが入ってた。
そういや、玄箱いじってたときに同じようにu-Bootでカーネルパラメータ渡してたなぁ~と、いまさら気付いたわ。

てか、その他の環境変数を眺めてみると、ぞろぞろとデバイスコントロールの変数が格納されているようだ。
こいつらは、ファームのアップデート処理の段階でsetenvされた後、saveenv、つまりM001内蔵のフラッシュメモリに格納され保存される。
ファームのアップデート処理が終わり、普段どおりu-Bootからカーネルが起動していくと、格納されているものが読み込まれる。って按配。

で、書いてある通り、
GPIO : 0xD81100B4 の 0x4 ビットを立てると内部USBが活性化。
0x4ビットを寝かせるとUSBが切れる。

あとは簡単。
wifi_powerdown のときでも0x4ビットを立てっぱなしにすればいい。
setenv wifi_powerdown D8110064|0x4,D811008C|0x4,D81100B4|0x4
で、、、、
環境変数領域を直接読み書きする方法が分からなかったので、scriptcmdを作り直してアップデータを利用する。

修正した内容でテキスト記述したコマンドファイルを作り、
Linux上で mkimage して scriptcmd を作り直した。
SlateDroidの記事を参考にmake。
mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n 'wifi never off' -d scriptcmd.txt scriptcmd
たまたま、VMwareなubuntuを入れてたのでサクッと。
Win用のmkimageがあればそれでもいいと思う。

で、、、
ファームを再インストールww
めんどくせー(笑)

でも、、、、、

ばっちりww

wifi offでもUSB切れませーん\(^o^)/
でも、wifiへの電源供給は続くって事なのでバッテリを食う。
実際には、ネットワーク自体は繋がってないからいいんだけど。


ログの様子。
wifi power up:D8110064|0x4,D811008C|0x4,D81100B4|0x4
gpio op: 0xD8110064 | 0x4
gpio op: 0xD811008C | 0x4
gpio op: 0xD81100B4 | 0x4

wifi power down:D8110064|0x4,D811008C|0x4,D81100B4|0x4
gpio op: 0xD8110064 | 0x4
gpio op: 0xD811008C | 0x4
gpio op: 0xD81100B4 | 0x4

え?フライトモード??

フライトモードなんてただの飾りです。
偉い人にはそれがわからんのです。キリッ。

これで、USBメモリもキーボードも切れる事が無くなった。
今なんかこんな感じ(^_^;




ところで、
setenv hibernation_ui no
これナニ?

2 件のコメント:

  1. おおお?ということは、ハイバーネーション(スリープ)が
    出来るようになるって事ですか???PDAみたいに、
    スリープ時に電源が食われないと、一気に使い勝手があがりますね!

    返信削除
  2. yesにしても何も変わらないんですけどね(・ω・)
    何かそんなアプリがあるのかな。
    オリジナルファームのscriptcmdに入ってるので、何かテスト的に入れてみたのが残ってるだけなのかも。
    ていうか、最近ファームの更新がされないから、そろそろ放置の方向なのか!?えぇぃ!w

    swapで動かしてるとバッテリーの消費が激しい今日この頃。

    返信削除