HARDWARE Dell Latitude X1

From Gentoo Linux Wiki

Jump to: navigation, search
This article is part of the Hardware series.
Laptops TV Tuner Cards Wireless Servers Storage Other Hardware Motherboards Related
Wikipedia has an article on:

Contents

[edit] General

Dell Latitude X1
Dell Latitude X1

This is a very nice sub-notebook! Even though the CPU has only 1.1Ghz, it shows good performance. It is nearly noiseless since it doesn't have a fan. While this is good for working, compiling a complete system creates a lot of heat. I recommend either using a stage3 install, or compile own binaries on a workstation (e.g. using TIP Faketoo and/or HOWTO Create A Build Host). The notebook is known to be identical with the Samsung Q30 series.
This document will point out and solve some basic hardware/configuration issues. For an installation guide, please refer to the Gentoo Handbook http://www.gentoo.org/doc/en/handbook/2005.0/index.xml. Note: Some parts of this document might be hints for more advanced linux users, if you are not sure about what you are doing, take some further advice.

[edit] News

  • SD/MMC Card reader works
    • The new patch-0.10 for sd/mmc card, more informations here!
  • X.org (for people using the unstable pre-releases)
    • 7.0.0_rc2 works fine so far, but the contrast/xvideo bug is still valid. since xorg-7.0 is stable bug is solved.
    • There is no x11-drivers ebuild for the synaptics module. The old ebuild installs the synaptics module into a different directory. ln -s /usr/lib/modules/input/synaptics_drv.so /usr/lib/xorg/modules/input/ fixes it. Now synaptics for x11 work fine.
    • Use this howto to upgrade (the hint is actually given after the upgrade).
  • BIOS
    • Warning: BIOS versions greater than A02 may lock down your CPU speed because of thermal throttling. Even though this is a feature, the CPU speed doesn't get up again (which is IMHO a bug). See the Talk:HARDWARE_Dell_Latitude_X1 for details.
    • BIOS rev. A05
    • Dell now offers BIOS rev. A04.
      • You can download the changelog from: ftp://ftp.us.dell.com/bios/LX1_A04.TXT
      • Enhancements of rev 4:
        • 1. Added support for Battery Health Meter(BHM).
        • 2. EDiag PSA Build 3018.
        • 3. Added support for Absolute Computrace Security Solution Feature.
  • Kernel 2.6.17
    • SD/MMC Card reader modules are in all Linux-2.6.17 and work's great. Look here
    • Suspend to ram is safe.
    • Some updates in IPW2200 wireless driver (add QoS support).
    • Software Suspend 2 kernel patch is not alvaliable, for now.
  • Kernel 2.6.16
    • Suspend to ram is 99% safe.
    • Some important updates in IPW2200 wireless driver.
    • Software Suspend 2 kernel patch is available for this kernel too.
  • Kernel 2.6.14
    • The new kernel provides IPW2200 wireless driver.
    • Software Suspend 2 kernel patch is only available for 2.6.14-rc3 Software Suspend 2 kernel patch is available for 2.6.14 and seems to work well. http://www.suspend2.net/
    • Suspend to ram isn't 100% safe.
    • The evdev module (required by the synaptics touchpad-module of X) is not loaded automatically anymore, add it to /etc/modules.autoload.d/kernel-2.6.
  • Kernel 2.6.13
    • The new kernel seems to work more reliable concerning suspending to ram.
    • Plugging off the notebook while hibernating seems to be safe now.
    • Slight performance improvements.
    • If you have dhcp problems, you need to update to ipw2200-1.0.6-r2.
    • Poweroff after hibernate is not working w/o a patch. You need to update either to suspend2-sources-2.6.13-r2, or apply the patch found in /usr/portage/sys-kernel/suspend2-sources/files/linux-2.6.13-poweroff.patch if you use your own suspend2-kernel.

[edit] BIOS updates

