Search This Blog

Wednesday, June 23, 2010

Sager NP7652: finally



Yesterday, I finally got my Sager NP7652 laptop (Clevo W765CUH barebone) in my hands. The LCD was replaced and there is no dead pixels (so far). I copied my Gentoo installation from my old Acer Ferrari 4005 to it to avoid the loooooong process of installing Gentoo from the begining, also because my Internet connection is slow and it would take almost a week to download the source code for all ebuilds. The configuration (click on the image to see it completely):





More info about this laptop on Xoticpc and Notebook Review.


TuxMobil - Linux on Laptops, Notebooks, PDAs and Mobile Phones

This report is listed at
TuxMobil - Linux compatibility guides for laptops, notebooks, PDAs, mobile phones and GPS devices.

ACPI

Battery
/proc/acpi/battery/BAT0/state does not show the "present rate", which prevents KDE's powerdevil to measure how much remaining time I still have. I had this problem with my Acer Ferrari 4005 too, a BIOS update solved the problem that time. Unfortunately Sager has discontinued this laptop, which was released less than six months ago, those notebook sellers must be kidding to discontinue a notebook so fast. So until I find a BIOS update to solve this problem I am using the kernel's CONFIG_ACPI_CUSTOM_DSDT feature to replace the BIOS's DSDT by one I have edited by hand. To use the new DSDT:

  1. Download it
  2. Enable  CONFIG_ACPI_CUSTOM_DSDT: make menu_config -> Power management and ACPI options -> ACPI (Advanced Configuration and Power Interface) Support -> Custom DSDT Table file to include. Select the downloaded file.
  3. Compile and install the new kernel.
  4. Reboot, that is it.

Here is the diff of the original DSDT.

Fans
The fans run at full speed since kernel boots up, but if you press the third hot key button (the one with a M surrounded by an elipse) the fans run quietly, this is called "silent mode". If you press it again the fans run at full speed again. OBS: the processor will *not* run at full power when in silent mode. OBS2: when using ATI proprietary drivers (ati-drivers ebuild) instead of the opensource drivers (xf86-video-ati ebuild) the fans run quietly.

Speedstep
Driver: acpi-cpufreq.ko.

I tried to use phc-intel to undervolt the CPU C-states but it did not work as expected. It seems this Core i7 620m CPU recognise the undervolt and automatically reduces CPU performance instead of allowing it to crash. Do not worry, the crash is part of the tweaking process to get the voltage values to configure the phc-intel module. I tried all values from 20 mW to 1 mV at 2667 MHz clock and the CPU did not crash but the performance decreased when compiling the kernel. Since this CPU has turbo mode capability I guess it is it that is automatically decreasing CPU performance to avoid the crash. The clock stayed at 2667 MHz, but compiling the kernel was much more slower using 1 mV than with 20 mW.

Suspend to Disk
I am using TuxOnIce for suspend to disk. To install it:

  • Apply the patch against the kernel.
  • Enable it  make menu_config -> Power management and ACPI options ->Enhanced Hibernation (TuxOnIce) -> File AllocatorSwap Allocator (if you have a swap partition), Userspace User Interface support and install the new kernel.
  • Install pm-utils ebuild/package: emerge -v pm-utils
  • Edit /etc/pm/config.d/gentoo and change the line with SLEEP_MODULE to SLEEP_MODULE="tuxonice". Now KDE's powerdevil plasmoid will use TuxOnIce to hibernate.

Sometimes some programs setfaults after resume (if one of them is the init program then system will crash). If I clean the swap space up (swapoff -a; swapon -a) before suspending then there is no segfault but that is damn slow if there several hundreds of MB in the swap file. Well, I tried a different approach and created a dedicated hibernate file that seems to also fix the problem and is pretty fast too, so do:

Configure Tux On Ice
# echo "TuxOnIce" > /hibernation-file
# dd if=/dev/zero bs=1M count=2048 >> /hibernation-file
# echo /hibernation-file > /sys/power/tuxonice/file/target
# cat /sys/power/tuxonice/resume
UUID=ea1d2e190cfe4901ac80645f47046980:0x56f8000

Change the resume kernel parameter to the new inode location:
Kernel parameter
resume=/dev/sda6:0x56f8000

Add the line below to /etc/hibernate/common.conf
/etc/hibernate/common.conf
ProcSetting file/target /hibernation-file


