Punto de acceso WiFi Raspberry PI con conexión USB de Android

Última actualización el 2 de septiembre de 2023 por

En este tutorial, le mostraré cómo configurar un punto de acceso WiFi Raspberry PI para compartir la conectividad USB del teléfono inteligente creando una red WiFi.

Conectar dispositivos desde puntos de acceso WiFi de Android agota rápidamente la batería de su teléfono inteligente y puede desperdiciarla en unos pocos meses. Raspberry PI, conectada al anclaje USB de un teléfono inteligente, funciona muy bien como punto de acceso WiFi y agrega funciones avanzadas

Un uso común de Raspberry PI hace que su puerto Ethernet se conecte a enrutadores antiguos (sin WiFi) para crear un punto de acceso doméstico. Esto funciona con placas que incluyen puertos Ethernet (RPI modelos B), pero no se puede aplicar a todas aquellas placas (como RPI Zero W y PI 3 Modelo A+) que tienen un factor de forma ideal para la portabilidad.

Además, con las crecientes necesidades de trabajo inteligente, el uso de nuestro teléfono inteligente como punto de acceso WiFi puede agotar las baterías del móvil mientras la función WiFi siempre está activada.

El uso de una pequeña Raspberry PI (como la Raspberry PI Zero 2 W) para compartir la conectividad de un teléfono inteligente a través de una red WiFi (creada en RPI) también aumenta sus capacidades WLAN, ya que puede ejecutar en la misma computadora de placa única también un sistema de bloqueo de tráfico. (como Pi-Hole), capacidades de Proxy (como Squid, Privoxy o TOR) o creación de servicios locales (como un portal web git o un host de WordPress).

Por supuesto, puedes utilizar este tutorial con todas las placas de ordenador Raspberry PI.

Lo que aprenderemos

Configuraremos una IP estática para la interfaz inalámbrica (wlan0, siendo el último carácter un cero), que se utilizará desde los dispositivos cliente como puerta de enlace predeterminada.

Todas las conexiones se enrutarán a la interfaz usb0 (donde el último carácter es un cero), que es el puerto USB conectado a su teléfono inteligente en modo anclaje a red (puede verlo con el comando de terminal “ipconfig” cuando el teléfono inteligente está conectado y el La conexión USB está habilitada).

Luego, configuraremos el enrutamiento y el servidor DHCP para dirigir correctamente el tráfico y asignar IP dinámicas a los clientes.

Finalmente, la configuración del punto de acceso WiFI completará nuestra instalación.

Tenga en cuenta que también puede utilizar este tutorial como punto de acceso WiFi con Raspberry PI compartiendo la conexión a Internet de su hogar, conectando el enrutador de su hogar a través del cable Ethernet y cambiando el «usb0» en las siguientes configuraciones con «eth0» (también aquí, el último carácter es un cero).

Lo que necesitamos

Como siempre, te sugiero agregar desde ahora al carrito de compras de tu e-commerce favorito todo el hardware necesario, para que al final puedas evaluar los costos generales y decidir si continuar con el proyecto o eliminarlos del carrito de compras. Entonces, el hardware será solo:

  • Raspberry PI Zero 2 W (incluida la fuente de alimentación adecuada o el uso de un cargador micro USB para teléfono inteligente con al menos 3 A) o una placa Raspberry PI más nueva. Si utiliza un RPI Zero W, es posible que también necesite un adaptador USB a micro USB para conectar su teléfono inteligente con el puerto de salida RPI Zero.
  • tarjeta micro SD de alta velocidad (al menos 16 GB, al menos clase 10)
  • un teléfono inteligente con función de anclaje a red USB (disponible en casi todos los teléfonos inteligentes recientes)

Diagrama de cableado

Consulte la siguiente imagen para ver el diagrama de cableado. La imagen muestra una Raspberry PI Zero 2 W, pero puedes usarla para crear un punto de acceso WiFi con cualquier placa de computadora Raspberry PI.

Procedimiento paso a paso

Prepare el sistema operativo para el punto de acceso WiFi Raspberry PI

Comience a preparar el sistema operativo Raspberry PI. Le sugiero que instale Raspberry PI OS Lite para tener un sistema operativo rápido y sin cabeza. Después de este paso, actualice su sistema operativo. Desde la terminal:

sudo apt update -y && sudo apt upgrade -y

También necesitamos instalar paquetes adicionales:

sudo apt install hostapd dnsmasq -y

Consulte el servicio nfttables