Dell has release a couple of BIOS updates, addressing some issues and adding some features (changelog: ftp://ftp.us.dell.com/bios/LX1_A05.TXT). But beware! Some people have reported a serious performance issue with versions A03 and later, where the CPU frequency (or the maximum CPU frequency if CPU frequency scaling is active) is lowered when the temperature reaches 70 degrees celsius. Downgrading to version A02 is a solution if you have this problem.

BIOS flashing instructions:

  • Get FlashBIOS from [1] (currently, the file named LX1_A05.EXE)
  • Get FreeDOS compressed boot image from here: [2]
 bunzip2 -c fdboot.img.bz2 > fdboot.img
 mount -o loop -t msdos fdboot.img /mnt/floppy # as root
 cp LX1_A05.EXE /mnt/floppy/
 umount /mnt/floppy
 mkdir -p cdrom/boot
 mv fdboot.img cdrom/boot/boot.img
 mkisofs -r -b boot/boot.img -c boot/boot.catalog -o bootcd.iso cdrom/
 cdrecord blank=fast # if you use rewritable CD
 cdrecord -dao -eject -v bootcd.iso
 reboot # and boot from the CD you just created

[edit] Booting the Gentoo LiveCD

When booting from the 2006.0 Live CD one may encouter a problem where the CD-rom can't be found again after the kernel has been loaded. The problem can easily be circumvented by using the fix provided for the slow USB CD-rom unit of the IBM BladeCenter, namely to load the kernel with the dobladecenter parameter:

boot: gentoo dobladecenter

The 2004.3 worked without any problems. The device is plugged as powered USB drive, but when booting from it, it shows up as IDE device.

Using the 2005.0 Live CD you may get this error:

Determining root device...
The root block device is unspecified or not detected.
Please specify a device to boot, or "shell" for a shell...
boot() ::

Enter shell to enter the shell.

Now try to find the USB CD-ROM drive:

cat /proc/scsi/scsi
cat /proc/scsi/usb-storage/0 [your number here may vary]
cat /proc/sys/dev/cdrom/info [I found my drive name was "sr0"]
ls -l /dev/sr0 [shows that the device doesn't exist]
cat /proc/devices | grep sr [shows me the major node (?), mine is "11 sr"]
mknod /dev/sr0 b 11 0
exit

The LiveCD will prompt again for the boot device ("boot() ::"), enter /dev/sr0 to boot into the liveCD.

For the Samsung Q30 with a firewire drive, use the doscsi parameter when loading the kernel to boot directly.


[edit] Booting from Knoppix LiveCD

If the above hack using mknod doesn't work for you, you may want to follow the Gentoo Linux alternative installation method below:

http://www.gentoo.org/doc/en/altinstall.xml#doc_chap3

[edit] CFLAGs

For Pentium-M, the CHOST is the standard 686 one:

CHOST="i686-pc-linux-gnu"

If you use GCC <3.4.3, there is no pentium-m arch, you need to use pentium3. Using GCC 3.4.3 or later, you might want to try -march=pentium-m. Those CFLAGS are known to be safe:

CFLAGS="-O2 -march=pentium3 -pipe -mfpmath=sse"
CXXFLAGS="${CFLAGS}"

[edit] X Configuration

[edit] Graphics controller

There are two major issues with the graphics controller:

  • The video BIOS doesn't know about the display's native resolution.
  • Hardware acceleration will be available with X.org 6.9, which has not been released yet.

[edit] Getting the right resolution

Update: After upgrading to x11-base/xorg-server-1.3.0.0 and x11-drivers/xf86-video-i810-2.0.0 the resolution is correctly autodetected and 855resolution is not needed anymore. Also the VGA output seems to work reliably now using x11-apps/xrandr-1.2.0 even after multiple suspend and resume cycles.

Since the video BIOS of the Intel Mobile 915GMS doesn't support the display's resolution of 1280x768, you need to patch it using a tool called 855resolution. The has been developed for the 855 chipset, but the latest version supports the new 915 chipset as well. There is also a tool called 915resolution which has an ebuild on bugs, but the other tool seems to work better on the Latitude X1. Additionally, the 855resolution tool is already in portage.

  • Unmask the package and emerge it:
echo "sys-apps/855resolution ~x86" >> /etc/portage/package.keywords}}
emerge 855resolution
  • List the modes, pick one and patch the BIOS: 855resolution <Mode Nr> <X res> <Y res>
Code: # 855resolution -l
855resolution version 0.4, by Alain Poirier

Chipset: Unknown (id=0x25908086)
VBIOS type: 2
VBIOS Version: 1205

