Next: X Setup Previous: Details Contents

Experiences With a Dell Inspiron 4100

General Setup

Index

BIOS Setup. After power-up or rebooting, press F2 to get into BIOS setup. It's recommended to press F2 just before the Dell logo appears. Responding to numerous customer complaints, Microsoft resolved to get Windows XP to boot more quickly: 30 seconds from pressing the power button to accepting user mouse clicks on the desktop. As part of meeting this goal, modern machines are shipped with the Power On Self Test (POST) in an extremely abbreviated mode, which gives you very little time to get into BIOS setup. You may want to re-enable the full POST, both for paranoia and for easier access to setup. It's on the third page of setup. In ``automatic'' mode the full POST will be run if the previous POST failed to finish, if there's a recognizable hardware change, or some other condition.

You can also get into setup by waiting for the LILO menu to be shown and then pressing Fn-F1 (labelled ``setup''). This could be a better way than using F2 during POST, provided you do use LILO and don't autoboot upon timeout.

Booting. From the factory, it is set to boot first from the hard disc, which pre-empts all the other devices. I prefer the order: floppy, CDROM, hard disc. The boot order is set on the second page of setup.

Partition Table. Here is the partition table on my machine. Gb means 10^9 bytes, not 2^30 bytes.
Partition From To Size (Gb) Type Mount pt
hda1 1 36 0.296 84 Hibernation
hda2 37 578 4.46 7 (NTFS) /dos
hda3 579 1152 4.72 83 (Linux) / (root)
hda4 1153 2431 10.52 83 (Linux) /home
-- 2432 2432 0.008 -- Diagnostics

More on Video Modes. The display is at its best at 1400x1050, but the graphics chip can emulate other resolutions in two ways: by leaving wide margins around a smaller image, or by interpolating to fill the screen. You switch between these methods by pressing Fn-F7, labelled ``font'' (not very descriptive). On ``normal'' images at 16 or 24 bpp TrueColor or DirectColor the interpolation is scarcely noticeable. On text, some but not all vertical strokes are washed out, but it's not too obvious. An image with dithered colors, however, will show a moiré pattern, which is what tipped me off to what the chip was doing. The X-Windows server module for the framebuffer is not able to change video modes, so you need to compile framebuffer support into your kernel (the SuSE generic kernel has it) and specify the mode you want at boot time, and /etc/X11/XF86Config must specify the mode that you will have booted with, or the server will die. ``Normal'' VESA modes are listed in the kernel documentation for the framebuffer, but not for the Inspiron's SXGA+ screen at 1400x1050 pixels. A net search and some trial and error revealed that the mode number for 1400x1050x16 bpp is 0x142, and 1400x1050x24 bpp is 0x143. Add 0x200 and specify in lilo.conf or on the boot command line, e.g. vga=0x343. See my lilo.conf for a list of other mode numbers. If at 1400x1050 you find the text too small, you will want to change your default font size in X-Windows.

Sound. I eventually succeeded with the sound, but not on the first try. YaST2 (SuSE configuration tool) was unable to configure the sound. I tried to load every ALSA driver, but none would load (the first time I tried it). The PCI ID of device 00:1f.5 is 8086,2485 (Intel unknown device) and the subsystem ID is 1013,5959 (Cirrus Logic unknown device). Some digging between Windows and the Cirrus Logic site revealed that the codec is a CS4205 "CrystalClear Audio Codec '97 for Portable Computing". Other people on the net, and YaST2, indicated that the PCI interface was an Intel product, and sure enough, 8086,2485 is recognized by the ALSA card-intel8x0.c program as one of its supported chips, the "Intel ICH 82901AB". And wonder of wonders, when I have the true name of the chip in my heart, I can load the module. And it can play sounds (once unmuted). The intel8x0 driver supports power management, and hence resumes gracefully after suspend to RAM (or hibernation, probably).

Here is an excerpt from my /etc/modules.conf (for ALSA 0.9.0rc5):

alias char-major-116    snd
alias char-major-14     soundcore
options snd             cards_limit=1 major=116
options                 snd-intel8x0 ac97_clock=0 enable=1 index=0
# Warning: please don't modify comments over aliases 'snd-card-#'
# W60f.MxgmT61BCR2:82801CA/CAM AC'97 Audio
alias snd-card-0        snd-intel8x0

alias sound-slot-0      snd-card-0
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-11 snd-mixer-oss
alias sound-service-0-12 snd-pcm-oss

ALSA drivers are muted when loaded. Be careful not to overload your eardrums when unmuting. I set the level of the various channels with my favorite mixer, which is aumix. Specifically, I set the master volume to 100%, CD to 33%, and PCM (computer generated sounds) to 75%. Then I did ``alsactl -f /etc/asound.conf store''. Henceforth the mixer will be set up automatically by the boot script.

