Next: X Setup | Previous: Details | Contents |
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):
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 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-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
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.
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.
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.
echo -n "Enable magic SysRq key: "
echo "1" > /proc/sys/kernel/sysrq
/usr/bin/setkeycodes e001 84
rc_status -v -r
Next: X Setup | Previous: Details | Contents |