Bluetooth
Cambridge Silicon Radio bluetooth controller, driver: btusb.ko.

Card Reader
JMicron SD/MS Host controllers, Secure Digital driver: sdhci-pci.ko, Memory Stick driver: jmb38x_ms.ko. Tested with SD and MS PRO Duo cards. Not tested but should work as well: MS, MS PRO, MS Duo, Mini-SD, MMC and RS cards.

DVD Burning
Works as expected, at least when burning an iso image to a DVD-r media (8x speed).

Finger Print Reader
Works with fingerprint-gui 1.04, just execute the command below to avoid the error message "ABSOpen() failed -1086 (An internal error occurred (pt: tfmerr -1086).)":

mkdir -m700 /var/upek_data/

Hot Key Buttons
All buttons working:

  1. E-mail.
  2. Internet (Web Browser).
  3. Toggle Silient Mode (for power saving). When enabled, Silent Mode will reduce fan noise and save power consumption. Note this may reduce computer performance.

I have configured udev to make show a KDE notification when the wifi, bluetooth or webcam is activated / desactivated. You can do the same for the silent hot key button using khotkey section in KDE's systemsettings, no need to go for udev.

Modem
Does not work yet: Re: AW: agere softmodem HDA + Intel Ibex Peak High Definition Audio

Sata and e-Sata
Intel Ibex Peak 4 port SATA AHCI controller, driver ahci.ko. To compile the driver: make menu config -> Device Drivers ->  Serial ATA and Parallel ATA drivers ->  AHCI SATA support

This is what I do before switching my e-Sata HD off:

  1. umount all partitions.
  2. echo 1 > /sys/block/sdb/device/delete

When issuing the last command the following lines appears in dmesg:

[40049.014691] sd 4:0:0:0: [sdb] Synchronizing SCSI cache
[40049.014851] sd 4:0:0:0: [sdb] Stopping disk
[40049.341191] ata5.00: disabled



You configure hald and udisks to thread "e-sata" disks as removable. Udisks is the default disk manager in KDE SC 4.6.x, so it is preferable.

Sound Card
Intel Ibex Peak HDA sound card, driver: snd-hda-intel.ko. Playback and internal microphone tested with Skype, all working. I moved my old /etc/asound.conf to /etc/asound.ferrari, it is not needed anymore because this sound card multiplex audio streamings without dmix alsa plugin. I do not have any s/pdif receiver so I cannot test it.

Just a side note: when the power save mode is enabled (echo 1 > /sys/module/snd_hda_intel/parameters/power_save) every time you change the volumes with a mixer or some program starts to play something there is a short crack sound in the speakers. It sounds even when all volume channels are mute or using earphone. That is annoying, so I prefer to disable the power save mode (echo 0 > /sys/module/snd_hda_intel/parameters/power_save).

USB
Intel Ibex Peak EHCI controller, drivers: ehci-hcd.ko and uhci-hcd.ko.

Video
ATI HD4570 video card, driver: xf86-video-ati-6.13.0, firmware: radeon-ucode-20100408. Working with KMS+DRI2, Googleearth and Kwin's composite effects work together too!!!. To use the firmware enable make menuconfig -> Device Drivers -> Generic Driver Options -> Include in-kernel firmware blobs in kernel binary. Then type "radeon/R700_rlc.bin" in "External firmware blobs to build into the kernel binary", copy /lib/firmware/radeon/R700_rlc.bin to /usr/src/linux/firmware/radeon/ and compile the kernel.

Relevant ebuilds (packages) I am using:

  • kernel 2.6.33.4
  • xf86-video-ati-6.13.0
  • radeon-ucode-20100408
  • xorg-server-1.8.1-r1
  • mesa-7.8.2
  • libdrm-2.4.19

Proprietary Driver (fglrx.ko)
Using ati-drivers ebuild brings one big advantage: the GPU runs cooler and the fans run quieter (as quiet as in Windows 7). I think it also helps with battery time, but I have not measure it. That only works as long as Xorg is running, if you to go the console (Ctrl+Alt+F1) the GPU fans start to run at full speed. Going back to Xorg makes them run quiter again. The 3D performance is noticeably better with ati-drivers.

