[conspire] Re: pcmcia 16 bit modems

Rick Moen rick at linuxmafia.com
Sun Jan 5 13:39:23 PST 2003

Just catching up on old list-mail.  Apologies for breaking threading,
but I no longer have Dan's original in my mailbox, and so have to quote
from the Web archive.

Quoting Dan (robxbob at LinuxWillBe.com):

> I'm looking for suggestions on a good pcmcia modem to buy for my
> linux laptops.
> I'm convinced I need a pcmcia 16 bit pc-card modem as opposed to 
> a 32 bit pcmcia device since my current (working) network cards have 
> "pc-card 16" written on them.

You know, I didn't address the question when you first posted it,
because I wasn't sure about this, but:  My recollection is that the
32-bit PCMCIA "CardBus" stuff is pretty much fully backwards compatible.
That is, I'll bet that a card described as 32-bit/CardBus will work OK
in any PCMCIA socket -- and all you have to do is use drivers whose
names end in "cs" for Card Services, instead of "cb" for CardBus.  But I
don't know this for certain.

> Is a pcmcia 16 bit pc-card modem enough of a generic device that
> I may be free to pick one from a wide variey of choices?

The 3Com / US Robotics / Megahertz cards _tend_ to be safe choices,
though I know those mainly from combo (ethernet/modem) cards.  But
there's the winmodem plague in their product line, as in many others.
(The cheaper the card, the more likely it is to be a winmodem, because
winmodems are all about cutting costs by omitting circuitry.)

You could do a lot worse than to just print out the PCMCIA section of
Rob Clark's "winmodem" database, and take it with you to stores:

