Linux on the Sony Vaio PCG-C1MHP

Sony C1MHP 30GB IDE Drive
8.9" TFT with 1280x600
Transmeta Crusoe TM5800@867Mhz
256MB Ram
Winmodem
Motion Eye webcam
i.Link DVD/CDRW
AV In/Out
Memorystick slot
Jogdial

Initial installation

I used the first default Debian/GNU/Linux Woody CD to boot the machine. The Bios is capable of booting of the i.Link DVD/CD-RW including the kernel + ramdisk. Afterwards the DVD is not usable anymore as the default kernel does not include any i.Link aka iee1384 drivers. The default kernel (bf24) will hang on boot because of the ALI driver trying to autoprobe for UDMA which is not possible until 2.4.20 because of North/Southbridge issues. I used the 2.2 kernel to boot and install and later upgraded to a 2.4.20.

Pictures

Here are some pictures of the interieur of my C1MHP.

Problems remaining:

Kernel and Patches

For kernel 2.4.19 i was using the a couple of patches to enable battery status, suspend, framebuffer and suspend/resume capabilities of the sonypi module.

2.4.19

Patches

2.4.20

Patches

Images

2.4.21

Patches

Images

2.4.23

Patches

Images

2.5

You definitly need newer modutils and module-init-tools. Please look at Adrian Bunks page for more infos on woody backports.

Problems

2.5.xradeonfb gets detected but does not switch to radeonfb
2.5.x/etc/init.d/hotplug stop does hang the machine
2.5.70does not boot - Hassles with IRQ 9
2.5.xecho 3 >/proc/acpi/sleep set the machine to S3 - Wakeup does not work
2.5.xalsas oss mixer/pcm emulation is non existant - warning messages

Images

2.6

You definitly need newer modutils and module-init-tools. Please look at Adrian Bunks page for more infos on woody backports.

I am personally using sarge and 2.6 works like a charm. Included in thie kernel image is the latest swsusp patchset.

Images

USB

The USB part is quite simple. The controller is a OHCI type so simply load the usb-ohci driver. Be sure to have "hotplug" installed as its needed to load the modules.

The problem with no devices getting detected after resume is fixed by a hotplug stop/start while suspend/resume

The problem with the hang on boot in case the usb-storage driver get loaded is fixed by the little patch above

IDE

IDE currently runs on multiword DMA as probing for UDMA with the ALI driver lets the machine hang. This is because the driver assumes an ALI Northbridge which is not the case in the PCG-C1 - Different hacks have shown up which all seem not to be real fixes. Voices have been that Alans 2.4 ac series supports UDMA.

Winmodem

The Winmodem seems to be manufactured by Ambit Microsystems. The Datasheet can be found here. The Chipset used is the Agere Scorpio chipset for AC/MC 97 based Softmodems. A small Datasheet can be found here.

I mailed Ambit about Linux drivers and got this reply:

To: Florian Lohoff <flo@rfc822.org> From: brand.cheng@ambit.com.tw Date: Mon, 28 Apr 2003 09:23:08 +0800 Subject: Re: Linux Drivers for Ambit Softmodem Dear Sirs, Since we are an OEM base of supplier, you should go back to contact Sony to see if they have a plan to phase in Linux support. It is an option at Sony. Thanks, Brand Cheng Director, sales division, communication BU, Ambit Microsystems corporation TEL: 886-3-5784975 EXT. 121 Email: brand.cheng@ambit.com.tw http: www.ambit.com.tw

I tried the Connexant HSF driver which gives this output.

HSF: MC97 VendorId1=0x5349 VendorId2=0x4c27 ERROR: SILICON Laboratories or LUCENT AC97 modem detected! ERROR: This driver only supports CONEXANT devices ERROR: did not find a supported MC97 controller ! (0x594d:0x4803) hsf_request_port: open failed

I also tried the SmartLink driver slmdm-2.7.14.tar.gz which compiled loads and seems to do something to the modem. It goes off-hook but complains NO CARRIER after a while. In the syslog it outputs this:

