Please note that I do not recommend buying Sony laptop hardware. This page is provided as an aid to people who already own C1 machines. If you would like me to provide technical support for your laptop, or to advise on buying new hardware, please send me an email to ask about my availability and charges.
The PCG-C1VE is a tiny Sony laptop. Points of interest include its Crusoe CPU and the built-in camera. This page is based on my experiences in running Debian GNU/Linux on my machine, but if you want to use any free operating system on a Sony C1 you're likely to find at least some parts helpful. You may also find it useful to have a look at Steve Barr's C1VN pages.
(The screenshots below have been scaled to half their original width and height.)
The C1VE uses the Transmeta Crusoe CPU; part of the main memory is used as a cache for translated instructions. There is 128 MB RAM in total; free shows 110812 bytes (108 MB) available to Linux.
The Crusoe is x86-compatible, but if you compile your own kernel you should choose the specific Crusoe CPU option for best results.
A tool is available to control the LongRun performance level settings of the Crusoe. (This tool is provided in the longrun Debian package.)
longrun 0.9 (2001-02-14) usage: longrun [-c device] [-m device] [-hlpv] [-f flag] [-s low high] -c device set CPUID device -m device set MSR device -h print this help -l list LongRun information about available performance levels -p print current LongRun settings and status -v be more verbose -f [flag] set a LongRun mode flag -s low high set current LongRun performance window (0 to 100) supported flags: economy set economy mode (turn off performance mode) performance set performance mode (turn off economy mode)
BIOS-provided physical RAM map: BIOS-e820: 0000000000000000 - 000000000009b800 (usable) BIOS-e820: 000000000009b800 - 00000000000a0000 (reserved) BIOS-e820: 00000000000e6400 - 0000000000100000 (reserved) BIOS-e820: 0000000000100000 - 0000000006ff0000 (usable) BIOS-e820: 0000000006ff0000 - 0000000006fff800 (ACPI data) BIOS-e820: 0000000006fff800 - 0000000007000000 (ACPI NVS) BIOS-e820: 00000000fff80000 - 0000000100000000 (reserved) Scan SMP from c0000000 for 1024 bytes. Scan SMP from c009fc00 for 1024 bytes. Scan SMP from c00f0000 for 65536 bytes. Scan SMP from c009b800 for 4096 bytes. On node 0 totalpages: 28656 zone(0): 4096 pages. zone(1): 24560 pages. zone(2): 0 pages. mapped APIC to ffffe000 (011dd000) Initializing CPU#0 Detected 595.517 MHz processor. Console: colour VGA+ 80x25 Calibrating delay loop... 1163.26 BogoMIPS Memory: 110632k/114624k available (937k kernel code, 3604k reserved, 354k data, 180k init, 0k highmem) Dentry-cache hash table entries: 16384 (order: 5, 131072 bytes) Inode-cache hash table entries: 8192 (order: 4, 65536 bytes) Buffer-cache hash table entries: 4096 (order: 2, 16384 bytes) Page-cache hash table entries: 32768 (order: 5, 131072 bytes) CPU: Before vendor init, caps: 0084803f 0081813f 00000006, vendor = 7 CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (32 bytes/line) CPU: L2 Cache: 512K (128 bytes/line) CPU: Processor revision 18.104.22.168, 600 MHz CPU: Code Morphing Software revision 4.1.4-7-51 CPU: 20000805 23:30 official release 4.1.4#2 CPU: After vendor init, caps: 0084813f 0081813f 00000006 00000000 CPU serial number disabled. CPU: After generic, caps: 0080813f 0081813f 00000006 00000000 CPU: Common caps: 0080813f 0081813f 00000006 00000000 CPU: Transmeta(tm) Crusoe(tm) Processor TM5600 stepping 03 Checking 'hlt' instruction... OK.
(Entire dmesg output)
The graphics card is reported as an "ATI Technologies Inc 3D Rage P/M Mobility".
A patch is available against kernel 2.4.26 to make the Linux console use the full width of the screen:
For proper X support, use the following modeline in the Monitor section of your configuration file:
ModeLine "1024x480" 65.00 1024 1032 1176 1344 480 488 494 563 -hsync -vsync
(I previously found and used a different version of this modeline, which gave a blue line down one side of screen. This modeline makes the whole screen visible.)
A tool is available among Andrew Tridgell's picturebook software to control the LCD brightness setting. (This software is in the picturebook Debian package.)
Use setbrightness [0-254] to control the brightness setting - e.g. setbrightness 254 to set maximum brightness.
It is now possible to activate the TV-out socket (S-Video) under Linux, though the internal LCD cannot yet be used at the same time. Lennart Poettering's atitvout program allows switching between the LCD, TV-out and monitor-out.
Download the latest version, unpack it ('tar zxvf atitvout-0.2.tar.gz') and compile (change into the 'atitvout' directory and 'make'). You may also want to 'make install' (as root) to put a copy of the atitvout executable in /usr/local/sbin/.
Before using TV-out, I added this modeline to my X configuration:
ModeLine "640x480" 50.00 640 656 752 832 480 481 484 509 -hsync -vsync
To allow this modeline to be used I also had to change my Display configuration to read, for example:
SubSection "Display" Depth 24 Modes "1024x480" "640x480" EndSubSection
I could now change between 1024x480 and 640x480 while X was running. (I use a GNOME applet to do this, available in the gvid Debian package. Assuming you leave your normal display mode configured, when you switch down into the smaller resolution you'll still have a 'virtual desktop' of the larger size - move the mouse to the edge of the visible screen to scroll around.)
After connecting the computer to a television screen with an S-Video cable, you can use these commands, as root, to redirect the display:
atitvout pal [or, if appropriate, 'atitvout ntsc']
Use 'atitvout l' to put the display back on the LCD.
Similarly, 'atitvout c' should let you use an external computer monitor. (I've only tried with a television so far; to use an external monitor you'll first need to configure a display mode appropriate for that device in the same way as for the television.)
Apparently the TV-out function can also be started up by the kernel's ATI framebuffer driver if an appropriate video mode is chosen. Better ATI support is being developed by the GATOS project. (Some GATOS software is available in the gatos Debian package.)
Aino de Vries reports that it's now possible to get OpenGL acceleration working: see http://www.retinalburn.net/linux/index.html for more information. (I haven't yet had time to test this myself.)
(--) ATI(0): ATI 3D Rage Mobility graphics controller detected. (--) ATI(0): Chip type 4C52 "LR", version 4, foundry TSMC, class 0, revision 0x01. (--) ATI(0): PCI bus interface detected; block I/O base is 0x1400. (--) ATI(0): ATI Mach64 adapter detected. (--) ATI(0): Internal RAMDAC (subtype 1) detected. (==) ATI(0): RGB weight 888 (==) ATI(0): Default visual is TrueColor (==) ATI(0): Using gamma correction (1.0, 1.0, 1.0) (II) ATI(0): Using Mach64 accelerator CRTC. (--) ATI(0): 1024x480 panel (ID 1) detected. (--) ATI(0): Panel model Sharp. (--) ATI(0): Panel clock is 42.406 MHz. (II) ATI(0): Using digital flat panel interface. (II) ATI(0): Using 8 MB linear aperture at 0xFD000000. (II) ATI(0): Using Block 0 MMIO aperture at 0xFC105400. (II) ATI(0): Using Block 1 MMIO aperture at 0xFC105000. (II) ATI(0): MMIO write caching enabled. (--) ATI(0): 8192 kB of SDRAM (1:1) detected. (WW) ATI(0): Cannot shadow an accelerated frame buffer. (--) ATI(0): Internal programmable clock generator detected. (--) ATI(0): Reference clock 29.500 MHz. (II) ATI(0): Maximum clock: 230.00 MHz (--) ATI(0): Virtual size is 1024x480 (pitch 1024) (**) ATI(0): Mode "1024x480": 42.4 MHz, 31.6 kHz, 60.8 Hz (==) ATI(0): DPI set to (75, 75)(entire XFree86.0.log)
Patches are available for 2.4.5 kernels to support the Sony Programmable I/O Control Device. As of 9 July 2001, these drivers are not in the main kernel, but are in the -ac series.
(See, for example, this page for instructions about how to apply kernel patches.)
The driver provided in the patch may be compiled as a module, sonypi.
Compile the sonypid daemon, and set it to run in the background when you log into X (e.g. add 'sonypid &' to your .xsession, or use the GNOME or KDE session-management utilities).
To make the jogdial act as a mousewheel (with sonypid), you will need to configure XFree86 to support five-button mice.
Before compilation I made this change to the version I had downloaded:
128c128 < execlp("xterm", "xterm", 0); --- > execlp("capture-button", "capture-button", 0);
This makes the capture button run the executable capture-button from your path.
sonypi: Sony Programmable I/O Controller Driver v1.1. sonypi: enabled at irq=11, port1=0x10c0, port2=0x10c4 sonypi: device allocated minor is 63
(See also the section on using the capture button and jogdial.)
Patches are available for 2.4.5 kernels to support the Motion Eye camera. As of 9 July 2001, these drivers are not in the main kernel, but are in the -ac series.
The driver provided in this patch may be compiled as a module, meye.
Once the driver is loaded, you can use xawtv or any other Video4Linux-compatible viewer/capture program.
The motioneye program is available from the same site - it gives support for certain camera features not accessible through the standard Video4Linux interfaces.
Motion Eye Camera Utility version 1.0, June 6, 2001 Usage: ./motioneye [COMMAND] [OPTION]... Commands: -d, --display Display camera capture -p, --ppm=FILE Get camera snapshot (ppm format) -j, --jpg=FILE Get camera snapshot (jpg format) -m, --mjpeg=FILE Get mjpeg video Options: -a, --agc=NUM Camera AGC (0-63) (default 48) -b, --brightness=NUM Camera brightness (0-63) (default 32) -c, --colour=NUM Camera colour (0-63) (default 32) -C, --contrast=NUM Camera contrast (0-63) (default 32) -D, --device=FILE Video device to use (default /dev/video0) -f, --framerate=NUM Framerate (0=every frame, 2=every 2 frames) (0-31) (default 0) -h, --hue=NUM Camera hue (0-63) (default 32) -P, --picture=NUM Camera picture (0-63) (default 0) -q, --quality=NUM JPEG quality (1-10) (default 7) -s, --subsample Subsample the image -S, --sharpness=NUM Camera sharpness (0-63) (default 32) -t, --time=NUM Number of seconds to capture (default 10)
To make the capture button automatically take a snapshot/launch the image capture program if not already running, set up sonypid as above, and create an executable capture-button like this:
#!/bin/sh set -e TEMP=`ps aux | grep "xawtv -geom" | grep -v grep` if [ "$TEMP" = "" ]; then exec xawtv -geometry 320x240 -o ~/snapshot else exec xawtv-remote snap jpeg 640x480 fi
A (full) press of the button will launch xawtv; while xawtv is running, subsequent presses will save snapshots to your home directory, with names beginning snapshot-. (A more complex script could make holding the button save out an MPEG video.)
Linux video capture interface: v1.00 meye: using 2 buffers with 600k (1200k total) for capture PCI: Enabling device 00:0b.0 (0010 -> 0012) PCI: Found IRQ 9 for device 00:0b.0 PCI: The same IRQ used for device 00:0c.0 meye: Motion Eye Camera Driver v1.0. meye: mchip KL5A72002 rev. 1, base fc104800, irq 9
The internal memory slot functions by SCSI commands sent over a USB interface.
A very approximate measurement gave a transfer rate of about 0.25 MB/s.
Compile in SCSI disk support (available as the sd_mod module), USB mass storage support (available as the usb-storage module).
An inserted memory stick should appear as a DOS-formatted SCSI disk - it can then be mounted - e.g. mount /dev/scd0 /mnt/memorystick
I added this line to my autofs /etc/auto.misc configuration file, so that on my system looking at /var/autofs/misc/memorystick automatically mounts in the disk, and it is automatically unmounted after a period of inactivity.
memorystick -fstype=auto :/dev/scsi/host0/bus0/target0/lun0/part1
SCSI subsystem driver Revision: 1.00 Initializing USB Mass Storage driver... usb.c: registered new driver usb-storage scsi0 : SCSI emulation for USB Mass Storage devices Vendor: Sony Model: MSC-U01N Rev: 1.00 Type: Direct-Access ANSI SCSI revision: 02 WARNING: USB Mass Storage data integrity not assured USB Mass Storage device found at 2 USB Mass Storage support registered. Detected scsi removable disk sda at scsi0, channel 0, id 0, lun 0 SCSI device sda: 126848 512-byte hdwr sectors (65 MB) sda: Write Protect is off /dev/scsi/host0/bus0/target0/lun0: p1
The sound card is reported as a "Yamaha Corporation YMF-754".
Use the kernel's YMFPCI driver.
(I had problems at first with a loud screech when the sound system was enabled - compiling the driver directly into the kernel made the problem much rarer. I have not now experienced the problem for a while, and it may have been properly solved.)
Jul 6 11:47:47 moray kernel: PCI: Enabling device 00:09.0 (0006 -> 0007) Jul 6 11:47:47 moray kernel: PCI: Assigned IRQ 9 for device 00:09.0 Jul 6 11:47:47 moray kernel: ymfpci: YMF754 at 0xfc108000 IRQ 9 Jul 6 11:47:47 moray kernel: ac97_codec: AC97 Audio codec, id: 0x414b:0x4d02 (Asahi Kasei AK4543) Jul 6 11:47:47 moray kernel: YM3812 and OPL-3 driver Copyright (C) by Hannu Savolainen, Rob Hooft 1993-1996
The USB controller is reported as "USB Controller: Intel Corporation 82371AB PIIX4 USB (rev 01)".
I have successfully used a USB (OV511-based) webcam.
usb.c: registered new driver usbdevfs usb.c: registered new driver hub PCI: Found IRQ 9 for device 00:07.2 PCI: The same IRQ used for device 00:08.0 uhci.c: USB UHCI at I/O 0x1020, IRQ 9 usb.c: new USB bus registered, assigned bus number 1 hub.c: USB hub found hub.c: 2 ports detected uhci.c: Linus Torvalds, Johannes Erdfelt, Randy Dunlap, Georg Acher, Deti Fliegl, Thomas Sailer, Roman Weissgaerber uhci.c: USB Universal Host Controller Interface driver
The IEEE1394 controller is reported as "FireWire (IEEE 1394): Texas Instruments: Unknown device 8021 (rev 02)".
(untested by author)
You can compile the ieee1394, ohci1394, pcilynx, raw1394, video1394 kernel modules.
You might want to look at the dvgrab program. (Available in the dvgrab Debian package.)
raw1394: /dev/raw1394 device initialized ieee1394: registered ohci1394 driver, initializing now ohci1394: looking for Ohci1394 cards PCI: Enabling device 00:08.0 (0010 -> 0012) PCI: Found IRQ 9 for device 00:08.0 PCI: The same IRQ used for device 00:07.2 ohci1394_0: remapped memory spaces reg 0xc7db2000 ohci1394_0: allocated interrupt 9 ohci1394_0: soft reset finished ohci1394_0: max packet size = 2048 bytes ohci1394_0: 4 iso receive contexts available ohci1394_0: 8 iso transmit contexts available ohci1394_0: Receive DMA ctx=0 initialized ohci1394_0: Receive DMA ctx=1 initialized ohci1394_0: AT dma ctx=0 initialized ohci1394_0: AT dma ctx=1 initialized ohci1394_0: Receive DMA ctx=2 initialized ohci1394_0: resetting bus on request ohci1394_0: SelfID process finished (phyid 0, root) ohci1394_0: selfid packet 0x807f8052 rcvd ieee1394: including selfid 0x52807f80 ohci1394_0: This node self-id is 0x807f8052 ohci1394_0: calling self-id complete ohci1394_0: Got phy packet ctx=0 ... discarded ieee1394: detected 1 ohci1394 adapter ieee1394: registered pcilynx driver, initializing now video1394: initialized with 1 ohci cards
I use a PCMCIA WaveLan (Orinoco) wireless networking card, and a modem card when I'm away from home.
Apparently the Cardbus modem card supplied with the machine in the UK is a Lucent software modem (sometimes known as a 'winmodem'). Lucent have written a Linux driver, but haven't released the source code. The LTModem project has developed a driver that allows some telephony functionality (but not, for example, PPP).
Linux PCMCIA Card Services 3.1.25 kernel build: 2.4.5 #6 Mon Jun 25 20:55:57 BST 2001 options: [pci] [cardbus] [apm] Intel PCIC probe: <6>PCI: Assigned IRQ 9 for device 00:0c.0 PCI: The same IRQ used for device 00:0b.0 Ricoh RL5C475 rev 80 PCI-to-CardBus at slot 00:0c, mem 0x10000000 host opts : [serial irq] [io 3/6/1] [mem 3/6/1] [pci irq 9] [lat 168/176] [bus 1/4] ISA irqs (default) = 3,4,5,7,10,12,15 PCI status changes