Mode 30 : 640x480, 8 bits/pixel
Mode 32 : 800x600, 8 bits/pixel
Mode 34 : 1024x768, 8 bits/pixel
Mode 38 : 1280x1024, 8 bits/pixel
Mode 3a : 1600x1200, 8 bits/pixel
Mode 3c : 1280x768, 8 bits/pixel
Mode 41 : 640x480, 16 bits/pixel
Mode 43 : 800x600, 16 bits/pixel
Mode 45 : 1024x768, 16 bits/pixel
Mode 49 : 1280x1024, 16 bits/pixel
Mode 4b : 1600x1200, 16 bits/pixel
Mode 4d : 1280x768, 16 bits/pixel
Mode 50 : 640x480, 32 bits/pixel
Mode 52 : 800x600, 32 bits/pixel
Mode 54 : 1024x768, 32 bits/pixel
Mode 58 : 1280x1024, 32 bits/pixel
Mode 5a : 1600x1200, 32 bits/pixel
Mode 5c : 1280x768, 32 bits/pixel

# 855resolution 5c 1280 768
855resolution version 0.4, by Alain Poirier

Chipset: Unknown (id=0x25908086)
VBIOS type: 2
VBIOS Version: 1205

** Patch mode 5c to resolution 1280x768 complete

Note: This only patches the RAM version of the BIOS, so you need to apply it on each reboot, and when resuming from disk as well. Since you need to patch in different places, it is better to have a small script. While emerging 855resolution, a small init script has been installed. You can configure the script in /etc/conf.d/855resolution. The mode number 5c is the last one in the list, and works quite well. The drawback of using the tool is, that it will make some other modes unavailable in our case. Using 5c, you will at least keep the 1024x768 mode, e.g. for presentations.

  • Change /etc/conf.d/855resolution to read those lines:
 replace[0]="5c"
 with[0]="1280 768"
  • Patch the BIOS while booting:
 rc-update add 855resolution default

As already mentioned, you need to patch the BIOS while resuming from software suspend2. This can be done by calling the init-script from hibernate.conf. The line "OnResume <number> <command>" allows for exection of commands at specific moments. According to the suspend2 wiki, the best for patching the video BIOS is with number 86.

  • Add this line to /etc/hibernate/hibernate.conf:
 OnResume 86 /etc/init.d/855resolution restart

If you will use the ACPI disk state instead of hibernate, you might want to try to restart the script on various ACPI events. Patching the video BIOS with the same values again, doesn't seem to be a problem.

[edit] Hardware Acceleration / DRI

To watch DVDs, you need hardware acceleration. The kernel modules for hardware acceleration are available since kernel version 2.6.12, it is fine to use the recent gentoo-sources. But this module will only be supported by X.org

Note: This can make your system unstable, even though it probably will work for most people.
Note: Check if you have "dri" USE flags enable, if not you must enable it.
Note: You *must* have VM86 enabled in your kernel for this driver to work.

  • Install version of X.org :
 emerge -va xorg-x11
  • Configure the kernel for i915 DRI support:
Linux Kernel Configuration: AGP & DRI
Device Drivers  --->
  Character devices  --->
    <*> /dev/agpgart (AGP Support)
    <*>   Intel 440LX/BX/GX, I8xx and E7x05 chipset support
    <M> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
    <M>   Intel 830M, 845G, 852GM, 855GM, 865G
    <M>     i915 driver

Note: You cannot have (experimental) intel 810/815 support enabled

Linux Kernel Configuration: intel 810/815 support
Device Drivers  --->
   Graphics support  --->
      < > Intel 810/815 support (EXPERIMENTAL)


  • Add the modules to /etc/modules.autoload.d/kernel-2.6:
 echo "drm" >> /etc/modules.autoload.d/kernel-2.6
 echo "i915" >> /etc/modules.autoload.d/kernel-2.6
  • Device section of xorg.conf:
File: /etc/X11/xorg.conf
Section "Device"
  Identifier "Card0"
  Driver "i810" # if it doesn't work, fall back to "vesa"
  BusID "PCI:0:2:0"
  Screen 0
  # increase the RAM, available for the controller
  VideoRam      131072
  # you will need this option to restore the console when using vesa-tng / fbsplash
  Option        "VBERestore" "true"
