domingo,31de

Conceptronic C54RU en Ubuntu Breezy

Conceptronic C54RU en Ubuntu Breezy

C54RU
Hace algún tiempo realicé una anotación con varios enlaces con información referente a cómo instalar y configurar este dispositivo Wifi USB en Fedora Core 4. Lamentablemente, en aquella ocasión no tuve la oportunidad de probar el método, solamente anoté los datos como referencia para poder volver a ellos cuando tuviese algo más de tiempo. Pues bien, ese momento ha llegado y me he puesto manos a la obra, pero en esta ocasión con Ubuntu, que es la distribución GNU/Linux que tengo actualmente instalada.

El primer problema que nos encontramos, es que en la página oficial de Conceptronic no existen drivers GNU/Linux para el C54RU.

El C54RU es un adaptador Wi-Fi USB 2.0 basado en el Ralink RT2500 (al igual que, por ejemplo, el D-Link DWL-G122).

En la página oficial de Ralink podemos encontrar el código fuente de los drivers Linux para el mismo, aunque es necesaria una pequeña modificación en el archivo “rt2570sw.h” para que reconozca el dispositivo de Conceptronic:

133 #define RTUSB_DEVICES { \
134 {USB_DEVICE(RTVID1,RTPID1)}, \
135 {USB_DEVICE(RTVID2,RTPID2)}, \
136 {USB_DEVICE(RTVID3,RTPID3)}, \
137 {USB_DEVICE(RTVID4,RTPID4)}, \
138 {USB_DEVICE(RTVID5,RTPID5)}, \
139 {USB_DEVICE(RTVID6,RTPID6)}, \
140 {USB_DEVICE(RTVID7,RTPID7)}, \
141 {USB_DEVICE(GEMTEKVID,GEMTEKPID1)}, \
142 {USB_DEVICE(GEMTEKVID,GEMTEKPID2)}, \
143 {USB_DEVICE(0×14b2, 0×3c02)}, /* Conceptronic */ \
144 {USB_DEVICE(0,0)}} /* end marker */

Así mismo, también existe un proyecto Open Source denominado “rt2×00″ que está basado en los drivers originales de Ralink y que ya dan soporte al C54RU sin necesidad de modificación alguna.

En mi caso, he probado ambos drivers y funcionan de forma muy similar; pero para ésta anotación me voy a quedar con los del proyecto rt2×00 que parecen ser los más extendidos (y de los que se puede encontrar algo más de información).

