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:
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.

chipset         chipset

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]