User Tools

Site Tools


wlan:conceptronicc22c

Conceptronic C22C on Linux

concept-front.jpg concept-back.jpg

This cards official name is Wireless 22Mbps PC Card for Notebooks. It's an 32Bit Cardbus card with the model name C22C.

Inserting this card immediatly froze my machine after printing these lines:

cs: cb_alloc(bus 1): vendor 0x104c, device 0x8400
PCI: Enabling device 01:00.0 (0000 -> 0003)

After disabling the cardmanager (/etc/init.d/pcmcia-cs stop) and I was able to insert the card without a crash and to reveal the following info with lspci -v:

0000:01:00.0 Network controller: Texas Instruments ACX 100 22Mbps Wireless Interface
      Subsystem: Texas Instruments: Unknown device 8401
      Flags: medium devsel, IRQ 9
      I/O ports at 4000 [size=32]
      Memory at 10800000 (32-bit, non-prefetchable) [size=4K]
      Memory at 10810000 (32-bit, non-prefetchable) [size=64K]
      Capabilities: [40] Power Management version 2

General setup

I'll use a vanilla Kernel 2.4.26 from www.kernel.org with PCMCIA and Wireless LAN support. In userspace I use the latest pcmcia-cs (3.2.5-7), hotplug (0.0.20040329-11) and wireless-tools (26+27pre22-1) packages from Debians unstable branch. Everything is done on my Fujitsu-Siemens Lifebook.

The acx100 driver

A GPL'd driver for the TI chipset is available here: http://acx100.sourceforge.net/

$> wget http://switch.dl.sourceforge.net/sourceforge/acx100/acx100-0.2.0pre8.tar.bz2
$> tar -xjvf acx100-0.2.0pre8.tar.bz2
$> cd acx100-0.2.0pre8

So far so easy. The driver needs a firmware which is, for legal reasons, not included in the download. This firmware can be extracted from the windows drivers (available at conceptronic.net) or you can let the Makefile fetch and extract the needed firmware from the net. I go for the latter:

$> make fetch_firmware

Now compile and install

$> make
#> make install

Inserting the card no longer freezes the machine even with the cardmanager running but dmesg shows still some errors:

cs: cb_alloc(bus 1): vendor 0x104c, device 0x8400
PCI: Enabling device 01:00.0 (0000 -> 0003)
acx100: It looks like you were coaxed into buying a wireless network card
acx100: that uses the mysterious ACX100 chip from Texas Instruments.
acx100: You should better have bought e.g. a PRISM(R) chipset based card,
acx100: since that would mean REAL vendor Linux support.
acx100: Given this info, it's evident that this driver is quite EXPERIMENTAL,
acx100: thus your mileage may vary. Visit http://acx100.sf.net for support.
acx100_init_module: dev_info is: TI acx_pci
acx100_init_module: TI acx_pci.o: Ver 0.2.0pre8 Driver initialized, waiting for cards to probe...
PCI: Setting latency timer of device 01:00.0 to 64
Found ACX100-based wireless network card at 01:00.0, irq:9, phymem1:0x10800000, phymem2:0x10810000, mem1:0xd096c000, mem1_size:4096, mem2:0xd096e000, mem2_size:65536.
acx100_probe_pci: using ACX100 io resource addresses (size: 54)
hw_unavailable = 1
reset hw_unavailable++
acx100_reset_mac: enable soft reset...
acx100_reset_mac: disable soft reset and go to init mode...
ERROR: no directory for firmware file specified, ABORTING. Make sure to set module parameter 'firmware_dir'! (specified as absolute path!)
acx100_reset_dev: Failed to upload firmware to the ACX100
acx100_probe_pci: TI acx_pci: MAC initialize failure!
acx100_probe_pci: TI acx_pci.o: Ver 0.2.0pre8 Loading FAILED

Obviously it fails to load the firmware. The location of the firmware files has to be given as module parameter. First lets copy the firmware files downloaded by make fetch_firmware to some sane place. I suggest /usr/local/share/acx100-firmware.

#> mkdir -p /usr/local/share/acx100-firmware
#> cp firmware/*.BIN /usr/local/share/acx100-firmware/

Now we need to tell modprobe were we put it. For the Debian way we just create a new file called /etc/modutils/acx_wlan with the following content:

options acx_pci firmware_dir=/usr/local/share/acx100-firmware/

Then run update-modules as root.

Note: For 2.6.x Kernel you have to put this file in the /etc/modprobe.d directory.

Now inserting the card loads the driver with the right firmware and registers a wlan0 device to work with:

#> iwconfig wlan0 essid "MeinKleinesWLAN" key restricted 's:13chars ASCII' mode Managed
#> dhclient wlan0

Another card with wicked hardware mastered :-)

wlan/conceptronicc22c.txt · Last modified: 2006/11/13 14:48 by andi