http://pcmcia-cs.sourceforge.net/ftp/doc/PCMCIA-HOWTO.html Manually inserting PCMCIA card (for instance after using a PCMCIA cdrom drive to install Linux so that no NIC could be installed). cardctl ident modprobe axnet_cs ifconfig eth0 up dhclient -------------------------------------------------------------------------------- cardctl ident socket 0: product info: "MEGAHERTZ", "XJ2288", "V.34 PCMCIA MODEM", "" manfid: 0x0101, 0x1234 function : 2 (serial) --OR-- cardmgr will report an unsupported card in the system log: cardmgr[460]: unsupported card in socket 1 cardmgr[460]: product info: "MEGAHERTZ", "XJ2288", "V.34 PCMCIA MODEM" cardmgr[460]: manfid: 0x0101, 0x1234 function: 2 (serial) /etc/pcmcia/config: card "Megahertz XJ2288 V.34 Fax Modem" version "MEGAHERTZ", "XJ2288", "V.34 PCMCIA MODEM" bind "serial_cs" --OR-- card "Megahertz XJ2288 V.34 Fax Modem" manfid 0x0101, 0x1234 bind "serial_cs" -------------------------------------------------------------------------------- /etc/pcmcia/config Here is an example of how cardmgr will report an unsupported card in the system log: cardmgr[460]: unsupported card in socket 1 cardmgr[460]: product info: "MEGAHERTZ", "XJ2288", "V.34 PCMCIA MODEM" cardmgr[460]: manfid: 0x0101, 0x1234 function: 2 (serial) The corresponding entry in /etc/pcmcia/config would be: card "Megahertz XJ2288 V.34 Fax Modem" version "MEGAHERTZ", "XJ2288", "V.34 PCMCIA MODEM" bind "serial_cs" or using the more compact product ID codes: card "Megahertz XJ2288 V.34 Fax Modem" manfid 0x0101, 0x1234 bind "serial_cs" You can use ``*'' to match strings that don't need to match exactly, like version numbers. When making new config entries, be careful to copy the strings exactly, preserving case and blank spaces. Also be sure that the config entry has the same number of strings as are reported in the log file. After editing /etc/pcmcia/config, you can signal cardmgr to reload the file with: kill -HUP `cat /var/run/cardmgr.pid` -------------------------------------------------------------------------------- Using Schemes: Since lilo passes unrecognized options to init as environment variables, a value for SCHEME (or any other PCMCIA startup option) at the boot prompt will be propagated into the PCMCIA startup script. /etc/lilo.conf root = /dev/hda1 read-only image = /boot/vmlinuz label = home append = "SCHEME=home" image = /boot/vmlinuz label = work append = "SCHEME=work" --OR-- Example of a network.opts script with scheme-specific settings: case "$ADDRESS" in work,*,*,*) # definitions for network card in work scheme ... ;; home,*,*,*|default,*,*,*) # definitions for network card in home scheme ... ;; esac To select between the two sets of settings, run either: cardctl scheme home cardctl scheme work To find out the current scheme setting, run: cardctl scheme By default, the scheme setting is persistent across boots. This can have undesirable effects if networking is initialized for the wrong environment. Optionally, you can set the initial scheme value with the SCHEME startup option. -------------------------------------------------------------------------------- Notes: The cardctl command does the equivalent of shutting down all your cards and restarting them. The command can be safely executed whether or not the PCMCIA system is loaded, but the command may fail if you are using other PCMCIA devices at the time (even if their configurations are not explicitly dependant on the scheme setting). In theory, it should not really matter which interrupt is allocated to which device, as long as two devices are not configured to use the same interrupt. In /etc/pcmcia/config.opts you'll find a place for excluding interrupts that are used by non-PCMCIA devices. All the client card drivers have a parameter called irq_list for specifying which interrupts they may try to allocate. These driver options should be set in your /etc/pcmcia/config file. For example: device "serial_cs" module "serial_cs" opts "irq_list=8,12" would specify that the serial driver should only use irq 8 or irq 12. Regardless of irq_list settings, Card Services will never allocate an interrupt that is already in use by another device, or an interrupt that is excluded in the config file. Cardmgr records device information for each socket in /var/lib/pcmcia/stab. Here is a sample stab listing: Socket 0: Adaptec APA-1460 SlimSCSI 0 scsi aha152x_cs 0 sda 8 0 0 scsi aha152x_cs 1 scd0 11 0 Socket 1: Serial or Modem Card 1 serial serial_cs 0 ttyS1 5 65 The ``cardctl suspend'' and ``cardctl resume'' commands can be used to shut down a card without unloading its associated drivers. The ``cardctl reset'' command attempts to reset and reconfigure a card. ``cardctl insert'' and ``cardctl eject'' mimic the actions performed when a card is physically inserted or ejected, including loading or unloading drivers, and configuring or shutting down devices. If you are running X, the cardinfo utility produces a graphical display showing the current status of all PCMCIA sockets, similar in content to ``cardctl config''. It also provides a graphical interface to most other cardctl functions. For these card types (IDE, SCSI, CardBus), it is recommended that you always use ``cardctl eject'' before ejecting. 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. 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. To unload the entire PCMCIA package, invoke rc.pcmcia with: /etc/rc.d/rc.pcmcia stop This script will take several seconds to run, to give all client drivers time to shut down gracefully. If a device is currently in use, the shutdown will be incomplete, and some kernel modules may not be unloaded. To avoid this, use ``cardctl eject'' to shut down all sockets before invoking rc.pcmcia. The exit status of the cardctl command will indicate if any sockets could not be shut down. -------------------------------------------------------------------------------- cardctl ident Socket 0: product info: "Linksys", "EtherFast 10/100 PC Card (PCMPC100 V3)", "V2.0", " " manfid: 0x0149, 0xc1ab function: 6 (network)