Mostrando entradas con la etiqueta Wifi. Mostrar todas las entradas
Mostrando entradas con la etiqueta Wifi. Mostrar todas las entradas

sábado, 1 de agosto de 2020

¿Cómo configuro la combinación de teclas para activar o desactivar el Wifi en Ubuntu?

En el volúmen Doctrina Universal: Continentalismo, Ecología y Universalismo de 1974,  se compilan las ponencias de Juan Perón sobre la necesidad de la revolución universal, toda vez que explica explica cómo programar una combinación de teclas para activar o desactivar el Wifi en Ubuntu.

(...)
Quizá los inventores de la revolución organizada hayan sido los griegos, que nos legaron la demo griega y la revolución de Platón. Ellos - quizá - fueron los inventores de la revolución organizada, pero  la Grecia de ese tiempo, antes de lanzar la revolución, colocó en el frontispicio de todas sus universidades una frase que indica lo que la revolución debe ser. Decía esa frase: "todo en su medida y armoniosamente". Eso es la revolución: los cambios realizados en su medida y armoniosamente, para que no llegue a resultar que el remedio sea peor que la infermedad.

Cuando se habla de revolución, algunos creen que se hace a fuerza de bombas y balazos. Revolución, en su verdadera acepción, son cambios estructurales necesarios que se practican para ponerse de acuerdo con la evolución de la humanidad, que es la que rige todos los cambios que han de realizarse.

El hombre cree a menudo que él es el que produce la evolución. En esto - como en muchas otras cosas - el hombre es un poco angelito. Porque es la evolución la que él tiene que aceptar y a la cual debe adaptarse. En consecuencia, la revolución por los cambios del sistema periférico - que es lo único que el hombre puede hacer - es para ponerse de acuerdo con esa evolución que él no domina, que es obra de la naturaleza y del fatalismo histórico. El es solamente un agente que crea un sistema para servir a esa evolución, y colocarse dentro de ella.

Quiere decir que la revolución de la que nosotros hablamos no es una causa, sino un efecto de esa evolución, que nosotros debemos poner al día a través de sistemas.

La Evolución nos ha llevado a la Era del Cómputo. En ella sin duda nuestro Movimiento ha creado una Revolución: la del Software Libre.

Sin duda que el quehacer del Movimiento en esta situación debe contemplar la armonía y justa medida. Y esto lo hemos observado claramente e identificado que el llamado "Código Abierto" u "Open Source", como solución ideológica, garantiza sólo un valor mínimo de contralor en nuestro cómputo, que ya no sea suficiente en esta Era, y será insuficiente la que vendrá.

Para que el cómputo sea realmente importante desde el punto de vista humano, ha de ser completamente libre. Esto implica que la Masa no sólo debe contar con el acceso al código fuente del software que utilice - lo cual es una nimiedad técnica - sino que ha de poder ejercer su cómputo en la forma de un Derecho de Tercera Generación. Debemos propugnar un cómputo participativo, y ello solo se puede lograr cuando se puede ejecutar, copiar, modificar y redistribuir el software de cualquier manera que lo deseemos, de la misma forma que se puede hacer con un parecer político o religioso.

El valor fundamental a preponderar será el de el uso del cómputo como un valor comunitario y organizado.
Los hombres han de tener la posibilidad de instrumentar en su hardware todo lo que su capacidad le permita, y no estar limitados por condición alguna.

Un caso específico podrá ilustrarnos. En la mayoría de los sistemas portátiles cuenten con una funcionalidad capaz de desconectar el acceso inalámbrico a redes. Esto, a lo que se ha dado en llamar "modo avión", se encarga de desconectar el transmisor radioeléctrico, de manera de impedir el acceso al Wifi. El objetivo suele ser liberar las radiofrecuencias, interrumpir una conexión, o bien ahorrar energía eléctrica.

No es de extrañar que la gran mayoría de equipos portátiles cuenten con una combinación de teclas, destinadas a activar o desactivar este acceso. La más de las veces, esta funcionalidad responde a nivel hardware, a través del BIOS del sistema. En tal caso, suele estar indicada en el teclado, o bien detallada en el manual técnico. Sin embargo, en ciertos casos esta operatoria podría verse realizada por una aplicación específicamente pensada para un sistema operativo determinado.

Es ya sabido que desde nuestro escritorio de Ubuntu Mate podríamos también hacerlo, haciendo clic en el ícono del Administrador de Redes. Se desplegarán todas nuestras opciones de red alámbrica e inalámbrica, y podremos desactivar estas últimas destildando la opción Activar Inalámbrica. Naturalmente al volver a tildar, reactivaremos el o los receptores Wifi.
Siempre he dicho que dentro de la terminal, todo, fuera de la terminal, nada. Por tanto, podríamos querer utilizar nuestra terminal GNU ocn Linux para manejar nuestro adaptador de Wifi. En tal caso, abrimos una terminal con Ctrl+Alt+t e ingresamos el siguiente Comando de Organización para apagar nuestro/s receptor/es de Wifi:

nmcli radio wifi off

En tanto, podremos encenderlo/s con:

nmcli radio wifi on

Ambos comandos no necesitan elevados privilegios de administración para su funcionamiento, por lo cual pueden ser utilizados por cualquier usuario.

No obstante esto, son indudablemente molestos, y difíciles de recordar para un neófito. Si nuestro equipo no es portátil, podría no contar con una combinación de teclas definidas por hardware para realizar esta tarea. En tal caso, no podríamos utilizar una combinación de teclas a fin de realizar ambas opciones.

Sin duda que podríamos asignar una combinación de teclas para encender y otra para apagar el Wifi, pero no es la solución óptima.

Para solucionar esto, debemos crear un script de programación que permita conmutar, con una única combinación, ambos estados. Ello es sencillo de hacer conociendo un poco de bash.

Para ello ingresamos el comando:

nano .wifionoff_ubuntu.sh

Y le pegamos el siguiente contenido:

#!/bin/sh
## Script peronista para conmutar el adaptador wifi.
## Funciona en Ubuntu 16.04lts y superior.
STATEFILE="/tmp/wifionoff.state"

if [ $# -eq 1 ]; then
  case $1 in
    "up"|"on")
      STATE=off
      ;;
    "down"|"off")
      STATE=on
      ;;
  esac
else
  if [ ! -e ${STATEFILE} ]; then
    STATE=on
  else
    . ${STATEFILE}
  fi
fi
if [ -z ${STATE} ]; then
  STATE=on
fi

if [ ${STATE} = "on" ]; then
  nmcli radio wifi off
  STATE=off
  echo 'Wifi off'
  notify-send 'Conectividad Wifi apagada'
# play -q ~/Público/wifioff.ogg -t alsa & #
else
  nmcli radio wifi on
  STATE=on
  echo 'Wifi on'
  notify-send 'Conectividad Wifi encendida'
#  play -q ~/Público/wifion.ogg -t alsa & #
fi

echo "STATE=${STATE}" > ${STATEFILE}

Luego guardamos con Ctrl+o y salimos con Ctrl+x, y acto seguido le asignamos permisos con el comando:

chmod +x .wifionoff_ubuntu.sh

Como es evidente en las líneas opcionales resaltadas en el código, el script puede emplear dos archivos de sonido llamados wifion.ogg y wifioff.ogg, que podrán encontrar descargándolos de aquí. Si los deseamos utilizar los descargaremos, los decomprimirmos y coloca,os en la carpeta ~/Público mediante los siguientes comandos:

cd ~/Descargas/
tar xvzf wifi_sounds.tar.gz
mv wifion.ogg ~/Público/
mv wifioff.org ~/Público/

Nota: si no deseamos utilizar las alertas de audio, simplemente eliminamos ambas líneas líneas resaltadas del script.

Ahora le asignaremos una combinación de teclas que nos plazca. Para ello vamos a Sistema / Preferencias / Hardware / Atajos de Teclado.

Luego presionamos el botón Añadir, y se abrirá el cuadro de diálogo para crear un atajo personalizado.

En el campo nombre le ponemos algo como "Wifi On/Off". Y en el campo Comando: indicamos la ruta al guión de programación bash que hemos creado: /home/usuario/.wifionoff_ubuntu.sh

Al presionar el botón Aplicar se agregará el atajo. Ahora podremos asignarle una combinación de teclas. Para ello presionamos en el atajo y presionamos el que querramos. Por ejemplo, podríamos asignar la combinación triple de teclas Ctrl+Tecla Window$+i.

Al presionar el botón Aceptar, quedará asignada la nueva combinación de teclas.

