2011年8月20日土曜日

トラスロッド調整

久々にギターの神が降りてきたみたいで、懐かしいROCKとか高中とかきいていたら、弾きたくなってきて壁からはずしてみると。。けっこう反ってます。順反りなんで、トラスロッドをちょっと締めやりました。はじめかなりスカスカで、ぜんぜん効かなかったんですが、まぁ、いい感じになりましたな。フロイドはチューニングが面倒なんで、この機会にオクターブとかもばっちり合わせておきました。ああ、爪切らないと弾けねー。

Leica M8 Noctilux 50mm F1.0 @F1.0


2011年8月7日日曜日

[HOWTO] Droid X Android 2.3.3 Gingerbread SBFで!

Droid Xは今年の初めからほとんど放置で、ちょっとCustomROM入れてblogネタ作ったくらいでしたが、なんと、普通に2.3.3(Gingerbread)のOTA来てたようです。SGS2ばかりさわってたので、勝手をわすれてまして、OTAであがんないなぁとなやんでましたが、面倒なのでSBFファイルで一気にあげちゃいます。
http://www.droidxforums.com/forum/droid-x-sbf/23638-linux-solution-your-windows-rsd-lite-problems.html#post267721
参考にしたのはDroidX Forumのこのスレ、All-in-oneのisoファイルを配っていて、これをCD-Rなどに焼きこんで、起動します。その後Droid Xを、vol-up + vol-down + power でbootloaderモードにします。2,3秒ホールドしてはなせばOKです。すんごいシンプルな画面がでたら完了。

ISOで起動したPCには1,2,3みたいなメニューがありますので、1を選んでFlash開始。しばらくまつと2.3.3になってます。簡単。


OTAがダメだったのはlogwrapperのhashがどうしても合わなかったせいで、Droid X Bootstrapperをuninstallして、/system/bin/logwrapper.binをリネームして復活させてもダメでした。で、面倒なんでSBFで一気ですw。

Quadrantは少しあがったかな?SGS2があまりにもスコアが高いので、このくらいのスコアだとダメだなーって思ってしまいますね。次はrootかな。いや、このまま放置かw。

2011年8月6日土曜日

Galaxy S2 docomo shopでいろいろ確認してきた

前回のエントリに書いたとおり、DS行って確認してみました。ついでにHDMI変換コネクタも注文w。品薄ですね。それはさておき。DSのGalaxy S2は

OMKEE

というバージョンでした。で、パネルタイプを確かめるためにTerminal Emulatorをこっそりインストールしてsysfsをのぞいてみると。。

OCTA : SM2 (A1 line)

!。この表記がsysfsから取れるってことは、Update1系のkernelでしょうか。それにしてもOMKEEってDS専用?

で、パネルの感触はというとA1 lineのほうがコントラストが明るめでガンマも下が持ち上がった感じで見やすい印象でした。これは標準状態での比較。白を表示してみると、A2 lineは白がちゃんと白い感じですが、A1 lineは若干黄がかったという感じでした。

ということは、カラーバランスは、パネルをみて決める必要がありますね。kernel職人さんたちは、その辺注意しないとですねw。

それにしても、どの程度これらのパネル違いで出荷されているのでしょうね。コントラストに不満があるような声はあまり聞かないので、もしかするとA1 lineが主流なのでしょうか。みなさんsysfsをcatしてみましょう。


adb shell
cat /sys/devices/platform/samsung-pd.2/s3cfb.0/spi_gpio.3/spi3.0/octa_lcdtype


2011年8月5日金曜日

[KERNEL] Galaxy S2 SC-02C KG5 アップデート後のgamma等

KG5のアップデートは自分で調べた限り
1.initramfsは同一と思われる(ドライバ除く)
2.framework-res.apkはちがうぽい
3.gammaはKF2のSC-02Cと近く、Samsungのopensourceから落とした初期のソースを
    ビルドしたものよりガンマ設定が暗めになる(本来のガンマ?)
4.設定メニューのスクロールがスムースになったかも?
5.ワンセグ終了時のシャープネス戻し
くらいですかね。はっきりいってこんなん刻まなくていいから、はやいとこ2.3.4出してよって感じでしょうか。

前回のエントリでも書いたとおり、純正KG5のkernelには/dev/tunが存在していましたので、そのようなconfigでビルドされていると思いますが、samsung opensourceのGT-I9100_OpenSource_Update1.zipにあるconfigでは、このあたりがdisableされています。
cat c1_rev02_jpn_ntt_defconfig
代わりにNFCがenableだったりと、Update1はなんとなくdocomoがビルドに使ってるのより全然古いような気がしちゃいます。
#気がするだけですよ。まぁ、なんというか、気持ち悪い?

とりあえずいままでの、作業を反映させたkernelをビルドしてみて、以前のエントリに書いた方法でそのまま問題なくビルドできましたので、手順等は過去のエントリを参照してください。そのままです。で、そのkernelを焼いたのですがガンマがちょっと馴染めない感じです。暗いところが非常に暗く、明るいところもピークが伸びてない。画面の明るさを自動設定にしている自分にはちょっと違和感あります。初期リリースのkernelビルドして改善して喜んだのもつかの間です。
#もしかしたら自動設定でつかっちゃだめなのか??

というわけで、ガンマを制御しているパネルドライバの部分をdiffしてみると、どうやらUpdate1では新しいパネルのサポートがはいっているようです。sysfsでわかるパネルタイプの読み出し部分も下記の用な感じです。以前はSM2とM2という2つだけでしたね。そこが、今回新たにSM2がSM2_A1とSM2_A2にわかれたようです。

drivers/video/samsung/ld9040.c
static ssize_t octa_lcdtype_show(struct device *dev, struct
device_attribute *attr, char *buf)
{
        char temp[15];
        switch (get_lcdtype) {
        case LCDTYPE_SM2_A1:
                sprintf(temp, "OCTA : SM2 (A1 line)\n");
                strcat(buf, temp);
                break;
        case LCDTYPE_M2:
                sprintf(temp, "OCTA : M2\n");
                strcat(buf, temp);
                break;
        case LCDTYPE_SM2_A2:
                sprintf(temp, "OCTA : SM2 (A2 line)\n");
                strcat(buf, temp);
                break;
        default:
                sprintf(temp, "error\n");
                strcat(buf, temp);
                dev_info(dev, "read octa lcd type failed. \n");
                break;
        }
        return strlen(buf);

}
自分のパネルタイプを確認してみます。
adb shell
cat /sys/devices/platform/samsung-pd.2/s3cfb.0/spi_gpio.3/spi3.0/octa_lcdtype
OCTA : SM2 (A2 line)
SM2のA2らしいですw。ということは参照しているガンマテーブルはgamma_sm2_a2*みたいですが、c1-panel.cのdiffをとってみたところ、初期リリースのSM2のガンマがSM2のA1と同一です。とりあえず、これを参照するように変更してみます。変更点としては、ガンマテーブルを保持しているc1_panelストラクチャのメンバを直接変更してもいいですけど、自分ははロジック側を変更してみました

drivers/video/samsung/ld9040.c
        if (get_lcdtype == LCDTYPE_M2) { /* M2 */
                if (lcd->gamma_mode)
                        gamma = pdata->gamma19_table[lcd->bl];
                else
                        gamma = pdata->gamma22_table[lcd->bl];
        } else if (get_lcdtype == LCDTYPE_SM2_A2) { /* SM2 A2 line */
#if 0 /* creams A2 -> A1 */
                if (lcd->gamma_mode)
                        gamma = pdata->gamma_sm2_a2_19_table[lcd->bl];
                else
                        gamma = pdata->gamma_sm2_a2_22_table[lcd->bl];
#else
                if (lcd->gamma_mode)
                        gamma = pdata->gamma_sm2_a1_19_table[lcd->bl];
                else
                        gamma = pdata->gamma_sm2_a1_22_table[lcd->bl];
#endif
        } else { /* SM2 A1 line*/
                if (lcd->gamma_mode)
                        gamma = pdata->gamma_sm2_a1_19_table[lcd->bl];
                else
                        gamma = pdata->gamma_sm2_a1_22_table[lcd->bl];
        }
そしてビルド。
make -j2
出来上がったzImageをいつものようにheimdallでSGS2へフラッシュします。すると。。おー!以前のような明るさです。黒つぶれもなく、白のピークも伸びてる感じ。自分は絶対このほうがいいと思うのですが、、DSにでもいって比べてきますかなー。バグとも思えないので、個人の感じ方の差なんでしょうけど。もしくは、パネルタイプがまちがってるか。いずれにせよ自分の好きな感じになったのでよしとしましょう。

2.3.4早くコイ!

Galaxy S2 画面Off時のCRTエフェクト

いつも忘れてしまうので、自分のためのエントリです。

ちなみにKG5のframework-res.apkはKF2とmd5が違ったので、念のため抜いてからそれを使ったほうがいいです。diffとったわけじゃないけどね。

apktool をダウンロード。

framework-res.apkを実機から抜く。

adb pull /system/framework/framework-res.apk

apktoolで展開。

apktool.bat d -f framework-res.apk
カレントにframework-resが作成される。

cd framework-res/res/values
bools.xmlをいじる


このあたりw
animateScreenLights = false
tether_dun_required = false