El proyecto dispone de dos drivers independientes, uno para los dispositivos PCI y PCMCIA; y otro para los dispositivos USB (aunque actualmente están trabajando en un nuevo módulo que incluye el soporte para PCI, PCMCIA y USB, pero necesita como mínimo un kernel 2.6.13 con Extensión Wireless V18 y a día de hoy no está distribuida oficiamente para Ubuntu Breezy (la última disponible es la 2.6.12-10).

Nota: este adaptador consume unos 200 mA, por lo que a Linux no le hace mucha gracia que se lo enchufes en un hub USB. Conviene por tanto enchufarlo directamente a un conector USB del PC.

Compilando e instalando los drivers

Antes que nada, lo primero es (con el dispositivo conectado) mirar a ver si Ubuntu lo detecta:

$ lsusb

Con lo que deberíamos obtener algo similar a esto:

Bus 001 Device 002: ID 14b2:3c02
Bus 001 Device 001: ID 0000:0000

Si nos apararece el identificador 14b2:3c02, quiere decir que, efectivamente, se trata del Conceptronic C54RU y podemos pasar a descargar las fuentes del driver que han hecho los del proyecto “rt2×00″.

En concreto yo he probado tanto la versión rt2570-1.1.0-b1.tar.gz como la rt2570-cvs-daily.tar.gz (aunque recomiendo la 1.1.0-b1 que, en principio, es más estable).

Una vez descargado, lo descomprimimos:

$ gunzip rt2570-1.1.0-b1.tar.gz
$ tar -xvf rt2570-1.1.0-b1.tar

Ahora pasamos a compilar e instalar el módulo, pera antes tenemos que instalar los paquetes con las herramientas para poder realizar la compilación. En concreto tenemos que instalar lo siguiente:

$ sudo apt-get install build-essential linux-headers-$(uname -r)

NOTA: `uname -r` se sustituirá por la versión del kernel que tenemos instalado.

Además, como en Breezy el kernel está compilado con la versión 3.4 de gcc, debemos instalar también dicho paquete:

$ sudo apt-get install gcc-3.4

NOTA: Normalmente está instalado pero, por si acaso, nos debemos de asegurar que también tenemos el paquete “wireless-tools”.

Una vez instalado todo lo necesario, entramos en la carpeta “Module” y lo compilamos:

$ cd rt2570-1.1.0-b1/Module
$ make

Tras la compilación, tendremos el módulo “rt2570.ko”. Lo copiamos a la carpeta de módulos de nuestro kernel (en mi caso he creado antes una subcarpeta para él):

$ sudo mkdir /lib/modules/`uname -r`/kernel/drivers/net/wireless/rt2570
$ sudo cp rt2570.ko /lib/modules/`uname -r`/kernel/drivers/net/wireless/rt2570

En kernels 2.6 para configurar los módulos, se utiliza el archivo “/etc/modprobe.conf” y en los 2.4 “/etc/modules.conf” aunque luego puede variar segun uses un kernel generico o uno oficial de la distribucion. Además en las distribuciones Debian y derivadas se opera de forma algo diferente al resto: se procura no editar esos ficheros directamente si no que se van creando ficheros en “/etc/modutils” (asociado a “/etc/modules.conf”) o en “/etc/modprobe.d” (asociado a “/etc/modprobe.conf”) con las diferentes configuraciones de los modulos.

Ya que yo utilizo Ubuntu, que está basado en Debian, no usamos el fichero “/etc/modprobe.conf” sino que tendremos que crear el archivo “/etc/modprobe.d/rt2570″:

$ echo "alias rausb0 rt2570" | sudo tee /etc/modprobe.d/rt2570

Con esto hemos indicado que vamos a crear un dispositivo llamado rausb0 que será nuestra tarjeta de red USB (de modo similar a que eth0 es la tarjeta de red normal y corriente).

Ahora actualizamos las dependencias entre módulos ejecutando el comando:

$ sudo depmod -a

Y cargamos el módulo para poder probarlo:

$ sudo modprobe rt2570

NOTA: Es posible que sea necesario ejecutar antes:
$ sudo insmod /lib/modules/`uname -r`/kernel/drivers/net/wireless/rt2570/rt2570.ko

Ahora para probar si el USB nos funciona debemos hacer un “iwconfig” y ver el resultado. Si obtenemos algo parecido a lo siguiente, eso quiere decir que en ese dispositivo nos reconoció el adaptador y ahí vamos a tener que configurarlo.

$ iwconfig

lo no wireless extensions.

eth0 no wireless extensions.

sit0 no wireless extensions.

rausb0 RT2500USB WLAN ESSID:”"
Mode:Managed Frequency=2.412 GHz
RTS thr:off Fragment thr:off
Link Quality=0/70 Signal level:-120 dBm Noise level:-256 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

Ahora podríamos levantar la tarjeta de red ejecutando el comando:

$ sudo ifconfig rausb0 up

Configurando WEP

Para configurar WEP editamos el archivo “/etc/network/interfaces” (aunque también podríamos utilizar el Gnome Network Manager):

$ sudo gedit /etc/network/interfaces

Para configurar la red utilizando IP estática escribiríamos algo como esto:

auto rausb0
iface rausb0 inet static
wireless-essid MIESSID
wireless-key s:clave
address 192.168.2.201
netmask 255.255.255.0
gateway 192.168.2.1

Donde:

  • wireless-essid: es el ESSID (nombre de tu wlan) configurado en el router wireless
  • wireless-key s: es la clave WEP configurada en el router wireless
  • address: es la dirección IP fija que va a tener tu equipo
  • netmask: es la máscara de red de tu subred wireless
  • gateway: es la dirección IP de tu router wireless (que servirá de pasarela)

Y para utilizar DHCP sería algo así:

auto rausb0
iface rausb0 inet dhcp
wireless-essid MIESSID
wireless-key s:clave

Configurando WPA

El driver rt2570 soporta WPA de forma nativa. Para configurarlo no utilizaremos el Gnome Network Manager ya que no tiene opciones WPA. Es necesario, por tanto, editar a mano el archivo “/etc/network/interfaces”:

$ sudo gedit /etc/network/interfaces

Para configurar la red utilizando IP estática escribiríamos algo como esto:

iface rausb0 inet static
pre-up ifconfig rausb0 up
pre-up ifconfig rausb0 down
pre-up ifconfig rausb0 up
pre-up ifconfig rausb0 down
address 192.168.2.201
netmask 255.255.255.0
network 192.168.2.0
broadcast 192.168.2.255
gateway 192.168.2.1
wireless_essid rubensa
wireless_channel 11
wireless_mode Managed
pre-up ifconfig rausb0 up
#del codigo fuente: significa WPAPSK
pre-up iwpriv rausb0 auth 3
#del codigo fuente: significa CIPHER_TKIP
pre-up iwpriv rausb0 enc 3
pre-up iwconfig rausb0 channel 11
pre-up iwconfig rausb0 essid rubensa
pre-up iwpriv rausb0 wpapsk 12345678
pre-up iwconfig rausb0 essid rubensa
pre-up iwpriv rausb0 wpapsk wpakey_usada_en_la_configuracion_del_router
up iwconfig rausb0 essid nombre_de_tu_wlan
up iwconfig rausb0 rate 54M
up iwconfig rausb0 key open
up route add -net default netmask 0.0.0.0 gw 192.168.2.1 dev rausb0
dns-nameservers 192.168.2.1

Donde:

  • address, es la dirección estática de tu equipo
  • netmask, es la máscara de red
  • gateway, es la dirección IP de tu punto de acceso
  • wireless_essid y essid (de iwconfig), es el identificador de tu red wireless (configurado en el punto de acceso)
  • wireless_chanel y channel (de iwconfig), es el canal de comunicación usado por tu punto de acceso
  • auth (de iwpriv), es el tipo de autentificació a utilizar (1:Open, 2:Shared, 3:WPAPSK, 4:WPA2PSK, 5:WPANONE)
  • enc (de iwpriv), es el tipo de codificación (1:none, 2:wep, 3:tkip, 4:aes)
  • wpapsk (de iwconfig) es la contraseña de wpa

Si quisiéramos utilizar dhcp en lugar de configurar la ip estáticamente, escribiríamos algo similar a lo siguiente (aunque hay que decir que no he sido capaz de configurarlo porque parece ser que el cliente de dhcp intenta obtener la dirección IP sin hacer uso de la configuración WPA):

iface rausb0 inet dhcp
pre-up ifconfig rausb0 up
pre-up ifconfig rausb0 down
pre-up ifconfig rausb0 up
pre-up ifconfig rausb0 down
pre-up iwconfig rausb0 essid rubensa
pre-up iwconfig rausb0 mode Managed
pre-up iwpriv rausb0 auth 4
pre-up iwpriv rausb0 enc 3
pre-up iwpriv rausb0 wpapsk 12345678
pre-up ifconfig rausb0 up

Salvamos el archivo e iniciamos la interfaz:

$ sudo ifup rausb0

Resumen rápido y notas finales

  1. No utilices “make install” ya que modifica “/etc/modules.conf” que no es lo correcto para Debian (y por tanto para Ubuntu)
  2. Copia el módulo rt2570.ko en el arbol de módulos de tu kernel
  3. Pon un alias para asociar el módulo con el dispositivo Conceptronic. Todos los archivos de “/etc/modprobe.d” son leidos por “modprobe” así que simplemente crea un archivo con el alias:

    $ sudo echo "alias ra0 rt2500" >/etc/modprobe.d/rt2570

  4. Comprueba si está funcionando ejecuando “rmmod rt2570; depmod -a; modprobe rausb0″ con lo que se debería cargar el módulo rt2570
  5. Configura la seguridad WPA en el archivo “/etc/network/interfaces”
  6. En el futuro simplemente tienes que enchufar el adaptador y ejecutar “ifup rausb0″ para activar el enlace
  7. Si quieres puedes automatizar el proceso creando una archivo con permisos de ejecución llamado “/etc/hotplug/usb/rt2570″ con estas 3 líneas:

    #!/bin/bash
    # Este archivo lo ejecuta hotplug cuando se inserta el adaptador rt2570
    /sbin/ifup rausb0

Algunos comandos de interés

  • lsmod (lista los módulos cargados. Aquí debería aparecer rt2570)
  • depmod -a (actualiza las dependencias entre módulos)
  • modinfo rt2570.ko (da información del módulo)
  • rmmod rt2500 (elimina el módulo especificado del kernel)
  • dmesg (mustra los mensajes del kernel)

Algunos enlaces de interés

http://www.methods.co.nz/doc/ralink-2400.html


[ACTUALIZADO 03/04/2006]: Por alguna extraña razón, tras haberlo configurado y estar funcionando, algo he debido de “estropear” porque no he sido capáz de volver a hacerlo funcionar (ni siquiera sin seguridad). Espero no haberme “cargado” mi C54RU en alguna de las múltiples pruebas.


[ACTUALIZADO 03/05/2006]: Hoy me he enterado buscando más info sobre este dispositivo (y después de haber intentado utilizar, sin éxito, los drivers ural-linux, aunque parece que reconocen el dispositivo, como el resto de los probados) me he encontrado con que hay dos versiones del mismo. Una que utiliza el chipset RT2500 y otra el RT73 -drivers en la página de Ralink desde el 28/04/2006-.
Así que voy a ver si estaba utilizando los drivers para el chipset erróneo. NOTA: al menos tendré que parchear el archivo “rtmp_def.h” para añadir el ID de mi dispositivo.

De acuerdo con la info encontrada en este foro, hay varios fabricantes que han cambiado el chipset de sus dispositivos USB sin modificar su USB ID y por lo tanto no se puede saber que chipset llevan. De todos modos, si el driver de windows se llama rt73.inf e incluia la firmware entonces se trata de un dispositivo rt73 y si el driver de windows es el rt2570.inf entonces se trata del rt2570.


[ACTUALIZADO 06/05/2006]: Al final he decidido volver “a los orígenes” y he configurado mi red utilizando WEP (para comprobar que aún me funcionaba mi dispositivo ;-) ).
OJO: En el Router (Conceptronic C54BRS4) me he dado cuenta que tengo que establecer “Authentication Type” a “Open System” o a “Auto” (pero no a “Shared Key”) para hacerlo funcionar.


[ACTUALIZADO 01/06/2006]: Hoy ha salido el Ubuntu 6.06 LTS, que ofrece soporte “de serie” para el dispositivo, así que si te actualizas a dicha versión ya no necesitarás realizar la instalación del driver “a mano”. Una grata sorpresa ^_^

NOTA: Os recuerdo que podemos actualizarnos a la nueva versión de Ubuntu con un:

$ sudo update-manager -d

fuente: http://rubensa.wordpress.com/2006/03/20/ubuntu-c54ru/

0 comentarios: