HOME / FreeBSD / PCG-C1VJ

VAIO (PCG-C1VJ) でFreeBSD

対象のOSはFreeBSD 4.2-RELEASEとします。

FreeBSD 4.3-RELEASEについての情報を付加しました。 とくに4.3-RELEASEから変更がないところにはそのままです。

FreeBSD 5-current (2001-11あたりのcurrent) の情報を付加しました。

しばらくしたら、5-current中心の内容にアップデートしたいですね。

C1VJ以外のC1系のCrusoeマシンなら結構使い回せるかもしれません。

インストールとその周辺

インストール

まぁ、普通にインストールすればいいんですが、Windowsのパーティションを 残す場合にはfdisk画面でのディスクジオメトリをきちんとメモしておいたほうがよいでしょう。

インストールメディアはやっぱりPCカード経由のネットワークインストールが楽でしょうね。あとはMS-DOS領域からのインストールかな。

PCカードを認識させる

PCカードを認識させるにはIRQを11にしてI/Oアドレスを0xd4000にすればOKです。

/etc/rc.confにはこんな感じで設定すればOKです。

pccard_enable="YES"
pccardd_flabs=" -i 11"
pccard_mem="0xd4000"

インストールをPCカード経由で行う場合には、 インストーラに上の値を設定してやればうまくいきます。

FreeBSD4.3-Releaseで動いたカード。

XFree86 3.3.6

C1VJに搭載されているグラフィックチップはATI Rage Mobility M1です。残念ながら、FreeBSD 4.2-ReleaseでインストールされるXFree86 3.3.6のMach64ドライバではうまく表示できません。

Takaya KinjoさんのWebページにXFree86 3.3.6をC1VJで使うためのパッチ (XF86_Mach64_C1VJ.diff) とXF86Configが公開されているので、このパッチを当ててXサーバを再コンパイルして、上書きコピーします。

Xサーバのコンパイルは時間がかかるので、 コンパイル済バイナリを使う方が楽でしょう。

ダウンロード: XF86_Mach64コンパイル済バイナリ

このバイナリは4.3-RELEASEでも使えます。

ダウンロード: XF86Config

XFree86 4.0.3ではパッチ無しで動くみたいです。 これからはXFree86 4系ですかね。

XFree86 4.1.0

5-currentなあなたはXFree86も4系を使いましょう。

portsからXFree86 4.1.0を入れればそれでオッケー。

XF86ConfigもWebに転がっているのを持ってくりゃいいです。

ちなみに、私も拾って来たやつをちょっとだけ変えて使ってます。

内蔵CCDカメラ

captureのインストール

captureについては本家にports (ports/graphics/picturebook) が登場していますので、そちらを使ってください。この章は古い内容です (4.3-RELEASEまでは正常動作確認済)。

5-currentはportsからインストールしてそのまま使えました。

Andrew Tridgellさんが内蔵CCDカメラを使うためのソフトウェアを公開されています。ただし、Linux用なのでFreeBSDで動かすためにはメーリングリストbsd-nomadsに投稿された高橋さんの記事 ([bsd-nomads:14772]) に添付されているパッチを当てる必要があります。

また、このパッチを当ててもaviファイルがうまく作れないので、 このパッチ (picturebook_fbsd3.diff) をあてましょう。

パッチを当てたらmakeすればおしまい。 rootで適当なディレクトリにインストールしておきましょう。

captureの使い方

まずxhostしてからrootで使ってみます。 最初は画面に表示して見るコマンドから。

% xhost +
% su
Password:
# capture -s

静止画を取るには次のようにします。

# capture -o photo1.jpg

次に、動画を撮ってみましょう (次の例は5秒間のキャプチャを行っています)。

# capture -V 5 -o movie1.avi

キャプチャしたファイルを再生するにはxanim (/usr/ports/graphics/xanim) を使います。

サウンド

pcmデバイスを追加したカーネルを作成します。

# cd /usr/src/sys/i386/conf
# cp GENERIC C1VJ
# vi C1VJ
... ``device pcm'' という行をファイルの最後に追加する
# config C1VJ
# cd ../../compile/C1VJ
# make depend
# make install