コンパイル
apktool.bat b -f framework-res

できたか確かめる
ls framework-res/build/resources.arsc

このリソースを既存のframework-res.apkの中身のものと置き換える

7z.exeをコマンドラインで、無圧縮モードを直接指定して実行する。

7z.exe u -mx=0 -tzip ./framework-res.apk ./framework-res/build/resources.arsc

実機にpushして再起動

adb remount
adb push framework-res.apk /system/framework/
adb reboot


以上。

KG5アップデート

KG5へのアップデートが本日配信されたので、早速アップデートしてみました。%TEMP%フォルダをチェックしてアップデータを抜くのも忘れてませんw。で、どんな感じかというと、まずガンマの設定は日本版の初期の設定という感じで、自分には我慢できない暗さです。黒つぶれというか、これは、個体差なんでしょうかねぇ。

というわけで、まずはrootですね。今回のアップデートはfactoryfs.imgを含むので、ほとんどの場合suとかは消えちゃいます。でもzImageがあるので、気が楽ですねw。早速KernelのUpdate1をsamsungのopensourceサイトからダウンロードしてビルドしてみます。その前にKiesのTEMPから抜き取ったzImageから、initramfsを取り出します。いつものようにchromarockさんのinitrampickerを使います。
initrampicker zImage ke5_initramfs.cpio
mkdir initramfs
cd initramfs
cpio -ivmd --no-absolute-filenemas < ../ke5_initramfs.cpio
ここでKF2のinitramfsとdiffをとってみたんですが、まったく同じでした。変化なしです。
GT-I9100_OpenSource_Update1.zip
をダウンロード完了したら展開して、kernelソースをさらに展開します。ここで初期リリースのkernelソースとconfigを比較してみました。ほぼ同じです。違いは
Update1:  NFCがenable(なんで?) TUNがdisable
Original:   TUNがenable
見たいな違いで、もしかしたらこれからちゃんとした日本向けのソースがでるのでしょうかね?比較したconfigは
c1_rev02_jpn_ntt_defconfig
です。まぁ、たいしたちがいじゃないので、NFCをdisableに、TUNをenableにしてビルド開始です。
#コンパイラへのパスとかも忘れずに。気になる人は以前のエントリを参照してください。
make c1_rev02_jpn_ntt_defconfig
make menuconfig (NFCをdisable, TUN/TAPをenableなど、、 )
make -j2
出来上がったzImageを早速焼いてみます。数十秒後ー>ん、、ガンマ同じかよ。。

次回は、既存ソースの適用(BLN,UV,bootLOGOなど)とgammaの調整としますかー。

2011年8月3日水曜日

[KERNEL] Galaxy S2 Backlight Notification (BLN) support kernel #2

見落としがあったので、改良版を作りました。いままでsysfsのnotificaion_ledはlights経由でのみ変更されるものだと、勝手に考えてましたが、BLN Control Appの動作を見ると全然違いますね、積極的にsysfsを操作してます。というわけで、いろんな条件でテストしてみたところ。BLN Appがlightsの足りないところを補っている感じでした。lightsは主にNotificationManagerからの要求で、各種ひかる系のデバイスの制御をやってますが、そのタイミングはシステム依存です。どのタイミングでLED通知が解除されるかはわかりません。BLN Control Appはこのへんの足りないところを積極的に制御してます。
#あー、なんでいままで気にしなかったんだろうorz...

さておき、以下のような方針で実装しなおしました。
1.端末がdeep sleep状態の時に通知を受けたら、一回だけwake_lock
2.以後、LEDのblinkか連続点灯かにかかわらず、wake_lockを保持。
3.BLN Control Appからの点灯終了イベント(sysfsへのアクセス)で
    wake_unlockしてregulatorを開放。
4.deep sleepに移行。
5.これらの繰り返し。
保険として、BLN Contorl Appからの通知が来なかった場合にresumeでwake_unlockといった感じです。3の部分がキモなんですが
普通アプリの挙動みてればわかるだろう>自分。。。

というわけで、wake_lock -> wake_unlockの区間を制御できるようになったので、いったんはこれでFIXでしょうね。あとはPowerManagement系に手を入れないとこれ以上の省電力化はのぞめないでしょう。

あと、BLN Control Appは最新で運用よろしく。ソースはいつものようにgithubにあげときました。試す人は試すでしょうw。

drivers/input/keyboard/cypress/cypress-touchkey.c
git clone git://github.com/creams/SGS2-BLN-cypress-touchkey.git
サンプルkernelバイナリ
git clone git://github.com/creams/SGS2-SC02C-BLN-Kernel.git

なんだかXDAとかにスレ立ってるし。battery rapeとか言われてるよw。