2011年12月31日土曜日

2586カーネルの何か

■コレは何?

カーネルブートイメージを2586_SC版に入れ替える何か。
ブートアニメーションは変わりません(笑)
何がどうなるか分かりません。保証もありません。
自爆覚悟でどうぞ。何かたち倉庫に在り。

■中身はこんな感じ。
u-boot.bin
uImage
recovery_mmc.img
mga.mga

fuse
mg_up

タッチパネルのファームも入れてるけど、更新されない機体もあるっぽい。
うちのは、ファーム更新必要ないよって蹴られた。
ログにこんな形跡が残る。
====== Read SW version======
the sw_ver is  FB********,the input ver is FB********,the compare err = -7
the input version is in the beginning range!
the sw_ver is  FB********,the input ver is FB********,the compare err = -1
the input version is out the ending range!
Forbid to upadte the Touch Firmware
[Touch Update]: The SW version is out of the range, no need to update the FW!

■何が変わったのか?

2375のカーネル情報
# cat /proc/version
Linux version 2.6.35.7 (root@ubuntool) (gcc version 4.4.1 (Sourcery G++ Lite 2010q1-202) ) #13 PREEMPT Mon Oct 17 20:09:18 CST 2011

# uname -a
Linux localhost 2.6.35.7 #13 PREEMPT Mon Oct 17 20:09:18 CST 2011 armv7l GNU/Linux

2586のカーネル情報
# cat /proc/version
Linux version 2.6.35.7 (root@ubuntool) (gcc version 4.4.3 (GCC) ) #69 PREEMPT Tue Dec 6 15:51:57 CST 2011

# uname -a
Linux localhost 2.6.35.7 #69 PREEMPT Tue Dec 6 15:51:57 CST 2011 armv7l GNU/Linux

大きな変更点は、CPUの動作周波数レンジが変更になってる。
2375は300MHz~1000MHz。
2586は600MHz~1000MHz。
# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
600000
# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
1000000
# cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq
600000
# cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
1000000
可変動作クロックは主にバッテリー駆動時に負荷程度によって変化する。
AC接続時はバッテリー時とは異なる動作クロック制御になってる。
最低クロックの引き上げで、ランチャ動作がマシになったかもしれないが気のせいかもしれない。
もちろん、デメリットも考えられる。
実測してないけど、消費電力が上がる=バッテリー持ちが悪くなると言う傾向があるはず。

他の変更点はカーネルに組み込まれてるモジュールが若干異なるっぽい。

一週間ほど使用して、今のところは特に問題なく動作している。
ま、一般的なメリットは全く無いパッチかも。

戻すには、オリジナルの2375_ROWを上書きでupdate。
ただし、タッチパネルのファームは戻らないので注意。
自己責任で。

2011年12月28日水曜日

2586らしきもの

2586_SCと混ぜて遊んでみた。
カーネルとブートイメージのみ入れ替えたもの。
ちゃんと動くけど、変化も特に無い。
強いて言うなら、CPU周波数のスケーリング最低値が600MHzになってることくらいか。

こんなのは需要無いよね~


2011年12月23日金曜日

2375_ROW と 2493_SCの差分の何か

■コレは何?

2493_SCに導入される差分ファイルの一部をまとめた何か。
何がどうなるか分かりません。保証もありません。
自爆覚悟でどうぞ。何かたち倉庫に在り。

■差分ファイル一覧
system/bin/glgps
system/bin/mediaserver
system/bin/getBTMac.sh

system/lib/libaudioflinger.so
system/lib/libcamera.so
system/lib/libhardware_legacy.so
system/lib/libOMX.TI.Video.Decoder.so
system/lib/libskia.so
system/lib/libwebcore.so

system/lib/dsp/m4venc_sn.dll64P
system/lib/dsp/mp4vdec_sn.dll64P

system/etc/apns-conf.xml
system/etc/gps/glconfig.xml

system/proprierary/wifi/apsta.bin

