HowTo RT61 (Ralink 2561)

Edimax (EW-7128G)

Este documento no es más que un conjunto de experiencias, todas estas fueron en busca de un resultado positivo y no ahonda en configuraciones avanzadas de linux, lo que se buscaba era que la placa con el driver RT61 sea reconocida por el Sistema Operativo Linux (Debian Etch) y poder conectar y autenticar con encriptación WPA/TKIP contra un AP (Lynksys).

Dejando de lado las presentaciones, les cuento mis experiencias y con que elementos arranque:

Tengo una PC "viejita"

486 DX-4
64 de Ram (4X16 SIMM)
Disquetera de 3 1/2
Disquetera de 5 1/4
HD de 20GB WD (el original de 1 gb palmo)
Dos placas de red (una PCI y otra ISA que no estoy usando)
Y una placa Wifi Edimax (EW-7128G)

Despues de los periplos para poder hacer que la pc booteara desde la lectora (solucionado con el SmartbootManager (SMB) en su versión mas nueva, hasta el día de hoy la versión 3.7) le instale Debian Etch en la partición primaria /boot de 128MB con el cargador LILO....de más esta decir que la instalación duro mas de 7hs solo el sistema báse pelado.

Al arrancar y hacer un lspci me indica mi 486 DX-4 que había tomado la placa Edimax pero no figuraba nada en el ifconfig -a:

# lspci
00:0d.0 Network controller: RaLink RT2561/RT61 802.11g PCI
00:0e.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
00:10.0 Host bridge: United Microelectronics [UMC] UM8881F (rev 04)
00:12.0 ISA bridge: United Microelectronics [UMC] UM8886A (rev 0d)
00:12.1 IDE interface: United Microelectronics [UMC] UM8886BF (rev 0d)
#