EndSection

Patching X.org, as suggested in the i915 Sonoma thread in the Gentoo forums doesn't seem to be necessary, in our case.
Another gentoo forums discussion on running Xorg with i915: [3].

I did need to patch X11 to get Xv and DRI working, using xorg-x11-6.8.99.15-r4, suspend2-sources-2.6.14-r7, and 64 MB of VideoRam. The patch (also discussed in the above-mentioned threads) was originally published in this mailing list posting about i915. I went the quick'n'dirty route though: I didn't create a custom ebuild, but just stopped emerge after the source was unpacked, patched /var/tmp/portage/xorg-x11-*/..., and continued emerge. -- Felix Wiemann

[edit] Dual Head / Xinerama / External Monitor

Attaching a monitor doesn't work yet reliably. However, what you need to do, is add a line to the device section, like:

MonitorLayout "CRT+DFP,LFP"

This means that there is a CRT or Digital Flat Panel at pipe A, and the laptop's own screen (Local Flat Panel) at pipe B. The LFP always is on pipe B, trying something like "LFP,CRT+DFP" will fail! For setting xorg.conf up for two monitors, have a look at HOWTO Dual Monitors. Dual head mode is still unstable on this notebook. For further options for the i810 driver refer to "man i810". Have a look on the example xorg.conf in the appendices, you will find an example configuration for xinerama as well.

You might want to try the i855crt tool, which tries to enable the other pipe for VGA out (didn't work for my tft, but might be worth a try). http://i855crt.sourceforge.net/ You will need this patch from the sourceforge page, and recompile the tool (otherwise the graphics board wont be recognized).


UPDATE 5th July

The dual screen/xinerama option is indeed fragile but I managed to get it working with the standard fedora core 5 distribution - no extra libraries or patches required. I used a trick I found listed for a different laptop. It comes down to setting /etc/X11/xorg.conf up appropriately. I am using a Samsung Q30 but it should work for a Dell X1 too. Good luck! Note this setup is conservative. I've turned off graphics acceleration and other things. Maybe they will work too... Note also that the gnome display gui won't work any more. Anyway, just save the text below as /etc/X11/xorg.conf


Section "Files"
       FontPath     "unix/:7100"
EndSection
Section "Module"
       Load  "i2c"
       Load  "bitmap"
       Load  "dbe"
       Load  "ddc"
       Load  "extmod"
       Load  "fbdevhw"
       Load  "glx"
       Load  "record"
       Load  "freetype"
       Load  "type1"
       Load  "int10"
       Load  "synaptics"
       Load  "dri"
       Load  "vbe"
EndSection
Section "InputDevice"
       Identifier  "Keyboard0"
       Driver      "kbd"
       Option      "XkbModel" "pc105"
       Option      "XkbLayout" "us"
EndSection
Section "InputDevice"
       Identifier  "Mouse0"
       Driver      "mouse"
       Option      "Protocol" "IMPS/2"
       Option      "Device" "/dev/input/mice"
       Option      "ZAxisMapping" "4 5"
       Option      "Emulate3Buttons" "yes"
EndSection
Section "InputDevice"
       Identifier  "Synaptics"
       Driver      "synaptics"
       Option      "Device" "/dev/input/mice"
       Option      "Protocol" "auto-dev"
       Option      "Emulate3Buttons" "yes"
EndSection
Section "Device"
       Identifier  "Videocard0"
       Driver      "i810"
       VendorName  "Videocard vendor"
       BoardName   "Intel Corporation 82852/855GM Integrated Graphics Device"
       BusID       "PCI:0:2:0"
       Screen      0
       Option      "MonitorLayout" "CRT,LFP"
       Option      "AGPMode"      "0"
EndSection
Section "Device"
       Identifier  "Videocard1"
       Driver      "i810"
       VendorName  "Videocard vendor"
       BoardName   "Intel Corporation 82852/855GM Integrated Graphics Device"
       BusID       "PCI:0:2:0"
       Screen      1
       Option      "MonitorLayout" "CRT,LFP"
       Option      "AGPMode"      "0"
EndSection
Section "Monitor"
       Identifier  "Laptop LCD"
       Option      "DPMS"
EndSection
Section "Monitor"
       Identifier  "Desktop CRT"
       Option      "DPMS"
EndSection
Section "Screen"
         Identifier      "Screen0"
         Device           "Videocard0"
         Monitor           "Laptop LCD"
         DefaultDepth      24
         SubSection "Display"
               Depth           24
               Modes           "1280x1024" "1024x768"
         EndSubSection
EndSection
Section "Screen"
         Identifier          "Screen1"
         Device                "Videocard1"
         Monitor               "Desktop CRT"
         DefaultDepth      24
         SubSection "Display"
               Depth           24
               Modes           "1280x1024" "1024x768"
         EndSubSection
EndSection
Section "ServerLayout"
       Identifier      "DefaultLayout"
       Screen          0 "Screen0" 0 0
       Screen          1 "Screen1" RightOf "Screen0"
       InputDevice     "Keyboard0" "CoreKeyboard"
       InputDevice     "Synaptics" "CorePointer"
       InputDevice     "Mouse0" "AlwaysCore"
       Option          "Xinerama" "On"
       Option          "Clone"    "Off"
EndSection

[edit] PCI data

lspci output of the graphics controller:

0000:00:02.0 VGA compatible controller: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev 03)
0000:00:02.1 Display controller: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev 03)

