Card not recognised when on battery power on Toshiba laptop
I have a Xircom REM56G Ethernet/modem combo running on a Toshiba 490CDT laptop. The card is recognised and works without problems when the laptop is running on AC power.
The entry in /var/log/daemon.log looks like:
Feb 2 13:57:29 strider cardmgr: initializing socket 0 Feb 2 13:57:29 strider cardmgr: socket 0: Xircom CEM56 Ethernet/Modem Feb 2 13:57:29 strider cardmgr: executing: 'insmod /lib/modules/2.2.14/pcmcia/xirc2ps_cs.o' Feb 2 13:57:29 strider cardmgr: executing: 'insmod /lib/modules/2.2.14/pcmcia/serial_cs.o' Feb 2 13:57:32 strider cardmgr: executing: './network start eth0' Feb 2 13:57:34 strider cardmgr: executing: './serial start ttyS3'
However, I find that when I am running on battery power, and try to reinsert the card (to get the network going after a suspend/resume cycle, say), it gets misinterpreted as "anonymous memory", with the corresponding entry in daemon.log being
Feb 2 13:52:46 strider cardmgr: initializing socket 0 Feb 2 13:52:46 strider cardmgr: socket 0: Anonymous Memory Feb 2 13:52:46 strider cardmgr: executing: 'insmod /lib/modules/2.2.14/pcmcia/memory_cs.o' Feb 2 13:52:46 strider cardmgr: executing: './memory start mem0'
To get the card working properly under these conditions, I have to manually restart pcmcia (/etc/init.d/pcmcia restart), and then the card will be recognised on the next insertion (but not upon reinsertion after that).
The PCMCIA-HOWTO mentions some techniques for overcoming the "anonymous memory" problem, restricting the memory range scanned or setting speed options, but in my case they did not seem to help. It's possible I just didn't tweak them the right way, but it seems to me those suggestions really apply only if you *always* get the "anonymous memory" problem, whereas I only get it under battery power (and with certain BIOS settings, see following).
This problem may possibly be restricted to Toshiba laptops, and I have found a way of getting around the problem, allowing for reinsertion of the card under battery power without restarting pcmcia-cs, by changing BIOS settings. The Toshiba BIOS has an entry defining the way the PCMCIA slots are handled. There are 3 alternatives: default "automatic", which chooses between the other two which are "PCIC compatible" and "Cardbus/16bit".
I find that if I set the BIOS to "PCIC compatible", then my card (a 16bit PCMCIA card) is recognised perfectly, even under battery power. Problem solved, so to speak. If however I set it to either "automatic" or "Cardbus/16bit", then I get the problem I've been describing.
This suggests to me there is a bug in the cardbus code, which induces the problem when you're operating under battery power. I don't have a cardbus card so I can live with setting the BIOS to "PCIC", but it seemed worth reporting for the sake of others.
This problem is known to exist with version 3.1.8 and 3.1.10 of PC Card Services.