リブートしてデバイスが認識されているのを確認しましょう。 dmesgを打って確認するとこんな感じ。

pcm0: <Yamaha DS-1E (YMF754)> mem 0xfc108000-0xfc10ffff irq 9 at device 9.0 on pci0

次にサウンドデバイスを作成します。

# cd /dev
# ./MAKEDEV snd0

あとは、xmmsとかmpg123でMP3ファイルでも再生してみましょう。

メモリスティック

4.3-RELEASEからこの章で紹介しているパッチが既に吸収されています。 したがって、パッチを当てずにmountできます。 mountの方法はこの章で紹介している方法と同じです。

インストール直後からメモリスティックのスロットは USB接続で認識されるのであっさり使えると思っていたのですが、 daドライバ (/usr/src/sys/cam/scsi/scsi_da.c) に寺本さんの作成した パッチ をあてる必要があります。このパッチは5-current用ですが、 4.2-Releaseでも同じ箇所にMSC-U01用の情報を追加してやればうまく動きました 。

当然ですが、5-currentでは何もしないで認識します。

パッチscsi_da.c.diff

パッチ後のscsi_da.cscsi_da.c

パッチを当てたらカーネルの再構築を行いリブートしましょう。

再起動後、いよいよメモリスティックをマウントしてみましょう。

dmesgしてメモリスティックがどう認識されているかチェックします。

da0 at umass-sim0 bus 0 target 0 lun 0
da0: < Sony MSC-U01 1.00> Removable Direct Access SCSI-0 device 
da0: 20KB/s transfers
da0: 15MB (31680 512 byte sectors: 2H 9S/T 80C)

ということで、da0で認識されているのがわかります。 デバイス名がわかればマウントは普通のmountの方法と同じです。

# camcontrol rescan 0
# mount -t msdos /dev/da0s1 /mnt

液晶バックライトとバッテリ消費量

ACアダプタが使える状況ではたいして気にならないのですが、 外出先などバッテリ駆動時は少しでも長く動作させたいと思うのが人情です。

Windows環境ならばCrusoeのLongRunやACPIなどが利用できるので、 そこそこ電池は持つようです (あんまりWindowsで使わないので、 人から聞いた情報ですが)。

FreeBSD 4.2ではACPIは利用できませんし、C1VJはAPMも持っていないそうです。 ということで、かなり悲しくなってしまうのですが、 先の内蔵CCDカメラを使うためのcaptureプログラムに、 液晶ディスプレイのバックライト輝度を変更するプログラム (setbrightness.c) と、バッテリ状態を取得するプログラム (vaiobat.c) が含まれています。

5-currentでportsからcaptureをインストールした場合は、すでに二つのコマン ドはインストール済です。

setbrightness.cとvaiobat.cのコンパイル

上で紹介したとおりcapture.tgzを展開してからパッチを当てます。

パッチは次のとおりです。中身はほとんど同じだったりします。

実際の作業イメージは次のとおりです。

% tar xvzf capture.tgz
% patch < setbrightness.diff
% patch < vaiobat.diff
% cd picturebook
% gcc -o setbrightness setbrightness.c
% gcc -o vaiobat vaiobat.c

コマンドの利用方法

vaiobatコマンドはそのまま実行すれば、電池の利用状況を報告してくれます。 vaiobatコマンドはrootでなければ実行できないので注意してください。 実行例を次に示します。

c1vj# ./vaiobat
Battery 1800/1800 100.00% AC BAT1 
B1RC 100
B1AB 1800
B1RT 0
B1VO 12517
B1DC 1800
B1LF 1800
B1DV 11100
B1DL 180
A1TP 12800
A1AT 1870
A1PT 19968
A1CT 23040
A2TP 0
A2AT 1792
A2PT 19968
A2CT 23040
c1vj# 

setbrightnessコマンドは0から255の間でバックライトの明るさを指定できます。 0が一番暗く、255が一番明るい状態になります。

たとえば、一番暗くするためには次のように実行します。

c1vj# ./setbrightness 0
currently fffb
c1vj#

一番明るくするためには次のように実行します。

c1vj# ./setbrightness 255
currently ff00
c1vj#