Note: The controller apears two times. This is a feature and might be used in the future for some performance gain.

[edit] Synaptics Touchpad

The touchpad is from synaptics, you may follow the instructions from HARDWARE Synaptics Touchpad

If you like to have a more 'stable' configuration (no fancy mouse button emulations), you can use this as InputDevice section in xorg.conf:

File: /etc/X11/xorg.conf
Section "InputDevice"
 Driver "synaptics"
 Identifier "Touchpad"
 Option        "Device"        "/dev/input/mouse0"
 Option        "Protocol"      "auto-dev"
 Option        "LeftEdge"      "1700"
 Option        "RightEdge"     "5300"
 Option        "TopEdge"       "1700"
 Option        "BottomEdge"    "4200"
 Option        "FingerLow"     "25"
 Option        "FingerHigh"    "40"
 Option        "MaxTapTime"    "180"
 Option        "MaxTapMove"    "220"
 Option        "VertScrollDelta" "100"
 Option        "MinSpeed"      "0.06"
 Option        "MaxSpeed"      "0.15"
 Option        "AccelFactor"   "0.0015"
 Option        "SHMConfig"     "on"
 Option        "TapButton1"	"1"
 Option        "TapButton2"	"1"
 Option        "TapButton3"	"1"
 Option        "LTCornerButton"	"2"
EndSection

[edit] Keyboard

[edit] Special Keys

There is a Dell notebook keyboard model for X, which works for most of the special keys. For using it, add this line to the input device section of your keyboard in /etc/X11/xorg.conf:

Option          "XkbModel"      "inspiron"

Alternativley you can set it using the control center of KDE. In the keyboard layout part, change the keyboard model to "Laptop/notebook Dell Inspiron 8xxx".

Have a look at HOWTO Use Multimedia Keys for more info on mapping still unknown special keys and using them in a desktop environment.

[edit] Repeated Keystrokes

If you experience that the system repeats your keystrokes many times, you may want to consider not using the ondemand CPU frequency policy with cpufreqd. I experienced repeated keystrokes every time the system increased the CPU speed (e.g. the enter key was repeated when typing "emacs<ENTER>").

[edit] Network

[edit] Ethernet

It's a Broadcom NetXtreme BCM5751 which is supported by the Broadcom Tigon3 kernel driver:

Linux Kernel Configuration: Ethernet
 Device Drivers  --->
   Networking support  --->
     [*] Networking support
     Ethernet (1000 Mbit)  --->
       <*> Broadcom Tigon3 support

If you build it as a module, it will be called "tg3".

[edit] Wireless

Nothing special to mention here, the instructions of HARDWARE ipw2200 and HOWTO Wireless Configuration and Startup.

[edit] Sound

AC97 compatible, using ALSA (enable the alsa USE flag):