Buscando info en google y en la lista de BAL veo que hay 3 posibilidades de hacerla funcionar:

  1. Instalar los driver oficiales del fabricante (RALINK http://www.ralinktech.com/ralink/Home/Support/Linux.html)

  2. Instalar los drivers de serialmonkey.com (son NO oficiales pero bastante desarrollados http://rt2x00.serialmonkey.com/), aclaro que hasta el momento con estos drivers no se puede poner en modo MASTER, pero dicen en el foro que en poco tiempo se hara posible...habra que esperar (http://rt2x00.serialmonkey.com/phpBB2/viewtopic.php?t=4203)

  3. Instalar los drivers de serialmonkey.com pero los Rt2x00, estos si o si obligan a realizar una compilacion del kernel (http://rt2x00.serialmonkey.com/wiki/index.php?title=Rt2x00_GIT_instructions) y con esto si se podria poner en modo MASTER.

Yo opte por elpunto 2, mas que nada porque los del fabricante no eran muy actuales y leí que no traían soporte para WPA, la contra de elegir estos drivers es que por el momento no acepta el modo MASTER, por el momento....

Asi me mostraba el resulado de la compilación:

citybell:/home/martin/rt61-cvs-2007110611/Module# make
make[1]: se ingresa al directorio `/usr/src/linux-headers-2.6.18-4-486'
  CC [M]  /home/martin/rt61-cvs-2007110611/Module/rtmp_main.o
  CC [M]  /home/martin/rt61-cvs-2007110611/Module/mlme.o
  CC [M]  /home/martin/rt61-cvs-2007110611/Module/connect.o
  CC [M]  /home/martin/rt61-cvs-2007110611/Module/sync.o
  CC [M]  /home/martin/rt61-cvs-2007110611/Module/assoc.o
  CC [M]  /home/martin/rt61-cvs-2007110611/Module/auth.o
  CC [M]  /home/martin/rt61-cvs-2007110611/Module/auth_rsp.o
  CC [M]  /home/martin/rt61-cvs-2007110611/Module/rtmp_data.o
  CC [M]  /home/martin/rt61-cvs-2007110611/Module/rtmp_init.o
  CC [M]  /home/martin/rt61-cvs-2007110611/Module/sanity.o
  CC [M]  /home/martin/rt61-cvs-2007110611/Module/rtmp_wep.o
  CC [M]  /home/martin/rt61-cvs-2007110611/Module/wpa.o
  CC [M]  /home/martin/rt61-cvs-2007110611/Module/md5.o
  CC [M]  /home/martin/rt61-cvs-2007110611/Module/rtmp_tkip.o
  CC [M]  /home/martin/rt61-cvs-2007110611/Module/rtmp_info.o
  CC [M]  /home/martin/rt61-cvs-2007110611/Module/eeprom.o
  CC [M]  /home/martin/rt61-cvs-2007110611/Module/rt2x00debug.o
  LD [M]  /home/martin/rt61-cvs-2007110611/Module/rt61.o
  Building modules, stage 2.
  MODPOST
  CC      /home/martin/rt61-cvs-2007110611/Module/rt61.mod.o
  LD [M]  /home/martin/rt61-cvs-2007110611/Module/rt61.ko
make[1]: se sale del directorio `/usr/src/linux-headers-2.6.18-4-486'
*** Module rt61.ko built successfully
citybell:/home/martin/rt61-cvs-2007110611/Module#

Y luego:

citybell:/home/martin/rt61-cvs-2007110611/Module# make install
*** Install module in /lib/modules/2.6.18-4-486/extra ...
make[1]: se ingresa al directorio `/usr/src/linux-headers-2.6.18-4-486'
  INSTALL /home/martin/rt61-cvs-2007110611/Module/rt61.ko
  DEPMOD  2.6.18-4-486
make[1]: se sale del directorio `/usr/src/linux-headers-2.6.18-4-486 '
/sbin/depmod -a
*** Update /etc/modprobe.conf alias for wlan*
*** Install firmware in /lib/firmware ...
*** Check old config ...
citybell:/home/martin/rt61-cvs-2007110611/Module#

Despues de esto realice un lsmod para verificar que esté el módulo pero no había nada para mi sorpresa, desde la lista de BAL (Pablo) me indicaba que a pesar de no verlo con lsmod ni con el ifconfig, hága un modpro rt61, al realizarlo probe hacer un iwconfig y APARECIO!, enseguida probe hacer un escaneo para ver que salia:

# iwlist wlan0 scanning
wlan0     Scan completed :
          Cell 01 - Address: 07:14:B6:DA:E7:22
                    ESSID:"mired"
                    Mode:Managed
                    Channel:9
                    Encryption key:on
                    Bit Rates:0 kb/s
                    Quality:0/100  Signal level:-60 dBm  Noise level:-256 dBm

A esta altura estaba mas que contento!. Tenia la 486-DX4 con debian, y reconociendo la placa wireless y escaneando el aire.

Hasta este punto ya habia logrado lo mas importante y era que la placa sea reconocida y pueda ver el AccessPoint, ahora faltaba la segunda etapa que era que se pueda conectar con el AP con una autenticación medianamente seguraLa segunda etapa consiste en conectarlo al AP con encriptacion WPA/TKIP, que es la encriptación que uso en la red. Ya desde acá me seguía guiando Pablo (gracias Pablo!) y el me pasaba una serie de líneas para poder conectar con el AP+WAP/TKIP, la ídea es, la primera vez ponerla linea por linea y ver si da algún tipo de error, las lineas son estas:

1. iwconfig wlan0 mode managed
2. iwpriv wlan0 set AuthMode=WPAPSK
3. iwpriv wlan0 set EncrypType=TKIP
4. iwconfig wlan0 essid "tu_essid"
5. iwpriv wlan0 set WPAPSK="tuclave"
6. iwconfig wlan0 essid "tu_essid"

Los números son solo para que quede claro el orden, se debe colocar de esta forma y repitiendo el essid en los pasos 4 y 6 tal cual figuran. En mi caso no dio nungún error y al hacer un iwconfig ví que estaba Conectado!

# iwconfig
wlan0     RT61 Wireless  ESSID:"mi_red"
         Mode:Managed  Frequency:2.452 GHz  Access Point: 00:66:B4:DA:E7:04
         Bit Rate=24 Mb/s
         RTS thr:off   Fragment thr:off
         Encryption key:CE5E-3F0EBLABLABLBABLABLA
         Link Quality=63/100  Signal level:-71 dBm  Noise level:-103 dBm
         Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
         Tx excessive retries:0  Invalid misc:0   Missed beacon:0
#

Para ver realmente si salió por esa placa y por el AP puse default gateway la IP de la placa wireless

# route add default gateway la_ip_del_AP

Y luego realize un traceo para ver las IP por donde pasaba el paquete:

citybell:/home/martin# traceroute -n
traceroute to  (198.133.219.25), 30 hops max, 40 byte packets
 1  192.168.1.2  1.961 ms  1.996 ms  1.701 ms
 2  * * *
 3  200.51.233.142  263.436 ms  182.426 ms  100.569 ms
 4  200.51.233.135  226.157 ms  70.172 ms  98.647 ms
 5  213.140.36.218  17.624 ms  18.460 ms *
 6  213.140.43.69  231.799 ms 84.16.12.193  140.156 ms 213.140.38.70  278.669 ms
 7  213.140.36.89  256.169 ms  136.037 ms 213.140.43.198  137.904 ms
 8  84.16.12.233  191.703 ms  168.235 ms 213.140.36.37  182.817 ms
11  84.16.12.165  292.313 ms  168.182 ms 213.140.36.193  305.912 ms
12  12.123.16.2  249.066 ms 213.140.37.85  210.838 ms

Ya con esto me senti mas que satisfecho. Lo que faltaba hacer es modificar el /etc/network/interfaces con lo valores de la wlan0 para que levante automaticamente:

citybell:/home/martin# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5)
# The loopback network interface

auto lo

iface lo inet loopback

auto wlan0

iface wlan0 inet static
        address 192.168.1.100
        netmask 255.255.255.0
        network 192.168.0.0
        gateway 192.168.1.2
        post-up iwconfig wlan0 mode managed
        post-up iwpriv wlan0 set AuthMode=WPAPSK
        post-up iwpriv wlan0 set EncrypType=TKIP
        post-up iwconfig wlan0 essid 'mi_essid'
        post-up iwpriv wlan0 set WPAPSK='mi_clave'
        post-up iwconfig wlan0 essid 'mi_essid'

auto eth0

iface eth0 inet static
        address 192.168.0.36
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1

#iface eth0 inet dhcp

citybell:/home/martin#

Y como me dijo Pablo, poner los valores en un script para que una vez que levante se carguen los valores de WPA, es medio repetitivo, ya que en el interfaces ya estan los valores, pero por alguna razón necesita de ese script para que pueda autenticar, les paso el script que lo puse en el /etc/rc.local que es lo ultimo que levanta:

citybell:/home/martin# cat rt61
iwconfig wlan0 mode managed
iwpriv wlan0 set AuthMode=WPAPSK
iwpriv wlan0 set EncrypType=TKIP
iwconfig wlan0 essid 'mi_essid'
iwpriv wlan0 set WPAPSK='mi_clave'
iwconfig wlan0 essid 'mi_essid'
citybell:/home/martin#

Con todo esto te aseguras que tu debian tome la placa, la configure, se conecta al AP con WPA y tengas salida a internet. En mi caso particular, no fue tan así....por algun motivo al reinciar la pc alguna veces tomaba la placa y otras no. El mensaje en el dmesg era este:

rt61: Could not load firmware! (is firmware file installed?)

Por eso hago esta diferencia, hasta este punto debería andarle a las mayorias de las pc, en el caso de la mía y viendo los resultados de los dmesg y el syslog saque en conclusión que al ser una pc vieja el hecho que demora más hace que aveces no tome el modulo y otras si...aleatoreamente.

Lo que hize o me ayudaron a hacer (gracias Nestor!) es sacar el modulo de memoria, agregarlo nuevamente y hacer que relea el archivo de configuración de las placas (interfaces) todo esto lo meti en un script para que lo ralice al final de la carga. Aclaro que esto que voy a poner tambien funcionaría en cualquier otra pc, pero es perder tiempo ya que en maquinas mas potentes , a mi parecer, esto no sucedería pero bueno si lo hacen tb les va a andar.

Antes que nada saque el script que puse en el /etc/rc.local y puse la siquiente linea al final.

echo '/home/martin/rt61_nuevo.sh'| at now + 2 minutes

Con esto lo que logro es que al finalizar toda la carga del sistema, se ejecute esa linea donde demora 2 minutos y luego hace correr el script rt61_nuevo.sh, que dice lo siquiente:

citybell:/home/martin# cat rt61_nuevo.sh
#!/bin/bash
rmmod rt61                              #saca el modulo
sleep 15                                #espera  15 segundos
modprobe rt61                           #carga el modulo
sleep 15                                #espera 15 segundos
/etc/init.d/networking force-reload     #hago que relea la configuracion de las placas
sleep 15                                #espera 15 segundos
route add default gateway 192.168.1.2   #Agrego la ruta por defecto
iwconfig wlan0 mode managed             #Autentica contra el AP
iwpriv wlan0 set AuthMode=WPAPSK        #Autentica contra el AP
iwpriv wlan0 set EncrypType=TKIP        #Autentica contra el AP
iwconfig wlan0 essid 'mi_essid'         #Autentica contra el AP
iwpriv wlan0 set WPAPSK='mi_clave'      #Autentica contra el AP
iwconfig wlan0 essid 'mi_essid'         #Autentica contra el AP
iwconfig wlan0 retry 60                 #Hace un reintento para conectarse cada 60 segundos por si se cayo el AP
citybell:/home/martin#

Se daran cuenta que se toma su tiempo...pero bueno lo importante es que se conecte. Lo tengo andando asi y hasta ahora siempre se conecta.

Espero les sirva, ;)

Wiki: PlacasParaLinux/RT61 (last edited 2012-05-22 12:03:44 by CarlosSaavedra)

USLA