That's a broad question, but here's a quick troubleshooting guide.
cardmgr
identifies the card correctly and starts up the
serial_cs
driver. If it doesn't, you may need to add a new entry to
your /etc/pcmcia/config
file so that it will be identified properly.
See section
3.6 for details./etc/pcmcia/config.opts
and exclude the port range that was allocated for the modem. setserial
to
change the irq to 0, and see if the modem works. This causes the
serial driver to use a slower polled mode instead of using interrupts.
If this seems to fix the problem, it is likely that some other device
in your system is using the interrupt selected by serial_cs. You
should add a line to /etc/pcmcia/config.opts
to exclude this
interrupt.Here's another quick troubleshooting guide.
cardmgr
identifies the card correctly and starts
up one of the network drivers. If it doesn't, your card might still
be usable if it is compatible with a supported card. This will be
most easily done if the card claims to be ``NE2000 compatible''.cardmgr
, but still doesn't work, there
might be an interrupt or port conflict with another device. Find out
what resources the card is using (from the system log),
and try excluding these in /etc/pcmcia/config.opts
to force
the card to use something different./etc/pcmcia/network.opts
incorrectly. On the other hand,
mis-configured cards will usually fail silently./etc/pcmcia/network.opts
, start by
trying to ping other systems on the same subnet using their IP
addresses. Then try to ping your gateway, and then machines on other
subnets. Ping machines by name only after trying these simpler tests./etc/pcmcia/network.opts
script.
Make sure your drop cable, ``T'' jack, terminator, etc are working.Here are some comments about specific cards:
mem_speed=#
option to the pcnet_cs
module.
An example of how to do this is given in the standard config.opts
file. Try speeds of up to 1000 (in nanoseconds).io_speed=#
option when the pcmcia_core
module is loaded.
Edit CORE_OPTS
in /etc/rc.d/rc.pcmcia
to set this option.The transceiver type can be selected in network.opts
using the
IF_PORT
setting. This can either be a numeric value as in
previous PCMCIA releases, or a keyword identifying the transceiver
type. All the network drivers default to either autodetect the
interface if possible, or 10baseT otherwise. The ifport
command
can be used to check or set the current transceiver type. For
example:
# ifport eth0 10base2
#
# ifport eth0
eth0 2 (10base2)
Current releases of the 3c589 driver attempt to autodetect the network connection, but this doesn't seem to be completely functional yet. For autodetection to work, the network cable should be connected to the card when the card is configured. Alternatively, once the network is connected, you can force the driver to check the connection with:
ifconfig eth0 down up
First, see if the card is already recognized by cardmgr
. Some
cards not listed in SUPPORTED.CARDS
are actually OEM versions of
cards that are supported. If you find a card like this, let me know
so I can add it to the list.
If your card is not recognized, follow the instructions in section
3.6 to create a config entry for your card,
but bind the card to the memory card driver, pcmem_cs
for now.
Restart cardmgr
to use the new updated config file.
You will need to know your card's hardware ethernet address. This address is a series of six two-digit hex numbers, often printed on the card itself. If it is not printed on the card, you may be able to use a DOS driver to display the address. In any case, once you know it, run:
dd if=/dev/pcmem0a count=20 | od -Ax -t x1
and search the output for your address. Record the hex offset of the
first byte of the address. Now, edit modules/pcnet_cs.c
and
find the hw_info
structure. You'll need to create a new entry
for your card. The first field is a descriptive name. The next field
is the offset multiplied by two. The
next three fields are the first three bytes of the hardware address.
The final field contains some flags for specific card features; to
start, try setting it to 0.
After editing pcnet_cs.c
, compile and install the new module.
Edit /etc/pcmcia/config
again, and change the card binding
from pcmem_cs
to pcnet_cs
. Follow the instructions for
reloading the config file, and you should be all set. Please send me
copies of your new hw_info
and config entries.
If you can't find your card's hardware address in the hex dump, as a
method of last resort, it is possible to ``hardwire'' the address when
the pcnet_cs
module is initialized. Edit
/etc/pcmcia/config
and add a hw_addr=
option, like so:
module "pcnet_cs" opts "hw_addr=0x00,0x80,0xc8,0x01,0x02,0x03"
Substitute your own card's hardware address in the appropriate spot, of course.
Starting with the 1.3.73 Linux kernel, a single interrupt can be shared by several drivers, such as the serial driver and an ethernet driver. When using a multifunction card under a newer kernel, all card functions can be used simultaneously.
Earlier kernels do not support interrupt sharing between different device drivers, so it is not possible for the PCMCIA drivers to configure this card for simultaneous ethernet and modem access. The ethernet and serial drivers are both loaded automatically. However, the ethernet driver ``owns'' the card interrupt by default. To use the modem, you can unload the ethernet driver and reconfigure the serial port by doing something like:
ifconfig eth0 down
rmmod 3c589_cs
setserial /dev/modem autoconfig auto_irq
setserial /dev/modem
The second setserial
should verify that the port has been
configured to use the interrupt previously used by the ethernet
driver.
The PCMCIA floppy interface used in the Compaq Aero and a few other laptops is not yet supported by this package. The snag in supporting the Aero floppy is that the Aero seems to use a customized PCMCIA controller to support DMA to the floppy. Without knowing exactly how this is done, there isn't any way to implement support under Linux.
If the floppy adapter card is present when an Aero is booted, the Aero BIOS will configure the card, and Linux will identify it as a normal floppy drive. When the Linux PCMCIA drivers are loaded, they will notice that the card is already configured and attached to a Linux driver, and this socket will be left alone. So, the drive can be used if it is present at boot time, but the card is not hot swappable.
Xircom does not share technical information about its cards without a non-disclosure agreement. This means that it is not really possible to develop freely distributable drivers for Xircom cards without doing legally dubious things like reverse engineering DOS drivers.
Recently, Xircom seems to have had a change of heart about their non-disclosure policy, and it now seems that this information will be more readily available in the future. However, please do not pester me with questions about Xircom cards: drivers will be announced when they become available, and I will not try to guess when that will be.
The Xircom CreditCard Ethernet+Modem II card can be used as a modem under Linux, with no special configuration.