slmdm: version 2.7.14 Apr 6 2003 16:09:06 (Smart Link Ltd.). slmdm: country set is 0x42 (GERMANY). Smart Link AMRMO modem. amrmo: probe 10b9:5457 Acer Laboratories Inc. [ALi] M5457 AC-Link Modem Interface Controller : SL1800(SmartPCI561) card... This driver is not compatible with the installed modem codec. Please contact your modem provider for support. This driver is not compatible with the installed modem codec. Please contact your modem provider for support.

After writing the last paragraph i got mail saying that the current driver does not work but an slight older one - the slmdm-2.7.10.tar.gz should work. I just verified and it worked. The driver also complains about codec incompatibility but nevertheless you get a connect.

Suspend/Resume/Hibernation

I had no luck getting APM to work or suspend/hibernation. I started using swsusp which is a in kernel software suspend patch. It works astonishingly well with a accurate sized swap partition. WIth 2.4 i do however have sometimes the problem to resume. The machine simply hangs copying back pages which seems to be USB related.

For initiating suspend on closing the lid one can use the acpid (Probably you also need the acpi backport patch i am using).

Put this file into /etc/acpi/events/lidbtn which directs the lid button events to the appropriate shell script

# /etc/acpid/events/libbtn event=button[ /]lid action=/etc/acpi/lidbtn.sh

Additionally you need a suspend script. I wrote my own suited to my needs and the Picturebooks specialities. You can find the lidbtn.sh.

With kernel 2.6.10 even ACPI S3 (Suspend-To-Ram) works. There are some quirks necessary as the Radeon will not get initialized. You need to use VGA Console and a small tool to reinitialize the radeon after resume. I am meanwhile using the debian hibernate package and wrote myself a little scriptlet to put into /etc/hibernate/scriptslets.d to boot the radeon. My hibernate config looks like this.

Bluetooth

With some tweaking bluetooth works as expected. Depending on the kernel version you might need some addtional patches to get it to work - At least 2.4.20 does not work out of the box. See the patch section.

Current userspace utils can be found at the below mentioned apt sources. Install bluez-utils and probably bluez-sdp.

deb http://bluez.sourceforge.net/download/debian/woody/ ./ deb-src http://bluez.sourceforge.net/download/debian/woody/ ./

As i don't need the daemons all the time i removed the startup scripts to bluez-utils and bluez-sdp and put this bluetooth.agent into the /etc/hotplug directory. This will start the daemons in case you switch on the bluetooth and get a usb insert event.

Memorystick slot

To get the memory stick slot to work you will need the above mentioned patch. Otherwise usb-storage will hang on boot. After that the whole memory stick issue is straight forward. On insertion of the stick you will see a sonypi event and will be able to mount the memory stick as an scsi device

sonypi

All Sony Vaio notebooks have a special char interface for the special functions like the jogdial, capture button and other interesting features. For this one needs to compile the sonpi char driver into the kernel and create a special char device in /dev for it

mknod /dev/sonypi c 10 250

To automatically load the sonypi module i use this file /etc/modutils/sonypi. Don't forget to run update-modules.

Jogdial

I am using the Debian sjog package and the sonypi module to get this to work. My .sjogrc looks like this:

Volume volume Brightness brightness Xmms xmms Konsole konsole Konqueror kfmclient openProfile webbrowsing Popdown echo

To start sjog i created a file /etc/X11/Xsession.d/92sjog running sjog before even running the window manager - So you can tune down your volume before the KDE splash screen comes.

Motion Eye

The Motion Eye itself is a simple device one could access through the hardware mpeg encoder. In former C1 models this had been a Kawasaki MPeg chip. With the C1MHP and probably other C1Mxx models Sony decided to switch to a different chip.

00:0a.0 Multimedia controller: Citicorp TTI: Unknown device 2011 Subsystem: Sony Corporation: Unknown device 80ec Flags: medium devsel, IRQ 9 I/O ports at 2000 [disabled] [size=256] Memory at e8200000 (32-bit, non-prefetchable) [disabled] [size=1M]