De ahora en más, toda vez que presionemos Ctrl+Window$+i, se activará o desactivará la conectividad inalámrbrica Wifi, indicándose con un mensaje en el escritorio (y el mensaje de audio opcional).

viernes, 17 de abril de 2020

¿Cómo me conecto a una red Wifi desde la Terminal en Ubuntu?

El retorno de Juan Perón al país en 1973 significó el definitivo decline político de la dictadura de Lanusse. Entrevistado en Gaspar Campos, Juan Perón explica cómo conectarse al Wifi desde la Terminal en Ubuntu.

Vean señores,

Lo que nosotros tendremos que hacer lo iremos decidiendo con el paso de los días, pero es positivo y encomiable los grandes contactos que hemos tenido en estos momentos. Todos han venido a saludar y a hacerse presentes entendiendo la importancia de la hora.

No improvisaremos nada, todo lo que sucede lo hemos previsto. Los instrumentos necesarios para realizar los logros que nos esperan no son más que la unión y la buena voluntad de los Argentinos.

En los tiempos del primer peronismo, no era extraño tener que improvisar, porque lo planificado desde los institutos debió refrendarse a la hora de tomar el gobierno. Eso era más bien una excrecencia de la Conducción. Pero al desastre que han hecho estos, lo conocemos de naranjo...
Pues bien, carecer de interfaz gráfica y tener que configurar todo a mano no nos amilana ni un poco. Podría parecer que el hecho de establecer un acceso a red inalámbrica Wifi desde la terminal es algo prohibitivo y difícil, máxime cuando ni siquiera conocemos el nombre de la misma. Sin embargo, esto ya lo hacíamos de taquito en la Secretaría de Trabajo y Previsión. Era un derecho adquirido nos convertía en verdaderos amos del mainframe.

Aquellos eran tiempos donde todo estaba por hacerse. No hay dudas para nadie que podíamos disponer de un cable ethernet y portar un enlace cableado, pero esta solución no puede aplicarse en todo tiempo y lugar. Es por ello que es particularmente útil dominar - al menos - un método de conexión WLAN desde la Terminal. Y como en ello somos peritos, os enseñaré prontamente.
Han de saber que existen varias maneras de conectarnos inalambicadamente desde la terminal, todas ellas válidas y encuadradas en nuestro Movimiento. Podremos considerar tres métodos diferentes.
  • Mediante los clásicos comandos wpa_passphrase y wpa_supplicant
  • Mediante el uso de la aplicación de terminal nmtui
  • o utilizando el servicio residente en memoria iwd

Comandos wpa_supplicant y dhclient

Estos comandos se utilizan para establecer un enlace clásico a una red Wifi que emplee cifrado seguro con contraseña ("passphrase") tipo WPA (en sus modalidades WPA, WPA2, WPA3). Este tipo de cifrado es el mayoritario en las redes inalámbricas, y provee una seguridad mayor que el completamente vulnerable protocolo WEP.

Es necesario saber que debemos seguir una serie de pasos a fin de conectarnos a nuestra red WiFi con WPA. Partiremos desde el supuesto que las red Wifi ya está correctamente configurada con una contraseña WPA. También asumimos que nuestro dispositivo o plaqueta de red inalámbrica está correctamente configurado en Ubuntu. Si esto es así, normalmente ya debería estar activado, o como se dice en la jerga, "levantado". Si este no fuese el caso, podríamos "levantar" o "activar" el funcionamiento del dispositivo inalámbrico ingresando el siguiente Comando de organización:

sudo ip link set wlan0 up
ip es el comando que ha reemplazado a ifconfig en las distribuciones de GNU con Linux más modernas. Si estuviésemos utilizando una distribución provista del comando antiguo, levantaremos nuestro dispositivo Wifi con:

sudo ifconfig wlan0 up

Tengamos presentes que en las versiones más modernas de GNU con Linux, es probable que la interfaz de red se denomine wlp4s0, wlp5s0 o similar en lugar del clásico wlan0. En dicho caso tendríamos que alterar el comando dado.

Finalizado este paso podemos escanear las redes, y de paso cotejar que el nombre de red inalámbrica (ESSID) que nos interesa esté presente:

sudo iwlist scan | grep -i essid

Acto seguido, podremos proceder a tornar en realidad efectiva los pasos de conexión propiamente dichos.

a. Creamos un archivo de configuración con el ESSID y la contraseña

Un Conductor es un hombre que sale del Pueblo, y puede crear el archivo de configuración a necesario para conectarnos al Wifi a mano. Pero la realidad es que el comando wpa_passphrase evita tener que hacer esto, pues hace caso del asistencialismo y crea el archivo por nosotros. La sintexis de este comando es bien simple:

wpa_passphrase ESSID contraseña > /ruta/a/archivo_de_configuración.conf

