2013年1月26日

CPU tuner を使って Kindle Fire HD の駆動時間をのばす

Kindle Fire HD はタブレットとしてはバッテリの駆動時間が 11 時間と長い方だが、あくまでそれは Kindle Fire HD をそのまま使っている場合であって(おそらくあの簡素なホームの構成も含めてチューニングされているのであろう)、 root 権限を得て Google Play を入れたりして汎用的に使用出来るようにすると当然バッテリもより消費するようになると思われる(実際体感的に6,7時間くらいしかもっていない気がする)。これの対策を考えてみる。

・Kindle Fire HD のバッテリ駆動時間をのばすための対策

Android 端末の駆動時間をのばすには、その為のアプリを導入するのが実際的な方法だ。今回使用するアプリは「CPU tuner (Rooted phones) 」。

Google Play - CPU tuner (Rooted phones)

※ 使用の前提として root 権限を得た Kindle Fire HD が必要

このアプリは CPU の使い方をバッテリの現残量に基づいてチューニング出来る便利なもの。使うには root 権限を得た Android 端末が必要。次の項目を設定することで CPU をチューニング出来る。

トリガー

バッテリ残量をトリガーとしてプロファイルを実行する。例えばバッテリ残量が 50% になった時点で実行するプロファイルが設定されている場合、バッテリ残量が 50% になった時点でそれを実行する。

プロファイル

端末のネットワークサービスの有効化/無効化や、ガバナー、CPU の周波数の設定ができる。トリガーで設定した時点で設定したプロファイルが実行される。

仮想ガバナー

CPU の調速。 CPU をどのように動作させるかを設定できる。無茶な設定をすると動作がおかしくなる恐れがある。

 CPU tuner を使ってスリープモード時のバッテリ消費量を抑える

今回は CPU tuner の使用方法も兼ねた一例として、駆動中の省電力化は重視せず、「スリープ中の消費電力を抑える」為にこのアプリを使ってみる。

このような「スリープ中のバックグラウンドでの動作を抑えることでバッテリの駆動時間を伸ばす」方法は、待受する時間の長いスマートフォンのような端末で非常に効果的な方法なので、そのような Android 端末でこそ試す価値がある。 Kindle Fire HD のようなタブレット端末でも使う頻度が高くない(スリープさせておく時間が長い)場合は効果的だろう。

・CPU tuner の設定

はじめからすべてカスタマイズするのは骨が折れるので、用意されているプリセットを読み込んで、それを少しカスタマイズして使うのがよいだろう。今回は「設定」→「バックアップと復元の設定」→「構成の管理」から「洗練」のプリセットを読み込んだ。


次に「設定」→「ユーザーインターフェース」→「経験レベル」を「パワーユーザー」に設定して詳細設定が出来るようにしておく。


「設定」→「CPU 設定」→「ユーザスペースガバナー表示」を有効にする。


・仮想ガバナーの設定

仮想ガバナーは洗練プリセットの他に「ユーザースペース」を追加する。これは CPU の周波数をユーザー設定で静的に設定できる。


・プロファイルの設定

プロファイルは次のように「通常」動作時と「スクリーンオフ(スリープモード)」時のふたつのみを作った。


「通常」動作時は通常に動作するように設定。スリープモード時からの復帰のためにサービスの「バックグラウンドデータ」を有効化して「機内モード」を無効化する(下記スリープモード時のプロファイルの逆)。


スリープモード時は省電力化の為にサービスの「バックグラウンドデータ」を無効化し「機内モード」を有効化してネットワークサービスを無効化する(機内モードを有効にすればバックグラウンドデータを無効にしなくても良いと思われるが、念のため)。ガバナーを「ユーザースペース」に設定し周波数を 350 MHz のシステム最小値以外使わない設定にした(スリープモード時には CPU パワーを必要としないと考えると、固定化してしまった方が効率が良いと思われる)。周波数が少なければそれすなわち省電力なので、バッテリの駆動時間がのびる。


・トリガーの設定

トリガーはバッテリ残量ごとのトリガーを全部消して次のようなスリープモード待機だけのトリガーを作った。スリープモード時に「スクリーンオフ」プロパティになるように設定。


設定が完了したら「設定」→「CPU tuner の有効化」を選択して CPU tuner を実行する。
一度スリープモードにしてから復帰させてみて、ログでプロファイルの変更が意図したとおりに行われているのが確認できれば完了。

実際試してみたところ一晩スリープモードにさせても 1% もバッテリを消費していなかったので効果はあると思われる。 ただし、インストールされているアプリのバックグラウンドでの動作によって左右されるものなので、どんな状態でも効果があるとは限らない。

・注意点

この設定だとスクリーンオフから復帰した時に機内モードを無効化してネットワークサービスの有効化を行うので、ネットワークへの接続に若干時間がかかるようになる。また、ハイパフォーマンスなゲームをプレイする場合は仮想ガバナーが「通常」だと動作がもっさりする可能性があるので、仮想ガバナーを「フルスピード」に設定する(もしくは自分でチューニングする)のがよいかもしれない。