En la versión anterior del artículo, el enrutamiento era administrado por el antiguo servicio “iptables” (aún disponible solo en sistemas operativos heredados). El servicio “iptables” ha sido reemplazado en Raspberry PI OS Lite por el servicio “nftables” más nuevo, que ya está disponible de forma predeterminada.

Para verificar que el servicio nftables esté instalado, puede ejecutar el siguiente comando de terminal:

nft -v

Y el servicio nftables debería responder correctamente a la consulta de versión:

pi@raspberrypi:~ $ nft -v nftables v0.9.8 (E.D.S.)

Desactivar ahorro de energía WiFi

Raspberry PI OS WiFi Power Save es una configuración que intenta reducir el consumo de energía del chip WiFi. Es útil cuando la placa funciona como cliente de una red pero, para uso de hotspot, sugiero desactivarla (en cualquier caso, esto es opcional). Desde la terminal, abra el archivo rc.local:

sudo nano /etc/rc.local

Y agregue lo siguiente antes de la línea final «salida 0»:

iw dev wlan0 set power_save off

Cerrar y guardar.

Configurar IP estática

Para mantener la placa del ordenador Raspberry PI siempre accesible desde la red WiFi, debemos darle una dirección IP fija en esa interfaz. Aunque pueda dar lugar a malentendidos, en Linux el archivo de configuración dhcpcd gestiona la configuración IP de la Raspberry PI.

Desde la terminal, edite el archivo dhcpcd.conf:

sudo nano /etc/dhcpcd.conf

Y agregar al final lo siguiente:

interface wlan0 static ip_address=192.168.2.1/24 nohook wpa_supplicant

El “nohook wpa_supplicant” deshabilitará el uso del archivo de configuración wpa_supplicat en el próximo reinicio. “192.168.2.1” se convertirá en la dirección IP que utilizará su Raspberry PI dentro de su LAN WiFi.

Guarde y cierre este archivo.

Conecte su teléfono inteligente y habilite la conexión USB

Si aún no lo has hecho, puedes conectar ahora tu smartphone al puerto USB de Raspberry PI. También debe habilitar la conexión USB desde su teléfono inteligente, de acuerdo con el manual de usuario del sistema operativo. Generalmente:

  • Smartphones Android: esta función suele estar disponible en Configuración -> Conexiones -> Hotspot móvil y Tethering
  • Smartphones Apple: esta función suele estar disponible en Configuración -> Celular (algunas versiones de iOS omiten este paso) -> Personal Hotspot

Habilitar la ruta

En este capítulo, configuraremos el sistema operativo Raspberry PI para redirigir todo el tráfico que ingresa desde cualquier puerto al puerto «usb0». El puerto usb0 es la interfaz creada automáticamente por la Raspberry PI cuando detecta automáticamente un módem desde una de sus interfaces USB (puedes verificarlo usando el comando de terminal “ifconfig” en la Raspberry PI una vez que hayas conectado el teléfono inteligente y habilitado aquí el Anclaje a red USB).

Antes de configurar el enrutamiento del tráfico en RPI, debemos habilitar el proceso de reenvío de IP. Desde la terminal Raspberry PI:

sudo nano /etc/sysctl.conf