Citicorp does not seem to exist anymore and it seems Fujitsu/Siemens has bought the leftovers.

Rumors have been around on the c1 mailinglist that Fujisu the IP owner of the MB86393 is handing out documentation for interested partys under NDA. Contact Miguel.Estevez@fme.fujitsu.com for more informations.

Longrun

Longrun and powersaving i do with an ACPI powerchange event. Just let the ACPId run this script for you

#!/bin/sh # # Do things, depending on the status of the ac_adapter status=`sed "s/stat.*: *//i" /proc/acpi/ac_adapter/*/stat*` case $status in "on-line" ) /usr/bin/longrun -s 0 100 /usr/bin/longrun -f performance /usr/bin/spicctrl -b 255 exit 0 ;; "off-line" ) /usr/bin/longrun -s 0 33 /usr/bin/longrun -f economy /usr/bin/spicctrl -b 50 exit 0 ;; esac echo "Something bad happened!" exit 1

I got this with googleing forgot from whom - Please not that you might need to change the sed line in case you are not using the 2.5 ACPI Backport as file names and content changed

i.Link DVD/CD-RW

The firewire controller is straight forward. Just load the ohci1394 driver and you will see it as an SCSI Device. XCDRoast is happy to use it for burning. The only problem i see currently is that unloading the ohci1394 driver sometimes hangs so suspending fails.

Sound

The sound device is the ALI 5451 chip with an Yamaha YMF753 AC97 Codec. The Ali is supported either in OSS as the trident driver or in alsa as the Ali5451. The YMF753 is unknown to the trident driver thus the trident does not support any special features. The datasheet can be found here.

Using alsa use this as /etc/modutils/alsa and run update-modules.

alias char-major-116 snd alias snd-card-0 snd-ali5451 alias char-major-14 soundcore alias sound-slot-0 snd-card-0 alias sound-service-0-0 snd-mixer-oss alias sound-service-0-1 snd-seq-oss alias sound-service-0-3 snd-pcm-oss alias sound-service-0-8 snd-seq-oss alias sound-service-0-12 snd-pcm-oss options snd snd_major=116 snd_cards_limit=1 snd_device_mode=0660 snd_device_gid=29 snd_device_uid=0 options snd-ali5451 snd_index=0 snd_id=CARD_0

Framebuffer and XFree

To get the framebuffer to work you need the above patch as the onboard Radeon M6 falsely advertises as a 0MB device. After applying the patch the RadeonFB works flawless. To enable the framebuffer put the following into your lilo.conf.

append="video=radeon"

The only problem remaining the framebuffer is that the vsync polarity is set as low which causes the screen to be shifted up by roughly 3mm which makes the lowest 3mm unusable and shifts the upper 3mm off script. My solution would be to issue a fbset -a -vsync 1 before running XFree.

To get XFree86 to work one needs XFree 4.2. I made Woody XFree4.2 packages To make it easy one only needs to install the server with these packages:

XFree does not turn off the backlight when it goes into DPMS modes. There are a couple of tools around to solve this outside of X. I made a patch against the Debian XFree 4.2.1 source package which resulted in a ATI Radeon driver which turns the backlight off. There is also a different approach available which has no effect for me YMMV.

There is also something called "Dynamic Power Saving" in the Mobility chipsets which seems to be a lot like "longrun". There is a patch available and here is some explanation.

To make most out of backlight poweroff and reduce the number of switches on the backlight (The lifetime expectation for backlight is reduced by the number of powercycles) i am using this script in /etc/X11/Xsession.d/94dpms

# First blank and turn off backlight 60 seconds later xset dpms 240 xset s 180

In case the system blanks the screen you hit any key and you saved one powercycle.

Ethernet

The ethernet is a standard rtl 8139 chipset - Kernel 2.4.19's driver is called 8139too. I tried to write a shell script which would automatically ifup and ifdown the interface but it seems the 8139too driver does not allow one to query the link state in case the interface is shut.

Other possibily interesting links:

-->