CPU tuner を使えば、もちろん通常使用時の CPU のチューニングも出来る。スリープ時のみでなく通常使用時の駆動時間を伸ばしたい場合は、例えば、仮想ガバナーを「バッテリ節約」にして、使用する周波数の最高値を700 MHz 位まで下げるプロファイルを設定すると、端末の動作は明らかにもっさりするが、電力を使わなくなるのでバッテリは減りにくくなる筈である。筈というのは、結局のところスピードを出さなければならない場面でも無理矢理スピードを抑えることになるので、高負荷の処理を長い間させるような場合ではかえって効率が悪くなっているかもしれないからだ。

CPU tuner は root 権限に依存して動作するので、端末のアップデート等で root 権限を得る事が出来なくなった場合、正常に動作しない。

2013年1月15日

Nautilus をスーパーユーザー権限で使う

Ubuntu を使っていると、権限のないディレクトリでのファイルの扱いや設定ファイルの書き換え等、細かいところでスーパーユーザー権限が必要になる事が多い。これらは端末にコマンドを入力することで対処出来るが、グラフィカルに Nautilus ファイルマネージャを使って対処する方法もある。

・Ubuntu Tweak を使って Nautlius の機能を拡張する

Ubuntu の設定ツールである Ubuntu Tweak を使えば簡単に Nautilus の機能を拡張できる。 Ubuntu Tweak は様々な Ubuntu の設定を行うことが出来る便利なツールだが、今回は Nautilus をスーパーユーザー権限で使う為の機能拡張に使う。インストールしていない場合はまずインストール。

$ sudo add-apt-repository ppa:tualatrix/ppa
$ sudo apt-get update
$ sudo apt-get install ubuntu-tweak

・Nautilus の右クリックメニューにスクリプトを追加

Ubuntu Tweak を起動したら、「システム設定」から「スクリプト」の項目を選択する。


ここで Nautilus のスクリプトを設定できる。左側の「無効なスクリプト」から使いたいものをドラッグアンドドロップで「有効なスクリプト」上の nautilus-scripts フォルダ下に配置すると、そのスクリプトが Nautilus で使える。 Nautilus をスーパーユーザー権限で便利に使うには、「管理者として参照」や「お気に入りのテキストエディタで開く (root権限)」のスクリプトを追加すればよい。「管理者として参照」は、選択したディレクトリやファイルをスーパーユーザー権限で開く事が出来る。開いたものがディレクトリなら、そのディレクトリをフルアクセス出来る。「お気に入りのテキストエディタで開く (root権限)」は選択したファイルをスーパーユーザー権限のテキストエディタで開く。これは書き込み権限のない設定ファイルの編集に役に立つ。フォルダを作ればスクリプトを階層上にまとめる事が出来るので、スクリプト別にまとめておくと整理される。


設定後、Nautilus の右クリックメニューから有効にしたスクリプトが使用可能になっている。


自分でスクリプトを作る

Nautilus の右クリックメニューから「スクリプト」を選んで、「このフォルダーを開く」を選択する。するとスクリプトのディレクトリ(メニューにスクリプトの項目がない場合は /home/ユーザー名/.local/share/nautilus/scripts を直接参照)が開くので、ここに手動でシェルスクリプトを追加できる。

この手段でスクリプトを呼び出した時、 Nautilus が自動的に選択したファイルやカレントディレクトリの URI を変数に設定してくれる。これらの変数はスクリプトの作成に便利だ。

NautilusScriptsHowto

・「管理者権限で開く」(Ubuntu Tweak に頼らない版・追記)

アップグレードするごとに仕様がコロコロ変わる Ubuntu において、Ubuntu Tweak のサポート状況も怪しくなってきているので、 Ubuntu Tweak に頼らず実行可能な「管理者権限で開く」スクリプトも作ってみた。単純にディレクトリとテキストファイルをそれぞれ nautilus と gedit で開く(一度の選択で複数を開く必要はないと思われるので一つを選択した時のみ開く)。

#!/bin/bash

FILE_MANAGER=nautilus
EDITOR=gedit

PRE_IFS=$IFS
IFS=$'\n'
path=$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS

is_TEXT() {
    echo `file $1 | grep "text"`
}

if [ -d $path ]; then
    gksudo $FILE_MANAGER $path
elif [ -f $path -a `is_TEXT $path` ]; then
    gksudo $EDITOR $path
fi

IFS=$PRE_IFS

テキストファイルのチェックは file コマンドを利用してその情報に text の文字が含まれていたら開く、という単純な仕組み(よってテキストなのに開けないものもあるかもしれない)。 IFS を操作しているのはスペースの含まれたファイル名に対応するため。

・選択したディレクトリ及びファイルの「名前に含まれるスペースをアンダーバーに置換」