※オリジナルから修正・削除しているファイルがいくつかあります。


■らしい、更新内容

GPSサービスの更新(測位に関する処理変更があったらしい)
動画再生関連ファイルの更新(具体的な修正内容は不明)
Wifiのファームが付属(具体的な修正内容は不明)

公式な修正内容が不明なので、具体的にどう良くなったのか、修正されているのか記述することは避けます。ファイルを見て察してください。
また、体感は個人によって異なり、あまり当てにはならないので効果についても記述しません。

私は常時使用してますが、特に具合が悪くなっていることはありません。
しかし、変なものを食べさせるとお腹が痛くなったり、具合が悪くなったりするので、食べすぎ飲みすぎ何かの当てすぎには注意しましょう。

戻すには、オリジナルの2375_ROWを上書きでupdate。

2011年12月17日土曜日

GPSログ問題の補足

某経由で問い合わせが何件かあったので、問題の詳細をここに書いとく。

IdeaPad A1 ビルド番号A107W0_A234_001_010_2375_ROWで発生する問題。
(US版A107W0_A234_001_010_2375_USでも同様に発生する。おそらく、2375版固有の問題)

■問題点の詳細

GPS機能を有効にすると、GPSメッセージを処理するサービスが動き出す。
このとき、このサービスは
/system/etc/gps/glconfig.xml
によって初期化され動作する。
問題は、このglconfig.xml の中の設定属性の中に
cLogEnabled="true"
という指定がある。
これは、サービスの動作ログを取得保存するためのスイッチで、ログは、
acLogDirectory="/data/gps/log"
要素にて指定されている場所に作成される。
当該ファームでは cLogEnabled が true になっているので、ログを取得する設定になっている。
つまり、GPSを動作させると、/data/gps/log ディレクトリ以下に、GPSログが書き込まれていく。

ログの内容は具体的にどのようなものかと言うと、
09:53:12.210 NVRAM directory [/data/gps/] created (0:Unknown error: 0)!
09:53:12.210 OpenFifo: Created new fifo [/cache/glgpsctrl].
09:53:12.210 OpenFifo: Opened "/cache/glgpsctrl"
09:53:12.210 GpsHalInit: SuplLog Path :
09:53:12.210 GpsHalInit: SuplLog Disable
09:53:12.211 SUPL: Certificate Path :
09:53:12.211 SUPL: TLS enable = 1
09:53:12.299 SUPL: Certificate Path :

