3Com 3CRSHPW796 in Linux
(spanish version)
Updated 01/02/2004
Eduardo Espina (eduardomx@gmail.com)
This paper is intended to be an installation guide for the 3Com PCMCIA
3CRSHPW796 (wireless) card in Linux, this card is compatible with the
IEEE 802.11b (Wi-Fi) protocol.
This guide is focused on "infraestructure" (managed) mode., this means
you should have an Access point, perhaps could be adapted to work as
"ad-hoc" with slight modifications in configuration files.
Background
3Com offers a family of low-cost wireless cards known as
"Officeconnect", the model names in this family are: 3CRSHPW196,
3CRSHEW696 and 3CRSHPW796. The 3CRSHPW196 and 3CRSHEW696 have extensive
documentation over the Internet, they use the atmel driver. But
the 3CRSHPW796 model doesn't use the same chipset, despite being sold
under the same family.
The dissection
The first step was to try to identify the chipset used by this card,
but the information returned by commands like "cardctl ident" or "lspci
-v" doesn't help much.
- linux:/etc # cardctl ident
Socket 0:
no product info available
- linux/etc # lspci -v
01:00.0 Network controller: 3Com Corporation: Unknown device 6000 (rev
11)
Subsystem: 3Com Corporation:
Unknown device 6000
Flags: bus master, medium
devsel, latency 64, IRQ 11
I/O ports at 4000 [size=256]
Memory at 10800000 (32-bit,
non-prefetchable) [size=1K]
Expansion ROM at 10400000
[size=128K]
Capabilities: [c0] Power
Management version 2
After some weeks of useless efforts to find information about this card,
and after asked technical support at 3Com and got no answer, i decided
to open up the card and see the chipset, an adm8211 by ADMTek. Later i found great info
at FCC, through the FCC ID number.
This chipset is used by many vendors (D-link, SMC and others that can
be found on Jean
Tourrilhes homepage) and has generic drivers for Linux, these
drivers are offered by Admtek and can be downloaded from here, but
doesn't work "out-of-the-box" for the 3Com 3CRSHPW796 card, so we need
to apply a patch.
Software required
*
Included in most recent linux distributions
** The patch i made is experimental and it works fine, but if your
computer gets auto-destroyed, it's NOT my fault.
Configuration
Important: Eject the card before start the process.
Next we have to untar and patch the driver source code:
tar zxvf ADM8211_src_105.tar.gz
cp ADM8211_src_105.patch ADM8211
cd ADM8211
patch -p0 < ADM8211_src_105.patch
ln -s /usr/src/linux-2.4.18 /usr/src/linux-2.4
make
For the next steps we'll need root privileges to install the module.
Add the following lines to file /etc/pcmcia/config:
device "8211"
class "network" module "8211"
card "3Com Corporation"
manfid 0x10b7,0x6000
bind "8211"
Install the module:
cp 8211.o /lib/modules/2.4.19-4GB/pcmcia/
modprobe -r
depmod -a
* The path need to be the appropriate for your kernel version
Now we can insert the card and should see something like this in
/var/log/messages:
Aug 12 23:30:57 linux kernel:
cs: cb_alloc(bus 1): vendor 0x10b7, device 0x6000
Aug 12 23:30:57 linux kernel: PCI: Enabling device 01:00.0 (0000
-> 0003)
Aug 12 23:30:58 linux cardmgr[544]: socket 0: CardBus hotplug
device
Aug 12 23:30:59 linux kernel: ADM8211 Linux driver version 1.05
(June 24, 2003)
Aug 12 23:30:59 linux kernel: PCI: Setting latency timer of
device 01:00.0 to 64
Aug 12 23:30:59 linux kernel: 8211: Hardware Address
00:0B:XX:XX:XX:XX, IRQ 11.
Aug 12 23:30:59 linux kernel: eth0: ADMtek Wireless rev 17 at
0x4000
Aug 12 23:30:59 linux insmod: Using
/lib/modules/2.4.19-4GB/pcmcia/8211.o
Aug 12 23:30:59 linux insmod: Symbol version prefix ''
Aug 12 23:30:59 linux insmod: Warning: loading
/lib/modules/2.4.19-4GB/pcmcia/8211.o will taint the kernel: non-GPL
license - Proprietary
Aug 12 23:30:59 linux insmod: See
http://www.tux.org/lkml/#export-tainted for information about tainted
modules
Aug 12 23:30:59 linux insmod: Module 8211 loaded, with warnings
We're almost done, what we need to do next is check connectivity
through ifconfig:
ifconfig -a
Output should look like this:
eth0
Link encap:Ethernet HWaddr 00:0B:XX:XX:XX:XX
inet6 addr:
fe80::20b:acff:fee6:4533/10 Scope:Link
UP BROADCAST
NOTRAILERS RUNNING MULTICAST MTU:1500 Metric:1
RX packets:5165
errors:0 dropped:0 overruns:0 frame:0
TX packets:73
errors:0 dropped:0 overruns:0 carrier:0
collisions:0
txqueuelen:100
RX bytes:372876
(364.1 Kb) TX bytes:21474 (20.9 Kb)
Interrupt:11
Base address:0x4000
We assign a valid IP for our network, for instance:
ifconfig eth0 192.168.1.1 netmask
255.255.255.0
Next we'll define parameters for the wireless networking:
iwconfig eth0 essid mynet channel
8 nick mymachine key 9EO5IHR839TIOE39PT2SPEORS
Where:
essid: SSID for our network
channel: channel we use
nick: host name
key: in case we use WEP (recommended), this is the cipher
key
* A basic security measure is to
disable the SSID broadcast (at accesspoint), nevertheless, with this
driver it's not possible to reach the accesspoint after disabling the
SSID broadcast. :(
So far so good, we can now try some pings to the accesspoint (in case
this is the gateway) and next ping some other machine on the Internet.
Automation
To enable the wireless networking at boot, it's necessary to modify the
following files:
/etc/sysconfig/network/ifcfg-eth-pcmcia
in some linux distros: /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO='dhcp'
DHCLIENT_SET_DOWN_LINK='yes'
REMOTE_IPADDR=''
STARTMODE='hotplug'
UNIQUE=''
WIRELESS='yes'
/etc/sysconfig/network/wireless
WIRELESS="yes"
WIRELESS_MODE="Managed"
WIRELESS_ESSID="mired"
WIRELESS_NICK="mimaquina"
WIRELESS_CHANNEL="8"
WIRELESS_KEY="9EO5IHR839TIOE39PT2SPEORS"
It's recommended to configure a firewall, wich can be implemented with IPTABLES, you can check the
IP-TABLES HOWTO.
Final comments
I've received many questions about the driver being compiled with different distros, in fact i have compiled the driver successfully in SuSE, Debian and people have compiled in Redhat without problems.
[home] [papers]
[weblog] [fotos]