| |||
Acknowledgements: This document describes the steps to get Linux running on the Dell Latitude D600. This will primarily be Debian, but i also will try other, since my employer uses primarily Redhat and i'm also testing around with Gentoo, Knoppix and a couple of other distributions out there. And of course i will try to install Slackware, since that's where i started with Linux. I've had a couple notebooks through time and allways had Linux on them, but never really made the effort to document my setup. Also the Dell Latitude is so full of new hardware, that can get complicated to get started. So i thought sharing my experience on this area could not be bad. This document is provided as is, of course. Feel free to use the info provided here, but don't blame me, if it doesn't work. Feedback however is allways appreciated. I can't be made responsible for data loss or other damages in any way. Another note: most of this stuff can also be used for the Dell Inspiron 600m, it's hardware is nearly identical. The ArrivalOn March 11th, 2003 my notebook finally arrived (2 weeks late, but what, shit happens, when you choose the best from everything, that's on the list.) First thing i did was plug in my USB SC-card reader with a 128 MB SC-card containing RUNT in the USB 2.0 slot on the back of the thing. Of to the BIOS, switch but of USB Storage before boot of harddisk and reboot. This thing just boots directly in and in the matter of 2 1/2 minuttes i had Linux booted up on the notebook. Yes, there is no graphical environment on RUNT but for testing, exploring or installing a boot manager this is just nice. Next step: Booting Knoppix from Live-CD. After rebooting the Notebook (of course unplugging the usb card reader and making sure, that also CD boots before the harddisk is booted) it starts up on Knoppix. This distribution detects ACPI, SigmaTel Soundcard, ATI Radeon 9000 (you should specify "knoppix screen=1400x1050" if you have the SXGA+ screen), Broadcom Gbit Nic and the build-in Bluetooth Module. The SmartCard reader can't be detected. I'll have to look on that. The Knoppix release i used was release 3.2 (20030330). HardwareTech Specs:
Dell does not carry that router anymore. It has been replaced by the TrueMobile 2300 which supports 802.11b/g, but looks quite the same both in looks and also the webinterface. BootingDOS from USB SD-Card ReaderEven though this notebook runs Linux, sometimes i need DOS to upgrade BIOS and other things. Since i didn't buy the floppy drive (that is optional) it get's a bit complicated. I have my USB SD-Card Reader (any USB Memory Device should do it) to fix that problem. On http://www.memorykeytools.com/ i found, beyond the Windows 98 USB Storage Drivers, a tool that makes it possible to format most memory storage devices on w2k/xp (yeah .. i know, it says Dell, but it works nicely with most other memory pens and also my SD and MMC cards in an usb reader) bootable. It even automatically installs FreeDOS, if you wish so. Unfortunately the tool has been removed from the website, so you can find a zip archive containing the little tool here. On Windows 98 with the drivers, it should work without these tools, to format a USB device as DOS bootable thingy. If you want to boot DOS from a floppy, still beeing able to gain access to your USB pen, DUSE should be just the thing for you. It's a DOS driver for USB storage devices. After preparing a SD-Card with that tool i had no problems booting to it (remember to set the boot order in the bios) and upgrade my BIOS from there. Besides, the reader that i use is a Dazzle Zio!. It's as little as a usb pen and comes in quite handy when i want to access SD and MMC cards, that i also use for my Palm, the MP3 Player of my Ericsson T39m and the Nokia Communicator. These cards are also common in some digital camera's and aren't very big, so you can allways carry a couple of them around with you, if you want. The reader is USB 1.1 and works perfect under Linux and practically most other operating systems. In general if you need some good bootdisks with cdrom, network etc. support have a look at Bart's Boot disks. He's building a modular system of putting your own DOS bootdisk together. In time i might provide images specific for the D600/D800 here also. Floppy In the meanwhile i got myself a floppydrive anyway. The floppydrive supplied with the D600 (and all other D-Series notebooks) can be connected via a USB-to-MiniUSB cable or by sliding it into the Mediabay. You can boot from it as usual, but when it comes to accessing it in Linux, you'll suddenly find out, that there is no floppydrive controller present. To make things simple Dell just took a plain usb floppy as Mediabay device. So you'll have to load the usb-storage module and mount the floppy as /dev/sda (assuming, that the floppydrive is the first storage device on usb/firewire/scsi/etc). Much more is there not about it. InstallationDebian Sarge Installation starts from CD's. I have a full 8 CD's Debian Woody 3.0r1, thats 7 + updates, but you probably don't need them all, especially because i've done some of the work for you guys out there. The kernel-package containing most of the drivers (NIC, ACPI, etc.) is here.
DSDT table The DSDT table describes the hardware features and their parameters, like battery status for the notebook battery, fan speeds, temperatures on thermal zones and so on. These are quite different for every machine, reasonable enough. If you have installed a kernel, that supports custom DSDT table, and want to use that feature, you'll have to copy dsdt-d600-a03.aml to /boot and add the following line to your /etc/lilo.conf:
initrd=/boot/dsdt-d600-a03.aml
Best in the section for the kernel you just installed. Remember running lilo before you reboot. The
original description about the custom DSDT table patch can be found here.The biggest problem installing Debian (or Linux) on this notebook is actually getting the nic to work. If you have worked with Dell's servers before, you shouldn't have any problem, since the nic is based on the same chip. Broadcom is part of ServerWorks and their chipsets and NIC's are widely used for Dell's servers. After getting that to work, it's really not a problem. When i finally had network to work (just load the bcm5700 or tg3 module) i upgraded my Woody to Sarge (testing). The ATI Radeon 9000 unfortunately isn't supported yet (will be in XFree 4.3, Woody is 4.1, Sarge is 4.2 currently), but the chances to get it to work there where a bit better. I also added the apt sources for Gnome 2.2 on my machine. Now all it need's is a "apt-get dist-upgrade" to get to Sarge. Here is a list of modules, that i started out with:
ide-scsi
usb-uhci
ehci-hcd
input
usbkbd
keybdev
sound
i810_audio
button
fan
thermal
agppart
radeon
Eventually the agppart module has to be loaded with agp_try_unsupported=1, since it's not sure that it will load. You also should add
append="hdc=ide-scsi" to your /etc/lilo.conf and run lilo again to ensure, that the DVD/CD-RW combo is found as ide-scsi device.
Change your /etc/fstab also, so that it uses /dev/scd0 instead of /dev/hdc, to avoid different problems that could occur due to ide-scsi
emulation enabled.Now to PCMCIA, that need fixing (credits to Mark Holbrook) because it will simply hang forever on boot, if not fixed. In /etc/pcmcia/config.opts you change the line
include port 0x100-0x4ff, port 0x800-0x8ff, port 0xc00-0xcff
to
include port 0x100-0x4ff, port 0xc00-0xcff
That fixes the pcmcia init.d script to hang the complete machine on boot.RedHat Linux 9 I've also prepared kernel rpms for RedHat 9. These can be found at here. These kernel packages are based on the same kernel.spec principle as RedHat's own kernel's. They install themselfes into lilo or grub and the src package consists of the original untouched vanilla kernel tarballs and patches and the additional patches i brought in in seperate files which then upon build are patched together automagically. This way the kernel can easily be modified by adding or removing a patch.
After installing RedHat 9 follow the installation instructions here:
Configuration StepsNetworking One of the things, that might be annoying is that Debian tries to configure the network card every time you boot the machine, regardless if there is a cable plugged in or not. You can press CTRL-C to stop it from polling the non-existing DHCP server, but it still is annoying, especially on notebooks, where you often are switching locations and sometimes not are connected to network or maybe use wlan instead of. ifplugd can solve this. Edit /etc/network/interfaces so that eth0 is configured, but remove it from the "auto" line. This way eth0 will not come up automatically on boot. Afterwards you install ifplugd. This tool will detect if the cable is plugged in or when it gets removed and configures eth0 automatically then. Here is a sample of my /etc/network/interfaces before adding wlan and bluetooth:
auto lo
iface lo inet loopback
iface eth0 inet dhcp
XFree86 (Necessary on Debian, not on RedHat)X works with a few tweaks. You can choose to get it running on the framebuffer driver or to you will have to modify the "Device" settings for the graphics card in /etc/X11/XF86Config-4 to the following:
Section "Device"
Identifier "ATI_Radeon_9000"
VendorName "ATI"
Driver "radeon"
VideoRam 32768
ChipID 0x4242
Option "AGPMODE" "4"
EndSection
By setting the ChipID, we let X assume, that we have a Radeon 8500 instead, which is practically is the same, but has a few
features less. I've also got reports, that "0x4c66" does work better in some cases. After that your X will start up like a
charm. If you have the SXGA+ Display you want to add the "1400x1050" resolution to your screen settings, because why not
use it, if it's there.If you want my complete XF86Config-4 file (i'm currently on 4.2.1), then you'll find it here. WLan When my notebook arrived i had to realise, that there was no support for Broadcom based (TrueMobile 1400 - a/b/g and 1300 - b/g) Wlan cards in Linux. Even the third Wlan option for the D600 (Intel ProWireless 2100) was not supported, which left me without Wlan support. Instead i ordered a Dell TrueMobile 1150 MiniPCI, which is Orinoco/Agere based (802.11b), as sparepart. But it would take some time before i would get that. On the 19th of March i borrowed a TrueMobile 1150 PC-Card (still waiting for my MiniPCI card) from a coworker, plugged it in and YES, it tries to load the modules (these are hermes, orinoco and orinoco_cs). This wont work before you've installed the following packages: pcmcia-cs, linux-wlan-ng and wireless-tools. Also you should add the following lines to your /etc/network/interfaces:
iface eth1 inet dhcp
wireless_enc s:secret
wireless_essid marlow-home
Assuming, that your WLan card gets eth1. The option wireless_enc and wireless_essid are optional.
On March 21st it then finally happened: my long awaited TrueMobile 1150 MiniPCI arrived. Now comes the funny part about this: there is no drivers/configuration difference to this in comparison to the pc-card. This is simply a PC-card in MiniPCI format, which includes an own PCI-to-PCcard bridge. lspci shows it quite clear:
02:01.0 CardBus bridge: O2 Micro, Inc.: Unknown device 7113 (rev 20)
02:01.1 CardBus bridge: O2 Micro, Inc.: Unknown device 7113 (rev 20)
02:03.0 CardBus bridge: Texas Instruments PCI1410 PC card Cardbus Controller (rev 01)
The first two are the regular cardbus slots on the D600, the last one is from the TrueMobile 1150 MiniPCI. No
matter how they implemented this the Dell TrueMobile 1150 is orinoco compatible and there is no problem to get
it working on Linux. There is no easier way.Since October Linuxant offers a driverloader, that acts as wrapper for the Broadcom based Windows drivers, to get them running on Linux. They are available as tar-ball, rpm and Debian packages. It's more or less just following their installation document and worked right away with my TrueMobile 1400. As of version 1.20 of the driverloader it even should support Intel ProWireless 2100 and several others. Finally Intel also has decided to start supporting the PRO/Wireless 2100 adapters on Linux. There is a SourceForge projects, that has been created in March 2004 and they've allready put some source out there. I haven't tested it, since i don't have that Wlan card, but give it a shot (link in the links section). Firewire I had a serious problem with a USB 1.1/2.0/Firewire harddisk of mine, which on the USB port of the Dell Latitude didn't want to work at all (not enough power on the bus). On an active hub it worked for a short while and then went totally mad with I/O errors and stuff like that. I assume it's the USB chipset in the notebook and the chipset in the harddisk case, that simply don't like each other. Unfortunately the D600 doesn't come with a firewire port (the D800 does, but that is way too heavy for my needs. I want a somewhat light notebook and the 3.5 kg weight of the D800 are way too much). So i went shopping and bought myself a Pyro 1394 Port Firewire PC-Card. When i came home, i plugged that in and found out, that it is unpowered :( . I connected the disk to an external power source, then connected it to the card and loaded the modules (ieee1394, ohci1394 and sbp2). Something seems to prohibit the modules from adding the harddisk (the hardware is found), something that i didn't experience before on my desktop with the SB Audigy firewire port. However running this little script rescans all scsi devices and finds the harddisk. The script can add (or remove, with -r) scsi disks on the fly, without removing or reloading modules. So i just have to find a PC-card now, that is powered and i'm set for using my external harddisk when i travel, without the need for an extra power source. Infrared (IrDA) Another option for communication with external devices, like cellphones, PDA and so on is infrared. The modules needed to get that working are:
irport
ircomm
On RedHat you'll also have to load the irtty and ircomm-tty modules and to enable IrDA discovery:
echo -n "1" > /proc/sys/net/irda/discovery
(Debian should have taken care of that for you). After running irattach /dev/ttyS1 -s, /dev/ircomm0 will work, when a cellphone with enabled infrared is seen by
the IrDA port.To check, if the computer does see the cellphone or whatever IrDA device you are trying to get to work, you can do the following:
cat /proc/net/irda/discovery
This will print the IrDA device seen by the port.To use the IrDA port to sync your pda vai pilot-xfer, you also should create a symlink:
ln -s /dev/ircomm0 /dev/pilot
Loading the modules automatically on RedHat can be archieved with the following steps.
Add to /etc/modules.conf:
alias tty-ldisc-11 irtty
alias char-major-161 ircomm-tty
alias irda0 irport
options irport io=0x2f8 irq=3
/etc/sysconfig/irda should look like:
IRDA=yes
DEVICE=/dev/ttyS1
DISCOVERY=yes
and you'll have to do run
chkconfig --level 35 irda on
After that IrDA should be enabled on boot.Bluetooth Communication to a cellphone One important thing for me is the Bluetooth support, since i will use it for syncronizing with my Palm and the most important thing: getting access to the internet via GPRS or HighSpeed Data via the cellphone without the must of having it in sight of the IrDA port. The following modules are needed to get this running: On Debian - add them via modconf or in /etc/modules directly
hci_usb
l2cap
rfcomm
On RedHat (this was testet on RedHat 9) the following lines need to be added to /etc/modules.conf
alias net-pf-31 bluez
alias bt-proto-0 l2cap
alias bt-proto-3 rfcomm
alias tty-ldisc-15 hci_usb
hci_usb (this will also load the bluetooth core, called bluez) is the std. usb
bluetooth devicedriver for usb devices, l2cap and rfcomm are protocol drivers needed for the serial communication.
Unfortunatly the bluez-utils package from testing does not include the rfcomm utility, so we will
need the package from Sid (unstable).
The best way doing this (to have all packages in place) is installing bluez-utils and then upgrade that
package to unstable via lynx:
It's time to pair your cellphone with the notebook. I've got a Ericsson T39m, but this should work with any bluetooth enabled cellphone. Choose pairing on your cellphone, it will find the pc on either "BlueZ (0)", which is the default, or the name you specified. Type the pin-code in and done. Your /etc/bluetooth directory should contain a file called link_key now, which holds the key for the pairing between your cellphone and your pc. Put your phone to active mode (on my Ericsson that is initiating search.) and run hcitool scan to find the MAC address of the phone, which is needed to connect to it. This MAC address goes into your rfcomm configuration (/etc/bluetooth/rfcomm.conf) as:
rfcomm0 {
device 00:11:22:33:44:55;
channel 1;
comment "Ericsson T39m";
}
After this you can initiate the connection to your phone with rfcomm bind 0. To use this connection, you've got
a new device called /dev/rfcomm0, which acts as a normal serial connection to the phone. If you want to use it
as a non-root user, your user must be part of the dialout group.After every session on the device, the channel closes, so it's a good idea to do a "rfcomm release 0 && rfcomm bind 0" before you start a session. To view the status of your sessions, you can just type "rfcomm" and it will print you a list of devices, MAC adresses, channel and status. Also you should give the rfcomm binary a suid bit, if you want to execute it as a normal user, because you can't normally bind and release channels. Comment: The Ericsson i have has to be put in in search mode, before i can connect to it. This may be different on your phone. Check your phone manual for this stuff. Bluetooth PAN (Personal Area Network) The next step is getting PAN to work on Bluetooth. It can be useful, where you can't use WLan or, as it is now with the Broadcom chipset based WLan cards (my Truemobile 1400 :(( ), if you don't have any WLan hardware, that works under Linux. Little update here guys: I just borrowed a Intel PROWireless 2100 WLan card (makes my D600 a real Centrino) and it's the same s***. No drivers for Linux available. Intel has not yet decided, wether they want to support Linux on the Centrino, or not. Back to the installation of Bluetooth PAN: Again I needed to load a couple of kernel modules, to get this to work. On Debian add these to /etc/modules:
bnep
sco
hci_vhci
On RedHat add these to /etc/modules.conf:
alias bt-proto-2 sco
alias bt-proto-4 bnep
alias char-major-10-250 hci_vhci
With these drivers enabled it get's possible to run IP directly on bluetooth (without the need of a PPP layer). Also two Debian
packages are needed (both from unstable right now):
bluez-sdp
bluez-pan
Install these and find the configuration file /etc/default/bluez-pan. Go to the PAND section and change the options as needed.The Master (act's as Bluetooth Access Point and can also be seen as that from Windows machines):
PAND_ENABLED=1
PAND_OPTIONS="--master --listen --service NAP"
For the client you would need:
PAND_ENABLED=1
PAND_OPTIONS="--service NAP -Q"
I'll continue this soon, when i find out about more. Still exploring tons of stuff. CD Burner I've got the HLDS GCC-4240N DVD/CD-RW drive 8X/24X/10X/24X in my D600. Specifications and User Guide can be found here. First of all you will need to load the ide-scsimodule. Eventually add append = "hdc=ide-scsi"to /etc/lilo.conf to ensure, that the cdrom get's detected as scsi drive (Remember to run lilo afterwards). Also create the appropriate devices in /dev:
ln -s /dev/scd0 /dev/cdrom
ln -s /dev/scd0 /dev/dvd
cdrdao configuration is quite easy. The configuration file /etc/cdrdao.conf looks like the following:
write_buffers: 32
write_device: "0,0,0"
write_driver: "generic-mmc"
read_device: "0,0,0"
read_driver: "generic-mmc"
write_speed: 24
and you should be up and running.cdrecord configuration is found in /etc/defaults/cdrecord and looks like this:
CDR_DEVICE=hlds
CDR_FIFOSIZE=4m
hlds=0,0,0 -1 -1 ""
I'm not sure if burnfree is supported, i've got to take myself together and test that. Would mean replacing "" with burnfree in the config.
Battery SavingCPU Speed ACPI has the ability to handle the speed of your CPU via throttling. I'm in the loop to get some benchmarks and battery lifetime stuff done. If you want to set the CPU speed manually, try to run cat /proc/acpi/processor/CPU0/throttling. It will output something like this:
state count: 8
active state: T0
states:
*T0: 00%
T1: 12%
T2: 25%
T3: 37%
T4: 50%
T5: 62%
T6: 75%
T7: 87%
By running echo "7" > /proc/acpi/processor/CPU0/throttling you can set CPU throttling to 87%.More efficient it get's using cpufreqd and the latest kernel, that i packaged. The -ac tree has all the cpufreq updates, so it works quite nicely setting the cpu exactly like it would be needed. They even supply Debian and Gentoo packages. My configuration (/etc/cpufreqd.conf) looks like this:
[General]
pidfile=/var/run/cpufreqd.pid
poll_interval=2
pm_type=acpi
[Profile]
name=perf
minfreq=0%
maxfreq=100%
policy=performance
[Profile]
name=psave
minfreq=33%
maxfreq=33%
policy=powersave
[Rule]
name=AC_on
ac=on
profile=perf
[Rule]
name=AC_off
ac=off
profile=psave
[Rule]
name=DVD_watch
ac=off
programs=xine,mplayer,avidemux,gmplayer
profile=perf
This way my notebook will go down to about 600 MHz, if i'm running on battery, unless i'm seeing a movie. As
soon as the power supply is plugged in, it goes up to 1,6 GHz again. If you not are sure, at what speed your
cpu is running it can be verified by doing a cat /proc/cpuinfoand checking the cpu MHz. Throttling unfortunatly can not be verified that easy (it will allways show 1,6 GHz or whatever speed your CPU is running in /proc/cpuinfo), so i think, this is the nicer way of doing it. However any solution should work. cpufreqd also supports throttling, if the cpufreq feature not is available. Buttonsi8kThere is a special module for the Inspiron and Latitude models, that can read various data from Dell notebooks. Right now this module has to be loaded with the force=1 option, since it does not recognize the Dell Latitude D600 yet. After loading the output you can cat /proc/i8k and get the following output:
1.0 A05 SAMPL0J 60 -22 2 27660 110100 -1 2
| | | | | | | | | |
| | | | | | | | | +---- 10. buttons status
| | | | | | | | +------ 9. ac status
| | | | | | | +----------- 8. right fan rpm
| | | | | | +------------------ 7. left fan rpm
| | | | | +---------------------- 6. right fan status
| | | | +------------------------- 5. left fan status
| | | +---------------------------- 4. CPU temperature (Celsius)
| | +---------------------------------- 3. serial number
| +---------------------------------------- 2. BIOS version
+-------------------------------------------- 1. /proc/i8k format version
The i8kbuttons tool unfortunatly does not seem to work on the D600, it simply does not react to anything.
This tool should have been able to execute commands when pressing the volume buttons. I've mailed the
developer with the infos and we'll see if this get somewhere.acpid Installing acpid itself allready automatically activates your power button. Pressing the power button will simply shut the machine down. This behavior can be changed by editing /etc/acpi/powerbtn.sh, which is the script, that get's executed when you press the power button. Like the power button, you can add other events (example: the lid sensor/button), to start scripts, when these happen. Turning off the backlight is one of the things, that this should do. A tool to turn the backlight off can be found at http://fdd.com/software/radeon/ (Thanks to Matus Telgarsky, for pointing that out). Here are the scripts for turning the backlight of, when the lid is activated: - /etc/acpi/events/lidbtn
event=button[ /]lid
action=/etc/acpi/lidbtn.sh
- /etc/acpi/lidbtn.sh
#!/bin/sh
if [ -f /tmp/ati_blank ]; then
/usr/sbin/radeontool light on
rm /tmp/ati_blank
else
/usr/sbin/radeontool light off
touch /tmp/ati_blank
fi
I packaged the radeontool as Debian package. It can be found at ftp://debian.marlow.dk/dists/woody/laptop/pool/vga/radeontool_1.5-1_i386.deb.To get the backlight turned off, when the xscreensaver starts, it get's a little bit more complicated. I modified the lightwatch.pl script a little bit to fit better to Debian and the package, that i created. The modified perl-script can be found here. Install that somewhere on your system (i put it in ~/bin). This script has to be run, when X allready is started up and is has to start the radeontool as root, so the easiest way of getting around that is either making it suid root (i don't like that) or give your user sudo rights to use radeontool (this is my choice of handling it). As root, i used visudo and added the following line:
marlow ALL=NOPASSWD: /usr/sbin/radeontool *
Having lightwatch.pl start, when i log into X can be archived in .xsession (xdm/startx) or .gnomerc (gdm). Just add the following
lines there:
export DISPLAY=:0
exec ~/bin/lightwatch.pl &
As soon as xscreensaver starts, the backlight automatically is turned off. This helps using less power (about 2W) and prohibts your
screen from getting burned in images of your desktop.Note: This does not work, when xscreensaver locks the screen on activation. Have to have a look at that. Debian SourcesHere are some sources for Debian, that might be of interest:
Links
History
| |||
| Website last modified: Jan 8th, 2007 - 1:39 PM GMT. (C)opyright 1997 - 2007 by Martin List-Petersen | ![]() ![]() |