バックライトの輝度の設定は保存されないようです。 つまり、再起動するとリセットされてしまうので、 起動時にsetbrightnessを実行するように設定するか、 必要な時に手動で実行することになります。

バックライト輝度とバッテリ消費量の関係

この章は正確ではありませんし、信用しないでください。 もう少し詳細なデータをとったので、 そのデータに更新されるまではこのデータはとりあえず置いてあるものです (2001-05-14)。

setbrightnessコマンドとvaibatコマンドによってバックライトの輝度の変更と、 バッテリ情報の取得ができるようになりました。

そこで、輝度を最低にした場合と輝度を最高にした場合でバッテリの消費量が どの程度違うのか測定しました。

測定内容と条件

ACアダプタを接続し、バッテリがフル充電された状態でACアダプタを抜き、 10分経った時点でのバッテリ状態を調査した。

バックライトがバッテリに与える影響だけを見るため、 クライアントからの操作は一切行わない。

測定時には

が動作している状態である。また、いくつかのプロセス (kernel, cannaserver, moused, getty, pccardd, syslogなど) が動作している。

測定結果

測定結果は次のとおり。

輝度0の場合

バッテリ残量 使用率
実験前 1800 0%
10分後 1629 9.56%

輝度255の場合

バッテリ残量 使用率
実験前 1800 0%
10分後 1554 13.67%

バッテリの使用量から測定条件下でのバッテリ駆動時間が算出できる。

輝度駆動時間
0105分
25573分

したがって、バックライトの輝度を最低にすると、 30分以上長く駆動させることができる。

まとめ

測定回数は一回だけなのでデータとしては信憑性に欠けるのですが、 バックライトの輝度を変えるだけでこれだけ大きな差 (30分違うのは大きい) になるとは意外でした。 バッテリ駆動時にはバックライトの設定を変更すべきかもしれません。

ただし、これはあくまでも測定を目的とした条件下での結果です。 実際の使用時にはさらに多くのプログラムが動作するので、 駆動時間はさらに少なくなるといえるでしょう。

CrusoeのLongRun

服部さんがLongRunのドライバを公開されました (2001-4-7)。

http://home.att.ne.jp/delta/athlete/longrun/longrun.html

その後は順調に、ソースツリーに統合されFreeBSD4.4および 5-currentでは何もしなくてもすぐにLongRunが使えます。

4.4-Release, 5-currentではhw.crusoeというMIBが追加されています。 sysctlコマンドでLongRunのステータスを見ることができます。

ためしにsysctl hw.crusoeを実行すると次のようになります。

# sysctl hw.crusoe
hw.crusoe.longrun: 2
hw.crusoe.frequency: 400
hw.crusoe.voltage: 1400
hw.crusoe.percentage: 66

値を変更するにはsysctl -wを使って次のようにします。

# sysctl -w hw.crusoe.longrun=3

FreeBSD 4.3以前の人は用意されてportsを使いましょう。

sysctl版とioctl版がありますが、 ソースツリーにマージされたのがsysctl版なので、 そちらを使うほうがいいかもしれません。

bsd-nomadsメーリングリストを漁ると、 GUIでLongRunの状態を表示するなどの周辺ツールの話題が盛り上がりまくってます。

また、、C1VJではWindowsで設定したLongRunの設定情報がFreeBSD でも引き継がれているようです。

ただし、それはWindowsから再起動をかけたときだけで、 電源断の状態からWindowsを起動せずにFreeBSDを直接起動した場合には、 パフォーマンスモードで動作しているようです。

ACPI

FreeBSD 4.Xでは残念ですが何も使えません。

5-currentではACPIサポートが進化を遂げています。 でも、C1VJではサスペンドもレジュームもできないみたいです。

しかし、蓋を閉じると液晶のバックライトが消えるようになりました!!

acpiconfでACPIの状態をいじれますが、 いきなり電源が切れたりするのであまりやらないほうが良いでしょう (今後に期待!)。

おまけ

dmesgの結果 (古いので参考になりません)

dmesg (4.2-Release)

dmesg (5-current)


HOME / FreeBSD / PCG-C1VJ

$Lastupdate: Mon Mar 18 02:29:50 2002 $