With the probe
command, which is included in the PCMCIA-CS package by David Hinds you can get the type of the PCMCIA controller. Often this shows also up with cat /proc/pci
.
In the mailing lists where I'm a member, the question "How can I set up PCMCIA support, after the Linux installation?" comes up sometimes. Therefore I try to give a short survey. But the authoritative source for the latest information about the PCMCIA Card Services for Linux, including documentation, files, and generic PCMCIA information is the Linux PCMCIA Information Page . For problems with PCMCIA and APM see the APM chapter.
probe
command to get information whether your PCMCIA controller is detected or not.PCMCIA=y
and the type of your PCMCIA controller, e.g. PCIC=i82365
. /etc/init.d/pcmcia start
. If you get two high beeps, everything should be fine.
cardctl ident
.pcnet_cs
supports many NE2000 compatible PCMCIA network cards.
Since there are not all cards mentioned I have set up a page PCMCIA Cards "Unofficially" Supported by Linux .
cardinfo
to insert, suspend, or restart a PCMCIA card via a nice graphical interface.
To get the IrDA port of your laptop working with Linux/IrDA you may use StandardInfraRed (SIR) or FastInfraRed (FIR).
Up to 115.200bps, the infrared port emulates a serial port like the 16550A UART. This will be detected by the kernel serial driver at boot time, or when you load the serial module. If infrared support is enabled in the BIOS, for most laptops you will get a kernel message like:
Serial driver version 4.25 with no serial options enabled ttyS00 at 0x03f8 (irq = 4) is a 16550A #first serial port /dev/ttyS0 ttyS01 at 0x3000 (irq = 10) is a 16550A #e.g. infrared port ttyS02 at 0x0300 (irq = 3) is a 16550A #e.g. PCMCIA modem port
If you want to use up to 4Mbps, your machine has to be equipped with a certain FIR chip. You need a certain Linux/IrDA driver to support this chip. Therefore you need exact information about the FIR chip. You may get this information in one of the following ways:
cat /proc/pci
. The according files for 2.2.x kernels are in /proc/bus/pci . Though often the PCI information is incomplete. You may find the latest information about PCI devices and vendor numbers in the kernel documentation usually in /usr/src/linux/Documentation or at the page of Craig Hart
http://members.hyperlink.net.au/~chart . From kernel 2.1.82 on, you may use lspci
from the pci-utils
package, too.
CTPCI330.EXE
provided in ZIP format by the German computer magazine CT
http://www.heise.de/ct/ftp/pci.shtml . The information provided by this program is sometimes better than that provided by the Linux tools.
isapnp
tools, could be useful.
dmesg
, whether FIR is detected or not.
-rw-rw-r-- 1 ratbert ratbert 743 Apr 3 1997 smcirlap.inf -rw-rw-r-- 1 ratbert ratbert 17021 Mar 24 1997 smcirlap.vxd -rw-rw-r-- 1 ratbert ratbert 1903 Jul 18 1997 smcser.inf -rw-rw-r-- 1 ratbert ratbert 31350 Jun 7 1997 smcser.vxd
FINDCHIP.EXE
. And includes a FIRSETUP.EXE
utility that is supposed to be able to set all values except the chip address. Furthermore it contains BIOSDUMP.EXE
, which produces this output:
Example 1 (from a COMPAQ Armada 1592DT)
In current devNode: Size = 78 Handle = 14 ID = 0x1105D041 = 'PNP0511' -- Generic IrDA SIR Types: Base = 0x07, Sub = 0x00, Interface = 0x02 Comm. Device, RS-232, 16550-compatible Attribute = 0x80 CAN be disabled CAN be configured BOTH Static & Dynamic configuration Allocated Resource Descriptor Block TAG's: TAG=0x47, Length=7 I/O Tag, 16-bit Decode Min=0x03E8, Max=0x03E8 Align=0x00, Range=0x08 TAG=0x22, Length=2 IRQ Tag, Mask=0x0010 TAG=0x79, Length=1 END Tag, Data=0x2F
Result 1:
Irq Tag, Mask (bit mapped - ) = 0x0010 = 0000 0000 0000 0001 0000
so, it's IRQ 4. (start at 0, count up ..), so this is a SIR only device, at IRQ=4, IO=x03e8.
Example 2 (from an unknown machine)
In current devNode: Size = 529 Handle = 14 ID = 0x10F0A34D = 'SMCF010' -- SMC IrCC Types: Base = 0x07, Sub = 0x00, Interface = 0x02 Comm. Device, RS-232, 16550-compatible Attribute = 0x80 CAN be disabled CAN be configured BOTH Static & Dynamic configuration Allocated Resource Descriptor Block TAG's: TAG=0x47, Length=7 I/O Tag, 16-bit Decode Min=0x02F8, Max=0x02F8 Align=0x00, Range=0x08 TAG=0x22, Length=2 IRQ Tag, Mask=0x0008 TAG=0x47, Length=7 I/O Tag, 16-bit Decode Min=0x02E8, Max=0x02E8 Align=0x00, Range=0x08 TAG=0x2A, Length=2 DMA Tag, Mask=0x02, Info=0x08 TAG=0x79, Length=1 END Tag, Data=0x00
Result 2:
a) it's a SMC IrCC chip
b) one portion is at 0x02f8, has an io-extent of 8 bytes; irq = 3
c) another portion is at 0x02e8, io-extent of 8 bytes; dma = 1 (0x02 =0000 0010)
Thomas Davis has placed some device information at http://www.jps.net/tadavis/irda/devids.txt .
WARNING: The package is not intended for the end user, and some of the utilities could be harmful. The only documentation in the package is in M$ Word format. Linux users may read this with catdoc
, available at
http://www.fe.msk.ru/~vitus/catdoc/ .
I have made a hardware survey at http:/www.snafu.de/~wehe/ir_misc.html. This list also contains information about infrared capable devices which are not mentioned here (mice, printers, remote control, transceivers, etc.).
To make this list more valuable, it is necessary to collect more information about the infrared devices in different hardware. You can help by sending me a short e-mail containing the exact name of the hardware you have and which type of infrared controller is used.
Please let me know also how well Linux/IrDA worked (at which tty, port and interrupt it works and the corresponding infrared device, e.g. printer, cellular phone).
Also you can help by contributing detailed technological information about some infrared devices, which is necessary for the development of drivers for Linux.
The Linux infrared support is still experimental, but rapidly improving. I try to describe the installation in a short survey. Please read my Linux/IR-HOWTO for detailed information.
irda-utils
at
The Linux IrDA Project .make depend; make all; make install
irmanager -d 1
.dmesg
.
Linux Remote Control http://fsinfo.cs.uni-sb.de/~columbus/lirc/ is maintained by Christoph Bartelmus. "Lirc is a package that supports receiving and sending IR signals of the most common IR remote controls. It contains a device driver for hardware connected to the serial port, a daemon that decodes and sends IR signals using this device driver, a mouse daemon that translates IR signals to mouse movements and a couple of user programs that allow to control your computer with a remote control." I don't have valid information about how much infrared remote control is working with laptop infrared devices.
The tool SuperProbe
is part of XFree86 and is able to check many graphic chips. Please read the documentation carefully, because it might crash your hardware. From man SuperProbe
:
"SuperProbe is a a program that will attempt to determine the type of video hardware installed in an EISA/ISA/VLB-bus system by checking for known registers in various combinations at various locations (MicroChannel and PCI machines may not be fully supported; many work with the use of the -no_bios
option). This is an error-prone process, especially on Unix (which usually has a lot more esoteric hardware installed than MS-DOS system do), so SuperProbe may likely need help from the user.
...
At this time, SuperProbe can identify MDA, Hercules, CGA, MCGA, EGA, VGA, and an entire horde of SVGA chipsets (see the -info option, below). It can also identify several HiColor/True-color RAMDACs in use on SVGA boards, and the amount of video memory installed (for many chipsets). It can identify 8514/A and some derivatives, but not XGA, or PGC (although the author intends to add those capabilities). Nor can it identify other esoteric video hardware (like Targa, TIGA, or Microfield boards).":
For testing reasons start the X server with X 2> <error.msg>
. And try to change the resolution by typing <CTL><ALT><+>
or <CTL><ALT><->
. Note: the + or - sign have to be taken from the numeric pad, which can be emulated at the letter pad by some laptops.
Just watch the display and determine if it works properly. If not, try to enable different video modes at startup time. Setting up X can sometimes be an exercise in trial and error.
You might discover that some features of your laptop are not supported by XFree86, e.g. high resolutions, accelerated X or an external monitor. Therefore I give a survey of available X servers.
If you can't get an appropriate X server working, but don't want to effort a commercial X server you may try the VGA16 or the mono server included in XFree86.
You may find a survey about X windows resources at Kenneth E. Harker's page Linux on Laptops and a survey about current graphic chips used in laptops at MobiliX.
There are several different methods to activate support for an external monitor: as a BIOS option or during runtime with a keystroke e.g. <Fn>+<F4>
. Maybe you have to edit /etc/XF86Config by configuring int_disp
and ext_disp
. If you can't get this to work with XFree, try a demo version of the commercial X servers mentioned above. Also check with the RedHat and SuSE WWW sites as they may have new, binary-only, X servers that may work with your laptop.
Sometimes you may encounter a display not working properly in text mode. Currently I don't have any recommendations, please see Keyboard-Console-HOWTO.
Take care of the backlight AFAIK this device can only bear a limited number of uptime circles. So avoid using screensavers too much.
For problems with X windows and APM please see the APM chapter.
The only way I know to check this, is to compile the different sound drivers into the kernel and check whether they are detected or not. The best way to do so, is to compile them as modules because it's easier to load different parameters such as interrupts and IO ports than. For the new 2.2.x kernels, read the /usr/src/linux/Documentation/sound/Introduction document by Wade Hampton. This document may help you get started with sound. Also, you might try one of the commercial sound drivers mentionend below.
Many new laptops come with 16-bit sound. But MWave and some other sound technologies won't work or are very hard to get working, e.g. booting to DOS, loading a driver, then using the soundcard as a standard SB-PRO. So you might need a commercial sound driver. With the recent announcement of Linux support by IBM, it would be GREAT if IBM supported the MWave under Linux (hint, hint...). As a last ressort you may try the speaker module pcsnd
, which tries to emulate a soundcard.
Usually there are no problems with Linux and the keyboard. Though there are two minor caveats: First the setleds
program might not work. Second the key mapping might not fit your needs. Some Unix users and vi
users expect to find the <CONTROL> key to the left of the <A> key. Many PC-type keyboards have the <CAPS-LOCK> key there. You may use xmodmap
or loadkeys
to re-map the keyboard. Some laptops (e.g., Toshiba) allow you to swap the <CAPS-LOCK> and <CONTROL> keys. Mark Alexander offered this solution in the linux-laptop mailing list: On RedHat, it's a one-line patch to /usr/lib/kbd/keytables/us.map , or whatever file is referenced in /etc/sysconfig/keyboard:
*** us.map~ Tue Oct 31 14:00:07 1995 --- us.map Thu Aug 28 13:36:03 1997 *************** *** 113,119 **** keycode 57 = space space control keycode 57 = nul alt keycode 57 = Meta_space ! keycode 58 = Caps_Lock keycode 59 = F1 F11 Console_13 control keycode 59 = F1 alt keycode 59 = Console_1 --- 113,119 ---- keycode 57 = space space control keycode 57 = nul alt keycode 57 = Meta_space ! keycode 58 = Control keycode 59 = F1 F11 Console_13 control keycode 59 = F1 alt keycode 59 = Console_1
A second (or external) keyboard can be attached using the PS/2 port (I suppose this is not possible via the serial port, since there is no keyboard controller for the serial port). Also there is one laptop with a detachable keyboard the Siemens Scenic Mobile 800. This machine uses an infrared connection to the keyboard, but I don't know whether this works with Linux. WARNING: Don't plug the external keyboard in while the laptop is booted, or plug the mouse in the keyboard port and the keyboard in the mouse port. On a Toshiba, this caused one user to have to completely shutdown the laptop, remove the keyboard/mouse, and do a cold reboot.
For PS/2 ports there are so called Y-Cable available, which make it possible to use external mouse and external keyboard at the same time if your laptop supports this feature.
Parport to AUX port adapter In some cases one kbd port and one aux port is not enough and you may want to add another keyboard or mouse. You can use this adapter, together with the parkbd.c
module for that.
On some laptops a splitter works to allow both mouse and keyboard to be plugged in; on others it doesn't work at all.If you might want to use both you had better check that it works, or you may find yourself waiting anxiously for USB support.
Sun keyboard to PC serial port adapter: Many people have dreamed having their Sun Type 5 keyboard attached to their Linux box up to now. And with this adapter, it is finally possible. Because the standard Sun keyboards use TTL RS232 at 1200 bps to talk to the Suns, it's very easy to make them talk to any non-Sun computer by converting this to true RS232. All what you need is a MAX232 chip that'll take care about the correct voltage levels, and also some chip to invert the signals (CD4049 in the pic, I've used a 7400 quad-nand myself), since the MAX232 inverts them as well, and we don't need this. This all easily fits into a 25-pin serial connector.
You may check your mouse with the mev
command from the GPM package.
Most of the mice used in laptops are PS/2 mice (actually I don't know one with another mouse protocol). You may communicate with the PS/2 mouse through /dev/psaux or /dev/psmouse. If you use X windows this device and the protocol has to be set in /etc/XF86Config, too. In earlier releases, sometimes the GPM mouse manager and X windows had trouble sharing a mouse when enabled at the same time. But AFAIK this is no problem anymore for the latest versions.
Speaking of Emulate3Buttons, 100ms is usually better than the 50ms allowed in most default setups of /etc/X11/XF86Config.
Section "Pointer" Protocol "PS/2" Device "/dev/psaux" Emulate3Buttons Emulate3Timeout 100 EndSection
Usually a touchpad works with the PS/2 mouse driver. A tip: I've heard that tipping with one , two or three fingers on the touchpad simultaneously results in pressing the left, middle and respectively the right mouse-button (by Martin Hoffmann <mh@rrz.uni-hamburg.de> for an IPC-Radiance 900).
There is also a dedicated touchpad driver available. The Synaptics Touchpad Linux Driver supports pointing devices used in notebooks by Acer, Compaq, Dell, Gateway, Olivetti, Texas Instruments, Winbook, and others. Other URL N.N..
The recent gpm
package (
gpm >=1.8) includes the above mentioned synaptics touchpad device driver. This device driver has been developed by H. Davies <hdavies@ameritech.net>. Instead of using the PS/2 compatibility mode of touchpad devices, you can now use native touchpad mode with some pretty impressive features.
In addition to translating finger motion into mouse motion and supporting the buttons, this support currently has several features (from the README):
These features can be enabled/disabled and many of them have time and speed parameters which can be adjusted to the taste of the user.
It seems gpm
is best known as a console biased tool. This is true, but you may use it as an X input device. gpm
is used as a repeater device. In this way you can use both the built-in synaptics touchpad with all the features and at the same time a serial mouse (with three buttons). This all works smoothly together. X reads the mouse events from a named pipe /dev/gpmdata in a protocol it understands, which in my case is Mouse-Systems-Compatible (5bytes). Most 3-button mice use the default protocol. So a simple reconfiguration in XF86Config is all that is required, after starting gpm
in an appropriate way, of course.
gpm
could be started on your laptop with the following arguments : /usr/bin/gpm -t synps2 -M -t ms -m /dev/ttyS0
. Both touchpad and serial mouse work in console and X mode. You do have to create the named pipe /dev/gpmdata yourself.
Tapping with two fingers simultaneously to simulate a middle mouse button works on Logitech touchpads used in a few machines.
Thanks to Geert Van der Plas for most of the touchpad chapter.
The only laptop I know which includes a touchscreen is the Fujitsu Biblo 112. It may work in PS/2 or serial mouse compatibility mode. But I couldn't check this yet.
The latest version of the Linux Compaq Concerto Pen Driver is available from Joe Pfeiffer's home page.
For better handling, e.g. with a 3 button mouse you may use an external mouse. This usually a serial mouse or a PS/2 mouse, according to the port your laptop offers. Usually this is no problem.
For PS/2 ports there are so called Y-Cable available, which make it possible to use external mouse and external keyboard at the same time if your laptop supports this feature.
WARNING: Don't plug in the external mouse while powered up. If you have separate mouse and keyboard ports, make sure you plug the mouse in the mouse port and the keyboard in the keyboard port. If you don't, you may have to do a hard reboot of the laptop to get it to recover.
From the Battery-Powered-mini-HOWTO " .. for APM to work on any notebook or energy-conscious desktop, the system BIOS ROM in the machine must support the APM Specification standard. Furthermore, for APM to work with the Linux operating system, the system BIOS ROM must support either the 1.0 or 1.1 version of the APM standard, and it must also support 32-bit protected mode connections. A system that supports APM 1.1 is preferred, as it provides more features that the device driver and supporting utilities can take advantage of."
You may get information about the APM version with the dmesg
command and in the /proc/apm file.
Features of APM according to Documentation/Configure.help: "The system time will be reset after a USER RESUME operation, the /proc/apm device will provide battery status information, and user-space programs will receive notification of APM events (e.g., battery status change). "
APM support consists of two parts: kernel support and user-land support.
For kernel support, enable the parameters in the corresponding kernel section. Some features need special tweaking with certain machines (e.g. IBM ThinkPad) or even don't work, ("TI 4000M TravelMate and the ACER 486/DX4/75 because they don't have compliant BIOSes"). Currently all distributions I know don't provide a kernel with APM support enabled. So you usually have to compile your custom kernel. Please see Kernel-HOWTO or distribution manual for details. The available APM options are (please see Documentation/Configure.help in the kernel source tree for more details):
CONFIG_APM_IGNORE_USER_SUSPEND
Just a workaround for some NEC Versa M series laptops.
CONFIG_APM_DO_ENABLE
Enable APM features at boot time.
CONFIG_APM_CPU_IDLE
. Puts CPU in power save mode, if there is nothing to do for the kernel.
CONFIG_APM_DISPLAY_BLANK
Some laptops can use this to turn off the LCD backlight when the screen blanker of the Linux virtual console blanks the screen. Note that this is only used by the virtual console screen blanker, and won't turn off the backlight when using the X Window system.
CONFIG_APM_POWER_OFF
Turns the machine completely down, when using halt
. This feature works with most laptops without problems.
CONFIG_APM_IGNORE_MULTIPLE_SUSPEND
Just a workaround for IBM ThinkPad 560.
CONFIG_APM_IGNORE_SUSPEND_BOUNCE
Just a workaround for Dell Inspiron 3200 and other notebooks.
CONFIG_APM_RTC_IS_GMT
Stores time in Greenwich Mean Time format. It is in fact recommended to store GMT in your real time clock (RTC) in the BIOS.
CONFIG_APM_ALLOW_INTS
Resolves some problems with Suspend to Disk for some laptops, for instance many newer IBM ThinkPads.
Joey Hess <joey@kitenet.net> wrote at debian-laptop@lists.debian.org
"I just installed kernel 2.2.12 on my laptop, and was having some trouble
getting apm working. it said apm disabled on user request at boot time.
Well, some grepping the kernel sources found that passing apm=on
to the
kernel at boot time enables it now. I can't find any record or docs of this
change.
The utilities for userland support may be found at http://worldvisions.ca/~apenwarr/apmd/. APMD is a set of programs that control the Advanced Power Management system found in most modern laptop computers. If you run a 2.2.x kernel and want to experiment, Gabor Kuti <seasons@falcon.sch.bme.hu> has made a kernel patch that allows you to hibernate any Linux system to disk, even if your computers APM BIOS doesn't support it directly. IMHO you don't need this features if your laptop provides a function key to invoke suspend mode directly.
When you first install Linux, you will probably have to recompile the kernel. The kernel that came with your distribution probably does not have APM enabled.
Please see the Battery Powered Linux Mini-HOWTO by <kontakt@hanno.de> Hanno Mueller and the page of Kenneth E. Harker for detailed information.
README apmd
?:On laptop computers, the APM support provides access to battery status
information and may help you to conserve battery power, depending on your
laptop and the APM implementation.
Rik Faith <faith@acm.org> has transferred maintenance of the Linux apmd package over to me, Avery Pennarun <apenwarr@worldvisions.ca> and I'm finally getting around to making a release with the many updates we've collected since the last release back in 1996.
Here's what apmd
can do:
Richard Gooch wrote: I'have had a look at the beta version of apmd
, and I still don't like it, because:
sync()
; sleep(0)
; sync()
; sleep(1)
; sequence)
Though this topic was discussed controversly Richard Gooch has put together a package suspendd
at
http://www.atnf.csiro.au/~rgooch/linux/ .
Also, have a look at apmcd
(apm
based crontab) at
ftp://ftp.binary9.net/pub/linux/ . A tool made by Nicolas J. Leon <nicholas@binary9.net>
http://mrnick.binary9.net/.
Note: I didn't check wether this features are merged into one package (apmd
eventually) already.
If you have another operating system preinstalled or use another operating system at the same disk, make sure there is no "hibernation" or "suspend" tool installed, which could severely interfere with Linux, e.g. it might use disk space which is occupied by Linux or vice versa.
If your machine worked with 2.0.x kernels but not with the 2.2.x series, take this advice from Klaus Franken kfr@klaus.franken.de : "The default changed in 2.2. Search in the init-scripts for halt
and change it to halt -p
or poweroff
. See man halt
, if you don't have this option you need a newer version of halt
." You may find it in the SysVinit
package.
On some new machines (for instance HP Omnibook 4150 - 366 MHz model) when accessing /proc/apm, you may get a kernel fault general protection fault: f000
. Stephen Rothwell <Stephen.Rothwell@canb.auug.org.au>
http://www.canb.auug.org.au/~sfr/ explaines: "This is your APM BIOS attempting to use a real mode segment while in protected mode, i.e. it is a bug in your BIOS. .. We have seen a few of these recently, except all the others are in the power off code in the BIOS wher we can work around it by returning to real mode before attempting to power off. Here we cannot do this."
apmd-rhcn-2.4phil-1
by RedHat
ftp://rhcn.redhat.com/pub/rhcn/ contains an unofficial patch for shutting down the PCMCIA sockets before a suspend and patches for multiple batteries.
According to Documentation/Configure.help: "Some other things you should try when experiencing seemingly random, weird problems:
no-hlt
option to the kernel.no387
option to the kernel.floppy=nodma
option to the kernel.mem=4M
option to the kernel (thereby disabling all but the first 4 MB of RAM).
PCMCIA Card Services and Advanced Power Management (from the PCMCIA-HOWTO):
"Card Services can be compiled with support for APM (Advanced Power Management) if you've configured your kernel with APM support. ... The PCMCIA modules will automatically be configured for APM if a compatible version is detected on your system. Whether or not APM is configured, you can use cardctl suspend
before suspending your laptop, and cardctl resume
after resuming, to cleanly shut down and restart your PCMCIA cards. This will not work with a modem that is in use, because the serial driver isn't able to save and restore the modem operating parameters. APM seems to be unstable on some systems. If you experience trouble with APM and PCMCIA on your system, try to narrow down the problem to one package or the other before reporting a bug. Some drivers, notably the PCMCIA SCSI drivers, cannot recover from a suspend/resume cycle. When using a PCMCIA SCSI card, always use cardctl eject
prior to suspending the system.".
"Many (most?) BIOSes fail to save and restore display controller chip registers, and X has no protocol to be notified of resume events, so on many systems suspend/resume is more-or-less incompatible with X." Linux Laptops has created a fix for this problem.
Sometimes X windows and APM don't work smoothly together, the machine might even hang. A recommendation from Steve Rader: Some linux systems have their X server hang when doing apm -s
. Folks with this affliction might want switch to the console virtual terminal then suspend chvt 1; apm -s
as root, or, more appropiately.sudo chvt 1; sudo apm -s
. I have these commands in a script, say, my-suspend
and then do xapmload --click-command my-suspend
.
As far as I remember this is controversly discussed, but I don't remember the URL. It isn't a kernel feature yet.
The new 3.0beta versions add a new feature to apmd: it can run arbitrary
commands (like cardctl suspend
) when you suspend or resume your system.
It also supports BIOS clocks that are set to UTC time.
Lots of BIOSes fail to restore sound chip registers, so you may get
a squeal of feedback when you wake up the machine. A script in
/etc/apm/event.d can use aumix
to save and restore sound mixer settings.
Software suspend enables the possibilty of suspendig machine. It doesn't need APM. You may suspend your machine by either pressing Sysrq-d or with 'swsusp' or 'shutdown -z (patch for sysvinit needed). It creates an image which is saved in your active swaps. By the next booting the kernel detects the saved image, restores the memory from it and then it continues to run as before you've suspended. If you don't want the previous state to continue use the 'noresume' kernel option.
ACPI stands for Advanced Configuration and Power Interface. This is a specification by Toshiba, Intel and Microsoft. Besides many other things it also defines power management. This is why it is often compared to APM.
The ACPI4Linux project has started at the beginning of 1999. The ACPI4Linux project is a kernel driver project aimed at implementing full ACPI support for Linux, including fan control, dock/undock detection and a WindowMaker dockable temperature meter. You may reach it at ACPI4Linux.
For information about available battery types, take a look at the Hardware Features chapter above.
Please see Battery Powered Linux Mini-HOWTO by Hanno Mueller <kontakt@hanno.de> http://www.hanno.de Power Supplies for Laptops - (Draft) for further information.
Stephen Rothwell http://www.canb.auug.org.au/~sfr/ is currently integrating a patch that will add multiple battery support to the kernel APM.
From the mobile-update
page (modified by WH): Discharge the battery. If your battery runs only for about 20 minutes, you probably suffer from memory effects. Most laptops do not discharge the battery properly. With low powered devices like old computer fans they can be discharged completely. This removes memory effects. You should do so even with LiIon batteries, though they don't suffer much from memory effext (the manual of an IBM Thinkpad says to cycle the batteries through a full charge/discharge cycle 3 times every few months or so).
WARNING: Try this at your own risk! Make sure the voltage of the fans is compatible to your battery. It works for me.
In the US, this company has most batteries for anything and can rebuild many that are no longer manufactured: Batteries Plus, 2045 Pleasant Hill Road, Duluth, GA 30096 +1 770 495 1644.
Unfortenately most laptops come with a proprietary memory chips. So they are not interchangeable between different models. But this seems changing.
The Plug and Play driver project for Linux is a project to create support within the Linux kernel (see Linux.Org for more information) for handling Plug and Play (and other semi-PnP) devices in a clean, consistent way. It aims to allow a driver of any type of hardware to have this hardware configured by the PnP driver in the kernel. This driver is then notified when the device is reconfigured, or even removed from the system, so as to allow for graceful action in these circumstances http://www.io.com/~cdb/mirrors/lpsg/pnp-linux.html .
ISA PnP tools is another useful package.
And there is a project at RedHat http://www.redhat.com/pnp/overview.html .
The latest PCMCIA driver package (>>3.1.0) has utilities lspnp
and
setpnp
to manipulate PNP settings. Note that in 3.1.0 you may
need this patch to compile them:
-#ifdef __GLIBC__ +#if 0 /* def __GLIBC__ */ #include <byteswap.h> #else
First some definitions. There is a difference between docking station and port replicator.
I use the term docking station for a box which contains slots to put some interface cards in, and space to put a harddisk, etc. in. This box can be permanently connected to a PC. A port replicator is just a copy of the laptop ports which may be connected permanently to a PC.
I don't use a docking station. They seem really expensive and I can't see any usefulness. OK you have to mess up with some more cables, but is it worth so much money? Docking stations are useful in an office environment when you have a permanent network connection, or need the docking station's SCSI adaptor (e.g., for a CD-R).
Also all docking stations I know are proprietary models, so if you change your laptop you have to change this device, too. I just found one exception a docking station which connects to your laptop via IrDA the IRDocking IR-660 by Tekram http://www.tekram.com/Hot_Products.asp?Product=IR-660 . It supports these connectors: 10Base-T (RJ-45); PS/2 Keyboard; PS/2 Mouse; 25-Pin Printer Port (LPT); IR Transceiver; Power (6 VDC). So it seems that a VGA port and a port to connect a desktop PC directly are missing. This device should work with Linux/IrDA, though I couldn't check it out.
I would prefer to buy a PC instead and connect it via network to the laptop.
Or use an external display, which usually works well as described above, and an external keyboard and mouse. If your laptop supports an extra PS/2 port you may use a cheap solution a Y cable, which connects the PS/2 port to an external keyboard and an external monitor. Note: Your laptop probably has support for the Y cable feature, e.g. the COMPAQ Armada 1592DT.
AFAIK there are three solutions to connect a laptop to a docking station:
From Martin J. Evans martin@mjedev.demon.co.uk "The main problem with docking stations is getting the operating system to detect you are docked. Fortunately, if you configure your kernel with the /proc file system (does anyone not do this?) you can examine the devices available and thus detect a docked state. With this in mind a few simple scripts is all you need to get your machine configured correctly in a docked state.
You may want to build support for the docking station hardware as modules instead of putting it directly into the kernel. This will save space in your kernel but your choice probably largely depends on how often you are docked.
1) Supporting additional disks on the docking station SCSI card
To my mind the best way of doing this is to:
mount -a
flag. In this way, when you are docked you can explicitly mount the partitions off any disk connected to the docking station SCSI card.2) Supporting additional network adaptors in the docking station
You can use a similar method to that outlined above for the graphics card. Check the /proc filesystem in your rc scripts to see if you are docked and then set up your network connections appropriately. "
Once you determine this information, you may use a script, similar to the following example, to configure the connection to your docking station at startup. The script is provided by Friedhelm Kueck:
# check, if Laptop is in docking-station (4 PCMCIA slots available) # or if it is standalone (2 slots available) # Start after cardmgr has started # # Friedhelm Kueck mailto:fk@impress.de # 08-Sep-1998 # # Find No. of Sockets SOCKETS=`tail -1 /var/run/stab | cut -d ":" -f 1` case "$SOCKETS" in "Socket 3") echo Laptop is in Dockingstation ... echo Disabeling internal LCD Display for X11 echo cp /etc/XF86Config_extern /etc/XF86Config # # Setup of PCMCIA Network Interface after start of cardmge # echo echo "Setting up eth0 for use at Network ..." echo /sbin/ifconfig eth0 10.1.9.5 netmask 255.255.0.0 broadcast 10.1.255.255 /sbin/route add -net 10.1.0.0 gw 10.1.9.5 /sbin/route add default gw 10.1.10.1 ;; "Socket 1") echo Laptop is standalone echo Disabling external Monitor for X11 cp /etc/XF86Config_intern /etc/XF86Config echo echo Network device NOT setup ;; esac
If your laptop supports PCMCIA this is the easiest and fastest way to get network support. Make sure your card is supported before buying one.
Probably the cheapest way to connect your laptop to another computer, but quite slow. You may use PPP or SLIP to start the connection.
Accton Pocket Ethernet and Linux This ethernet adaptor uses a parallel port and delivers approximately 110k Bytes/s throughput for those notebooks that do not have PCMCIA slots.
Linux and Linksys Ethernet Adaptors A short note on the use of the Linksys parallel-port ethernet adaptor under Linux. This is a widely available networking adaptor that doesn't require a PCMCIA slot.
Offers more speed than a serial connection. Some laptops use chipsets that will not work with PLIP. Please see PLIP-HOWTO for details.
I don't have experience with a NIC in a docking station yet.
There are three kinds of modems available: internal, PCMCIA card or external serial port modems. But some internal modems will NOT work with Linux such as the MWave modems (IBM) or if the laptop has a WinModem. This is caused by non-standard hardware. So you have to use either a PCMCIA card modem or an external modem.
Quotation from the Kernel-FAQ: "9.Why aren't WinModems supported? (REG, quoting Edward S. Marshall) The problem is the lack of specifications for this hardware. Most companies producing so-called WinModems refuse to provide specifications which would allow non-Microsoft operating systems to use them. The basic issue is that they don't work like a traditional modem; they don't have a DSP, and make the CPU do all the work. Hence, you can't talk to them like a traditional modem, and you -need- to run the modem driver as a realtime task, or you'll have serious data loss issues under any kind of load. They're simply a poor design."
"Win modems are lobotomized modems which expect Windows to do some of their thinking for them. If you do not have Windows, you do not have a connection. "
Anyway, I have set up a page collecting information on laptops with internal modems at
http://mobilix.org/ . Maybe it's possible to run such modems with MS-Windows9x/NT emulators like wine
or VMware
, but I don't know it.
Recently there is a driver for Lucent WinModems (alpha) available at SuSE - Labs and LTModem diagnostic tool.
WARNING: Pay attention to the different kinds of phone lines: analog and ISDN. You can't connect an analog modem to an ISDN port and vice versa. Though there might be hybrid modems available. Connecting to the wrong port may even destroy your modem. Trick: If you are looking for an analog phone port in an office building which is usually wired with ISDN, take a look at the fax lines, they are often analog lines.
For tracking the packets on PPP you may use pppstats
. Or pload
this provides a graphical view of the traffic (in and out) of the PPP connection. It is based on athena widgets hence is very portable. It also uses very little CPU time. The home of pload
is
http://www.engr.utk.edu/~mdsmith/pload/ .
If unsure about the right SCSI support, compile a kernel with all available SCSI drivers as modules. Load each module step by step until you get the right one.
AFAIK there is no laptop yet with a SCSI harddisk. Though there are two models with a built in SCSI port: Texas Instruments TI 4000 and HP OmniBook 800. Maybe the PowerBook G3 has a SCSI disk, but I didn't check this yet. The old Apple Powerbook Duo models had a SCSI hard disk.
For other models, if you need SCSI support you may get it by using a SCSI-PCMCIA card or via a SCSI adapter in a docking station.
You should get information about the USB controller with cat /proc/pci
and about USB devices with cat /proc/bus/usb/devices
.
Newer laptops come with the Universal Serial Bus (USB). I haven't tried it on any of my systems because I don't have any USB devices.
Visit http://www.linux-usb.org for the USB Linux home page. Also I have set up a page collecting information about laptops and USB at MobiliX .
Usually there are no problems connecting a floppy drive to a Linux laptop. But with a laptop floppy drive you may sometimes not be able to use every feature. I encountered the superformat
command (from the fdutils package) couldn't format more than 1.44MB with my HP OmniBook 800. You may also have difficulty when the floppy drive and CD drive are mutually exclusive, or when the floppy drive is a PCMCIA device (as with the Toshiba Libretto 100). With older laptops, there might be a minor problem if they use a 720K drive. AFAIK all distributions come with support for 1.44M (and sometimes 1.2M) floppies only. Though it's possible to install Linux anyway. Please see Installation chapter. Please see kernel documentation for boot time parameters concerning certain laptop floppy drives, for instance IBM ThinkPad. Or man bootparam
.
Most notebooks today come with CD drives. If floppy and CD drive are swappable they are usually mutually exclusive. Sometimes they come as PCMCIA devices. Or as SCSI device (HP OmniBook 800). AFAIK there are discmans available which have a port to connect them to a computer or even a SCSI port. I found an article published by Ziff-Davis Publishing Company (September 1996 issue, but missed to note the URL) written by Mitt Jones: "Portable PC Card CD-ROM drives transform laptops into mobile multimedia machines", which listed: Altec Lansing AMC2000 Portable Multimedia CD-ROM Center; Axonix ProMedia 6XR; CMS PlatinumPortable; EXP CDS420 Multimedia Kit; H45 QuickPCMCIA CD; Liberty 115CD; Panasonic KXL-D740; Sony PRD-250WN CD-ROM Discman.
The Linux Video and DVD Project has made great headway since its start last February. They have just released the source code ( http://livid.on.openprojects.net/css.tgz) so that a DVD decoder card can unlock and read the DVD. Also provided on the site are links to various documents discussing DVD chipset specifications. The Linux Video and DVD Project is avidly seeking help from the opensource community for development.
Universal Disk Format (UDF) Driver: "UDF is a newer CDROM filesystem standard that's required for DVD roms. It's meant to be a replacement for the ISO9660 filesystem used on today's CDROMs, but the immediate impact for most will be DVD. DVD multimedia cdroms use the UDF filesystem to contain MPEG audio and video streams. To access DVD cdroms you would need a DVD cdrom drive, the kernel driver for the cdrom drive, some kind of MPEG video support, and a UDF filesystem driver (like this one). Some DVD cdroms may contain both UDF filesystems and ISO9660 filesystems. In that case, you could get by without UDF support."
Useful programms are hdparm
, dmesg
, fsck
and fdisk
.
Be careful when using your laptop abroad. I have heard about some destroyed harddisks due to a magnetic field emitted from the magnetic-holds at the backresttable of the seats in a german railway waggon.
Though I am quite satisfied with the quality of the harddisk in my laptop, when I removed it from the case I unintendedly dropped it, I recommend to be very careful.
AFAIK there is only one form factor for harddisks used in laptops the 2.5" format. This format seems to be available in different heights (Please note I couldn't verify this information yet):
It might be possible to use a hard disk wich doesn't fit with some case modifications.
Some laptops come with a removable hard disk in a tray, for instance the KAPOK 9600D. There seem to be no SCSI drives for laptops available.
Some high end laptops come with a video or ZV port (NTSC/PAL). Since I don't have a laptop with a ZV or video port yet, I can provide only some URLs http://www.thp.uni-koeln.de/~rjkm/linux/bttv.html (driver) http://www.mathematik.uni-kl.de/~wenk/xwintv.html (tvviewer). For further information see video4linux at http://roadrunner.swansea.uk.linux.org/v4l.shtml. To collect information about laptops with video port I have setup a page at http://mobilix.org/ . Alternatively to the ZV port you might use the USB port.