The K-Zone: Running Linux on the Sony Picturebook PCG-C1VFK
Overview
I needed an inexpensive and, above all, cheap notebook computer for
note-taking, playing music, and occasional Web surfing, and I came
across this Sony Picturebook on eBay. It is an impressively
small unit -- just a bit bigger than two DVD cases stacked
together. This compactness has its disadvantages, as you might
imagine, but there are very few PC-type computers on the
market that approach it for portability. Even the units in the new Sony TR
range -- which are about as small as notebooks come these days --
are bigger.
The Picturebook was about four years old when I got it. It was supplied
with unlicenced Windows XP left behind by the previous owner. I'm not
a huge fan of Windows in any of its varieties, but XP is particularly
inappropriate on a machine like this. It has a maximum 112Mb RAM, and
a 600 MHz CPU. Windows applications of any sophistication are
completely unusable. Moreover, the odd-shaped screen (letterbox format,
1024x480 pixels) was largely consumed by the huge menus and window
decorations that Windows XP uses. To be fair, large sophisticated
Linux applications like OpenOffice do quite badly on this notebook,
but there simple alternatives that work perfectly well. I don't think
I'd want to run Gnome on it either, but there are simpler user
interface for Linux which work very well. I am using the
ICE window manager, which offers a reasonable compromise between
memory consumption and flexibility.
Like most Sony computers, the Picture has no useable APM support.
You must use an ACPI-enabled kernel on this machine, or you'll
have no power management. I never did get suspend-to-RAM working,
but I did get suspend-to-disk in kernel 2.6.15. At the time of writing
that's more recent than any shrink-wrapped Linux distribution uses, even
Fedora Core 4 (the most up-to-date distribution available at the time
of installation). So you're going to have to look forward to updating
the kernel, in addition to all the usual Linux installation stuff.
The unit
The PCG-C1VFK is a very tiny notebook, based on the Transmeta Crusoe
600 MHz CPU. The CPU is fully x86 compatible, but has some enhancements that
can be used by a suitably aware kernel. If you're compiling a kernel
yourself, you can select the Crusoe as a CPU option. The graphics system is
based on that old favourite, ATI's Rage Mobility, which is now well
supported by Linux X implementations (include XVideo, which is vital
if you want to play movies). Audio support is provided by a Yamaha YMF754
chip,
supported both by OSS and ALSA. There is one CardBus PCMCIA slot, and
one USB (1.1) port. It has a built-in bluetooth transceiver, but I've
not tried it. Nor have I tried the built-in FireWire port, or the
TV out, or the external VGA output (because it requires a special
cable that I didn't get with the unit). There is a 12Gb hard drive,
and a slot for Sony memory sticks, none of which I have. An
interesting feature is the small jogdial, next to the power connector
on the right of the keyboard. This can be made to act in the
same way as the scroll wheel on a mouse (but I prefer to use a
real mouse).
So far as I can tell, the Picturebook has no built-in ethernet
port, so you'll need to use a firewire, PCMCIA, or USB ethernet
adapter. In a way, PCMCIA is the least useful option, because
there's only one slot, and you might need it for something else
(e.g., a CDROM drive). However, I have a PCMCIA wireless
ethernet adapter, and I don't have anything for USB or
FireWire, so I'm sticking with what I've got.
A potentially interesting feature of the Picturebook is a built-in
MotionEye camera. It sits in the lid, and normally points at the operator.
Presumably it's intended for video-conferencing, although it
can be rotated aware from the operator if desired. I don't have
much use for such a feature, and haven't spent any time playing
with it beyond what was necessary to make it work.
Linux installation
Installation of RedHat Fedora Core 4 from CDROM
is straightforward, once you've
figured out how to boot from the PCMCIA CDROM drive. The tricky part is
preventing the Linux installer getting in the way of the BIOS IDE
emulation for this drive -- it works perfectly well as an IDE
device, but if you want to treat it as a PCMCIA device, you'll
have to boot from a floppy containing PCMCIA drivers, which is
a drag. In addition, you'll need to install in console
(non-graphical) mode, because the Fedora installer can't figure
out the screen resolution, and draws the graphical display too
large to fit. There may be some clever way around this, but
I couldn't find one.
So, after a bit of digging around, the magic command line to
give to the installer boot prompt turns out to be:
:linux ide2=0x180 nopcmcia text
Because I was planning to use a PCMCIA wireless network adapter,
and because I couldn't plug it in during installation (because
there's only one PCMCIA slot and it had the CDROM drive connected
to it), no network configuration got done during installation.
It's not a big deal to run system-config-network
after installation, which is all I had to do to be up and
running. My wireless card is an elderly Hermes/Orinoco, which was
one of the first wireless devices to get Linux support, so it just
worked.
Now the tricky bit. If you install Fedora Core 4, you'll get an
ACPI-aware kernel by default, which means you'll get some sort
of power management. The unit won't blow the fan at full speed or
overheat, most likely. Mine runs at about 40 Celcius under
low load, rising to about 55 celcius under full load, and the
fan whirrs gently, but not obtrusively,
most of the time. But the 2.6.11 kernel supplied with FC4 just doesn't
cut the mustard with suspend-to-disk (or suspend-to-RAM, but I've never got
suspend-to-RAM working with any kernel). You need the machine to be
able to sleep, because a full boot takes ages (minutes).
By upgrading to 2.6.15,
I was able to get suspend-to-disk working. You'll need to compile
this option in (it's not enabled by default), and of course you'll
need to enable modules for all the hardware you plan to run. I just
enabled everything as modules, in the hope that the autoloader would
sort it out at runtime, which has mostly proven to be the case.
The basic process for doing a suspend to disk is to
echo disk >/sys/power/state
However, you're at the mercy of non-suspendable hardware and
drivers if you do that. You need to script the unloading and
reloading of all such drivers (which means, in practice,
most of them), as well as initiating the suspend. Alternatively,
there is a utility called hibernate (Google
is your friend) which automates this, but might still need a bit
of hand-tweaking for troublesome drivers.
I've found that a suspend and a resume each take about 30 seconds,
which surely beats the five minutes or so it takes to boot normally.
A suspend to RAM takes two seconds, but it doesn't wake up again
every other time, so that's not very useful. Watch out -- when
you wake up after s suspend, the screen will blank automatically
because the kernel thinks enough time has elapsed to invoke
the screensaver. So it looks like it's crashed. Of course, it might
have crashed, but don't assume it has just because the screen doesn't
come back on.
The Fedora installer correctly identifies the video hardware, and
configures X to use the ati driver. It does not,
however, correctly probe the screen dimensions, and defaults to
640x480. This does fit the screen, but the aspect ratio is
distorted. To use the proper 1024x480 screen mode, you'll need
to add the following Modeline to the Monitor section
of xorg.conf.
ModeLine "1024x480" 65.0 1024 1032 1176 1344 480 488 494 563 -hsync -vsync
In short, once you've figured out the correct installer boot paramters
to get the PCMCIA CDROM to work, installation is by the book, except
for a trivial tweak to the X configuration, and the less trivial
installation of a more recent kernel.
Things that work
The section describe the hardware I've had working, and what I had
to do (if anything) to make it work, and which I didn't necessarily
expect to be straightforward to get working. Please bear in mind I'm using
Fedora Core 4 -- anything less recent might be less successful.
Video
The letterbox screen shape is ideal for playing widescreen
movies. I've installed the Fedora RPM of Xine (and all its
(considerable) dependencies), and it plays video surprisingly
well (surprising, that is, for a 600 MHz CPU with no decode
acceleration). It does lose the plot a bit with high-bandwidth
or high-resolution movies, but since I generally rip my DVDs to
fit the screen of my Archos portable media play (see elswhere on
this site), that's not too much of a problem for me. Recent Xine
versions cope reasonably well with under-resourced machines -- you
get some framedropping, but it generally keeps up.
So long as you've got an X video driver that supports the
XVideo extension, Xine (and other decent players like
Ogle and Mplayer) will use it to scale to fit the full screen
without loading the CPU. Without XVideo, the best you can
hope for is playback at the encoded size, because this CPU
will never be able to scale video in realtime.
PCMCIA
I've only so far tried my Buffalo wireless ethernet card, and
unbranded multi-format memory card reader, and both work
fine. The hotplug system in Fedora Core 4 is quite good at
enabling and disabling drivers as cards are inserted and
removed, but it doesn't hurt to eject cards at the software
level if you can.
Jogdial
If you load the sonypi driver, the jogdial generates
scroll events which many X applications respond to. For example,
Mozilla scrolls up or down three lines for each click of the wheel.
xterm scolls the screen buffer back, in the same way
as clicking the mouse of the scroll bar. This is a useful feature
if you don't have an external mouse.
Power management and battery life
By default, the Picturebook screen runs on full brightness, all
the time, unless something is done in software to change this.
The screen is a major consumer of battery capacity, and you don't
necessarily need full brightness. There is a utility called
spicctrl which works in conjuction with the
sonypi kernel driver to adjust the screen brightness
(among other things). If you wanted to be really clever, you could
sample the ambient brightness using the built-in camera, and adjust
yhe brightness on the fly. But that's a job for another day.
Canon IXUS 700 camera
The version of gphoto2 supplied with Fedora Core
4 supported my IXUS 700 over USB immediately, although I had
to tell gphoto2 that it was an IXUS 500 (official support for
the 700 is very recent).
Built-in MotionEye camera
The kernel driver meye.ko makes this device a
Video4Linux-compatible video source. You can, in principle, capture
images in any format that you have a Video4Linux (V4L) capture utility
for. The meye is compatible with V4L version 2, but most
V4L applications are still using version 1. You can make the meye
driver conform to version 1, by loading it with the module option
forcev4l1=1. I've got reasonable results loading the
module like this:
modprobe meye gbuffers=32 video_nr=0 forcev4l1=1
The meye driver has a dependency on sonypi,
which must be loaded with the option camera=1 to enable
the camera. If you're using auto-loading, you'll need to modify your
modprobe.conf or equivalent to ensure that this option
gets appended at load time. I've captured stills and video successfully
at 320x240 resolution; I don't know whether the hardware and the driver
support a higher resolution that this.
The only capture utility I've tried is xawtv, which
works fine when invoked as:
xawtv -c /dev/video0 -geometry 320x240
Software that works
This is the software I'm currently running on the Picturebook.
GIMP v2 -- not blazingly fast, but perfectly useable
Thunderbird and Firefox -- Some versions of these require
libstd++.so.5, while Fedora Core 4 uses libstdc++.so.6. A compatibility module for the earlier version is available from the
RedHat web sit.
RealPlayer 10 -- ditto
xine -- so long as you've got the XVideo extension working under
XFree86/Xorg, xine should play in full screen mode with no increased
CPU load
JPilot -- synchronization and PIM utility for Palm handheld
devices. I use this to manage and syncrhonize data with my
Treo 600 cellphone.
ICE window manager -- a simple X window manager and program
manager. Hugely smaller and faster to load the Gnome and all its
little minions, but way more functional than old-fashioned stuff
like twn. This can be configured to use very little space
(a few pixels) for window decorations, which is crucial when the
display is only 480 pixels high
xpdf and acroread -- PDF viewers. xpdf loads much faster than
acroread, but doesn't handle all PDF formats as well
xmms -- Fedora Core 4 doesn't have an XMMS plug-in for
MP3 format, but if you Google for the xmms-mp3 RPM,
you should be able to rectify that fairly quickly.
jpilot and pilot-link -- I could not get the Fedora versions of
these to work properly, so in the end I went back to the versions I used
with RedHat 9 and these worked fine
Not tested yet
The following may work, but I can't comment one way or the other
at this stage because I haven't tried them.
- Bluetooth
- Firewire
- Memory stick reader
- External VGA
- TV out
©1994-2006 Kevin Boone, all rights reserved