(import from http://wiki.linux1394.org/CardBus, last edited 2007-01-22)
Revision as of 17:35, 29 July 2008
There are two ways to utilize 1394 pccards on Linux - with the kernel's own CardBus driver or with pcmcia-cs. See pcmcia-cs' README-2.4 for explanation of differences. Both or only one of the two ways may work for you. Both work for me. I can test only ohci1394, not pcilynx.
CardBus driven by the kernel
This is the way supported by the IEEE 1394 linux driver maintainers.
To have CardBus support in the kernel, build it with CONFIG_PCMCIA=Y ("CardBus support") and with the ohci1394 and/or pcilynx driver. The kernel module responsible for 1394 pccards is called ohci1394.o or pcilynx.o and can be loaded manually (use modprobe) or by the hotplug subsystem.
Note that suspend and resume do not work yet, and card ejection is unstable. I recommend to unload all IEEE 1394 kernel modules before ejecting the pccard or before putting the computer into power saving mode.
You can run pcmcia-cs' cardmgr in parallel to a CardBus enabled kernel for traditional configuration of 16bit PCMCIA cards using /etc/pcmcia scripts.
If you experience problems regarding resource management, try kernel 2.4.20 --- or pcmcia-cs:
CardBus driven by pcmcia-cs
This way is not supported by the IEEE 1394 linux driver maintainers. But you may be forced to this option if the 2.4/ 2.6 kernel does not work properly with your CardBus bridge. Let standalone pcmcia-cs drivers operate the CardBus then. You need:
- kernel 2.4.19 or newer (strictly spoken: a kernel with ieee1394 drivers of revision 494/ May 28 2002 or newer - the original drivers in linux-2.4.19 are suitable),
- pcmcia-cs sources (3.1.33 or newer),
- and a patch for pcmcia-cs (download from below).
Build a kernel without CardBus support: CONFIG_PCMCIA=N, but with IEEE 1394 support. Install kernel and modules. Change to the directory containing pcmcia-cs sources and apply the patch:
bzcat /path/to/patchfile | patch -p0
Read and understand PCMCIA-HOWTO, build and install pcmcia-cs:
make config make all make install
The kernel module associated to 1394 pccards is then called ohci1394_cb.o or pcilynx_cb.o and should be loaded by the pcmcia-cs cardmgr.
Be warned that the system locks up hard when a 1394 pccard served by pcmcia-cs is ejected (at least my system does so). Avoid this by unloading IEEE 1394 high-level drivers such as sbp2 and then running cardctl eject every time before ejecting the pccard or before putting the computer into power saving mode.
- for use with ieee1394 rev. 494...536, e.g. original 1394 drivers of kernel 2.4.19:
- for use with ieee1394 rev. 537 and newer (last tested: 845, linux-2.4 branch), e.g. original drivers of kernel 2.4.20:
Please let us know if you are a notebook user who had broken CardBus kernel support and kernel 2.4.20+ fixes it.