09:55:59.690 &******* GL_NMEA[0][$PGLOR,0,HLA,******.**,L,,Al,,A,,H,,,M,0,Ac,0,Gr,0,S,,,Sx,,,T,0,Tr,,Mn,0*3B
09:55:59.690 &******* GL_NMEA[0][$PGLOR,0,PPS,******,******.***,,,,,*1F
09:55:59.690 &******* GL_NMEA[0][$GPGSV,3,1,10,01,**,***,,11,**,***,,28,**,***,,32,44,114,*7F
09:55:59.690 &******* GL_NMEA[0][$GPGSV,3,2,10,20,**,***,,08,31,***,,19,30,***,,17,17,***,*7B
09:55:59.690 &******* GL_NMEA[0][$GPGSV,3,3,10,07,17,***,,03,04,***,*7E
09:55:59.690 &******* GL_NMEA[0][$GPGSA,A,1,,,,,,,,,,,,,***.0,**.0,**.0*35
09:55:59.690 &******* GL_NMEA[0][$GNGSA,A,1,,,,,,,,,,,,,***.0,**.0,**.0*2B
09:55:59.690 &******* GL_NMEA[0][$QZGSA,A,1,,,,,,,,,,,,,***.0,**.0,**.0*29
09:55:59.690 &******* GL_NMEA[0][$GPRMC,******.**,V,,,,,,,******,,,N*74
NMEAメッセージはGPSチップから送られるたびに書き込まれるので、GPS動作時毎秒1Kbyte弱のログが書き込まれる計算になる。

問題は、
このログが /data/ 領域に書き込まれていくということ。
/data はアプリをインストールするのに使用される領域でもある。
Androidで言うところの内部ストレージに当たる部分で、アプリがインストールされるたびに消費される。
このログが有効であると言うことは、アプリをインストールするための領域がGPSを使用するたびにどんどん消費され、狭くなってしまうと言うこと。
しまいには、いつの間にかアプリがインストールできなくなってしまったり、動作に支障をきたすことになる。

しかも、たちが悪いことに、
/data/gps/log ディレクトリはroot権限で作成されるため、普通に削除ができない。
ずっと残ったままなのである。

■問題の解決方法

手動で解決するにはroot化が必須となる。

●ログを取らない設定にする
  • shellよりsu、/system をrwリマウント。
  • /system/etc/gps/glconfig.xml のcLogEnabledを"false"に書き換え
  • /system をroリマウント。
●/data/gps/logを削除する
  • shellよりsu、/data/gps/log を rm
patch-del_gpslog_signed.zipは上記と同等の処理を実行しているにすぎない。
中華版新ファームではログを取らない設定に戻されているので、今後のバージョンアップで修正される可能性が高い。
しかし、すでに作成された /data/gps/log が削除されるのか疑問である。


以上。

2011年12月12日月曜日

TK-FBP018 の何か

何か置き場は「IdeaPad A1 向けの何か」ページにまとめてみた。

で、
TK-FBP018用のキーマップも作ったので置いとく。
ラッキーなことに借りることができた。

*.kcm.bin はTK-FBM023のものと同じで、キーレイアウトのみ編集したもの。
特殊キーを一部割り当ててるので書いとくと、
F1 = MUTE
F2 = VOLUME_UP
F3 = VOLUME_DOWN
F4 = MEDIA_PREVIOUS
F5 = MEDIA_PLAY_PAUSE
F6 = MEDIA_NEXT
F12 = SEARCH
Ctrl = VOLUME_DOWN
Home = HOME
End = ENDCALL(スリープ)
こんな感じ。

で、TK-FBM023の何かもキー割り当てを少し変更した。
変更点は、
Home = HOME
End = ENDCALL(スリープ)
以上。

Bluetoothキーボードの何か補足

も少し詳しく。
logcatで、件のキーボードを認識する過程をログると、
I/EventHub( 1158): New keyboard: device->id=0x10004 devname='TK-FBM023 Series' propName='hw.keyboards.65540.devname' keylayout='/system/usr/keylayout/TK-FBM023_Series.kl'
I/EventHub( 1158): New device: path=/dev/input/event6 name=TK-FBM023 Series id=0x10004 (of 0x5) index=5 fd=175 classes=0x3
I/InputReader( 1158): Device added: id=0x10004, name=TK-FBM023 Series, sources=00000101
こんな感じになっている。
この中の、devname= で示される名称が、キーレイアウトとキーマップのベースファイル名になる。
ここでは、
devname='TK-FBM023 Series'
となっているので、スペースを _ に変換して、
TK-FBM023_Series.kl
TK-FBM023_Series.kcm.bin
Androidは上記ファイルを探しに行く。見つからなければデフォルトのqwertyを使用する。
他のキーボードでもdevname.kl, devname.kcm.bin を用意すればおk。

ちなみに、klは単なるテキストだけど、kcm.binはバイナリ。
qwerty.kcm.binコピーして、中身をバイナリエディタで加工してもいいし、Androidのソースからビルドすることもできる。
私はソースからビルドした。



klの書き方なんかは検索すればいくらでも情報は出てくるので省略。
上手くklを書けば、メディアキー(曲送り、再生停止)やメニュー、ホームなんかも割り当てられたりするので、個別にカスタマイズしてもいいかもね。

2011年12月11日日曜日

TK-FBM023 の何か

もう、何かって何だろうね(笑)

ところで、おいらがA1本体のみでハックするときに使ってるBluetoothキーボード、ELECOM TKFBM023。
正直、使い勝手はあまりよくない。
でもまぁ、単独ハックにはとても役立ってるのでよし。
これで日本語文章を打とうとは思わないけど(笑)

さて、AndroidはqwertyキーのUSマッピングがデフォルトなので、ふつーに入力すると記号などキートップと違う文字が打てる。
うぬ、よくある話。
で、USキーマップを覚えられない俺のために、キーマップの修正をする何かを作ってみたかもしれない。

少し詳しく言うと、
キーボードがHID認識されたとき、デバイスに対応したキーレイアウトとマップファイルが読み込まれる。
デフォルトは、
/system/usr/keylayout/qwerty.kl
/system/usr/keychars/qwerty.kcm.bin
これと同じように、TKFBM023用の定義ファイルを用意してやれば問題なく読み込まれてちゃんとキートップどおりのキー入力ができるって寸法。

んで、捏造してみたものは、こんな感じ patch-TKFBM023_signed.zip になる。
いつものとおり、update.zipで適用できるかもしれない。
扱いは、★無保証、完全自己責任で扱ってね。

注意事項が何点か。
  • 一応、入力には困らないようにキーマップしてるが、機能キーは使用できないものがある。これは手抜きである。
  • A1の場合、正ポートレイト(ロゴが上にくる縦置き)の状態で矢印キーが正しく動くように固定されている。ローテーションした場合、矢印キーは(画面に対して)正しく動かない。
  • AndroidにはCtrlキーが無いのでCtrlキーは意味が無い。ただし、端末エミュレータでCtrl+C(中断)コードを送りたい都合、CtrlキーにはVOLUME_DOWNを割り当てている。
    これを変更するには、TK-FBM023_Series.klの該当箇所を書き換えればよい。
  • TK-FBM023_Series.klには、本来の意味とは異なるキーラベルを使用している箇所がある。

そんなわけで、中身を取り出してファイル名を変えれば、他のキーボードにも使えたりするかもしれない。

あーこれで、イライラせずに青空ハックができるわい。

追記 2011-12-12
キー割り当て一部修正。リンクを更新。

2011年12月10日土曜日

A107W0_A234_001_010_2375_ROW の何か

ビルド番号A107W0_A234_001_010_2375_ROWに対する何かを作ってみた。

★この何かの記事は非公式なものです。
★この記事を読んでムラムラしてどうにかなっても私は知りません。
★無保証、完全自己責任で扱ってください。

何かの使い方は、何かのzipをダウンロードして、ダウンロードしたzipファイルをSDカードのルートにコピーし、ファイル名をupdate.zipに変更したら、SDカードを本体に入れ、リカバリメニューを起動。リカバリモードに入ったら自動的にアップデートが走るのでしばらく放置の後、自動的に電源が切れるのを確認してから、本体を起動すればいいらしい。
リカバリメニューへの入り方などは、ウィキに書いてあるらしい。

具体的な処理内容はzip解凍して、META-INFO/com/google/android/updater-scriptを読めば分かると思う。

で、各種何かなんだけど、おいらが作業で使った対象ビルド番号がA107W0_A234_001_010_2375_ROWのもの。
まず、GPSを使用するとログを出力しまくり、内部ストレージを圧迫していく問題があまりにもうっとおしくて腹が立つので直そうと思って作ってみたのがこれ、patch-del_gpslog_signed.zip
で、フォントも自分好みにしてみようと考えて、patch-JP_font_signed.zipなんてのも作ってみた。
あと、なんか自分でドライバとかゴリゴリ組み込みたいから、root化するのもいいかなと思って、テストで作ったのがコレ、patch-rooted_signed.zip
それと副産物でこんなものができた。patch-rooted_font_signed.zip

ま、必要な人が居るとは思えないけどネ(笑)
あー分かりにくいったらありゃしないw
間違って、前の投稿消しちまったから書き直したらこうなった(意味不明)