SL-B500/C700/C750/C760/C860/6000/C3000 special kernel
近況報告
- 2004/12/15 SL-C3000専用のv17dです。クロックアップ可変、コア電圧可変、SIGSTOP問題対処、UNICON、筆圧関知、タッチスクリーン書き込み、キーボード書き込みパッチ、起動メッセージ表示パッチ、スワップアウト量調整パッチ、NTFS有効化パッチ、セキュリティパッチ、Bluetoothパッチを当てました。これでC7x0,C860と同等の機能となりました。
- 2004/12/11 SL-C3000専用のv17cです。クロックアップ可変、コア電圧可変、SIGSTOP問題対処、UNICON、筆圧関知、タッチスクリーン書き込み、キーボード書き込みパッチを当てました。また、コンフィグを直したので起動メッセージがちゃんと出るようになったはずです。なお、末尾の機能早見表で、"not yet"のものはパッチがあるけど確認しきれていないものです。挑戦者求む。
- 2004/12/4(3) SL-C3000での使えそうなクロックを追記(/procファイルシステムの項)。
- 2004/12/4(2) SL-C3000専用のv17bです。SL-C3000のカーネルソースにクロック可変やコア電圧可変のパッチなどを当てました。サスペンドからの復帰時に正しいコア電圧を設定するように修正。
- 2004/12/4 SL-C3000専用のv17aです。SL-C3000のカーネルソースにクロック可変やコア電圧可変のパッチなどを当てました。v17でSDやUSBのトラブルがあったので、パッチを最低限にしてみました。
- 2004/12/3 SL-C3000専用のv17です。SL-C3000のカーネルソースにクロック可変やコア電圧可変のパッチなどを当てました。
- 2004/11/10 v14dです。v14cからpreemptパッチを外したことで、Bluetoothの問題が解決しました。さらに、Bluetoothは最新のパッチを当ててみました。
- 2004/9/21 メールサーバの設定を間違っていて、@tetsu.homelinux.orgメールが受け取れなくなっていました。直しましたが、これまでにメールを送っていただいたかたは、お手数ですが再送をお願いします。
メディア
これ以外にもあったら教えて下さい。
無責任
本カーネルの使用により、あなたのZaurusがレンガになったりしても、私は何も補償できませんのであしからず。
何だろう
カーネルソースをちょっといじってSL-B500/C700/C750/C760/C860/6000/C3000でちょっと速く動くかもしれないようにしたものです。
ライセンス
スペシャルカーネルは無料で配布しており、ライセンスはGPLです(念のため)。
カーネルの入れ換え手順
(1) SHARPのサイトからconsolescrollとupdater.sh.xxxxをもらってくる。
updater.sh.xxxxはファイル名をupdater.shと変更。
双方をメモリカードにコピーする。
(2) 下記から機種に合ったカーネルを選び、ファイル名はzImageと変更してメモリカードにコピーする (zImage.binではないことに注意)。
(3) consolescroll, updater.sh, zImage以外がメモリカードにないことを確認。
特にinitrd.binは危険なので絶対に消して下さい。
後は(1)のSHARPのサイトの手順通りですが、完全消去はしないで下さい (手順11で7だけ実行し、後は普通に電源を入れる)。
復旧手順
何か問題があった場合は、元のカーネルを使って上記(3)をやり直して下さい。
元のカーネルは、SHARP提供のアップデートソフトがある機種 (B500, C700, C860)ならば、そこから取り出して下さい。
SHARP提供のアップデートソフトがない機種 (C750, C760, 6000)ならば、元のカーネルと同等のものを使って下さい。
/procファイルシステム
/procファイルシステムにより、カーネル設定の参照/変更が可能です。
例えば、CCCRの値を参照したい時は、
$ cat /proc/cccr_change
CCCRを241に変更したい時は、
# echo 241 > /proc/cccr_change
など、通常のファイルのようにアクセスします。
変更 (書き込み)はroot権限が必要です。
以下に主要なものを示しますが、これ以外にも、ぴろさんの
カーネルパッチをまとめるのページにいくつか書いてあります。
- /proc/zaurus/CCCR : C3000のCPUクロック (非アイドル時のCCCR値) (read/write)
- 対応機種: C3000
- 2000210: CPUクロック416MHz システムバス208MHz (default)
- 2000310: CPUクロック624MHz システムバス208MHz
- 2000214: CPUクロック520MHz システムバス260MHz
- 2000218: CPUクロック624MHz システムバス312MHz
- 解説: クロックアップ時はコア電圧もセットで変更して下さい。
- 使用例:
# echo 0e > /proc/zaurus/VCORE
# echo 2000218 > /proc/zaurus/CCCR
クロックの変更/確認には、ぴろさんの
qclockchange-for-c3000がお勧め (root権限で実行にチェックが必要)。
- /proc/zaurus/VCORE : C3000のコア電圧 (read/write)
- 対応機種: C3000
- 00: 0.850V
- 01: 0.900V
- 02: 0.950V
- 03: 1.000V
- 04: 1.050V
- 05: 1.100V
- 06: 1.150V
- 07: 1.200V
- 08: 1.250V
- 09: 1.300V
- 0a: 1.350V (default: 416MHz時の定格)
- 0b: 1.400V
- 0c: 1.450V (520MHz時の定格)
- 0d: 1.500V
- 0e: 1.550V (624MHz時の定格)
- 0f: 1.600V
- 解説: クロックアップ時はコア電圧を上げないと安定しないようです。
- 使用例:
# echo 0e > /proc/zaurus/VCORE
- /proc/cccr_change : CPUクロック (非アイドル時のCCCR値) (read/write)
- 対応機種: B500/C700/C750/C760/C860/6000
- 241: B500/C700のノーマルカーネルでの値
- 242: B500/C700用の初期値
- 161: C750/C760/C860/6000用の初期値 (ノーマルカーネルと同じ)
- 162: C750/C760/C860/6000で運が良ければ動くかも
- 解説: C750/C760/C860/6000の場合、162を試してみて、だめなら161でお使い下さい。
ここでの設定値によらず、アイドル時には自動的にクロックが落ちます。
クロックの変更/確認には、ぴろさんの
qclockchangeがお勧め (root権限で実行にチェックが必要)。
同じくぴろさんのfreqchangeappletを使うと自動的に好きなCCCR値に設定することができます。
- /proc/driver/w100/fastsysclk : ATI W100のFASTSYSCLK (read/write)
- 対応機種: C700/C750/C760/C860
- 75: ノーマル (default)
- 100: 高速
- 解説: グラフィックチップとしてATI W100を搭載している機種(Cxxxシリーズ)のみ有効。
100にすると画面描画が高速化される。
個体差により画面にゴーストが出ることもあります。
画面が乱れるなどの不具合が起きる場合は75でお使い下さい。
- /proc/power_key_off : パワーキーサスペンドモードON/OFF (read/write)
- 対応機種: C700/C750/C760/C860
- 0: パワーキーサスペンドモードOFF (default)
- 1: パワーキーサスペンドモードON
- 解説: コンソール向け機能
- /proc/three_button : 3ボタンモードON/OFF (read/write)
- 対応機種: B500/C700/C750/C760/C860
- 0: 3ボタンモードOFF (default)
- 1: 3ボタンモードON
- 解説: コンソール向け機能
- /proc/tspressure (/proc/zaurus/tspressure) : 筆圧感知ON/OFF (read/write)
- 対応機種: B500/C700/C750/C760/C860/C3000
- 0: 筆圧感知OFF (default)
- 1: 筆圧感知ON
- 解説: 筆圧感知機能を使うには、
PetitePeintureのような筆圧対応アプリケーションが必要です。
- /proc/driver/w100/rotation : ハードウェアローテーション (read/write)
- 対応機種: C700/C750/C760/C860
- 0: 標準 (default)
- 180: 上下反対
- 解説: コンソール向けか。
- 使用例:
# echo 180 > /proc/driver/w100/rotation
# echo 0 > /proc/driver/w100/rotation
- /proc/version : バージョン確認 (read)
- 対応機種: B500/C700/C750/C760/C860/6000/C3000
- 解説: 読み出しのみ。
v13a@tetsu.homelinux.orgのようにバージョンが表示される。
FAQ
全般
- (Q1-1) 危険ではないのか。
ハードが壊れたりしないのか。
- (A1-1) 私は責任がとれません。
これまでにハードが壊れたという話は聞きません。
バージョンによっては内蔵フラッシュの内容を(ソフト的に)壊すこともありましたが、このようなバージョンは公開停止しています。
カーネル入れ換え作業時に誤って他機種のinitrd.binを書き込むと復旧が難しいので十分注意して下さい。
- (Q1-2) SHARPからもいずれ同等の速度が出るカーネルがリリースされるのでは。
- (A1-2) 無理です。
まっとうなメーカとしてはプロセッサの定格外の使い方を推奨するわけにはいかないからです。
- (Q1-3) カーネルを入れ換えなくてもクロックアップはできるのではないか。
- (A1-3) 無理です。
カーネル内に規定のクロック以外にはならないようなコードが入っているからです。
ぴろさんの10/27版パッチ以降を適用したカーネルだとクロックを変更できるようになります。
- (Q1-4) 私のSL-xxxxでyyyyという不具合が起きるのですが。
- (A1-4) 具体的に教えていただければ考えます。
直せるかどうかは分かりません。
Q1-11も参照。
- (Q1-5) B500やC700にもなぜC750/C760/C860用ソースを使うのか。
B500/C700向けならばB500/C700用のソースのほうが良いのではないか。
- (A1-5) ライトバックキャッシュに対応したコードがC750/C760/C860用ソースにしか入っていないからです。
仮にB500/C700用のソースを使っても、ライトバックキャッシュ対応を行なえばC750/C760/C860用のソースと同等になってしまいますし、使用メモリ量が減ったりもしません。6000のソースもC860のソースより古いので、ぴろさんがC860のソースに6000の差分をポートしました。
- (Q1-6) C750/C760/C860/C3000にも使えるか。
- (A1-6) 用意しましたが、必ずしも動作確認をしているわけではありません。
- (Q1-7) バイナリやパッチの転載をしても良いか。
リンクを張っても良いか。
記事にして良いか。
- (A1-7) ご自由にどうぞ。
ソフトのライセンスはGPLです。
- (Q1-8) どのバージョンを使えば良いかわからない。
- (A1-8) 新しいほうが改良されているのでお勧めです。
- (Q1-9) カーネルが書き替わらない。
- (A1-9) ファイル名がzImageとなっているかお確かめ下さい。
書き込みが成功の場合は、Successと表示がでるはずです。
- (Q1-10) CCCRの値はどれが速いのか。
- (A1-10) C3000以外の場合、非常に大雑把に言うと、241 < 161 < 242 < 162 です。
ただし、161と242では、161のバス速度が242より速いため、使い方次第で逆転します(161のほうが良いかも)。
各論
- (Q2-1) タッチスクリーンが安定しない。
- (A2-1) 「echo 3230 > /dev/ts」を試してみて下さい。
3230は個体差により0〜5000の間で変えてみて下さい(ぴろさんとuchさんからの情報)。
v11g以降では負の値も設定可能です。
ぴろさんの
tscalibを使うと適切な値を簡単に見つけられそうです。
- (Q2-3) CCCRが変更できない。
- (A2-3) CCCRの変更は危険なので、バックアップを取ってから行なって下さい。
ターミナル(コンソール)にて、root権限にて、「echo xxx > /proc/cccr_change」です。
「echo xxx > /proc/cpu/registers/CCCR」ではありません。
- (Q2-4) 筆圧が感知されない。
- (A2-4) 「echo 1 > /proc/tspressure」としないと筆圧感知機能が有効になりません。
無効にするのは「echo 0 > /proc/tspressure」です。
- (Q2-6) USBストレージ機能がうまく動かない。USBストレージ機能利用後にUSBネットワークが動かない、再起動できなくなるなど不具合が起きる。
- (A2-6) usbd-storeageのパッチとUSBモジュールの双方をインストールしてください。
- v14xの場合: usbd-storageのパッチと非プリエンプティブカーネル用USBモジュール
- v13xの場合: usbd-storageのパッチとプリエンプティブカーネル用USBモジュール
- usbd-storageのパッチ(非プリエンプティブカーネル/プリエンプティブカーネル共用)
- 非プリエンプティブカーネル用USBモジュール(v14x) -- ぴろさん作(mppeモジュール含む)
その他
- (Q3-1) もっとスピードが上がる方法を見つけた。
- (A3-1) 教えて下さい。
- (Q3-2) これはすごい。
みんなに広めたい。
- (A3-2) お好きにどうぞ。
- (Q3-3) これはボロい。
みんなに使わないように言い広めようと思うが。
- (A3-3) お好きにどうぞ。
技術情報
PXA27x動作周波数
SL-C3000はPXA270を搭載。
Turbo-mode frequency = 13MHz * L * N
Run-mode frequency = 13MHz * L
System-bus frequency = 13MHz * L / B
B = 1 (when in fast-bus mode)
B = 2 (when not in fast-bus mode)
CCCR L N B Turbo-mode System-bus
2000210 16 2 1 416MHz 208MHz (C3000 default)
2000310 16 3 1 624MHz 208MHz
2000214 20 2 1 520MHz 260MHz
2000218 24 2 1 624MHz 312MHz
詳しくはIntel(R) PXA27x Processor Family Developer's Manualを参照のこと。
PXA25x動作周波数
SL-B500/C700はPXA250を搭載。
SL-C750/C760/C860/6000はPXA255を搭載。
Crystal Frequency = 3.6864MHz
Memory Frequency = Crystal Frequency * L
Run Mode Frequency = Memory Frequency * M
Turbo Mode Frequency = Run Mode Frequency * N
PXbus Frequency = Run Mode Frequency / 2
CCCR L M N Turbo-mode System-bus
241 27 2 2 398MHz 100MHz (B500/C700 default)
242 32 2 2 472MHz 118MHz
161 27 4 1 398MHz 199MHz (C750/C760/C860/6000 default)
162 32 4 1 472MHz 236MHz
163 36 4 1 531MHz 264MHz
詳しくはIntel(R) PXA255 Applications Processors Developer's Manualを参照のこと。
カーネルコンフィグレーション
カーネルソースには、SL-B500用=poodle-j、SL-C700用=corgi、SL-C750用=shepherd-j、SL-C760用=husky-j、SL-C860用=boxer-j、SL-6000用=tosa-j、SL-C3000用=spitz-jという名前のconfigが含まれています。
このファイルを元に、コンフィグレーションファイルを次のように修正しています。
機能早見表
記憶だけで書いてるので少し怪しい。
機能 |
B500 special kernel (v14x) |
C700 special kernel (v14x) |
C750/ C760/ C860 special kernel (v14x) |
6000 special kernel (v16x) |
C3000 special kernel (v17x) |
クロックアップ |
yes CCCR= 242 |
yes CCCR= 242 |
proc CCCR= 161 |
yes CCCR= 163 |
proc CCCR= 2000210 |
コア電圧可変 |
no |
no |
no |
no |
proc |
SIGSTOP問題対処 |
yes |
yes |
yes |
no |
yes |
コンソール日本語表示 |
yes |
yes |
yes |
no |
yes |
筆圧感知 |
proc |
proc |
proc |
not yet tosa-presure-wm97xx-2.4.19.diff |
proc |
タッチスクリーン書き込み |
yes |
yes |
yes |
no |
yes |
キーボード書き込み |
yes |
yes |
yes |
no |
yes |
ハードウェアローテーション
| no |
proc |
proc |
no |
no |
3ボタン同時押し |
proc |
proc |
proc |
no |
- |
LCD Bufferable |
no |
no |
no |
no |
no |
fbcon fix |
no |
yes |
yes |
no |
- |
WBキャッシュ
| yes |
yes |
- |
- |
- |
マウス3ボタンエミュレーション
| yes |
yes |
yes |
no |
no |
パワーキーサスペンド |
- |
proc |
proc |
- |
- |
ppp-mppe |
yes |
yes |
yes |
no |
- |
セキュリティパッチ |
yes |
yes |
yes |
yes |
yes |
preemptive kernel |
no |
no |
no |
no |
no |
lock break |
no |
no |
no |
no |
no |
FCSE |
yes |
yes |
- |
- |
- |
NO SHARP LOGO |
yes |
yes |
yes |
yes |
yes |
MILD SWAP |
yes |
yes |
yes |
yes |
yes |
FASTSYSCLK |
no |
proc |
proc |
no |
no |
Bluetooth最新パッチ |
yes |
yes |
yes |
yes |
yes |
山田哲靖
webmaster@tetsu.homelinux.org