SL-B500スペシャルカーネル導入――爆弾がBluetoothへ移動

やや不安もあったのですが、問題解決のためにもスペシャカーネルを試してみることにしました。と、仰々しく構えていたのですが、実際は公式ROMアップデートのrootfs更新を抜いたものだったのですね。1MB強のカーネルのみを入れ替える作業のみで、全て合わせて実質5分程度で終了する手軽なものでした。導入したバージョンは、キー入力時に問題があるのが確認されているv15を避けて、手前のv14c。C860のソースコードがベースになっているようです。


更新後早速起動してみると、SHARPのロゴの代わりに、Linuxでお馴染みのペンギンさんの絵と各種起動メッセージがずらり。小さい本体なのに、Linuxの本性を見せられてどきりとしますね(^^;; 無事起動して、早速SDメモリーカード負荷試験を行ってみました。まずはザウルスドライブ経由で、80MB強の動画ファイルを転送。B500側に多少の処理負荷を感じるものの、問題なく転送成功。更に、NetFront、qtMail、KMerlin、qpeGPS等の重量級アプリケーションを立て続けに起動させて、10MB以上スワップを消費させた状態で、mplayer+opie-MPlayerShellExの組み合わせで動画再生。スワップへの読み書きに加えて、動画の読み出しを行うかなりの高負荷ですが、これもまた無事に再生成功。動画の滑らかさもノーマルカーネルとは段違いです。素晴らしい。


最後に懸案のBluetoothをテスト。結果、見事に使用不可_| ̄|○ SD周りの改善と、全体的な性能の底上げの素晴らしさを体感しただけに、がっくり感も倍増です。が、あくまでソフトウェアの問題であれば、改善できる可能性は残っています。と言うわけで、ちょっと原因を探ってみました。


ibCardカードは、cardctl identコマンドによりきちんとLSE039と使用チップの型番が認識されているのを確認。が、ibCard側の通信ランプが一切反応しません。そこで、Bluetoothモジュールを再起動させた時の挙動をdmesgにて確認してみました。



Unable to handle kernel paging request at virtual address ffffffff
pgd = c0004000
 *pgd = 00000000, *pmd = 00000000
Internal error: Oops: 0
CPU: 0
〜中略:CPUコアダンプ〜
Backtrace:
Function entered at [] from []
r4 = C01EC2E0
Function entered at [] from []
Function entered at [] from []
Code: e5843334 e10f2000 e3823080 e121f003 (e5913000)
BlueZ L2CAP ver 2.3 Copyright (C) 2000,2001 Qualcomm Inc
Written 2000,2001 by Maxim Krasnyansky
BlueZ RFCOMM ver 1.0
Copyright (C) 2002 Maxim Krasnyansky
Copyright (C) 2002 Marcel Holtmann


と言う感じです。本来なら、BlueZ L2CAP〜のメッセージしか出ないので、明らかにエラーを起こしています。メッセージを素人目に見ると、v14以降でカーネルのページング量調節のパッチが当たっていたので、あるいはそれが原因なのかなと思ってみました。とはいえ、自分自身カーネルハッカーでは無いので、関数のバックトレースが表示されていても、これ以上追跡・対処は行えません。今のところ、カーネルとBlueZのバージョンを総当りして、いい組み合わせを見つける事くらいでしょうか。


ちなみにv15では、OS起動時にBlueZの立ち上げの所でフリーズしたものの、OS起動後にBlueZを立ち上げることで、もしかしたら正常に使えるかもしれません。が、v15とSL-B500の組み合わせでは、特定のキーを押すとQtopiaにリセットが掛かるという94式拳銃のような症状が報告されているので、本格導入には躊躇してしまいます(^^;;※
※11/1追記:v15でも正常には動作しませんでした


#無償で精力的にカーネルのアップデートをされている方々には、頭が下がる思いです。
#微力ながら、動作報告で少しでも貢献できればと思います。