Configurando el Wi-Fi USB en la Raspberry PI ( Con Realtek RTL8188CUS )
Como he comentado en entradas anteriores para disponer espacio de trabajo me he mudado "al comedor", ya que es la mesa mas grande que tengo a mi disposición en mi casa. El problema es que tanto cable dando vuelta alrededor mío ya me esta volviendo un poco "loco".
El problema se vuelve aún más grande cuando conecto la Raspberry PI ya que me conecto vía cable Ethernet. Usualmente para trabajar en la RasPI utilizo SSH así me evito el tener que usar un teclado y un ratón extra, de esta manera trabajo todo desde la laptop
Esta entrada les explicaré como he configurado mi adaptador Wireless en el Raspberry PI y de paso como eliminar algunos molestos cables de sus alrededores.
El patito feo de la familia, la Sabrent Mini USB Wireless-N (RTL8188CUS)
Hoy en la tarde, aprovechando mis últimos días de vacaciones, me fuí a dar una vuelta por Metrocentro. Luego de caminar y vitrinear un rato, me encontré con este pequeñísimo adaptador Wireless a un precio bastante razonable ($17).
Este mini adaptador es apenas más grande que una moneda de 10 centavos de dólar y está basado en el chip Realtek RTL8188CUS.
No me van a negar que se ve muy bonito conectado a la Raspberry PI.
El problema (porque siempre tiene que haber más de alguno), es que al parecer esta versión específica del chip daba serios problemas en versiones anteriores del kernel utilizado en la distribución raspian.
Esto último me mantuvo bastante confundido buscando compilar el driver de Realtek, hasta que me di cuenta que la última versión de Raspian "wheezy" incluye el controlador correcto por lo que no era necesario hacer nada más que jugar un poco con la configuración.
Actualizando los paquetes necesarios
Es muy recomendable que se aseguren de estar utilizando la última versión de los paquetes en su Raspberry PI, esto lo pueden hacer ejecutando el siguiente comando:
pi@raspberrypi ~ $ sudo apt-get update pi@raspberrypi ~ $ sudo apt-get upgrade
Esta entrada asume que ustedes están usando la última versión del kernel 3.2.27+, si no es así pueden actualizar con el siguiente comando:
Adicionalmente tienen que asegurarse de tener la última versión del software wpa_supplicant, este pequeño programa se encarga de realizar la autenticación con redes inalámbricas.
pi@raspberrypi ~ $ sudo apt-get install raspberrypi-bootloader
Adicionalmente tienen que asegurarse de tener la última versión del software wpa_supplicant, este pequeño programa se encarga de realizar la autenticación con redes inalámbricas.
pi@raspberrypi ~ $ sudo apt-get install wpasupplicant
Verificando el hardware
Primero tienen que verificar que se haya detectado el "dongle" haciendo uso del comando "lsusb":
pi@raspberrypi ~ $ lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. Bus 001 Device 004: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter
Estamos interesados en que se muestre RTL8188CUS en alguna de las líneas. Si no aparece pueden intentar volverlo a conectar o reiniciar la Raspberry PI.
Siguiendo a lo anterior se debe verificar que la configuración Wireless ha detectado el adaptador, para ello nos es útil el comando "iwconfig":
pi@raspberrypi ~ $ iwconfig lo no wireless extensions. wlan0 unassociated Nickname:"<WIFI@REALTEK>" Mode:Managed Frequency=2.412 GHz Access Point: Not-Associated Sensitivity:0/0 Retry:off RTS thr:off Fragment thr:off Power Management:off Link Quality:0 Signal level:0 Noise level:0 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0 eth0 no wireless extensions.
Si verificamos la configuración de red podemos observar como no se encuentra asociada a ninguna dirección ip:
pi@raspberrypi ~ $ ifconfig wlan0 wlan0 Link encap:Ethernet HWaddr 00:09:c9:19:a0:b2 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2 errors:0 dropped:3 overruns:0 frame:0 TX packets:2 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:368 (368.0 B) TX bytes:288 (288.0 B)
Realizando la configuración
Modificando /etc/network/interfaces
Lo primero que debemos hacer es modificar un poco nuestro archivo /etc/network/interfaces, este archivo guarda la configuración de todas las interfaces de red existentes.
Vamos a usar el comando "nano" para editarlo:
pi@raspberrypi ~ $ sudo nano /etc/network/interfaces
Modifiquen su archivo de configuración para que quede como el siguiente:
auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp auto wlan0 allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp
Las primeras dos líneas configuran la interfaz "loopback", esta es la famosa dirección 127.0.0.1 que apunta a si misma.
La siguiente es nuestra nunca bien ponderada interfaz de Ethernet que tanto nos ha ayudado estos días
Por último y un poco más complicado se encuentra la configuración de la red wireless. Para este caso la configuración es "manual" ya que la aplicación wpa_supplicant se encargará de hacer el trabajo, en este caso simplemente indicamos el archivo que queremos utilizar como configuración para la aplicación.
Modificando el archivo /etc/wpa_supplicant/wpa_supplicant.conf
Ahora viene la parte interesante, en este archivo es donde vamos a especificar los detalles de nuestra red wireless.
Un comando que nos ayudará a darnos una configuración de base es "wpa_passphrase". Para ejecutarlo tenemos que escribir el siguiente comando:
pi@raspberrypi ~ $ wpa_passphrase MI_RED_WIFI mipasswordwifi
La salida de este comando es lo que vamos a agregar al final del archivo /etc/wpa_supplicant/wpa_supplicant.con:
network={ ssid="MI_RED_WIFI" #psk="mipasswordwifi" psk=09540eea57cf951fdfd7586c2c078e94ca6808533cd2478a3b0f0d8b21a8ba8c }
Pueden notar que se incluye el password en "texto plano", si son un poco desconfiados pueden dejar solo la versión "codificada" en hexadecimal.
Lo siguiente es editar el archivo /etc/wpa_supplicant/wpa_supplicant.conf con el comando "nano":pi@raspberrypi ~ $ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
Copien la salida generada por el comando wpa_passphrase y modifiquen el archivo para que quede similar a como se muestra a continuación:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="MI_RED_WIFI" # Usen la siguiente linea si no se pueden # conectar a redes ocultas scan_ssid=1 proto=RSN key_mgmt=WPA-PSK pairwise=CCMP TKIP group=CCMP TKIP psk=09540eea57cf951fdfd7586c2c078e94ca6808533cd2478a3b0f0d8b21a8ba8c }
Notarán en el comentario que utilizo la opción scan_ssid=1, pasé un buen rato tratando de averiguar porque no conectaba a mi red local. Resulta que en mi casa he configurado el router para que no haga broadcast del nombre de la red, si no especificamos esta opción el wpa_supplicant simplemente no identificará a nuestra red inalambrica.
Configuración alternativa
Por alguna razón que desconosco, la configuración con "hotplug" me estaba dando problemas. A veces conectaba y otras veces no, si la configuración anterior les daba problemas pueden intentar con una configuración alternativa se muestra a continuación:
auto lo iface lo inet loopback iface eth0 inet dhcp auto wlan0 iface wlan0 inet dhcp wpa-ssid "MI_RED_WIFI" wpa-psk 09540eea57cf951fdfd7586c2c078e94ca6808533cd2478a3b0f0d8b21a8ba8c wpa-key-mgmt WPA-PSK wpa-pairwise TKIP CCMP wpa-group TKIP CCMP wpa-proto WPA RSN wpa-ap-scan 1 wpa-scan-ssid 1 iface default inet dhcp
<<<here>>
Probando todo
Luego de esto todo es muchísimo más simple, verifiquen que los archivos están bien escritos y ejecuten el siguiente comando:
pi@raspberrypi ~ $ sudo ifup wlan0
Esperen unos cuantos segundos para que pueda obtener su dirección IP vía DHCP y verifiquen que todo funciona bien con el comando ifconfig:
pi@raspberrypi ~ $ sudo ifconfig wlan0 wlan0 Link encap:Ethernet HWaddr 00:09:c9:19:a0:b2 inet addr:192.168.0.5 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1086 errors:0 dropped:1182 overruns:0 frame:0 TX packets:779 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:140409 (137.1 KiB) TX bytes:114472 (111.7 KiB)
En este caso mi router asignó la 192.168.0.5, en su caso esto puede ser diferente. Si hacen ping desde otra máquina en la red la Raspberry PI deberá responder felizmente.
¡¡Y eso es todo!!
Si todo funcionó bien no necesitarán hacer configuraciones adicionales y su Raspberry PI funcionará felizmente en su red Wireless.
No habiendo nada más que decir... ¡¡Hasta la próxima!!
Fuentes:
- RPI VerifiedPeripheals
- SHA - - - Raspberry Pi - Installing the Edimax EW-7811Un USB WiFi Adapter (WiFiPi)
- [ubuntu] wpa_supplicant connect to hidden essid - Ubuntu Forums
- How-To Configure Wireless LAN on RaspberryPi With Raspbian Kernel 3.2.27+ And Solwise RTL8188CUS WiFi dongle
Glosario salvadoreño:
*vitrinear: Término usado en "salvadoreño" para denominar a aquellas personas que se pasean frente a las vitrinas de los centros comerciales sin comprar nada.
+Actualizado 13/01/2013: Se agregó una configuración alternativa ya que la configuración original estaba generando varios problemas de conexión.
Comentarios
Te queria hacer una consulta ya que veo que has lideado con el mini dongle este usb. Compre para mi tablet uno de estos mini dongles usb ya que a la misma se le arruino el modulo wifi y como imaginaras una tablet sin wifi es como un auto sin ruedas. Compre un ComFast que viene con chipset RTL8188CUS que googleando es el que tu conseguiste "vitrineando". Yo precisaria si fueras tan amable me dieras alguna indicacion de como se podria adaptar o compilar el driver para android ya sea gingerbread o ICS o jellybean. Tengo toda la documentacion de como hacerlo pero la verdad escapa a mis conocmientos aunque intuyo que con lo que poseo no estoy tan lejos de lograrlo. Ojala puedas ayudarme y sino gracias tambien por tu tiempo. Saludos. Adrian
Te comento mi caso;
Configure con las MAC de la rasp y del penwifi dos ip estaticas en mi router.
Arranco con el pen wifi y el ethernet:
-Todo correcto, puedo conectarme por ssh tanto con la ip del wifi como del cable. Incluso si me conecto con la del wifi y en caliente desconecto el cable sigue funcionando.
-Arranco solo con el penwifi; no funciona. No se conecta a la ip estatica, ni ssh ni nada.
-Mi intencion es conectar la rasp a un HDexterno y un monitor, y por shh con el portatil reproducir el contenido del HD en el monitor. No puedo poner un cable de red en ese lugar, así que necesito que la rasp arranque y derectamente se conecte por wifi sin el cable conectado...
sudo ifup wlan0
ioctl[SIOCSIWAP]: Operation not permitted
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument
Internet Systems Consortium DHCP Client 4.2.2
Copyright 2004-2011 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/wlan0/00:13:ef:d0:05:f0
Sending on LPF/wlan0/00:13:ef:d0:05:f0
Sending on Socket/fallback
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 6
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 7
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 8
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 12
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 19
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 9
No DHCPOFFERS received.
No working leases in persistent database - sleeping.
al hacer ifconfig no me indica ip para la wifi, tengo todo actualizado y todo igual a lo que indicas...