31.3. Troubleshooting

The following is a list of the most prominent issues that are occasionally encountered with PCMCIA. More information about this is available in the PCMCIA README (/usr/share/doc/packages/pcmciautils/README.SuSE).

31.3.1. Machine Crashes on PCMCIA

Your machine crashes when PCMCIA is started on boot. To find out what caused your machine to crash, set it up manually as described below. In carefully setting up PCMCIA manually, you can clearly identify the step or component that crashed your machine. Once the culprit has been identified, you can circumvent the problematic step or component.

To manually set up PCMCIA, proceed as follows:

  1. Prevent PCMCIA from being started on system boot and enable SysRq for easier debugging by appending the following options to the boot prompt:

    init=3 pcmcia=off sysrq=1

    For more information about SysRq, refer to /usr/src/linux/Documentation/sysrq.txt.

  2. Boot the system into a text-based environment and log in as root.

  3. Add the appropriate PCMCIA modules to the kernel:

    /sbin/modprobe yenta_socket
    /sbin/modprobe pcmcia
    
  4. Start the PCMCIA socket:

    /sbin/pcmcia-socket-startup N

    Replace N with the number of the socket. Repeat this step for each socket.

  5. If the previous step crashed your machine, this might have been caused by wrong I/O or memory ranges specified in /etc/pcmcia/config.opts. To prevent this, do one of the follwing:

    • Exclude ranges in /ect/pcmcia/config.opts and retry the socket setup.

    • Add the ranges manually as described below.

      After you successfully added the appropriate ranges manually, set them permanently by including them in /etc/pcmcia/config.opts.

  6. After the socket setup has been successfully completed, card initialization and interface setup work as described in Section 31.2.2, “Card Initialization” and Section 31.2.3, “Interface Setup”.

To manually add I/O ranges, proceed as follows (for each socket):

  1. Change into the directory that holds the range configurations (in this case, pcmcia_socket0, adapt for other socket numbers):

    cd /sys/class/pcmcia_socket/pcmcia_socket0
  2. Execute the following command:

    echo begin - end > available_resources_io

    Replace begin and end with the addresses where the new range should start and end. The correct values can only be determined by trial and error.

Manually adding the following ranges:

echo 0x800 - 0x8ff > available_resources_io
echo 0xc00 - 0xcff > available_resources_io

equals the following line from /etc/pcmcia/config.opts:

include port 0x800-0x8ff, port 0xc00 0xcff

The same procedure applies for the memory ranges under available_resources_mem.

[Important]Identifying Faulty Default Settings

If you find a faulty range in the default configuration file (/etc/pcmcia/config.opts) shipped with this product, file a bug against it in http://bugzilla.novell.com, so that developers can look into this issue.

31.3.2. General Suspend Issues with PCMCIA

Whenever suspending your system (suspend to disk, suspend to RAM, or standby), do not plug or unplug any hardware items while the system is in suspend mode. Otherwise, the system might not resume properly.

To automatically eject PCMCIA cards on suspend, proceed as follows:

  1. Log in as root.

  2. Open the file /etc/powersave/sleep.

  3. Set the following variables:

    SUSPEND2DISK_EJECT_PCMCIA="yes"
    SUSPEND2RAM_EJECT_PCMCIA="yes"
    STANDBY_EJECT_PCMCIA="yes"
    
  4. Save the file to apply your settings.

If additional modules need to be ejected on suspend, proceed as above and add the module names to the following variables:

UNLOAD_MODULES_BEFORE_SUSPEND2DISK=""
UNLOAD_MODULES_BEFORE_SUSPEND2RAM=""
UNLOAD_MODULES_BEFORE_STANDBY=""

For general information about the powersave daemon, refer to Section 33.5, “The powersave Package”.

31.3.3. For More Information

Find the latest up-to-date information about PCMCIA in /usr/share/doc/packages/pcmciautils/README.SuSE. For a comprehensive overview of PCMCIA hardware and its fields of use, turn to the official PCMCIA Web site (http://www.pcmcia.org/pccard.htm). To check whether a certain card or device is generally supported by Linux, refer to the Linux PCMCIA/CF/CardBus Card Survey at http://tuxmobil.org/pcmcia_linux.html.