The CS4205 does not have a hardware MIDI capability. To play a MIDI file one needs to use a software MIDI converter. SuSE comes with ``timidity''. I installed it and it successfully plays MIDI files.

The ALSA site, from which the latest drivers can be obtained, is http://www.alsa-project.org/

In older ALSA versions such as 0.5.12a, the drivers are called snd-card-whatever, e.g. snd-card-intel8x0, and the options have snd_ prefixed, e.g. snd_enable=1.

There's a useful service to translate PCI IDs at http://www.yourvote.com/pci/ but unfortunately the mysterious 1013,5959 was not listed. I'm beginning to believe that this identifies the codec.

http://www.linux-laptop.net/dell.html has a link to http://www.angrydwarf.org/laptop/ by Nicholas Studt <nstudt@angrydwarf.org>. He says he has had some success with ``alias sound-slot-0 i810_audio'' in /etc/modules.conf as part of the ALSA configuration, but that driver was not entirely satisfactory and a better one was hoped for.

This is not laptop related, but my desktop system, a Dell Dimension 4100, has a similar chipset using snd-intel8x0, and the driver loads OK, but no sound is produced in the external speakers. A Dell Optiplex of recent vintage has the same problem. Varying all available controls with an OSS mixer (aumix) had no effect. The cure was to look in /etc/asound.conf (written by alsactl during initial setup) for the Headphone controls. Enable the headphone (value = true) and set the volume to something reasonable. Do alsactl restore 0 and the speakers will thunder forth. The modified /etc/asound.conf will be used to initialize the sound card at each reboot. The master volume control doesn't affect the phones; it is only for the other speakers, which are vaporware on these systems.

Joystick. This is not exactly an Inspiron 4100 issue, but did give me some trouble to get working. I have a Microsoft ``Sidewinder Precision 2'' USB joystick. The documentation in /usr/src/linux/Documentation/input/joystick.txt was useful, but had to be read carefully. There is a specific module for the Sidewinder, which is present in the SuSE distribution but must be compiled if you have a custom kernel. In addition these modules are needed: gameport joydev input hid usbcore. These lines will be helpful in /etc/modules.conf:

alias char-major-13 input
above input joydev gameport sidewinder

And the device is located in /dev/input/js0 (mknod js0 c 13 0), whereas programs such as js_demo look for it as /dev/js0, so a symbolic link will be needed. With the device in existence and with all the modules loaded, you can execute jstest, or js_demo that comes with FlightGear, and it will show which joystick motion is on which axis, and which bits the buttons produce. For this stick:
Axis 0 Left-right Roll, +right wing down
Axis 1 Fore-back Pitch, +up (back)
Axis 2 Twist Yaw, +right
Axis 3 Throttle Throttle, +front (low)
Axis 4 Hat left-right Look, +right
Axis 5 Hat fore-back Look, +rear
Buttons Numbered 1<<(N-1)

To set the dead zone of the joystick you need to use ``jscal -c /dev/input/js0'', but if the joystick driver has been updated, as in my setup, you will need to download the corresponding sources (look for joystick-2.1.0) to match the driver version, and recompile the user space programs such as jscal. Follow instructions here to download. Then do ``jscal -p /dev/input/js0 > file'' and insert the file contents into a suitable RC file such as /etc/init.d/boot.local.

Dell Button. In /usr/src/linux/Documentation/sysrq.txt is documentation for the magic SysRq key, which you can use to sync and reboot the system, kill processes, etc. when the console is otherwise not responding (if you compiled it into your kernel and if the kernel is not totally catatonic, which it often will be when you really need the key). On a conventional keyboard SysRq produces a scan code of 0x54 (84 decimal), and the kernel looks for this specifically. On the Inspiron keyboard it produces some complicated string which is hard to map so the kernel will recognize it. However, there's a button next to the power button, with Dell's `E' on it. This behaves like a normal function key, emitting 0xe0-0x01. So put these commands in a suitable file; /etc/init.d/boot.local is a socially approved location, for SuSE. You can omit the echo and rc_status if you want to avoid being fancy.

echo -n "Enable magic SysRq key: "
echo "1" > /proc/sys/kernel/sysrq 
/usr/bin/setkeycodes e001 84
rc_status -v -r

Or if you need some other special key behavior for the Dell key or others, you can use setkeycodes in conjunction with loadkeys to achieve some fairly complex effects.

To use the magic key you press Alt-SysRq-<key> (in our case, referring to the Dell button as SysRq) as if SysRq were a shift key. See /usr/src/linux/Documentation/sysrq.txt for the key letters and their functions.


Next: X Setup Previous: Details Contents