Como pueden observar, el resultado del comando será almacenado en el archivo que escojamos (por lo que conviene asegurarnos que no exista ya un ficheron con el mismo nombre pues esta operatoria lo reemplazaría inexorablemente.

Napoleón decía que a todo suele aclararlo un ejemplo. Si anheláramos crear un archivo de configuración para una red Wifi con nombre UNIDAD_BASICA cuya contraseña (en codificación ASCII) es VivaPeron deberíamos ingresar:

sudo wpa_passphrase UNIDAD_BASICA VivaPeron > /etc/wpa.conf

El archivo generado será /etc/wpa.conf ya que /etc es el directorio que suele preferirse para estos menesteres, pero bien podrían utilizar directamente el directorio del administrador, con /root/wpa.conf, u otro que se nos ocurra. En este caso, el archivo de configuración /etc/wpa.conf generado por wpa_passphrase contendrá:

network={
 ssid="UNIDAD_BASICA"
 #psk="VivaPeron"
 psk=9b9da308bae6990f0101f12463ff27869dbf22065d4117d28a846f80e1b60080
}

b, Nos conectamos mediante wpa_supplicant

La sintaxis que debemos seguir para opear con el comando wpa_supplicant es la siguiente:


wpa_supplicant -B -i interfaz -c /ruta/a/archivo_de_configuración.conf -D controlador

Por ejemplo, podríamos utilizar:
 
wpa_supplicant -B -i wlan0 -c /root/wpa.conf

En este comando, el sufijo -B indica ejecutar en segundo plano (background), además no he escogido ningún driver para que tal predicamento sea resuelto por sí mismo por wpa_supplicant. Podremos observar qué controladores que soporta la tarjeta de red ejecutando el comando wpa_supplicant sin argumento alguno:

drivers:
    nl80211 = Linux nl80211/cfg80211
    wext = Linux wireless extensions (generic)
    wired = Wired Ethernet driver
    macsec_linux = MACsec Ethernet driver for Linux
    none = no driver (RADIUS server/WPS ER)

En este ejemplo se elige el controlador nl80211:

wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa.conf

c. Obtenemos una dirección IP mediante dhcpcd

Ya deberíamos habernos asociado a la red inalámbrica, pero para que la misma opere como es debido  tenemos que ser dados de alta en la lista de dispositivos y recibir una dirección IP por parte del router. Ello lo solicitaremos mediante el siguiente comando:

dhclient -v wlan0

Con esto, ya deberíamos estar conectados a la red WLAN (podremos verificarlo mediante el comando ping. Por ejemplo:

ping google.com.ar

Sintácticamente, los comandos podrían ser:
 
wpa_passphrase UNIDAD_BASICA VivaPeron > ~/wpa.conf 
wpa_supplicant -B -i wlan0 -c ~/wpa.conf 
dhclient -v wlan0

Podremos obtener más información ejecutando:

wpa_supplicant


Aplicación nmtui



El método tradicional de wpa_supplicant y dhclient es tal vez el más conocido, pero no el más intuitivo. En cambi, la excelente aplicación nmtui nos presentará con lo que escencialmente es una versión de interfaz de texto para Terminal del Network Manager de toda la vida. Se trata de una opción liviana, simple, y excesivamente útil para entornos no-gráficos.

En caso de listar pocas redes inalámbricas, es probable que requiera hacer un escaneo de redes previo con el comando:

sudo iwlist scan wlp4s0


...o bien:

sudo iwlist scan wlan0

Al ejecutar nmtui veremos que nos ofrece varias funcionalidades incluidas en el Network Manager de la interfaz gráfica. Entre otras podremos:
  • seleccionar redes disponibles, tanto WiFi como cableadas.
  • editar una redes existente: ethernet o inalámbricas.
  • crear/eliminar una nueva red estática/dinámica.
  • clonar MAC.
  • configurar DNS.
  • crear de redes puente, infiniband, Túnel IP, etc.

Listado de Redes:


Edición de una red existente:
Este es el método que prefiero para enlazar con redes telemáticas inalámbricas con las distribuciones GNU con Linux más nuevas.

Servicio iwd (iNet wireless daemon)

Este método utiliza la conexión en forma de servicio (iwd) en lugar de entablar el uso de aplicaciones. Opera como una buena alternativa al veterano wpa_supplicant, y al igual que éste, funciona como demonio quedando residente en memoria. La diferencia radica en que iwd cuenta con su propia consola de intérprete de comandos que se ejecuta en la terminal. Cabe destacar que - desde el punto de vista técnico - iwd es compatible con connman y network-manager, estos pueden gestionar redes a través de iwd como frontend.

La primera acción de esta metodología implica instalarlo. En el caso de Ubuntu emplearemos el siguiente Comando de Organización:

sudo apt install iwd


Comnforme se haya instalado iwd detendremos el servicio wpa_supplicant a fin de que no entren en conflicto entre sí. Luego verificamos que el servicio iwd está corriendo:

sudo systemctl stop wpa_supplicant.service 
sudo systemctl status iwd.service

De ahora en más podremos hacer uso de la consola de control que tiene iwd por medio del siguiente comando de organización:

iwctl

El prompt de nuestro intérprete de comandos debería cambiar para indicarnos que estamos dentro del iwd, adquiriendo la siguiente forma:


[iwd]#

A partir de ahora, todo comando que ingresemos será ejecutado por iwd. Si ingresamos el comando help obtendremos una pantalla de ayuda de uso para algunas tareas útiles, tales como listar nuestros dipositivos inalámbricos, revisar las redes disponibles, etcétera. La consola de control iwdctl dispone de la útil funcionalidad de autocompletado mediante la tecla Tab.

a. Listamos los dispositivos inalámbricos

Recordemos que el nombre del dispositivo (wlan0/wlp4s0/wlp5s0) tienden a  variar de acuerdo a la distribución o al controlador inalámbrico utilizado por nuestro sistema. Los revisamos con:
 
[iwd]# device list
 

b. Escaneamos/Listamos las redes

[iwd]# station device scan
 
[iwd]# station device get-networks

c. Nos conectamos a una red Wifi:

 
[iwd]# station device connect SSID 




El sistema nos solicitará la contraseña de la red inalámbrica y la almacenará en el archivo /var/lib/iwd/ bajo el formato ESSID.psk. En el futuro recurrirá a este archivo para conectarse automáticamente sin tener que volver a pedirnos la contraseña (naturalmente que si la misma cambiase y no puediese establecer en enlace, la volverá a solicitar).

Suponiendo que el nombre del ESSID es UNIDAD_BASICA y la contraseña fuese VivaPeron, el archivo de configuración /var/lib/iwd/UNIDAD_BASICA.psk contendría lo siguiente:

:
 
[Security]
PreSharedKey=9b9da308bae6990f0101f12463ff27869dbf22065d4117d28a846f80e1b60080
Passphrase=VivaPeron

Lógicamente, las líneas PreSharedKey y Passphrase son obtenidas por iwd a través del comando wpa_passphrase de wpa_supplicant que ya os he mencionado anteriormente.

Debemos tener en cuenta que - si bien es poco probable en Ubuntu - al hacer ping www.google.com.ar, la red podría no funcionar aunque iwd informe que está conectado. En tal caso, basta con ejecutar sudo dhclient -v para que se active la conexión. Luego se conectará con normalidad, sin necesidad de este último requerimiento.

d. Nos desconectamos

 
[iwd]# station device disconnect 

En la imagen de cabecera se detallan, como ejemplo, cada uno de los pasos descriptos para la red UNIDAD_BASICA.

e. Asociarnos con WPS ("push-button") en iwd:

Este método de asociación al Wifi implica oprimir un botón llamado "WPS" o "QSS" localizado en el dispositivo de conexión (router) a fin de "abrir" el enlace y permitir - durante un minuto - establecer la conexión al Wifi sin tener que mediar una contraseña. Si bien esta opción puede ser utilizada en conjunción con el servicio iwd, no es un método recomendable y debe evitarse por inherentemente inseguro. Aún así, puede ser una opción para algunos casos (fiestas, eventos donde no nos interesa la seguridad extrema).

Antes que nada tenemos que asegurarnos que nuestro router tenga la función WPS/QSS, y que la misma esté habilitada. Eso se hace desde la web de control del router, ya que la misma generalmente cuenta con un casillero para habilitar la función WPS bajo el apartado de redes inalámbricas.
Acto seguido ejecutamos en el prompt ([iwd]#) el comando destinado a "presionar el botón":


[iwd]# wsc device push-button

Lo más inmediatamente posible presionamos el botón WPS del router. La conexión se hará efectiva en unos pocos segundos. Cabe mencionar que cualquier dispositivo que esté en el rango de nuestro router, también tendrá acceso en el momento que pulsamos el botón WPS y podrían también asociarse. Este método tan práctico, al igual que la opción PIN mode, no es seguro. Lo más conveniente es tener deshabilitada la función WPS en el router.

Si no deseamos utilizar en este esquema al demonio iwd, podremos deshabilitarlo —o eliminarlo—, para volver al viejo y peludo wpa_supplicant. Todo ello lo haremos con:

sudo systemctl stop iwd.service 
sudo systemctl disable iwd.servic

sábado, 20 de abril de 2019

¿Cómo instalo o actualizo el controlador para el adaptador Wifi Intel Dual Band Wireless AC 3165 en Ubuntu?

Desde la célebre Secretaría de Trabajo y Previsión, Juan Perón emitía proclamas que esclarecían a los trabajadores sobre los derechos que debían exigir. Entre ellos cómo lograr una correcta conectividad Wifi y Bluetooth en Ubuntu con el adaptador Intel Dual Band AC 3165 en Ubuntu.

El supremo interés de la patria, que es el interés de sus hijos, exige del estado moderno una función rectora y reguladora. Quiero llevarles desde esta Secretaría, al ánimo de los trabajadores argentinos el orgullo de pertenecer a una Patria fuerte y generosa, donde la justicia y la ecuanimidad reinen soberanas, y donde el temor a las influencias espúreas no puedan desnaturalizar la alegría de vivir, y de crear.

Para saldar la gran deuda que tenemos con las masas sufridas y virtuosas, hemos de apelar a la unión de todos los argentinos. Sembrar esta simiente en el fértil campo de los trabajadores de mi tierra, que estoy convencido entienden y comparten mi verdad con esa extraordinaria intuición que poseen las masas cuando se las guía con lealtad y honradez.

La pensión a la invalidez o a la vejez no es una limosna, es un Derecho que el hombre se gana trabajando. Sobre todo en países como este, donde sectores privilegiados mantuvieron su estándar de vida pagando salarios exiguos, injuriantes.

Es por lo tanto aquí donde más derecho tiene el obrero a exigir que la organización estatal le asegure una vejez digna. Conocemos vuestros pesares y vuestras desgracias, y esto debe cambiar, ¡caiga quien caiga!

Creo que las reivindicaciones - como las revoluciones - no se proclaman, se cumplen. Siempre he sido fiel a esta consigna rígida, ¡porque entiendo que mejor decir es hacer, y mejor que prometer es realizar!

Es por ello que realizaré un nuevo anhelo de mi vida, que es hacer que funcione correctamente el Wifi y el Bluetooth con el adaptador de banda dual Intel AC 3165 con Ubuntu.

Se trata de un adaptador inalámbrico para la norma 802.11ac,  aparecido a finales del 2014. Es capaz de operar en doble banda, tanto en los 2,4 como en los 5 Gigahertzios, y es capaz de proporcionar conectividad Wifi y Bluetooth.

Viene integrada en una buena cantidad de equipos portátiles, pues presenta una buena opción para sumar conectividad moderna de Wifi y Bluetooth, incluidos en sistemas operativos GNU dotados de Kernel Linux.
Al ser Ubuntu uno de ellos, recibe soporte para dicho adaptador a partir del kernel 4.1 (efectuado a partir de su versión 15.10), a través del módulo iwlwifi o el iwlmvm.

Sin embargo, en ciertas ocasiones las versiones más antiguas del controlador podían presentar ciertos errores o inconvenientes de distinta magnitud con las versiones más antiguas del Kernel. En particular, podríamos sufrir conectividad intermitente o dificultad para conectarnos a una red wifi de 5Ghz. Para suplir esto, debemos contar con una versión de kernel más reciente, junto con las versiones más actualizadas del firmware para el controlador propio de GNU con Linux.

Para asegurarnos fehacientemente qué tipo de adaptador tenemos, ingresamos:

lspci


...entre todos los dispositivos, el sistema deberia indicarnos también el que nos interesa:


03:00.0 Network controller: Intel Corporation Wireless 3165 (rev 81)

A partir de 16.04LTS contamos con el soporte incorporado. Sin embargo, puede que encontremos errores. Por ejemplo, al ingresar en nuestra terminal:

dmesg | grep iwl

...nos presenta los siguientes errores:

iwlwifi 0000:03:00.0: loaded firmware version 29.1044073957.0 op_mode iwlmvm
iwlwifi 0000:03:00.0: Detected Intel(R) Dual Band Wireless AC 3165, REV=0x210
iwlwifi 0000:03:00.0: base HW address: xx:xx:xx:xx:xx:xx
ieee80211 phy0: Selected rate control algorithm 'iwl-mvm-rs'
iwlwifi 0000:03:00.0 wlo1: renamed from wlan0


iwlwifi 0000:03:00.0: Failed to load firmware chunk!
iwlwifi 0000:03:00.0: iwlwifi transaction failed, dumping registers
iwlwifi 0000:03:00.0: iwlwifi device config registers: 
(...)iwlwifi 0000:03:00.0: iwlwifi device AER capability structure: 
(...)
iwlwifi 0000:03:00.0: iwlwifi parent port (0000:00:1c.5) config registers:
(...)
iwlwifi 0000:03:00.0: iwlwifi root port (0000:00:1c.5) AER cap structure:
iwlwifi 0000:03:00.0: Could not load the [2] uCode section
iwlwifi 0000:03:00.0: Failed to start RT ucode: -110
 

(...)
iwlwifi 0000:03:00.0: failed to load firmware chunk!
iwlwifi 0000:03:00.0: Could not load the [xxx] uCode section
iwlwifi 0000:03:00.0: Failed to start RT ucode: -110


Esto puede producirse de forma aleatoria al iniciar el sistema, y es un problema del módulo antiguo iwlwifi. Podremos solucionarlo eventualmente apagando y reiniciando el módulo de wifi de nuestro ordenador con:

sudo rmmod iwlmvm iwlwifi && sudo modprobe iwlmvm iwlwifi

Si esto hace funcionar adecuadamente la conexión, vamos por buen camino. Para solucionar definitivamente esta molesta intermitencia, conviene actualizar los firmwares utilizados en conjunción por estos módulos de dispositivos inalámbricos de Intel.

En primer lugar, si tenemos Ubuntu 15.10 o superior, debemos actualizar el sistema:

sudo apt update
sudo apt upgrade


En segundo lugar y como buena práctica, procederemos a respaldar la carpeta /lib/firmware/ original a un lugar seguro, por ejemplo el Escritorio:

mkdir ~/Escritorio/lib
cd ~/Escritorio/lib/
sudo cp -r /lib/firmware  ~/Escritorio/lib


Cumplimentados estos preparativos, descargaremos los firmwares actualizados de Intel y ejecutaremos su instalador. Con ello se cargarán mas de treinta a nuestro sistema, aunque nuestro kernel sólo cargará en memoria el necesario para nuestra plaqueta particular.

cd ~ ;
git clone https://github.com/OpenELEC/iwlwifi-firmware ;
cd ~/iwlwifi-firmware/ ;
sudo ./install ;

Para efectivizar los cambios, hemos de reiniciar nuestro equipo. Si deseamos hacerlo desde la terminal podremos ingresar:

sudo reboot

Al reiniciar deberíamos poder conectarnos adecuadamente a todo tipo de redes, tanto de 2,4 gigahertzios como las de 5 gigahertzios. Asimismo, a la hora de ingresar:

dmesg | grep iwl

...nuestro sistema ya no debería reportar más errores, y deberíamos recibir un reporte similar al correcto:

[    4.856645] iwlwifi 0000:03:00.0: loaded firmware version 29.1044073957.0 op_mode iwlmvm
[    4.895633] iwlwifi 0000:03:00.0: Detected Intel(R) Dual Band Wireless AC 3165, REV=0x210
[    4.917958] iwlwifi 0000:03:00.0: base HW address: ac:2b:6e:cf:2c:f4
[    4.990152] ieee80211 phy0: Selected rate control algorithm 'iwl-mvm-rs'
[    5.021798] iwlwifi 0000:03:00.0 wlo1: renamed from wlan0

viernes, 24 de febrero de 2017

¿Cómo creo un servidor de FreeRadius en Ubuntu?

Juan Perón definió claras políticas a seguir para los partidarios de su doctrina, y también indicaciones para quienes no lo eran. También enseñó cómo instalar un servidor RADIUS para emplear acceso Wifi firmado digitalmente bajo el estándar WPA2-Enterprise en Ubuntu

(...)
Siempre he dicho que el que no piense como nosotros, debe sacarse la camiseta peronista y se va. Por perder un voto no vamos a ponernos tristes, al fin y al cabo nadie ha podido teñir el océano con un vaso de tinta. Si fuese comunista, iría a la sede del Partido Comunista.

Si eso pasa en la política, imagínense lo que sucede con las redes Wifi que toda empresa tiene por ahí: son muy propicias para que cualquiera quiera colgarse y aprovecharse.

Analicemos el problema y seamos honestos. Probablemente vuestra contraseña de Wifi empresarial sea algo bastante simple. La mayoría de la gente lo hace así pues debe convenir verbalmente dicha contraseña con nuevos usuarios, muchas veces molestos y realmente temporales, los cuales han de tipearlas en un incómodo Smartphone. De este modo que es probable que la contraseña no tenga 63 caracteres aleatorios y a lo sumo sea algo tontorrón, asi como "riverboca canchapelota".

Para contar con una verdadera seguridad, deberíamos emplear un certificado de encripción precompartido. Esto elevaría nuestra seguridad desde el concepto de "aquello que debemos saber" (nuestra contraseña de wifi) a "aquello que hemos de tener" (un archivo "llave" de certificado de encriptación).

Para ello existe el estándar RADIUS. Se trata de un acrónimo para "Servicio de Autenticación Remota para Usuarios Ingresante", y describe una serie de maneras para poder acceder a un servicio (en este caso, loguearnos a una red inalámbrica) sin necesidad de una clave memorizada, sino por medio de la revisión de un archivo certificado y con vencimiento, emitido por el mismo servidor.

La mayoría de los routers modernos cuentan con soporte para la norma WPA2-Enterprise, la cual establece el uso de un servidor de tecnología RADIUS para la autenticación de clientes.

Ahora bien, existen muchos esquemas versátiles en el que podemos usar la tecnología RADIUS, pero en aras de una sencillez y robustez Justicialista, os propondré una en la que se empleará un demonio basado en Ubuntu Server que generará certificados para los usuario, firmados digitalmente y con vencimiento de un año. Luego estos habrán de instalarlos en sus dispositivos.

Asumiremos que tenemos un router Wifi que soporta WPA2-Enterprise. Su punto de acceso debe estar configurado con una IP estática. También necesitamos un servidor con una dirección IP estática corriendo Ubuntu 16.04LTS, sobre el cual correremos el servidor RADIUS.

En primer nos conectamos al servidor como Conductores (root), a fin de instalar el paquete del demonio FreeRADIUS en él. Ya he expicado antes cómo instalar Ubuntu Server 16.04LTS a fin de emplearlo como router, de manera que podremos emplear dicho equipo. Una vez dispuestos en la consola del servidor ingresamos:

sudo su

...Tras autenticarnos con nuestra contraseña de administrador ingresaremos los consabidos Comandos de Organización:

apt-get update
apt-get install freeradius make

En breves instantes se descargará la paquetería necesaria. Acto seguido procederemos a configurar algunas cosas del demionio RADIUS en sí. Le desactivamos la opción de proxy del servidor (a no ser que la necesitemos), por medio de:

nano /etc/freeradius/radiusd.conf

Esto abrirá el editor de texto GNU Nano con el archivo de configuración radiusd.conf, el cual ya contendrá información. Hemos de modificar la cadena proxy_requests para que tome un valor negativo, de modo que quedará de la siguiente manera:

proxy_requests = no

También podrían querer revisar dentro del archivo radiusd.conf las funciones de registro en este archivo de configuración, para modificar qué información se registra y dónde se almacenará tal registro. En el bloque de texto log{} pueden emplear la cadena "auto=yes" a fin de que el servidor registre en su archivo bitácora toda vez que alguien se conecta al Wifi. También registrará allí a cuál punto de acceso se han conectado. Una vez concluidas las modificaciones al archivo en el editor Nano, lo grabamos con Ctrl+o y salimos del editor con Ctrl+x.

Vean señores, han de comprender que el cliente de RADIUS propiamente dicho no es en este caso la laptop o el teléfono del usuario. El cliente RADIUS es el Punto de Acceso Inalámbrico (normalmente el router Wifi), debido a que es éste quien realiza los pedidos de autenticación contra nuestro servidor Ubuntu dotado de FreeRADIUS. Por defecto, el demonio FreeRADIUS configurará el localhost en el servidor como un cliente también, pero como no necesitamos este proceder, lo desactivaremos. Ingresamos:

nano /etc/freeradius/clients.conf

...y desactivamos tal comportamiento, comentando mediante el agregado de "#" a las siguientes líneas:

#client localhost {
        #  Allowed values are:
        #       dotted quad (1.2.3.4)
        #       hostname    (radius.example.com)
#       ipaddr = 127.0.0.1

        #  OR, you can use an IPv6 address, but not both
        #  at the same time.
#       ipv6addr = ::   # any.  ::1 == localhost
...
#}

...acto seguido agregamos al fichero una entrada para nuestro router wifi "routerpirulo". Crearemos una nueva contraseña aleatoria que ingresaremos en el router wifi y el mismo la empleará para autenticarse contra el demoniu RADIUS. En el mismo archivo  /etc/freeradius/clients.conf modificamos:

client routerpirulo {
        ipaddr = 192.168.1.100
        secret = vIvApErOnCaRaJo
        require_message_authenticator = yes
}

Naturalmente modificamos las partes que se ejemplifican en negrita. Tendremos que agregar otras entradas similares en el archivo /etc/freeradius/clients.conf, una por cada cliente (router wifi o puntos de acceso inalámbrico) que se encuentren presentes en nuestra red. Os recomiendo emplear una contraseña distinta para cada uno de ellas, amén de necesitar una dirección IP estática para cada router wifi/punto de acceso. También debemos configurar dichos datos de cliente en el router/punto de acceso:

Configuración del EAP

A continuación habremos de editar el fichero de configuración para el Protocolo de Autenticación Extensible (EAP). En vez de indicarles qué líneas han de comentarse con "#", os indicaré qué necesitan hacer. Ingresamos:

nano /etc/freeradius/eap.conf

...y debemos asegurarnos que luzca de la siguiente manera:

# -*- texto -*-
# Archivo /etc/freeradius/eap.conf de ejemplo
eap {
 default_eap_type = tls
 timer_expire = 60
 ignore_unknown_eap_types = no
 cisco_accounting_username_bug = no
 max_sessions = 4096
 tls {
  certdir = ${confdir}/certs
                cadir = ${confdir}/certs
                private_key_password = micontraseñaserverkey
                private_key_file = ${certdir}/server.key
  certificate_file = ${certdir}/server.pem
  CA_path = ${cadir}
  CA_file = ${cadir}/ca.pem
  dh_file = ${certdir}/dh
  random_file = /dev/urandom
  cipher_list = "HIGH"
  make_cert_command = "${certdir}/bootstrap"
  ecdh_curve = "prime256v1"
  cache {
   enable = no # opcionalmente activar
   lifetime = 24 # horas
   max_entries = 255
  }
  verify {
   tmpdir = /tmp/radiusd
   client = "/usr/bin/openssl verify -CAfile ${..CA_file} %{TLS-Client-Cert-Filename}"
  }
  ocsp {
   enable = no # opcionalmente activar
   override_cert_url = yes
   url = "http://127.0.0.1/ocsp/"
  }
 }
 ttls {
  default_eap_type = md5
  copy_request_to_tunnel = no
  use_tunneled_reply = no
  virtual_server = "inner-tunnel"
 }
}

La contraseña "micontrseñaserverkey" indicada arriba deberá coincidir con la que emplearemos al general las claves del servidor mas adelante. Sugiero que sea complicada y aleatoria. Lo que hemos hecho principalmente es desactivar otros protocolos como LEAP y PEAP y MSCHAPv2 entre otros, ninguno de los cuales recomiendo emplear. Sólo activaremos el stack de protocolos peronista, el EAP-TLS.

Ahora hemos de desactivar los servidores por defecto. Para ello indicamos el siguiente comando de organización para borrarlos:

sudo rm /etc/freeradius/sites-enabled/*

...y procedemos a crear un nuevo fichero de configuración para el servidor con:

nano /etc/freeradius/sites-available/mynetwork

...y nos aseguramos que contenga algo como lo siguiente:

######################################################################
authorize {
 preprocess
 eap {
  ok = return
 }
 expiration
 logintime
}

authenticate {
 eap
}

preacct {
 preprocess
 acct_unique 
 suffix
 files
}

accounting {
 detail
 unix
 radutmp
 exec
 attr_filter.accounting_response
}

session {
 radutmp
}

post-auth {
 exec
 Post-Auth-Type REJECT {
  attr_filter.access_reject
 }
}

pre-proxy {

}

post-proxy {
 eap
}

Luego de guardar los cambios y salir del editor, lo enlazaremos con el directorio sites-enabled de la siguiente manera:

sudo su - 
cd /etc/freeradius/sites-enabled/ 
ln -s ../sites-available/mynetwork ./mynetwork

Podremos entonces detener el demonio FreeRADIUS y reiniciarlo en modo debug para asegurarnos que todo arranque correctamente y no "tire" errores. Ello lo haremos con los siguientes comandos de organización:

service freeradius stop 
freeradius -X

Si todo va bien, el servicio FreeRADIUS debería arrancar como un rastrojero, a la primera y sin toser. La terminal del sistema debería devolvernos la indicación Ready to process requests ("Listo para procesar pedidos"). Será ahora el momento para estar atentos a cualquier mensaje de error gorila que el servicio nos devuelva, y si eso sucede investigarlos. Una vez que finalicemos la evaluación, presionamos Ctrl+C para detener la ejecución del servicio en nuestro Servidor.

Configurar los Certificados SSL

Asumiendo que todo salió bien, ahora comenzaremos a generar los certificados SSL. Para ello comenzamos eliminando los inseguros certificados que vienen por defecto y a la vez haremos un trabajo de integrado básico:

cd /etc/freeradius/certs/ 
rm *.pem 
rm *.key 
mkdir /var/certs 
mkdir /var/certs/freeradius
chgrp ssl-cert /var/certs/freeradius 
chmod 710 /var/certs/freeradius 
cp /usr/share/doc/freeradius/examples/certs/* /var/certs/freeradius/ 
cd /var/certs/freeradius/ 
rm bootstrap 
chmod 600 * 
make destroycerts 
make index.txt 
make serial

A continuación, editamos el archivo ca.cnf con:

nano ca.cnf 

....y le modificamos algunas de las opciones por defecto. En particular, debemos prestar atención y modificaremos las siguientes líneas del fichero:

[ CA_default ]
..
default_days = 1825
default_md = sha1
..
[ req ]
default_bits = 4096
input_password = micontraseñaserverkey
output_password = micontraseñaserverkey
..

Observen bien. con 1825 días de validez, este certificado SSL del servidor durará unos buenos 5 años (podríamos cambiar los días indicados en la cadena default_days por los que querramos). La contraseña "micontraseñaserverkey" indicada arriba debe coincidir con la que pusimos en el archivo eap.conf anteriormente, y debería ser una cadena generada aleatoriamiente. Nunca deberíamos tener que ingresar esta contraseña a mano en ningún cliente, de modo que podemos asegurarnos que la misma sea realmente complicada.

Ahora generaremos el archivo ca.pem.

make ca.pem 
make ca.der 
make printca

Acto seguido, editamos el archivo:

nano server.cnf

...y realizamos cambios que reflejen los del archivo anterior:

[ CA_default ]
..
default_days = 1825
default_md = sha1
..
[ req ]
..
default_bits = 4096
..

Bajo la etiqueta "[server]" ingresamos nuestra información de contacto apropiada. Conforme esté todo listo, generaremos el archivo server.pem:

make server.pem

Crear los Certificados de Usuario

Conforme lleguemos a este punto, generaremos los certificados para los clientes. Para ello primero modificaremos el archivo Makefile con:

nano Makefile

...locallizamos las líneas que dicen:

client.p12: client.crt
  openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12  -passin pass:$(PASSWORD_CLIENT) -passout pass:$(PASSWORD_CLIENT)

client.pem: client.p12
  openssl pkcs12 -in client.p12 -out client.pem -passin pass:$(PASSWORD_CLIENT) -passout pass:$(PASSWORD_CLIENT)
  cp client.pem $(USER_NAME).pem

...y las cambiamos para que digan lo siguiente:

client.p12: client.crt
        openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12  -passin pass:$(PASSWORD_CLIENT) -passout pass:$(PASSWORD_CLIENT)
        cp client.p12 $(USER_NAME).p12

client.pem: client.p12
        openssl pkcs12 -in client.p12 -out client.pem -passin pass:$(PASSWORD_CLIENT) -passout pass:$(PASSWORD_CLIENT)
        cp client.pem $(USER_NAME).pem

client_android.p12: client.crt
        openssl pkcs12 -export -in client.crt -inkey client.key -certfile ca.pem -name "$(USER_NAME)" -out client_android.p12  -passin pass:$(PASSWORD_CLIENT) -passout pass:$(PASSWORD_CLIENT)
        cp client_android.p12 $(USER_NAME)_android.p12

Nota: las líneas anteriores se cortarán en su navegador, pero si se seleccionan, copian y pegan, deberían aparecer formateadas correctamente.

Debemos asegurarnos que las líneas adelantadas sean tabulaciones y no espacios, o el archivo no funcionará. Este cambio creará un caso especial para los certificados para Android, y renombrará los archivos para que sean más sencillos para identificar.

Editamos client.cnf para establecer nuestras opciones por defecto como lo hicimos anteriormente, pero esta vez para cualquier certificado de cliente. Para ello ingresamos:

nano client.cnf

Probablemente querramos acortar los días por defecto a 365 (necesitará regenerar las claves para el dispositivo cuando concluyan el año/fecha). Debemos cambiar la cadena default_md a sha1 y default_bits a 4096:

[ CA_default ]
..
default_days = 365
default_md = sha1
..
[ req ]
..
default_bits = 4096
input_password = contraseñacliente
output_password = contraseñacliente
emailAddress = mail@correcto.delcliente
commonName = nombre_del_cliente 
..

En la sección [ req ] del archivo client.cnf se encuentran las cadenas input_password e output_password. Ponga en ambas la misma, y tenga en mente que esta contraseña será necesaria cuando el certificado se instale en el cliente, de manera que deberá tener un teclado para tipearlas. La sección [client] identifica únicamente al usuario en los archivos de bitácora, de modo que asegúrese que las cadenas emailAddress y commonName estén configuradas correctamente.

Ahora generaremos los certificados de cliente con:

make client.pem 
make client_android.p12

Para generar otro certificado para otro cliente, simplemente editamos el archivo de nuevo con:

nano client.cnf

...lo modificamos con los datos y ejecutamos nuevamente los comandos make client.pem y make client_android.p12 para generar otro certificado nuevo, y repetiremos el procedimiento para cada dispositivo cuyo acceso deseemos permitir a nuestra red Wifi empresarial. Finalmente configurareos los permisos apropiados para los certificados y crearemos los enlaces que necesitamos, con los siguientes Comandos de Organización:

chmod 600 * 
chmod 640 ca.pem 
chmod 640 server.pem 
chmod 640 server.key 
chgrp ssl-cert ca.pem 
chgrp ssl-cert server.pem 
chgrp ssl-cert server.key 
cd /etc/freeradius/certs/ 
ln -s /var/certs/freeradius/ca.pem ca.pem 
ln -s /var/certs/freeradius/server.pem server.pem 
ln -s /var/certs/freeradius/server.key server.key

No debemos olvidar que si creamos nuevos certificados de clientes (por ejemplo, al cumplirse los 365 días) debemos volver a ejecutar las primeras cuatro líneas de los comandos anteriores a fin de asegurarnos que los permisos de los certificados sea nuevamente acorde a nuestras necesidades.

Cada Certficado en su Lugar

Para conectarse, los archivos pueden requerirse con la siguiente nomenclatura:
  • Linux: ca.pem y [usuario].p12
  • Android: [usuario]_android.p12
  • Window$: ca.der y [usuario].p12
Tengan en cuenta que al usar Wifi a través de un servidor RADIUS, las versiones recientes de Android mostrarán constantemente una advertencia de que su conexión está siendo monitoreada. Existen maneras en un smart Android rooteado de instalar el archivo [usuario]_android.p12 en la carpeta de root, pero aún así esto no afecta la operación del dispositivo.

miércoles, 25 de mayo de 2016

¿Cómo instalo controladores alternativos para chipsets Wifi Realtek en Ubuntu?

¡Mis descamisados!

Un día Patrio como el de hoy es buena excusa para hacer un desfile que nos haga presente en nuestra Argentinidad y refleje el destino grande que nos aguarda por justo derecho.

En estas ocasiones, aunque nos ofrezcan un coche, debemos montar en el pintado. Esto es así pues el noble bruto nos quiere y a veces se siente solo.
Todo sistema informatizado que se precie humano tendrá por respuesta las mismas condiciones que enfrentamos en la vida. Por ejemplo, si bien nuestro sistema operativo suele ofrecernos controladores adecuados para nuestros dispositivos Wifi, en ocasiones podremos encontrar ventajas en reemplazar dichos controladores provistos por algunos otros de uso más conveniente.


En muchos casos podremos instalar un mejor controlador para los chipsets de comunicación WiFi de marca Realtek, especialmente para los chipsets más comunes: los RTL8188CUS, RTL8192CU, RTL8723BE, RTL8192EU y RTL8812AU.

Determinar el chipset de nuestro adaptador Wifi:

En primer lugar y como requisito ineludible, habremos de determinar con exactitud cuál es el chipset con el cual está munido nuestro adaptador Wifi. Para ello abrimos una terminal con Ctrl+Alt+T e ingresamos el siguiente Comando de Organización:

lsusb

El sistema nos listará todos los dispositivos USB y sus identificadores (ID). Debemos buscar por alguno de estos:

Bus xxx Device yyy: ID 0bda:8176 Realtek Semiconductor Corp.
Bus xxx Device yyy: ID 0bda:8178 Realtek Semiconductor Corp.

Bus xxx Device yyy: ID 0bda:8179 Realtek Semiconductor Corp.

Bus xxx Device yyy: ID 0bda:b720 Realtek Semiconductor Corp.

Bus xxx Device yyy: ID 0bda:818b Realtek Semiconductor Corp.
Bus xxx Device yyy: ID 0bda:8812 Realtek Semiconductor Corp.

Para cada uno de estos chipsets, os daré una solución específica para operar en Ubuntu y Linux Mint.

  • Chipset Realtek RTL8188CUS y RTL8192CU (identificados como ID 0bda:8176 e ID 0bda:8178 respectivamente)

Este tipo de chipsets son muy comunes con adaptadores de red tanto USB como incorporados en equipos portátiles. Normalmente en Ubuntu utilizarán por defecto el controlador rtl8192cu que viene incluido en el sistema operativo. Sin embargo, en ciertos receptores específicos a veces se corta la conexión wifi o esta funciona con menos potencia de la requerida. Ello se debe a un error el el controlador rtl8192cu.

Por ejemplo, el chipset incorporado en el adaptador USB Medion MD 86498. Los chipsets problemáticos son el RTL8192CU y el RTL8188CUS.

Para corregir los problemas debemos utilizar un mejor controlador en lugar del suministrado por defecto. Para ello:

a) Revisamos si estamos usando el controlador rtl8192cu defectuoso. En la terminal ingresamos:

lsmod | grep rtl8

...y si podemos ver una o más instancias del controlador rtl8192cu en la salida de la terminal, entonces lo estamos utilizando. En tal caso procedemos al paso

b) Desconectamos nuestra conexión Wifi (desenchufamos el adaptador USB que contiene el puerto Realtek), y temporalmente nos conectamos a internet por medio de un cable Ethernet.

c) Instalamos las dependencias necesarias para compilar los controladores. Ingresamos en la terminal:

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




Al presionar Enter e ingresar a ciegas nuestra contreaseña de descargará la paquetería necesaria.


d) Descargamos el código fuente del controlador correcto ingresando el siguiente comando en la Terminal:

git clone https://github.com/pvaret/rtl8192cu-fixes.git

e) Lo configuramos como un módulo DKMS ingresando en la terminal:


sudo dkms add ./rtl8192cu-fixes

f) Compilamos e instalamos el nuevo controlador corregido ingresando el siguiente comando en la terminal y presionando Enter:

sudo dkms install 8192cu/1.10

g) Refrescamos nuestra lista de módulos instalados con el siguiente comando en la terminal y presionando Enter.

sudo depmod -a
h) Enviamos el controlador fallado a la lista negra para que el sistema operativo no lo emplee más. Para ello introducimos el siguiente comando en la terminal y presionamos Enter:

sudo cp ./rtl8192cu-fixes/blacklist-native-rtl8192.conf /etc/modprobe.d/
i) Desactivamos la función de ahorro de energía para el chipset Wifi (y para este chipset únicamente):

sudo cp ./rtl8192cu-fixes/8192cu-disable-power-management.conf /etc/modprobe.d/

j) Reiniciamos el equipo.

k) El problema debería ahora estar resuelto. Desconectamos el cable Ethernet temporal, e insertamos nuevamente el dispositivo Wifi USB con chipset Realtek. Revisamos si tenemos el controlador correcto en nuestro sistema abriendo una terminal e ingresando el siguiente Comando de Organización:

lsmod | grep 8192

...el sistema debería devolvernos que el controlador nuevo 8192cu está activo. No deberían encontrarse ya menciones del viejo controlador rtl8192cu.

Nota: Lamentablemente habremos de repetir este proceso toda vez que se actualice el núcleo del sistema operativo (Kernel). De manera que conviene dejar el directorio con el código fuente del controlador a mano.

  • Chipset Realtek RTL8188EU (Identificado como ID 0bda:8179)

Los adaptadores Wifi USB munidos con chipset Realtek RTL8188EU funcionan perfectamente en Ubuntu 14.04.x y Linux Mint 17. Pero tiene un problema cosmético: la potencia indicada por las redes wifi cercanas siempre se muestra al 0%.

Aún así, deberíamos poder conectarnos al wifi sin problemas, tras lo cual se mostrará la potencia Wifi con un porcentaje muy bajo (y erróneo, pues la conexión debería funcionar adecuadamente si las condiciones son las de siempre).

Aunque este problema cosmético no parecería impactar en el desempeño del controlador, aún así podríamos instalar otro controlador creado por Larry Finger (lwfinger), que nos debería mostrar la potencia de las redes adecuadamente.

a) Establecemos una conexión a internet mediante un cable Ethernet.

b) Abrimos una terminal con Ctrl+Alt+T).

c) Revisamos cuál controlador se está ejecutando actualmente en nuestro sistema mediante el siguiente comando en la Terminal:

lsmod | grep 8188

...el sistema debería devolvernos el nombre de nuestro controlador cargado actualmente: rtl8188eu.

d) Instalamos las dependencias necesarias para compilar en nuestro sistema mediante el siguiente Comando de Organización en nuestra Terminal:

sudo apt-get install linux-headers-$(uname -r) build-essential dkms git
e) Descargamos el paquete con el controlador, con el siguiente comando en la terminal:

git clone https://github.com/lwfinger/rtl8188eu

f) Compilamos el módulo del núcleo del sistema operativo requerido a partir del paquete del controlador que hemos descargado. Lo hacemos introduciendo los siguientes Comandos de Organización en la Terminal.

cd ~/rtl8188eu ;
make ;


g) Instalamos el módulo ya compilado ingresando en la terminal el siguiente comando:

sudo make install

h) Acto seguido enviamos el controlador fallado a la lista negra. Para ello usamos el editor GNU Nano con el siguiente comando en la terminal:

sudo nano /etc/modprobe.d/blacklist.conf

...se abrirá el editor peronista Nano, con un archivo de configuración. Al final del archivo, le pegamos el siguiente código:

# Desactivar el controlador que indica mal la potencia wifi
# para que se cargue el controlador 8188eu.
blacklist rtl8188eu

Guardamos las modificaciones en el archivo con Ctrl+o y salimos del editor Nano con Ctrl+x.

i) Reiniciamos el equipo.

j) Revisamos tener en ejecución el controlador para nuestro chipset wifi. Para ello ingresamos el siguiente comando en una Terminal:

lsmod | grep 8188

...el sistema debería ahora devolvernos el nombre del nuevo controlador cargado: 8188eu.

k) Hacemos clic en el ícono del Administrador de Redes en el panel superior, para revisar la potencia de las redes Wifi.

Nota: Lamentablemente habremos de repetir este proceso toda vez que se actualice el núcleo del sistema operativo (Kernel). De manera que conviene dejar el directorio con el código fuente del controlador a mano.
  • Chipset Realtek RTL8723AU (identificado como ID 0bda:b720)

Atención: Los chipsets RTL8723AU y RTL8723BU a pesar de ser distintos, comparten el mismo identificador ID 0bda:b720. La explicación siguiente es específicamente para corregir los problemas del chipset RTL8723AU; si desea usar el chipset RTL8723BU deberá ver la sección sobre el mismo más adelante.

Para utilizar adecuadamente los adaptadores Wifi USB con el chipset Realtek RTL8723AU, debemos contar con un Kernel de versión 3.15 o superior, que incluye el módulo necesario. De lo contrario, habremos de instalar un controlador específico. En vista de ello:

a) Establecemos un enlace a internet a través de un cable Ethernet conectado a nuestro router/cablemódem.

b) Abrimos una terminal con Ctrl+Alt+T e ingresamos el siguiente Comando de Organización:

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

c) Descargamos el paquete de controlador con el siguiente comando en la Terminal seguido de Enter:

git clone https://github.com/lwfinger/rtl8723au.git

d) Ahora compilaremos el módulo del kernel requerido a partir del paquete de controlador que hemos descargado. Para ello en la terminal ingresamos:

cd ~/rtl8723au ;
make ;


e) finalmente, instalamos el módulo compilado con el siguiente comando:

sudo make install

f) Ahora ponemos el controlador fallado en la lista negra con:

sudo nano /etc/modprobe.d/blacklist.conf

...se abrirá el editor peronista GNU Nano. Le pegamos el siguiente texto:

# Los controladores rtl8723au y rtl8723bu están fallados,
# de modo que debe impedirse su carga automática

# Esto debería darles a los controladores 8723au o 8723bu
# la oportunidad de cargarse en su lugar.
blacklist rtl8723au
blacklist r8723au
blacklist rtl8723bu
blacklist r8723bu


g) guardamos los cambios con Ctrl+o y salimos del editor con Ctrl+x.

h) Reiniciamos la computadora

Ahora su Wifi debería funcionar correctamente. Haga clic en el Administrador de Redes en el panel superior para ver las redes disponibles.

Nota: Lamentablemente habremos de repetir este proceso toda vez que se actualice el núcleo del sistema operativo (Kernel). De manera que conviene dejar el directorio con el código fuente del controlador a mano.

Si también deseamos emplear Bluetooth, ejecutamos de a uno los siguientes Comandos en la Terminal:

git clone https://github.com/lwfinger/rtl8723au_bt.git
cd rtl8723au_bt
make
sudo make install
sudo modprobe -v 8723au_bt


  • Chipset Realtek RTL8723BU (Identificado como ID 0bda:b720)

Atención: Los chipsets RTL8723BU y RTL8723AU a pesar de ser distintos, comparten el mismo Identificador ID 0bda:b720. Estas indicaciones por lo tanto son específicas para el chipset RTL8723BU. Si desea instrucciones para el chipset RTL8723AU busque la sección correspondiente arriba en este artículo).

Para utilizar adecuadamente los adaptadores Wifi USB con chipset Realtek RTL8723BU debemos instalar un controlador específico. Podremos proceder de la siguiente manera:

a) Establecemos una conexión estable a internet por medio de un cable Ethernet conectado al Router/Módem.

b) Abrimos una terminal con Ctrl+Alt+T.

c) Instalamos las dependencias necesarias por medio del siguiente comando de organización en la Terminal, seguido de Enter.

sudo apt-get install git build-essential linux-headers-$(uname -r)
 
d) Descargamos el paquete de controlador desde la terminal, por medio del siguiente Comando de Organización:

git clone https://github.com/lwfinger/rtl8723bu
e) Ahora compilaremos el módulo de núcleo de sistema operativo requerido a partir del controlador que hemos descargado. Pegamos los siguientes comandos en la Terminal, cada uno de ellos seguido de Enter:

cd ~/rtl8723bu ;
make ;


f) Finalmente, instalamos el módulo recién compilado con este comando:

sudo make install

g) Acto seguido, pondremos el controlador fallado en la lista negra. Para ello ingresamos el siguiente comando:

sudo nano /etc/modprobe.d/blacklist.conf

...se abrirá el editor GNU Nano con un archivo de configuración que podría ya contener texto. Al final de todo el texto contenido le pegamos el siguiente bloque de texto:

# Los controladores rtl8723au y rtl8723bu están mal,
# de modo que se debe impedir su carga.
# Esto debería dar lugar a los controladores 8723au o 8723bu

# para cargarse correctamente
blacklist rtl8723au
blacklist r8723au
blacklist rtl8723bu
blacklist r8723bu

Guardamos los cambios con Ctrl+o y salimos del editor Nano con Ctrl+x.

h) Reinicamos el sistema.

i) Ahora nuestro adaptador Wifi USB debería funcionar correctamente cuando lo conectemos a un puerto USB de nuestro sistema. Debemos hacer clic en el Administrador de Redes para ver las posibles redes a las cuales conectarnos.

Nota: Lamentablemente habremos de repetir este proceso toda vez que se actualice el núcleo del sistema operativo (Kernel). De manera que conviene dejar el directorio install_folder con el código fuente del controlador a mano.

: Desafortunadamente, los chipsets RTL8723BU y RTL8723AU comparten el mismo Identificador ID 0bda:b720. Estas indicaciones por lo tanto son específicas para el chipset RTL8723BU. Si desea instrucciones para el chipset RTL8723AU busque la sección de arriba en este artículo).
 


  • Chipset Realtek RTL8192EU (Identificado como ID 0bda:818b)
El chipset Realtek RTL8192EU suele venir en miniadaptadores USB de hasta 300 mbps UBS 2 serie N que suelen comercializarse en dispositivos diseñados para el mercado europeo.
Si no funciona en nuestro Ubuntu, necesitaremos compilar el controlador a partir de un paquete especial. Para ello establecemos una conexión a internet a través de un cable Ethernet y:

a) Descargamos el paquete controlador Realtek RTL8192EU para Ubuntu

 ...movemos el puntero hacia la parte superior de la pantalla y hacemos click el el botón "Downloaden", como se ve a continuación:


https://sites.google.com/site/easylinuxtipsproject/reserve-7/Screenshot-Realtek-driver.jpg?attredirects=0

No debemos abrir el paquete con ningún descompresor u otra aplicación, simplemente descargarlo y dejarlo sin cambios.

Este paquete de controlador consta de una versión mejorada del paquete que la compañía Maxxter provee para sus adaptadores Wifi USB. El controlador original sólo funciona adecuadamente en las viejas versiones de Ubuntu y Mint, pero la versión mejorada funciona en Ubuntu 14.04 y Linux Mint 17.3.

b) El paquete debería haberse descargado a la carpeta /Descargas. Si este fue el caso, debemos descomprimirlo abriendo una terminal con Ctrl+Alt+T e ingresando los siguientes comandos:

cd ~/Descargas
tar xvzf ~/Descargas/Realtek*.tar.gz

c) Ahora debemos ingresar el siguiente comando en la Terminal.

cd install_folder

d) Y finalmente, comenzamos la instalación con el comando:

sudo ./install.sh
Tras ingresar nuestra contraseña de Conductor, se iniciará la instalación efectiva. Esta puede llevar unos segundos o minutos.

e) Conectamos nuestro adaptador Wifi USB con chipset Realtek en un puerto USB del sistema. Ahora debería operar.

Nota: Lamentablemente habremos de repetir este proceso toda vez que se actualice el núcleo del sistema operativo (Kernel). De manera que conviene dejar el directorio install_folder con el código fuente del controlador a mano.



f) Completada la instalación, podremos borrar la carpeta install_folder/, pues será innecesaria. Podremos hacerlo desde la terminal con el siguiente comando:

sudo rm -r -v ~/Descargas/install_folder
  • Chipset Realtek RTL8723BE

Para el chipset Realtek RTL8723BE es un chipset que normalmente encontramos en ciertas tarjetas Wifi mini PCI-e incorporadas en ciertas notebooks, aunque a veces lo encontramos también en ciertos adaptadores USB.

Normalmente su controlador incorporado funciona adecuadamente, pero en ciertos dispositivos particulares puede tener problemas de estabilidad y alcance de conexión wifi. Deberíamos poder mejorar la estabilidad y calidad de la misma desactivando el ahorro de energía del chipset en cuestión. No existe en este caso la necesidad de instalar otro controlador. Para poder dar con esta solución debemos:

a) Ingresamos en la terminal con Ctrl+Alt+T e indicar el siguiente comando de organización:

sudo nano /etc/modprobe.d/rtl8723be.conf

Tras ingresar nuestra contraseña de Conductor, se abrirá el editor peronista GNU Nano con un archivo de configuración vacío.

b) Le agregamos la siguientes líneas de configuración, que desactivarán la gestión de energía:

# Desactivar gestión de energía del Wifi rtl81623be
options rtl8723be fwlps=0
Guardamos los cambios realizados con Ctrl+o y salimos del editor con Ctrl+x.

c) Reiniciamos el equipo.

La conexión a través del Wifi debería ser estable ahora.

En el caso de que esto no mejore las condiciones de la conexión, se podrá probnar instalar el nuevo controlador de lwfinger, como se describe en la sección pertinente.
  • Chipset Realtek RTL8812AU (identificado como ID 0bda:8812)

Este chipset Realtek RTL8812AU suele encontrarse en dispositivos wifi USB de alta potencia y velocidad, hasta 300mbps serie N, y es identificado por el sistema como ID 0bda:8812.

Si éstos no operan en Ubuntu o lo hacen mal, deberíamos instalar un nuevo controlador.

a) Primero logramos una conexión a través de un cable Ethernet conectado al modem/router.

b) Desconectamos el adaptador Wifi con este chipset de la computadora.

c) Abrimos una Terminal con Ctrl+Alt+T.

d) Instalamos las dependencias necesarias con los siguientes Comandos de Organización, seguidos de Enter:

sudo apt-get install linux-headers-$(uname -r) build-essential git
e) Descargamos el paquete de controlador desde la terminal con el siguiente comando:

git clone https://github.com/abperiasamy/rtl8812AU_8821AU_linux
f) Ahora compilaremos el módulo de núcleo del sistema operativo requerido desde el paquete de controlador que acabamos de descargar. Para ello ingresamos los siguientes Comandos de Organización en la Terminal, seguido cada uno de ellos por Enter.

cd ~/rtl8812AU_8821AU_linux ;
make ;


g) finalmente instalamos el módulo ya compilado con este comando:

sudo make install

h) Reiniciamos nuestro equipo.

i) Conectamos nuestro adaptador Wifi a uno de los puertos USB del sistema. Debería operar correctamente ahora.

Nota: Lamentablemente habremos de repetir este proceso toda vez que se actualice el núcleo del sistema operativo (Kernel). De manera que conviene dejar el directorio install_folder con el código fuente del controlador a mano.
  • Controlador rtlwifi_new de lwfinger

Podremos instalar el paquete controlador rtlwifi_new de lwfinger para los siguientes Chipsets Realtek: RTL8192CE, RTL8192SE, RTL8192DE, RTL8188EE, RTL8192EE, RTL8723AE, RTL8723BE y RTL8821AE.

Nota: Para el chipset RTL8723BE, normalmente no es necesario reemplazar el controladr, ya que el mismo puede ser corregido como se indica en su apartado en este artículo.


a) Primero establecemos un vínculo estable a internet por medio de un cable Ethernet conectado al router/cablemódem.

b) Lanzamos una Terminal Linux presionando Ctrl+Alt+T.

c) Instalamos la paquetería necesaria para compilar ingresando en la Terminal el siguiente Comando de Organización, seguido de Enter:

sudo apt-get install git build-essential linux-headers-$(uname -r)
d) Descargamos el paquete de controladores desde la Terminal, por medio del siguiente Comando de Organización:

git clone https://github.com/lwfinger/rtlwifi_new.git
e) Ahora compilaremos el módulo de núcleo de sistema operativo requerido a partir del paquete de controlador descargado. Para ello pegamos los siguientes comandos en la terminal, cada uno de ellos seguido de Enter:

cd ~/rtlwifi_new
make


f) Finalmente, instalamos el módulo ya compilado pegando este comando en la terminal y presionando Enter:

sudo make install
g. Reiniciamos el equipo.

h) Nuestro Wifi debería funcionar mejor ahora. Podremos hacer clic en nuestro Administrador de Redes para ver las redes Wifi a las cuales podremos enlazarnos.

Nota: Lamentablemente habremos de repetir este proceso toda vez que se actualice el núcleo del sistema operativo (Kernel). De manera que conviene dejar el directorio install_folder con el código fuente del controlador a mano.