3Com 3CRSHPW796 en Linux
(english
version)
Updated 01/02/2004
Eduardo Espina (eduardomx@gmail.com)
Este documento intenta ser una guía de instalación de la
tarjeta PCMCIA 3CRSHPW796 (wireless) de 3Com en Linux que funciona con
el protocolo IEEE 802.11b (Wi-Fi).
Se contempla en esta guía una configuración de tipo
"infrastructure" o "managed", es decir, que se cuenta con un Access
point, aunque con pequeñas modificaciones en los archivos de
configuración puede adaptarse para tipo "Ad-hoc".
Background
3Com maneja una serie de tarjetas inalámbricas de bajo
costo conocida como "Officeconnect", dentro de esta serie se manejan
los
modelos: 3CRSHPW196, 3CRSHEW696 y 3CRSHPW796. Los dos primeros, cuentan
con documentación ampliamente difundida sobre su uso en Internet
y hacen uso del driver atmel.
Sin embargo, el tercer modelo de la serie no utiliza el mismo chipset
de
los dos primeros, a pesar de ser comercializados dentro de la misma
familia.
La disección
Lo primero fue tratar de investigar el chipset utilizado en esta
tarjeta, pero la información que regresan comandos como
"cardctl ident" o "lspci -v" no define nada:
- 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
Después de algunas semanas de buscar información
infructuosamente en la red y de haber consultado con soporte
técnico de 3Com y no obtener respuesta, decidí abrir mi
tarjeta para ver el chipset utilizado, se trata de un adm8211 de ADMTek.
Este chipset es utilizado por varios fabricantes de tarjetas
inalámbricas (D-link, SMC y otras que pueden ser consultadas en
la página de Jean
Tourrilhes), y cuenta con drivers genéricos para Linux
proporcionados por el mismo fabricante que pueden ser bajados desde aquí,
sin embargo NO funcionan "out-of-the-box" con el modelo de 3Com, por lo
que es necesario aplicar un pequeño parche.
Software requerido
*
Incluido en la mayoría de las distribuciones de Linux recientes
** El parche que hice es experimental y en principio funciona, pero si
se autodestruye tu computadora por alguna razón, NO es mi culpa.
Configuración
Importante: extraer la tarjeta wireless antes de iniciar el
proceso.
Lo siguiente es desempaquetar y parchar el código fuente
del driver:
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
De aquí en adelante se requieren privilegios de administrador
para instalar el módulo.
Agregar las siguientes definiciones al archivo /etc/pcmcia/config:
device "8211"
class "network" module "8211"
card "3Com Corporation"
manfid 0x10b7,0x6000
bind "8211"
Instalar el binario del módulo:
cp 8211.o /lib/modules/2.4.19-4GB/pcmcia/
modprobe -r
depmod -a
* Aquí hay que
considerar la ruta adecuada según la versión del kernel
Ahora podemos insertar la tarjeta y debemos ver algo así en
/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
Ya casi acabamos, lo que falta para probar conectividad, es verificar
que la interface fue identificada:
ifconfig -a
Debemos obtener algo así:
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
Le asignamos una IP que sea válida para la red en la que
estamos, por ejemplo:
ifconfig eth0 192.168.1.1 netmask
255.255.255.0
Ahora tenemos que definir los parámetros propios de la red
inalámbrica:
iwconfig eth0 essid mired channel
8 nick mimaquina key 9EO5IHR839TIOE39PT2SPEORS
Donde:
essid: el SID de la red (nombre de la red)
channel: canal que se utiliza en la red
nick: nombre que se asigna al host
key: en caso de usar WEP (recomendado) es la llave de
cifrado
* Una barrera básica de
seguridad es no hacer broadcast del SID (en el accesspoint), sin
embargo en particular con esta tarjeta se pierde el acceso cuando se
inhabilita :(
Así que ahora podamos probar haciendo pings primero al
accesspoint (en caso de ser el ruteador) y posteriormente a alguna
máquina en internet.
Automatización
Para habilitar la tarjeta de red en booteo es necesario modificar o
agregar los siguientes archivos:
/etc/sysconfig/network/ifcfg-eth-pcmcia
en algunos sistemas: /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"
Se recomienda configurar un firewall, el cual puedes definir utilizando
IPTABLES, puedes consultar el
IP-TABLES HOWTO.
Comentarios finales
He recibido varias preguntas relacionadas a la compilación del driver en diferentes distribuciones de Linux, de hecho he compilado el driver en SuSE, Debian y algunas personas han reportado compilarlo en Redhat sin problemas.
[home] [papers]
[weblog] [fotos]