Busque la siguiente línea y descoméntela (eliminando el carácter «#» al principio de la línea):

net.ipv4.ip_forward=1

Con los siguientes comandos, permitiremos que el tráfico proveniente de todos los clientes externos del punto de acceso WiFi Raspberry PI considere la interfaz usb0 como puerta de enlace de salida. Esta configuración es similar a la que se usa para un Access Point RPI de ethernet a wifi, solo cambiando usb0 por eth0 (solo para placas con conexión por cable y solo si desea compartir la conexión a internet ethernet del router en lugar de la conexión USB).

Creemos una carpeta que incluirá los archivos de configuración de nft (incluso para sus posibles necesidades futuras):

sudo mkdir /etc/nftables.d

Ahora, cree un nuevo archivo de configuración dentro de esta carpeta:

sudo nano /etc/nftables.d/nat.conf

Utilice las siguientes líneas para el archivo creado:

table ip nat {         chain postrouting {                 type nat hook postrouting priority srcnat; policy accept;                 oif "usb0" masquerade         } }

Cerrar y guardar.

Para poder cargar este (y cualquier archivo “*.conf” de esta carpeta) desde el servicio nft, debemos incluir los archivos de la carpeta en el archivo de configuración “/etc/nftables.conf”. El siguiente comando hará el trabajo por usted:

echo 'include "/etc/nftables.d/*.conf"' | sudo tee -a /etc/nftables.conf

Tenga en cuenta que el enrutamiento aún no está activo e, incluso cuando esté activado, desaparecerá después de cada reinicio. Además, este comando funciona correctamente sólo cuando puede detectar una interfaz “usb0” conectada, por lo que no podemos ejecutarlo automáticamente en el momento del arranque, porque si el teléfono inteligente aún no está conectado resultará en un error interno que no será visible directamente para tú.

Entonces, el truco consiste en cargar el enrutamiento “usb0” solo cuando el sistema operativo Raspberry PI detecta que la interfaz usb0 está conectada. Por esta razón usaremos un “gancho dhcpcd”. Desde la terminal, cree un nuevo archivo:

sudo nano /lib/dhcpcd/dhcpcd-hooks/99-setntw

Y agrega las siguientes líneas

#!/bin/bash if [ "$interface" = "usb0" ] then  nft -f /etc/nftables.conf fi

el comando “nft -f /etc/nftables.conf” es el que carga el enrutamiento y se ejecutará solo cuando detecte la interfaz.

Configurar DHCP y DNS

Cree una copia de seguridad de su archivo de configuración dnsmasq:

sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.backup

Abra el archivo /etc/dnsmasq.conf con su editor de terminal:

sudo nano /etc/dnsmasq.conf

y agregue las siguientes líneas:

interface=wlan0  dhcp-range=192.168.2.2,192.168.2.100,255.255.255.0,24h domain=wlan address=/gw.wlan/192.168.2.1

Esta configuración configurará la IP asignada a los clientes WiFi en un rango en una subred local “192.168.2.x”, donde los dispositivos obtendrán una IP que termina con un número entre 2 y 100. Se recomendará a todos los dispositivos que utilicen 192.168.2.1. Dirección IP (su Raspberry PI) como dirección de puerta de enlace.

Configurar el punto de acceso WiFi Raspberry PI

Configure la red del punto de acceso. Cree un archivo de configuración hostapd:

sudo nano /etc/hostapd/hostapd.conf

Agregue las siguientes líneas (cambiando el código de país por el suyo; SSID y contraseña por su favorito):

##### hostapd configuration file ############################################## interface=wlan0  ##### IEEE 802.11 Relacionado configuration ####################################### country_code=US ssid=RpiWiFi hw_mode=g channel=7 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0  ##### WPA/IEEE 802.11i configuration ########################################## wpa=2 wpa_passphrase=wifipassword wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP

Configurar hosts

Antes de finalizar la configuración y ejecutar el punto de acceso WiFi Raspberry PI, también sugiero agregar algunos nombres de resolución a su Raspberry PI (opcional). Debería mejorar el rendimiento del Hotspot y evitar que los clientes de Windows liberen la red WiFi cuando la línea de Internet de su teléfono inteligente USB no es realmente fuerte.

En las siguientes líneas, “msftconnecttest.com” y “msftncsi.com” son el servicio de Microsoft utilizado por Microsoft Windows para detectar si una red de Internet está conectada a la web. Cuando no puede hacer ping a estos servicios o la prueba de ping no funciona muy bien, su PC con Windows intentará conectarse a una red diferente (de las que ya están almacenadas en su PC) para encontrar una mejor conexión a Internet.

Entonces, abra el archivo de hosts desde la terminal:

sudo nano /etc/hosts 

Y añade las siguientes 3 líneas, que incluyen también la IP de nuestra Raspberry PI de la red Hotspot:

127.0.0.1     www.msftconnecttest.com 127.0.0.1     www.msftncsi.com 192.168.2.1   localhost

Cerrar y guardar.

Complete la configuración y reinicie Raspberry PI

Por último, pero no menos importante, experimenté que a veces la conexión del módem USB luchaba con el servicio ModemManager para usar el mismo puerto. Si realmente no necesita este servicio en su Raspberry PI, puede detenerlo y desactivarlo:

sudo systemctl stop ModemManager.service sudo systemctl disable ModemManager.service

Finalmente, habilite el punto de acceso inalámbrico y reinicie Raspberry PI con la nueva configuración usando el siguiente comando de terminal:

sudo systemctl unmask hostapd && sudo systemctl enable hostapd && sudo reboot

Una vez finalizado el reinicio, puede conectar el teléfono inteligente y activar USB Tethering.

RpiWiFi aparecerá en su lista de WiFi en unos momentos (déle tiempo para que aparezca después de cada inicio) y debería poder usarlo para su conexión a Internet.

Próximos pasos

Puedes echar un vistazo a mis proyectos de Raspberry PI para inspirarte en tus primeros proyectos con Raspberry PI Zero 2 W (y otras placas de ordenador Raspberry PI).