スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Date: --.--.-- Category: スポンサー広告   

AuraxTSense v7.6.1 の省電力用スクリプト

v7.1 あたりから、スリープ時に CPU の動作クロックを最低に下げたりと、より省電力動作をしている AuraxTSense ですが、これを制御しているのはシェルスクリプトなので、必要に応じて編集することができます。
もちろん、省電力とハイパフォーマンスを両立するのは難しいですから、どの辺でバランスを取るかは使い方に応じていろいろ試してみるしか無いと思いますが。

今回は、デフォルトよりも省電力になるように変更してみました。以前と比べて、不自然なほどバッテリーを消費してしまうことがなくなり、安定して一日はバッテリーが持つようになったと思います。

編集するファイルは、/system/bin/ssts 。このファイルの 7,8 行目にこんな記述があります。

AWAKE_GOVERNOR="ondemand"
SLEEP_GOVERNOR="ondemand"

これは、それぞれ動作時のガバナとスリープ時のガバナを指定しています。
ガバナには ondemand, interactive, powersave の三種類が使えます。
powersave はその名の通り電力消費を抑えますが、基本的に最低クロックに張り付きます。
ondemand と interactive は、どちらも負荷に応じた動作クロックの動的制御を行ないますが、ondemand は負荷を常に監視して動作クロックを変更するのに対し、Interactive は CPU の負荷が落ち着くまで動作クロックを変更せず、CPU がアイドル状態になった時に動作クロックの制御を行ないます。
低レイテンシなシステムでは interactive が有効なようですし、バッテリーの駆動時間としても interactive の方が優れている場面が多いと思われます。
(多分こんな感じです。間違ってたら指摘してください)

今回は、AWAKE_GOVERNOR="interactive", SLEEP_GOVERNOR="powersave" にしてみました。

さらに、32 行目で動作時の無線 LAN の出力を指定しています。

$IWCONFIG eth0 txpower 100mW

100mW にしているので、これを 10mW に変更しました。
同じくスリープ時の出力を 54 行目で 10mW にしているので、こちらは 1mW にしました。


無線 LAN の出力を落としたので、アクセスポイントから離れると繋がりにくいことがあるかと思いましたが、私の環境だとほとんど気にならないレベルでした。スリープ中も切れることは (少なくとも気がついている間は) ありませんでした。
interactive ガバナは見た目に影響があるかもしれません。スリープから復帰した時のロック解除のスライドがもたつくことがよくあります。この辺は、動作クロックの上昇が (ondemand に比べて) 遅いような雰囲気が出てますね。一度動き出してしまえばスムーズに動くので、使っているうちに慣れてきましたが。

その他にも、メモリに関するチューニングなどをこのスクリプトで実行しているので、好みに応じて編集してみるのもいいかもしれません。
注意点として、adb push などでコピーした場合は、スクリプトに実行権限を付けるのを忘れないようにしましょう。
スポンサーサイト
Date: 2010.09.25 Category: desire  Comments (1) Trackbacks (0)

Overlay System Write

AuraxTSense v7.5.2 (すでに v7.6.1 がリリースされていますが。。。) の ChangeLog に、「# Overlay System Write (thanks to FloHimself)」という項目があります。
あまり目立ちませんが (と言っても、原文では太字で強調してますが)、これは通常動作中に /system に書き込めるようにする、結構便利な更新です。

Desire は (多分) カーネルレベルで /system の書き込み保護をしているので、ちょっとやそっとでは /system に書き込めません。
Recovery モードで起動するのが、おそらく唯一の方法でしょう。
unionfs-01.png

もちろん、AuraxTSense v7.5.2 でもその制限は有効です。なので、擬似的に書き込めるようにする、unionfs という技術を使っています。
これは CD ブートの Live Linux でよく使われる技術です。CD は読み込み専用ですが、CD から起動した Live Linux ではファイルシステムに書き込むことができます。

unionfs は、CD のような読み込み専用のファイルシステムや、Desire の /system のように書き込み保護されているパーティションに対してデータを書き込むのではなく、その上に書き込み用の領域を被せて擬似的に書き込んでいるようにみせているのです。
unionfs-02.png

また、読み込みなどは下のファイルシステムのデータを読み込むこともできるので、読み込み専用のパーティションの内容も問題なく読み込めます。
unionfs-03.png

unionfs のマウントは、/system/bin/unionfs ファイルで実施されています。これと mount コマンドの unionfs に関するオプションを調べれば、unionfs が便利そうな気がしてくると思います。
ただし、上記ファイルを読み込むタイミングから、build.prop の編集などは効果がありません。ぱっと思いつくのは、フォントの入れ替えが便利になりそうなことでしょうか。あとは /system/app の内容も比較的自由に出し入れができるようになると思います。
注意しなければいけないのは、/system の上にかぶせる領域は /data 以下のディレクトリです。つまり /data 領域を消費することに気をつけてください。
Date: 2010.09.07 Category: desire  Comments (0) Trackbacks (0)

Recovery モードでのひと手間

時々、ファームウェアを書き換えると妙にバッテリーの持ちが悪くなる時がありますよね。
build.prop に追加したり、ライブラリを置き換えたりといろいろな仮説がたてられています。最近では光学ポインタのバグじゃないかとかいう話しもちらほら。
個人的にひとつ怪しいと思って試してみたのが、Legacy A2SD のシンボリックリンクをファームウェアの書き換え時に削除するということ。
前回の adbWireless を書くときに気がついたのですが、Legacy A2SD を使用していたファームウェアに、同じく Legacy A2SD が有効なファームウェアを上書きすると、/data/app などのファイルが新しいファームウェアのものに置き換わらないのです。
具体的には、NexTSense (現 AuraxTSense) の v5.3 から v6.0 に書き換えたときに、adbWireless が追加されなかったのです。

原因としては、Legacy A2SD のシンボリックリンクが設定されているために /data/app などのディレクトリに書き込みができていない状態になってしまうこと。Recovery モードで起動しているときは Legacy A2SD のパーティションはマウントされていないので、リンク切れになってしまっているのですね。
とはいえ、無条件に /data/app を消すと Legacy A2SD を使っていない環境で問題が出るでしょう。

というわけで、Recovery モードで起動した際に、adb shell でシェルに入り、/data/app, /data/app_private, /data/dalvik-cache のリンクを削除してから新しいファームウェアを書き込むようにしました。
こうすると、正しく新しいファームウェアの /data/app のファイルが追加されます。

これをやってから AuraxTSense v7.0 を書き込んだところ、バッテリーの消費が少なくなりました。(ように感じました)
ただ、正直なところ因果関係が不明です。これをやったところで何か関係があるようには思えないので、たまたまと言われればそれまでです。。。
もし ROM manager などを使ってファームウェアの書き換えを行うと、この辺の動作はどうなるのでしょうね?
Date: 2010.09.04 Category: desire  Comments (5) Trackbacks (0)
最新記事
最新コメント
ウィジェット
月別アーカイブ
カテゴリ
プロフィール

SC3WO06A

Author:SC3WO06A
FC2ブログへようこそ!


検索フォーム
RSSリンクの表示
リンク
このブログをリンクに追加する
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
最新トラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。