One disadvantage in using ati-drivers is that you have to disable KMS (kernel modsetting) and the radeon kernel module. Otherwise the LCD gets blank when Xorg starts and you will have to restart the notebook to restore the video card to the correct state. Using composite (3D effects) while playing movies usually makes the movie flicker. To solve that problem DRI2 and KMS were created but since we cannot use KMS with ati-drivers I thought I would have to disable the 3D effects when using mplayer. Fortunately there is no flicker :-). In my old notebook (Ferrari 4005, ATI x700 card) the flickering is very annoying. I still own the Ferrari 4005, anyone here wants to buy a Ferrari notebook? :-) The battery still holds 72% of the original manufacturer capacity (around 3400 mAh) and everything works in Linux, accept the svideo port and the card reader, which does not read SD cards anymore, but reads Memory Stick (weird, hugh?) It comes with a bluetooth mouse too.

Unfortunately several important aticonfig commands do not work with this card:

evolucao ~ # aticonfig --adapter=0 --od-getclocks --od-gettemperature
Adapter 0 - ATI Mobility Radeon HD 4500 Series
                            Core (MHz)    Memory (MHz)
           Current Clocks :    680           500
             Current Peak :    680           500
  Configurable Peak Range : [680-680]     [500-500]
                 GPU load :    0%
ERROR - Get temperature failed for Adapter 0 - ATI Mobility Radeon HD 4500 Series

GPU load always stays at 0% and the thermal sensors are not compatible with aticonfig. Everest in Windows 7 is able to get the GPU temperature. As you can also notice the GPU and Memory clocks cannot be changed.

VGA Port
Works as expected. KDE has this beautiful and effecient kcm module to configure multiple monitors and it works great with the ATI HD4570:


HDMI Port
Work as expected (both video and audio). You need to configure /etc/asound.conf to route audio to the sound card that the video card (ati 4570) registers or use pulseaudio.

Webcam
BisonCam NB Pro webcam, driver: uvcvideo.ko. To compile the driver: make menu config -> Device Drivers -> Multimedia support -> Video capture adapters -> V4L USB devices -> USB Video Class (UVC)

Wired Ethernet
JMicron JMC250 gigabit ethernet PCI-e, driver jme.ko. To compile the driver: make menu config -> Device Drivers -> Network device support ->  Ethernet (1000 Mbit) ->  JMicron(R) PCI-Express Gigabit Ethernet support

Wireless
Intel WiFi Link 6000, driver: iwlagn.ko, firmware: iwl6000-ucode-9.193.4.1.

Gentoo Specific
In /etc/make.conf:
  • CHOST="x86_64-pc-linux-gnu"
  • CFLAGS="-O2 -march=core2 -pipe -fomit-frame-pointer -msse3 -msse4 -mcx16 -mpopcnt -msahf"
  • LDFLAGS="${LDFLAGS} -Wl,-O1"
  • VIDEO_CARDS="vesa radeon"
  • ALSA_CARDS="snd-hda-intel usb-audio"
