VAIO U3 で Linux

現状

linux 2.6.11 + debian sarge 環境で以下の動作が実現できています.

ACPI

cat /proc/acpi/sleep を実行すると,S0, S3, S4, S5 がリストアップさ れます. とりあえず,echo -n 3 >/proc/acpi/sleep を実行すると,サスペンドに移行 できるようです.

ボタン周り

sonypi ドライバでボタンのイベントは認識できています. 誤認識は無いようです.

jdmouse-2.0.0

拙作のプログラム.これを利用して

という感じにセットアップできています.

古いパッチ

カーネル 2.4.20 対応のパッチをこしらえてみました. パッチの概略は以下の通り.

sonypi ドライバ

linux-2.5.49 の最新版に更新
これにより,
だけど,ThumbPhase ボタン・ZOOM IN ボタンのイベントテーブルのエントリが間違っているので,これを直してあります
パッチを linus 版カーネルに取り込む際にどこかで取り違えられたらしいです
メモリースティックの挿抜イベントを認識します
BACK ボタンのリリース時に余計なイベントを発生しないようになります
こいつはかなりど汚い変更なので,本家カーネルには(このままの形では)取り込まれないでしょう
ACPI を有効にしてもコンパイルが通るようにしてあります

USB ストレージ

U3 内蔵のメモリースティックデバイスのエントリを追加します.

参考ページ

VAIO-U1でLinuxインストール/設定メモ
結構参考になりました. ALI の IDE インターフェースの仕様のために Linux が起動できない,というあたりの回避方法は U3 でも有効です.

lspci

00:00.0 Host bridge: Transmeta Corporation LongRun Northbridge (rev 03)
00:00.1 RAM memory: Transmeta Corporation SDRAM controller
00:00.2 RAM memory: Transmeta Corporation BIOS scratchpad
00:06.0 Multimedia audio controller: Acer Laboratories Inc. [ALi] M5451 PCI Sou
th Bridge Audio (rev 02)
00:07.0 ISA bridge: Acer Laboratories Inc. [ALi] M1533 PCI to ISA Bridge [Aladd
in IV]
00:09.0 FireWire (IEEE 1394): Texas Instruments: Unknown device 8023
00:0b.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139 (rev 10)
00:0c.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M6 LY
00:0f.0 USB Controller: Acer Laboratories Inc. [ALi] M5237 USB (rev 03)
00:10.0 IDE interface: Acer Laboratories Inc. [ALi] M5229 IDE (rev c4)
00:11.0 Non-VGA unclassified device: Acer Laboratories Inc. [ALi] M7101 PMU
00:12.0 CardBus bridge: Ricoh Co Ltd RL5c475 (rev 80)
00:14.0 USB Controller: Acer Laboratories Inc. [ALi] M5237 USB (rev 03)

メモリースティック

が,素のカーネルでは認識しないのである. VAIO ノートシリーズのメモリースティックスロットは,USB バス上のデバイスとして接続されています.

が,起動メッセージを見ると,「コントロール転送がタイムアウト」とか,いやんなメッセージが. これって,USB バス上のデバイスとしても動作してないってことである. cat /proc/bus/usb/device してみても,エントリが出てこない.

しかし,起動直後にちらりとベンダ ID,プロダクト ID が出てくるので,「初期化でしくじっている」感じである. というわけで,linux/drivers/usb/storage/unusual_devs.h に以下のエントリを足してやったら,うまく動きました.

UNUSUAL_DEV(  0x054c, 0x0069, 0x0000, 0x9999,
		"Sony",
		"Memorystick MSC-U03",
		US_SC_UFI, US_PR_CB, NULL,
		US_FL_SINGLE_LUN | US_FL_START_STOP ),

あと,メモリースティックの抜き差しを後述の sonypi ドライバで検出することができました. これについてもパッチを送ってみたので,そのうち 2.5 系カーネルのドライバの方に反映されるかもしれません.

ジョグダイヤル・BACK ボタン・ThumbPhrase ボタン・ZOOM IN ボタン

これらは sonypi ドライバで使用することができます. linux-2.5.49 にある drivers/char/sonypi.[ch], include/linux/sonypi.h を 2.4 系のカーネルにそのまま持ってきて,使用することができます.

ただ,このドライバだけでは「イベントを取得する」ことしかできないので,X 上でマウスホイールとして使用するには S-JOG とか jdmouse とかが必要です. かっこ良さでは S-JOG,改造のしやすさでは jdmouse のほうがおすすめです.

sonypi ドライバですが,(おそらく)2.4.21 カーネルからはイベントの取り扱いが一部変わります. 2.5 系カーネルには既に新しい版のドライバが入っているので,「新しもん好き」の人はそちらを使いましょう (^^;;

API も変わるので,jdmouse のほうもいじってやらないとなぁ.

Fn + ファンクションキー

なぜか ACPI サポートを入れないと使えなかったりします. ホントは sonypi ドライバ自体,ACPI のあたりを直叩きしてるので,よろしくないんだけどなぁ,これ.

「スタンバイ」ボタン

SONYPI_EVENT_FNKEY_ESC (11番) のイベントを発生します. つまり,Fn + ESC と一緒です. そういえば,Windows でも Fn + ESC でサスペンドしてたなぁ.

APM と ACPI

がうまく動かない. サスペンドもハイバネーションもうまく動かない. APM のほうは,AC ラインやバッテリ残量も取得することができない. ただ,ソフトウェアで電源を落すことができるので,まるっきり動いてないわけではないらしい.

素のカーネル・The ACPI4Linux projectのパッチを両方試してみたんだけど,うまくいかないな. ううむ.

VAIO-U1でLinuxインストール/設定メモでは,swsusp というのを適用してるそうだが,ここの記述を読む限り,かなりキワモノのようなので,手は出したくない.

追記) ACPI4Linux のパッチ当てた方のソースを眺めていたら

acpi_status
acpi_suspend (
        u32                     state)
{
        acpi_status status;

        /* only support S1 and S5 on kernel 2.4 */
        if (state != ACPI_STATE_S1 && state != ACPI_STATE_S5)
                return AE_ERROR;
なんて部分を発見. 2.4 カーネルでは S1(節電)と S5(ソフトパワーオフ)のみサポート,ということらしい. やはり 2.5 系のおっかけをやらなくてはならんのかなぁ.
Linux のお部屋のもくじ
いまいくんのページのもくじ
2005 年 3 月 24 日更新
imai@jr0bak.homelinux.net