Debian installation on a Samsung Q35
Par Alexandre le vendredi 18 mai 2007, 00:51 - Cyborguerie - Lien permanent
I haven't posted any geek post for quite a long time... Well I had the opportunity to set up a shiny new, ultra light weight laptop, a Samsung Q35. 12,1" widescreen, 1,9kg, an advertised autonomy of 7h. It features an Intel Core 2 Duo CPU, 1GB or RAM. No GPU from NVidia nor ATI, but an Intel 945G chipset. So I think the whole hardware have free (open-source) drivers, well supported in the Linux kernel.
Out of the box, in the 120GB harddriver, a Windows XP OS is preinstalled, you just have to activate it. I have not. At least not yet (may need that crap for a school assignment...).
Instead, I decided to try a Debian Etch, with a 64-bit AMD64 architecture, So I downloaded the debian-40r0-amd64-CD-1.iso image file, burned it, and put it in the laptop.
Installation
Here's the detailed procedure :
- press Enter
- press Enter
- press Enter
- press Enter
- press Enter
Reboot, and voilà ! Nice, isn't it ? L'informatique, c'est magique !.
Well, it could have been like that if I did not need at all the Windows Installation (you never know...), and getting an internet connection did not need you to login on an HTTP captive portal. For the latter, I tried to send the POST data containing my login information directly with wget, but unfortunately, the version of that software included in the busybox was a bit restricted, and only accepted basic options. So, a net install would have been impossible for me, but fortunately, the most useful packages are present on the first CD.
partitioning
For the former (keeping Windows), it went in a pretty straight forward manner. I could easily shrink the NTFS partition from 120 GB to 15 (that should be way more than enough, I think...), and then let the debian installer decide how to partition the rest of the disk for me. It gave me 80GB for /home, 5GB for /usr (on my previous debian box, I only allocated 3GB, thinking that I would not keep that Debian installation for too long... That was 3 years and a half ago... and I still have not reinstalled it), 3GB for the swap, 3 for /var and 300MB for / . I thought that it was too much for the swap, so I shrinked it a bit, but the rest was fine, IMHO.
Then, Enter, Enter, Enter, I was asked to reboot, and I had a working system, with a GNOME Desktop environment. I must confess I was very impressed.
Hardware support
Wi-fi
Everythink is not pink, though. Wireless was not available out of the box. You have to aptitude install ipw3945d. And maybe also ipw3945-modules-2.6-amd64. But it may have been already present, I don't remember.
Sound support
Sound was not there also. The module snd_hda_intel corresponding to the audio chipset was there, fine. But it did not work. I run alsaconf, then I tried to play an mp3-file that was on an external harddisk (an iPod, which by the way was recognised automatically, autorunning rhythmbox !), and I had very weird result. Right channel was OK, but I had crissing ultrasonic (or almost) sound on the left channel. It worked like that for one file, and for the second, silence. After a bit of googling (your best friend!), and with the help from a friend that had the same laptop, I discovered that you had to add the following line in the /etc/modprobe.conf file :
options snd-hda-intel single_cmd=1 model=laptop-eapd
And finally, for eye-candy, I aptitude install compiz to see if that worked. And... after enabling Composite in xorg.conf, it worked, and with no noticeable slowdown !
Energy
Concerning energy related stuffs, suspend and hibernate worked out of the box. Very good. CPU scaling, on the other hand, needed you to enable some modules to work. The following were added in /etc/modules
speedstep-centrino cpufreq_ondemand cpufreq_conservative cpufreq_powersave cpufreq_stats cpufreq_userspace
Then the CPU could change its frequency, scaling down from 1,66GHz to 1GHz when it is not sollicited. However, it worked for only one core. Or at least it showed the status for only the first core.
BUT. One annoying thing. When trying to shutdown or reboot the computer. It crashed. In fact, when shuting down the X server (with Ctrl-alt-backspace), pouf ! Kernel error, panic, or whatever. Very very annoying.
sid installation
Soo. I decided to leave the stable release, etch, to the unstable, sid. %s/etch/sid/g in /etc/apt/sources.list. Then aptitude update and aptitude dist-upgrade. I think 400MB or so was downloaded. One cup of tea later. It was done. A 2.6.20 kernel was installed at the same time. Reboot. Crash (I was still with the old kernel). Boot. trying to shutdown the X server. Yay it worked !!
In /etc/modules, I had to replace speedstep-centrino which was shown as deprecated, for acpi-cpufreq. And then the frequency of the two cores were independently updated !
Dual head and xrandr
One last thing I wanted to try was connecting an external monitor to the VGA plug. Just pressing the Fn-F4 button was not enough. Logs shown that things were moving. But I still had blank screens... One googling later, I discovered that the new Intel xorg drivers implemented the RandR 1.2 protocol, enabling some nice stuffs. Just had to play with the xrandr tool. Using the command
xrandr --output VGA --auto
lighted the external LCD monitor to its native resolution, and I had an almost perfect clone mode (well, the screen of the laptot was then truncated, since its resolution is 1280x800 while the LCD's was 1280x1024). I wanted to try a xinerama/multihead/whatever setup, but unfortunately, that thing prevented me from doing it :
alung@isumi:~$ xrandr Screen 0: minimum 320 x 200, current 1280 x 1824, __maximum 1280 x 1280__
The total size could not exceed 1280x1280.
But these blog posts helped me a lot. In your /etc/X11/xorg.conf, you have to adjust the virtual size of the screen :
Section "Screen"
Identifier "Default Screen"
Device "Intel Corporation Mobile 945GM/GMS/940GML Express Integrated Graphics
Controller"
Monitor "Écran générique"
DefaultDepth 24
SubSection "Display"
Depth 24
__Virtual 2048 2048__
EndSubSection
EndSection
I could have set up to a larger resolution, so that I could decide to put the VGA screen to the left, or the right of the laptop screen. But a virtual size larger than 2048x2048 disables DRI (3D acceleration...). In this configuration, i could still put the LCD "above" the other screen, with this command :
xrandr --output VGA --auto --above LVDS
Quite a strange layout at the beginning, but you get used to it quite quickly.
Firefox and Flash
There is no Flash plugin for 64bit architectures. Not even in Windows. So no Youtube or Dailymotion, you would say ? No, there's a solution. You just have to install nspluginwrapper and ia-32-libs, download the flash plugin for linux from the Adobe website, and run
nspluginwrapper -i /path/to/npplugin.so
And voilà! No complicated and scary chroot procedure!
Conclusion
So, to conclude: having full, open source, driver support of your hardware gives you awesome results! And the Debian Etch release is very good, especially the installer. Good work Debian ! However it still has some flaws, and some missing things. I will fill some bug reports soon, to improve that.

Commentaires
Congratulations for your new laptop
You should try to disable the tricky option in /etc/modprobe.conf to see whether the last kernel has fixed your problem or not.
I thought ipw3945d binary driver has been superseeded recently by an open source driver in the kernel. Am I wrong ?
Hmm, "au temps pour moi".
In fact, yep I had to install firmware-ipw3945 which is in non free, when I was in etch.
In sid and the 2.6.20 kernel, I did the module-assistant procedure with ipw3945-source. I don't know if I can remove the firmware and the daemon. I will try.
Hmm, the proprietary daemon is still running. I've just read that the kernel driver is entirely open source, but the closed source part, the daemon is the only thing being closed. I don't know about more recent driver without that daemon.
edit : I found the driver you're talking about : http://intellinuxwireless.org/?p=iwlwifi ; but it does not seem to be in the 2.6.20 kernel. Maybe the next...