Symbolic link: /etc/make.profile -> ../usr/portage/profiles/default/linux/amd64/10.0/desktop/kde . It is ironic the fact that Gentoo use amd64 profile for an Intel processor.

    File /etc/modules.autoload.d/kernel-2.6
    microcode # for updating CPU's microcode
    acpi-cpufreq # for CPU frequency scaling
    cdc-acm # for my 3G modem
    fglrx # for the video card
    vboxdrv # for VirtualBox
    vboxnetflt # idem
    vboxnetadp # idem
    
    All other drivers are automaticaly loaded by udev during boot initialization. Except for fglrx.ko and the three VirtualBox drivers (vboxdrv.ko, vboxnetflt.ko, vboxnetadp.ko) all other drivers are included in the vanilla Linux kernel. fglrx.ko is compiled by the x11-drivers/ati-drivers ebuild and the three VirtualBox drivers are compiled by the app-emulation/virtualbox-modules ebuild

    Things yet to Test
    • Express card slot
    • Multi-gesture touchpad

    lspci output:
    00:00.0 Host bridge: Intel Corporation Arrandale DRAM Controller (rev 12)
    00:01.0 PCI bridge: Intel Corporation Arrandale PCI Express x16 Root Port (rev 12)
    00:16.0 Communication controller: Intel Corporation Ibex Peak HECI Controller (rev 06)
    00:1a.0 USB Controller: Intel Corporation Ibex Peak USB2 Enhanced Host Controller (rev 06)
    00:1b.0 Audio device: Intel Corporation Ibex Peak High Definition Audio (rev 06)
    00:1c.0 PCI bridge: Intel Corporation Ibex Peak PCI Express Root Port 1 (rev 06)
    00:1c.1 PCI bridge: Intel Corporation Ibex Peak PCI Express Root Port 2 (rev 06)
    00:1c.2 PCI bridge: Intel Corporation Ibex Peak PCI Express Root Port 3 (rev 06)
    00:1c.3 PCI bridge: Intel Corporation Ibex Peak PCI Express Root Port 4 (rev 06)
    00:1d.0 USB Controller: Intel Corporation Ibex Peak USB2 Enhanced Host Controller (rev 06)
    00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev a6)
    00:1f.0 ISA bridge: Intel Corporation Ibex Peak LPC Interface Controller (rev 06)
    00:1f.2 SATA controller: Intel Corporation Ibex Peak 4 port SATA AHCI Controller (rev 06)
    00:1f.3 SMBus: Intel Corporation Ibex Peak SMBus Controller (rev 06)
    02:00.0 VGA compatible controller: ATI Technologies Inc M92 [Mobility Radeon HD 4500 Series]
    02:00.1 Audio device: ATI Technologies Inc R700 Audio Device [Radeon HD 4000 Series]
    06:00.0 Network controller: Intel Corporation WiFi Link 6000 Series (rev 35)
    07:00.0 System peripheral: JMicron Technology Corp. SD/MMC Host Controller (rev 80)
    07:00.2 SD Host controller: JMicron Technology Corp. Standard SD Host Controller (rev 80)
    07:00.3 System peripheral: JMicron Technology Corp. MS Host Controller (rev 80)
    07:00.5 Ethernet controller: JMicron Technology Corp. JMC250 PCI Express Gigabit Ethernet (rev 03)
    ff:00.0 Host bridge: Intel Corporation QuickPath Architecture Generic Non-core Registers (rev 02)
    ff:00.1 Host bridge: Intel Corporation QuickPath Architecture System Address Decoder (rev 02)
    ff:02.0 Host bridge: Intel Corporation QPI Link 0 (rev 02)
    ff:02.1 Host bridge: Intel Corporation QPI Physical 0 (rev 02)
    ff:02.2 Host bridge: Intel Corporation Device 2d12 (rev 02)
    ff:02.3 Host bridge: Intel Corporation Device 2d13 (rev 02)

    lsusb output:
    Bus 002 Device 006: ID 5986:0343 Acer, Inc -> webcam
    Bus 002 Device 003: ID 147e:1000 Upek -> fingerprint reader
    Bus 002 Device 002: ID 8087:0020 
    Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 001 Device 005: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
    Bus 001 Device 003: ID 03eb:0902 Atmel Corp. 4-Port Hub
    Bus 001 Device 002: ID 8087:0020 
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

    Sunday, June 13, 2010

    Full support to Modem Manager 0.4 in Solid

    I have finally finished to implement Modem Manager 0.4 specification in solid. I still need to add more comment in the source code and implement more caching to prevent stress in the DBus bus. Now I need help to test the implementation because my Sony MD300 modem supports less than 1/3 of the specification. Nothing from interfaces Location, Cdma, Gsm.Contacts, Gsm.SMS, Gsm.Hso and Gsm.Ussd work with my modem, but I have implemented them anyway. I am going to commit the patch after trunk is opened for new implementations, which AFAIK is after the first KDE SC 4.5.0 rc release next week.

    For those who likes statistics, the patch adds 128 new files, changes other 23 files in trunk, is 400 KB in size and took me eight weeks to reach this stage.

    Monday, June 7, 2010

    Plasma Network Management and ModemManager

    Well, new update, this time I have implemented org.freedesktop.ModemManager.Modem and org.freedesktop.ModemManager.Modem.Gsm.Card interfaces from specification and added some information it provides to the interface details tab:



    There is more information to add to interface details tab, I have not done it yet because of lack of time. The ModemManager patch is getting bigger (it touches or adds 86 files to trunk) and the Plasma NM patch adds/changes other 28 files. Managing all those files outside svn makes me loose time, but since trunk is closed for new features I will have to wait until KDE SC 4.5.0 is released.

    Of course I will have to change interface details window, it becomes too big when all information is displayed. Maybe I will add a new "Hardware details" tab and move some things there. When I have more time I am going to implement selecting which information to display too. The MM implementation is taking more time than I have thought because MM specification does some things differently from NM specification and I had to think about how to solve the problems that changes brought up.