Linux on a Samsung P30 / P35

Don't pay for Windows!

As Samsung does not sell laptops without Windows XP (information from Werner Häuser, the guy selling windows-free laptops at xtops.de and webmaster of tuxmobil), I wanted to refund Windows as it is stated in the Microsoft EULA (german version, other language versions contain similar parts):

Indem Sie die SOFTWARE installieren, kopieren, downloaden, darauf zugreifen oder sie anderweitig verwenden, erklären Sie sich damit einverstanden, durch die Bestimmungen dieses EULAs gebunden zu sein. Falls Sie sich mit den Bestimmungen dieses EULAs nicht einverstanden erklären, sind Sie nicht berechtigt, die SOFTWARE zu verwenden oder zu kopieren. Sie sollten sich in diesem Fall unverzüglich mit dem Hersteller in Verbindung setzen, um von diesem zu erfahren, wie Sie das/die unbenutzte(n) Produkt(e) gemäß den Rückgaberichtlinien des Herstellers zurückgeben können.

I'll inform you if anything new happens. If you buy a new laptop, please ask for a Windows-free version, if you don't get one, try to refund your Windows.

Update: I decided to give up, got no answer from Samsung and I'd probably need a lawyer to get anything back. If you are more successful, I'm interested in hearing from you.

Why P30 and P35?

I once had a P30, but due to hardware limitations, I bought an old, defect P35. I put most hardware from the P35 to the P30, so it's basically like a P35 now (see this blog entry for details). Anyway, most hardware is the same, so most instructions are equal. If there are differences, I'll mention them.

Software

I'm using Gentoo Linux, it's my favorite distribution and I'm also a Gentoo-developer. But beside that, the information in this document can be used in any distribution you like.

I suggest using kernel 2.6.26 or above. 2.6.27-rc6 contains the sdricoh_cs driver, so you may wanna switch to that one.
For the X-server use xorg 7.3 (xorg-server 1.4, mesa 7.0.2, xf86-video-ati 6.8.0) or above.

Other software that might be interesting for users of this laptop:
Synaptics touchpad driver (now deprecated by xf86-input-synaptics)
ipw2100 - driver for centrino wlan on P30
ipw2200 - driver for centrino wlan on P35

Hardware

Works out of the box
Works with extra effort
Works partly
Does not work at all
Not tested

BIOS UpdateSamsung provides an ISO Image for a boot-CD for their latest BIOS-update for P30 (09NK) and P35 (04RK).
CPU CFLAGS You can use -march=pentium-m to optimize code for your CPU.
CPU Frequency You can set the CPU frequency with the cpufreq-interface.
Enable CPU Frequency Scaling (CONFIG_CPU_FREQ) and Intel Enhanced Speedstep (CONFIG_X86_SPEEDSTEP_CENTRINO) in the kernel and you'll have an interface at
/sys/devices/system/cpu/cpu0/cpufreq
With latest kernels, you have the possibility to set the ondemand-governor, which automatically sets your cpu frequency according to the system load, which reduces your battery usage.
ACPI (Power Management) With latest linux-kernels, there is a nice and working ACPI-implementation. With acpid you can set actions for pressing the power-button, for closing the lid and for the two fn-sleep-buttons (the moon on ESC and the be-quiet on F10).
If you enable acpi4asus in the kernel config ("ASUS/Medion Laptop Extras" in the ACPI-Menu), you can also let all the other Fn-keys and Multimedia-keys generate ACPI-events. You can assign any actions to them with acpid.
Suspend to RamWith latest kernels, works out of the box for me with the hibernate-ram-script (from tuxonice.net), no kernel-patches needed.
Software SuspendSometimes works with the in-kernel suspend, but it's much more reliable with the tuxonice-patch and the hibernate-script (both from tuxonice.net).
Framebuffer graphics No problem with latest kernel and radeonfb.
X graphics The P30 has a Radeon 9200 (r200-chipset), the P35 a Radeon 9600 (r300-chipset). Both work with the free xorg-driver, but especially for the P35/r300, it's suggested to use latest driver, mesa and xorg-server. AIGLX (for nice 3D-effects with compiz) also works.
To get hardware 3D-acceleration, you have to enable agpgart with Intel-support and Direct Rendering Manager with ATI Radeon support in the kernel. You also should add these lines to your xorg.conf (else only root will have acceleration):
Section "DRI"
        Mode 0666