In Linux, cards get detected by the /sbin/cardmgr daemon (part of David
Hinds's PCMCIA Card Services aka PCMCIA-CS package).  cardmgr queries
the card for its identity string or manufacturer ID ("manfid"), and then
compares that string or manfid against known entries in the
SUPPORTED.CARDS database, here:  /etc/pcmcia/config (Don't be scared by
the word "database":  It's a plain old flat text file.)

I believe you can actually update your /etc/pcmcia/config from updates
David posts here:  http://pcmcia-cs.sourceforge.net/ftp/SUPPORTED.CARDS

When you insert a card and cardmgr detects the insertion event, you'll 
(always) hear a beep, to acknowledge that.  A second or two later,
depending on whether cardmgr finds a match for the card's ID string or
manfid in /etc/pcmcia/config, you'll either hear another of the same
beep (match found), or a lower-pitched beep (no match).

If a match has been found, then cardmgr will initiate an "insmod"
(insertion of a driver module into the running kernel) of the PCMCIA
driver indicated as appropriate for that card.  Here's an example
/etc/pcmcia/config entry that looks for ID strings:

  card "Megahertz XJ2288 V.34 Fax Modem"
    version "MEGAHERTZ", "XJ2288", "V.34 PCMCIA MODEM"
    bind "serial_cs"

...and an equivalent one that looks for manfids:

  card "Megahertz XJ2288 V.34 Fax Modem"
    manfid 0x0101, 0x1234
    bind "serial_cs"

If a match is _not_ found, then cardmgr won't attempt anything further
until you give it more to go on.  Such as one of the two entries above, 
which say "Look out for these strings (or these manfids).  If you see
them, then insmod the serial_cs driver.  No special options."

Essentially, somebody owned an early sample of one of those cards, did
"cardmgr ident" at the Linux command prompt to query it manually for its
ID strings and manfids, and then sent David e-mail saying "Hey, I have
this new Megahertz XJ2288 PCMCIA modem that your Card Services package
doesn't support yet.  Here are its 'cardmgr ident' return values."  Next
release, David would include a new entry for that card in
/etc/pcmcia/config .  Meanwhile, the card's owner probably hand-edited
the local-additions file, /etc/pcmcia/config.opts , to contain an entry
like one of the above.

I had to do exactly that, for a couple of my old cards.  Here's stuff I
added to my /etc/pcmcia/config.opts:  

  card "Cisco 350"
    manfid 0x015f, 0x000a
    bind "airo_cs"

  card "Intel EtherExpress PRO/100 LAN/Modem PC Card Adapter"
    version "Intel", "EtherExpress(TM) PRO/100 LAN/Modem PC Card Adapter", "PRO/10 0 M16B", "1.00"
    bind "xirc2ps_cs" to 0

In the case of the Intel card, I didn't care at that time whether Linux
could use the modem half of that card, just the ethernet half, so I
didn't bother to tell it to bind serial_cs to card function #1, just
the xirc2ps_cs driver to function #0.  (I guessed how that worked by 
looking at other entries for Intel cards, and experimenting.)

However, with reasonable luck, you won't have to do any of that.

Hmm, David's SUPPORTED.CARDS file has words of wisdom on the
modem-selection question:

Modem and serial cards:

	[ Virtually all modem cards, simple serial port cards, and
	digital cellular modems should work.  The only exceptions are
	so-called "WinModems" that require special drivers.  ISDN
	modems that emulate a standard UART are also supported.  Some
	Winmodem drivers do exist (i.e., the ltmodem driver for Lucent
	chipsets).  For more information about WinModems, drivers,
	etc, see either http://www.o2.net/~gromitkc/winmodem.html,
	http://www.linmodems.org, or http://linmodems.technion.ac.il ]

	[serial_cs driver] [x86,axp,ppc,smp]
	Advantech COMpad-32/85 dual port, COMpad-32/85B-4 quad port
	Anycom ECO II dual serial
	Argosy dual serial
	Black Box I114A RS-422/485
	Brain Boxes 2-Port RS-232
	Brain Boxes BL-500 Bluetooth Adapter
	National Instruments PCMCIA-232, PCMCIA-232/2, PCMCIA-232/4
	National Instruments PCMCIA-485, PCMCIA-485/2
	Omega Engineering QSP-100
	Quatech, IOTech dual RS-232 cards
	Quatech quad RS-232 card, dual and quad RS-422 cards
	Socket Communications dual RS-232 card
	Trimble Mobile GPS

	[pcmcia-cs driver: serial_cb] [x86]
	[2.4+ kernel driver: serial]
	Xircom RBM56G, CBM56G

	[ The following cards are WinModems and are NOT supported by
	  the serial drivers included in the PCMCIA package ]
	3Com/Megahertz 3CXM356/3CCM356, 3CXM656/3CCM656
	3Com/Megahertz XJ/CC2560, 3013, 3014
	3Com/USRobotics 3014A, 3056, 3057
	Abocom FM560CB
	ActionTec CM560LH
	Billionton 56K HSP
	Com1 Platinum MC221 Discovery 56K
	Compaq 192
	IBM 10L7393, 10L7394
	Lucent LT Winmodem
	Motorola Montana
	New Media WinSurfer
	Paradise CW56K HSP
	Xircom R2BM56W, R2BM56WB


> If it turns out that I need to try out 10 different pcmcia modems
> before I find one which works, I'd prefer to just buy a tiny external
> hayes compatible modem and connect it to my serial port.

Suggestion:  Bring your (Linux-installed) laptop with you to the store.
If it's Action Computer, they'll be willing to let you plug cards into
your laptop's PCMCIA socket, to see if you can hear that cheery double
beep that means you've won without hassle.

Just for completeness's sake, I should mention that, just because
cardmgr finds a match for the card's ID strings or manfids, and just
because it's insmod'ed a driver that you or David Hinds considers
appropriate, doesn't absolutely guarantee that it'll actually work.
The manufacturer could have done something really perverse like change
to a completely different -- or subtlely different -- chipset without
changing the ID string / manfids.  Or the card could ID properly but be
defective.  But that's very unlikely to happen with something as basic 
as a modem card.

Rick Moen                                        This space for rant.
rick at linuxmafia.com

More information about the conspire mailing list