このスクリプトは選択したすべてのディレクトリ及びファイルの名前に含まれるスペース(" ")をアンダーバー("_")に置換し、コマンドライン上で参照可能にする。

#!/bin/bash

PRE_IFS=$IFS
IFS=$'\n'
paths=$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS

replace_space() {
    echo `basename "$1" | tr " " "_"`
}

for path in $paths; do
    mv $path `replace_space $path`
done

$IFS=$PRE_IFS

・rootのゴミ箱のアクセス

スーパーユーザー権限を使ってゴミ箱に移動したファイルは /root/.local/share/Trash にある。この場所にはアクセスがしづらいので、 rootのゴミ箱にアクセス出来るスクリプトを作ると便利だろう。

「rootのゴミ箱を開く」

#!/bin/bash

gksudo nautilus /root/.local/share/Trash/files

rootのゴミ箱のディレクトリを開く。スーパーユーザー権限でゴミ箱に移動したファイルはここにあるので、復元する場合はここから移動させればよい(権限に注意)。

「rootのゴミ箱を空にする」

#! /bin/bash

gnome-terminal -e 'sudo bash -c "rm -rf /root/.local/share/Trash/{files,info}/* /root/.local/share/Trash/{files,info}/.*"'

このスクリプトは実行すると一旦端末を開いて、そこから sudo で bash を実行する。 rm -r /root/.local/share/Trash でディレクトリを強引に削除しても、ゴミ箱にファイルを移動させると新しくディレクトリが作られるので大丈夫かもしれない。

2013年1月3日

Ubuntu の「最近使ったファイル」を無効にする

Ubuntu 11.04 以降では Zeitgeist を利用し、ユーザーがデスクトップ上で行ったアクティビティをデータベース化して保存している。 Ubuntu のインターフェースにおいてこれを元にした「最近使ったファイル」の情報が表示される為、使用したファイルを見られたくない場合には履歴の保存を制御して使用したほうがよい。

・Activity Log Manager を使って履歴の保存を制御する

Activity Log Manager を使うと Zeitgeist で保存する履歴をユーザーが制御出来る。

ubuntuApps - Activity Log Manager PPA Zeitgeistの履歴をGUIで簡単削除 Zeitgeistによるロギングをワンクリックで停止させる

 activity-log-manager-control-center をインストールすると、「システム設定」→「セキュリティーとプライバシー」→「ファイルとアプリケーション」を選択で Activity Log Manager の設定が出来るようになる。

$ sudo apt-get install  activity-log-manager-control-center

GTK2 及び GTK3 履歴を無効にする

GTK2 及び GTK3 の履歴を無効にすると nautilus をはじめ GTK を使うプログラム(多くの Gnome のアプリケーション)の履歴を無効にすることが出来る。

※ 注意 - 最近開いたファイルの履歴が使えなくなるので、よく使うファイルを履歴から開いて使うという事が出来なくなる。

kamaruのメモその他諸々 - Gnome3の「最近使用した項目」を残さないようにする(参考)

[GTK2]

ホームディレクトリ下の .gtkrc-2.0 に

gtk-recent-files-max-age=0
gtk-recent-files-limit=0

を書き加えて保存(他の項目を上書きしてはいけない)。

[GTK3]

ホームディレクトリ下の .config/gtk-3.0/settings.ini を開いて内容が空なら

[Settings]
gtk-recent-files-max-age=0
gtk-recent-files-limit=0

を書き込む。内容があるなら [Settings] の項目に上記二行を書き加える。

 

・Ubuntu 13.10 以降のファイルマネージャの最近使ったファイルを無効にする

Ubuntu 13.10 以降では GTK を無効にしてもファイルマネージャの「最近使ったファイル」の項目は無効にならない。また Activity Log Manager において記録される項目を制限してもなぜか適用されない。

コントロールセンターの Activity Log Manager において「ファイルとアプリケーションの利用状況を記録」をオフにするとこの「最近使ったファイル」の項目自体が消える。


しかし、利用状況の記録をオフにすると Unity において最近使用したアプリケーションも記録されなくなる。

「ファイルの使用履歴は表示しなくてもアプリケーションの使用履歴は表示したい」という場合は、これをオフにせずにファイルマネージャの「最近使ったファイル」の項目を消す。やり方としては、「dconf エディタ」を使って org.gnome.desktop.privacy の remember-recent-files の値を false に設定(チェックをはずす)すればよい。

このやり方は Gnome の履歴を残さない設定なので、多くの Gnome のアプリケーションから「最近使ったファイル」の項目が消える。だが、 GTK の箇所でも述べたように履歴が使えないことでファイルを開く手間が増える事にもなる。


これでファイルマネージャに「最近使ったファイル」の項目が表示されなくなる。 いわずもがな、 Unity の Dash におけるファイルの履歴表示は  Activity Log Manager で制御可能だ。