EndSection
The best resolution for the display is 1400x1050, so you should set this as the default. With xrandr, you can change the resolution.
I'm using the xorg-builtin-drivers. You can also try the ati-drivers, but I suggest you don't do that. They are known to be unstable and lack a lot of features (no AIGLX).

For the brave, there's a tool called rovclock, which can be used for overclocking of Radeon cards.
rovclock -c 280 -m 260
worked for me with a Q3 benchmark.
Display lightThe Screen brightness-fn-keys and the Backlit-fn-key are working on the hardware-side, so no problem with linux.
If you close the lid, the screen goes off.
TouchpadThe touchpad works as a normal ImPS/2-Mouse. However, to get a bunch of extra features like setting mouse-speed, scrolling with moving the finger on the side of the touchpad or getting middle-mouse-button when hitting the touchpad with two fingers, you should install xf86-input-synaptics.
Then, add this to your xorg.conf:
Section "InputDevice"
  Driver	"synaptics"
  Identifier	"Mouse0"
  Option	"Protocol"	"auto-dev"
  Option	"Emulate3Buttons" "on"
  Option	"ZAxisMapping" "4 5"
EndSection
If you're using xorg-server 1.5 with hal and input hotplug, it will automatically detect your touchpad.
Multimedia/Fn-KeysThe num-block, the screen-brightness and the Backlit-Button are working on the hardware-side, the two sleep-buttons generate acpi-events.
All the other keys are working with acpi4asus (see ACPI-section).
Network cardEnable RealTek RTL-8139 PCI Fast Ethernet Adapter support (CONFIG_8139TOO).
Wireless LAN cardThe ipw2100/ipw2200 driver, which is part of the kernel, supports the card.
You also need the firmware from the ipw-page, which you have to put into /lib/firmware. You need hotplug to load the firmware and the kernel modules.
If you've enabled acpi4asus, you can use the wlan-button to enable or disable the card.
SoundWorks with the ALSA-driver for Intel-Soundcards (intel-8x0).
CD/DVDNo problem, detected as an ide-device and cd/dvd-burning works with all common burning-tools (cdrtools, cdrkit, libburn).
USBNo problem, enable UHCI HCD (most Intel and VIA) support (CONFIG_USB_UHCI_UCD), EHCI HCD (USB 2.0) support (CONFIG_USB_EHCI_UCD) and the devices you need.
FirewireI don't have any firewire-devices, but kernel detects it, so it should work.
PCMCIAWorks with the yenta-socket-driver.
IrDANot tested, I don't have any infrared-devices
Card ReaderThe laptop has a cardreader that reads MemoryStick, MMC and SD-Cards. There's a very early stage development driver sdricoh_cs. It works well for SD-Cards and MMC. No support for MemoryStick yet. Starting with 2.6.27 release candidates, sdricoh_cs is part of the official kernel.
Modem Works with the slmodem binary-drivers from www.smlink.com.
Enable the Intel/SiS/nVidia/AMD MC97 Modem in the kernel/alsa-config, start the slmodemd (or the init-skript) and use any dialip-application with /dev/ttySL0. wvdial needs the option Carrier Check = no to work.
TV-OutWorks since xf86-video-ati 6.8.0.
Serial, Parallel and PS/2Works out of the box.
SensorsThe laptop has a couple of hardware sensors that can be used with lm_sensors. Load the i2c-i801, lm90 and eeprom module and start sensors.

Links

The following links might be interesting for you:
xtops.de - Windows-free laptops (no Samsung-laptops)
Tuxmobil - information on linux with laptops
linux-laptop.net - another page on linux with laptops
Windows Refund - information about refunding windows

Yet, there are two other pages about the samsung P30 and linux.
http://www.hentges.net/misc/howtos/samsung_p30.shtml
http://www.hollants.com/p30/linux.html

Feedback

That's it. If you have problems, if you have anything working I don't, if I forgot anything that should be mentioned here or if you have any other feedback, please contact me at hanno@hboeck.de.

This page is valid XHTML 1.1 and valid CSS 2.

Hanno Böck
CC0