Linux Kernel Configuration: Sound & Modem
 Device Drivers  --->
  Sound  --->
    <*> Sound card support
    Advanced Linux Sound Architecture  --->
       <M> Advanced Linux Sound Architecture
       PCI devices  --->
         <M> Intel/SiS/nVidia/AMD/ALi AC97 Controller
         <M> Intel/SiS/nVidia/AMD MC97 Modem (EXPERIMENTAL)

You will need this .asoundrc in your homedir, otherwise you might hear some click sounds (at least with headphones, the built-in speaker isn't good enough to hear them).

[edit] Modem

This is adapted and taken from: HARDWARE Gentoo Acer Travelmate 803LCi Manual#Internal modem

Make sure, you have the alsa MC97 Modem module selected (like shown in the Sound section).
This will create an ALSA module for the modem.

Simply add ALSA support to your make.conf and emerge slmodem which is in portage with

File: /etc/make.conf
SUPPORT_ALSA=1

Now run emerge slmodem.

After a successfull emerge add the following line to /etc/modules.d/alsa. If the doesn't exist, just create it:

File: /etc/modules.d/alsa
alias snd-card-1 snd-intel8x0m

Load the module (and set it to load at boot):

# modprobe snd_intel8x0m
# echo "snd_intel8x0m" >> /etc/modules.autoload.d/kernel-2.6

For the first time run the driver with (replace <country> with an appropriate value, usually the english name of your country in capital letters):

# slmodemd -a hw:1 -c <country>

If everything is fine, a device /dev/ttySL0 has been created, otherwise you will see an error message. Press Ctrl-C to exit. To start the smartlink modem using the init script, you need to edit /etc/conf.d/slmodem . Set the variable COUNTRY to an appropriate value, and change the HW_SLOT line:

HW_SLOT=hw:1

Note: You need to be in the dialout group to use the modem, or set the variable GROUP to a different value. A symlink /dev/modem will be created to the device.

Now try to start the init script and ensure the device has been created:

# /etc/init.d/slmodem start
# ls /dev/ttySL0

Add the modem to the default runlevel:

# rc-update add slmodem default

The hardware part is done now. If you want to set up a dial up connection, refer to HOWTO Setup a Dialup Connection. In KDE you might want to use the tool kppp. In anycase, you will need the package net-dialup/ppp to be emerged:

# emerge net-dialup/ppp

Remember: Your modem device is /dev/modem (or w/o symlink /dev/ttySL0).

[edit] Compact Flash

Compact flash readers are similar to PCMCIA devices, the CF slot is recognized by the kernel as CardBus socket. You might want to enable the pcmcia USE flag.

Kernel Options for PCMCIA:

Linux Kernel Configuration: Compact Flash: PCMCIA
Bus options (PCI, PCMCIA, EISA, MCA, ISA)  --->
  PCCARD (PCMCIA/CardBus) support  --->
    <*> PCCard (PCMCIA/CardBus) support
    [ ]   Enable PCCARD debugging
    <*>   16-bit PCMCIA support
    [*]   32-bit CardBus support
    --- PC-card bridges
    <*> CardBus yenta-compatible bridge support

To mount the card, you need to enable ide-cs support:

Linux Kernel Configuration: Compact Flash: IDE-CS

Kernel Options:

Device Drivers --->
 ATA/ATAPI/MFM/RLL support --->
  <*> PCMCIA IDE support

Emerge the PCMCIA tools and start them at boot time:

emerge pcmcia-cs
/etc/init.d/pcmcia start
rc-update add pcmcia boot

This is not tested, but seems to be working.

If you are using kernel version >=2.6.13 you should emerge sys-apps/pcmciautils instead of sys-apps/pcmcia-cs. After inserting a CF card the devices /dev/hdc and /dev/hdcX will be created. This is tested and works.

[edit] SD / MMC

Flash memory reader on the PCI bus:

0000:02:01.2 Class 0805: Ricoh Co Ltd SD Card reader (rev 17)

Development of the sdhci driver was initiated in November 2005. Now sdhci is in Linux-2.6.17. You only need to compile with these options:

CONFIG_MMC=m
CONFIG_MMC_BLOCK=m
CONFIG_MMC_SDHCI=m

and load mmc_core, sdhci and mmc_block modules with:

modprobe mmc_block && modprobe sdhci

Insert your card into the drive (SD and MMC works well,try MS/MSPro if you have one) and a block will be created at /dev/mmcblk0p1.Then mount it

mount -t auto /dev/mmcblk0p1 /mnt/yourmountpoint

Old patches:

A new funtional patch-0.7 for sd/mmc card here (it WORK well with my sd card!!)

Last patch 0.10 here more quick, about 1,5 MB/s with my X1.To install it:

download all the *.bin files in the /usr/src/linux directory

cd /usr/src/linux
patch -p1 < *.bin
make menuconfig (add mmc support,sdhci and mmc_block modules)
make modules && make modules_install
modprobe mmc_block && modprobe sdhci

[edit] ACPI / Software Suspend 2

ACPI:


  • The 'sleep' state works, but with the CVS version of X.org and the i915 it might get stuck in the state.
  • 'standby' doesn't do anything.
  • 'disk' has problems awaking (you can get it awake by put it via e.g. the lid/power-button to the 'sleep' state and back on).

Using the vesa driver for X, it also resumed from the disk state. The general problem is, that you would need to flash the video BIOS while resuming. Maybe it would be possible to do this by catching an ACPI event (even though there is no special wake-up event sent, e.g. battery/ac-adapter events occur while resuming). However, the vesa performance is quite poor, so I rather stick to the i810 driver.

Basic configuration for ACPI, including scripts and configs to catch power button and lid events: TIP ACPI basic configuration.

Software Suspend 2 is working (gentoo-sources-2.6.12-r6, swsusp 2.1.9.5). Some issues you need to know, to get it working:

  • You only need to install >=ipw2200-1.0.4 for the wireless card.
  • Once resumed, you might need to switch to console and back to X, to wake up your display. You can add a line to hibernate.conf, with an xset command line to wake it up while resuming (OnResume 00 xset -display :0 dpms force on).
  • The CPU frequency might get stuck when resuming from disk. Solution:
    • Compile speedstep and governors as modules, set the userspace as default governors.
    • On suspend, change to the userspace governor, set the frequency to 1100000 and unload the modules
    • On resume, load the modules (just put them into /etc/modules.autoload.d/kernel-2.6) and set e.g. the ondemand governor.

Have a look at the hibernate.conf in the appendices.

Linux Kernel Configuration: Power Management
Power management options (ACPI, APM)  --->
  CPU Frequency scaling  --->
    [*] CPU Frequency scaling
    [ ]   Enable CPUfreq debugging
    <M>   CPU frequency translation statistics
    [ ]     CPU frequency translation statistics details
     Default CPUFreq governor (userspace)  --->
    <M>   'performance' governor
    <M>   'powersave' governor
    ---   'userspace' governor for userspace frequency scaling
    <M>   'ondemand' cpufreq policy governor
    <M>   CPU frequency table helpers
    ---   CPUFreq processor drivers
    <M> Intel Enhanced SpeedStep
    [*]   Use ACPI tables to decode valid frequency/voltage pairs
    [*]   Built-in tables for Banias CPUs

[edit] Temperature

It is possible to read the temperature from proc, if you have ACPI / thermal zone activated in the kernel:

cat /proc/acpi/thermal_zone/THM/temperature

Some tools require the i8k kernel driver to show the temperature:

Linux Kernel Configuration: Dell Laptop Support
Processor type and features  --->
  <*> Dell laptop support

The i8k driver was actually designed for for Inspiron 8xxx notebooks, so it is unwilling to be loaded. It is possible to force it by passing "force=1" as parameter when loading it as module, or, if compiled-in, by writing "i8k.force" in the kernel line.
Since the X1 neither has special buttons nor fans, the i8kutils are useless.

[edit] Bluetooth

Note:if you disable the device from redmond's OS (by the icon,not the Fn+F2 keys) the device will NOT work under Linux!Interface will be recognized but you will not be able to do scanning or make connections!

Following are clips from HOWTO mobile phone, Bluetooth and GNOME and http://dev.gentoo.org/~puggy/btmouse-howto/btmousehowto.html with a little extra and special for Latitude X1.

Make sure that you have usb hotplugging enabled. Disable from kernel "USB Bluetooth support" this cannot be enabled simultanious with Bluetooth subsystem. HDIP protocol needed for bluetooth mouse.

Linux Kernel Configuration: Bluetooth
Device Drivers --->
  USB support --->
    --- USB Bluetooth TTY can only be used with disabled Bluetooth subsys
    <*> UHCI HCD (most Intel and VIA) support
  Networking Support --->
    <M> Bluetooth subsystem support
    <M> L2CAP protocol support
    <M> RFCOMM protocol support
    <*>   RFCOMM TTY support
    <M> HIDP protocol support
    Bluetooth device drivers --->
      <M> HCI USB driver
 modprobe bluetooth
 emerge -av bluez-utils openobex
 /etc/init.d/bluetooth start

Testing the installation

 heidi ~ # hciconfig hci0 up # Might or might not be required.
 heidi ~ # hciconfig
 hci0:   Type: USB
         BD Address: 00:10:C6:64:31:96 ACL MTU: 384:8 SCO MTU: 64:8
         UP RUNNING
         RX bytes:147738 acl:11060 sco:0 events:393 errors:0
         TX bytes:755 acl:17 sco:0 commands:25 errors:0

And adding it to runlevel default

 rc-update add bluetooth default

Useful tool to scan/inquiry devises is the hcitool command.

 hcitool inq
 hcitool scan

Next start hidd and connect it to your bluetooth device found at XX:XX:XX:XX:XX:XX. Notice that hcitool and hidd are somehow overlapping. After starting hidd, hcitool cannot find devices. My guess is that hidd reserves the device to itself. I am using my microsoft bluetooth mouse as an example.

 hidd --server
 hidd --connect XX:XX:XX:XX:XX:XX

or you can try to search the device by

 hidd --search

and add hidd to startup

 rc-update add hidd default

Back to mouse example. Your mouse shoud appear as /dev/input/mice. You can add this to your operating system as an input device. I am using xorg so my /etc/X11/xorg.conf looks like:

   Section "InputDevice"
       Driver "mouse"
       Identifier "Mice"
       Option "Device" "/dev/input/mice"
       Option "Protocol" "ExplorerPS/2"
       Option "ZAxisMapping" "6 7"
       Option "Buttons" "7"
   EndSection
   Section "ServerLayout"
       Identifier "XFree86 Configured"
       Screen 0 "screen0"
       InputDevice "Mice" "CorePointer"
       InputDevice "Keyboard0" "CoreKeyboard"
   EndSection

After restarting X, both the touchpad and mouse should work.

[edit] Misc

  • If you hear a high-pitched beeping while the system is idle, try to add 'idle=halt pci=bios' to your kernel line.
    • idle=halt is not a good solution to this problem, since it disables all less power consuming ACPI c states. It is better just to disallow the higher c states which cause the noise (C3 and C4). Using sysfs it is easy to achieve that: echo 2 > /sys/module/processor/parameters/max_cstate.
    • Another solution is patching the kernel to use a lower timer interrupt (have a look at the link for more info).
    • Credits and patch how-to: Thinkpad-Wiki: high pitched noises.
  • It looks like there are problems with the cdemu/loop kernel modules, and the DVD burner (at least starting k3b completely locks the system, if they are loaded). Used: kernel 2.6.11-gentoo-r9, cdemu 0.7.
  • The graphics driver seems to have a problem with contrast/brightness of xvideo overlays. The default value of the contrast attribute should be 64, but most applications will set it to 128. Install xvattr (emerge xvattr) with the gtk useflag enabled, which offers a commandline tool and graphical frontend to change Xvideo attributes. For the frontend, run gxvattr; for setting the value via shell, run xvattr -a XV_CONTRAST -v 64.

[edit] Appendix

Some files, lspci output: HARDWARE Dell Latitude X1 Appendices

[edit] Other Resources

http://www.stud.ntnu.no/~gronslet/blog/linux-on-a-dell-x1-aka-samsung-q30
http://www.linux-on-laptops.com/dell.html
http://friki.org/descarregues/manuals/x1/ (in catalan)
HOWTO mobile phone, Bluetooth and GNOME
http://dev.gentoo.org/~puggy/btmouse-howto/btmousehowto.html

--Kottlett 10:53, 12 Jun 2005 (GMT)

--Dve Bluetooth 21:25, 27 Oct 2005 (CET)

Personal tools