# Pruebas Wi-Fi HaLow 802.11ah

## Hardware — Planet HLB-100

| Elemento | Detalle |
|---|---|
| Modelo | HLB-100 |
| Estándar | IEEE 802.11ah (Wi-Fi HaLow) |
| Frecuencia | Sub-1 GHz (915 MHz US / 868 MHz EU) |
| Alcance máximo | Hasta 1 km en campo abierto |
| Interfaz | 1x 10/100BASE-TX RJ45 (LAN/WAN) + conector SMA hembra Sub-1G |
| RS485 | Terminal block 3 pines en el panel trasero |
| Modos | AP (por defecto) / Station / Gateway |
| Seguridad | WPA3 |
| Alimentación | 5V DC 2A |
| Temperatura operación | -20°C a 60°C |

**Contenido de la caja:**
- HLB-100
- Adaptador DC 5V/2A
- Antena Sub-1G
- Hoja QR

---

## Datos de acceso por defecto

| Parámetro | Valor |
|---|---|
| IP por defecto | `192.168.1.253` |
| Usuario | `admin` |
| Contraseña | `hl` + últimos 6 caracteres del MAC ID en minúsculas |
| SSID HaLow | `PLANET_AH` |
| Modo por defecto | AP |

> ℹ️ La contraseña se forma con el prefijo `hl` seguido de los últimos 6 caracteres de la dirección MAC. Por ejemplo si el MAC es `4C:BB:47:C8:C4:9C` la contraseña sería `hlc8c49c`.

Podemos encontrar la MAC en la etiqueta de debajo

---

[![](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/scaled-1680-/image-1779179598445.png)](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/image-1779179598445.png)

---

Nos quedamo con los últimos 6 carácteres, `e82805`.

---

## Configuración inicial — acceso a la interfaz web

El HLB-100 se configura exclusivamente por Ethernet — no hay configuración WiFi directa. El módulo no tiene servidor DHCP activo por defecto, por lo que al conectarlo directamente al PC la interfaz ethernet queda con una IP `169.254.x.x` (APIPA) — subred diferente a la del módulo. Es obligatorio asignar una IP estática manualmente en el PC antes de acceder.

### Windows (PowerShell)

```powershell
# Asignar IP estática
netsh interface ip set address "Ethernet" static 192.168.1.100 255.255.255.0

# Volver a DHCP al terminar
netsh interface ip set address "Ethernet" dhcp
```

### Linux

```bash
# Ver el nombre de la interfaz ethernet
ip a

# Asignar IP estática (sustituye enp3s0 por tu interfaz)
sudo ip addr add 192.168.1.100/24 dev enp3s0
sudo ip link set enp3s0 up

# Volver a DHCP al terminar
sudo ip addr flush dev enp3s0
sudo dhclient enp3s0
```

Accede a la interfaz web con Chrome o Firefox:

```
http://192.168.1.253
```

> ⚠️ El módulo responde por **HTTP**, no HTTPS — a pesar de lo que indica el manual. Usar `https://` resultará en error de conexión.

Veremos algo así:

---

[![](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/scaled-1680-/image-1779179247674.png)](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/image-1779179247674.png)

---

**Reset a fábrica** (si se perdió la contraseña o la IP):
Mantén pulsado el botón RESET del panel frontal durante 10 segundos. La IP vuelve a `192.168.1.253`.

---

Cuando entremos con `user: admin` y `pswd: hl+MAC`, veremos esto:

[![](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/scaled-1680-/image-1779179518482.png)](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/image-1779179518482.png)

Nos pedirá que escribamos nuevos credenciales, yo lo he dejado como `usr: APHaLow` y `pswd: Admin1234.`, obliga a usar ciertas cosas para la contraseña y usr no puede ser admin. Para el que usaré de station será `usr: STAHaLow`.

Nos llevará a esta página:

---

[![](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/scaled-1680-/image-1779179760479.png)](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/image-1779179760479.png)

---

Aquí escogemos el modo de uso, podríamos usar Gateway para conectarlo directamente a un punto de acceso de Internet, pero a nosotros solo nos interesa STA o AP.

## **Si escogemos AP:**

Veremos:

---

[![](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/scaled-1680-/image-1779179858819.png)](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/image-1779179858819.png)

---

Tenemos dos tipos de conexión para la LAN, `Static` y `DHCP`

---

[![](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/scaled-1680-/image-1779179912571.png)](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/image-1779179912571.png)

---

Lo dejamos en `Static`, y asignamos la IP del AP a `192.168.1.253`, para que no moleste en cuanto nuestros PCs intenten enrutar trafico, no lo intenten por Wi-FI normal, el resto no es importante, dejarlo en defaults. La IP que cambiaremos será para cuando configuremos el STA.

Seguimos y veremos esto:

---

[![](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/scaled-1680-/image-1779180324685.png)](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/image-1779180324685.png)[![](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/scaled-1680-/image-1779180249800.png)](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/image-1779180249800.png)

---

Una vez pongamos el `Wireless Status: Enable`, nos saldrán las otras opciones. Aquí empiezan las risas, solo tenemos disponible la opción de 1Mhz, cosas de Europa. Dejamos el resto igual, guardar `SSID` y `Passphrase`, que será lo que necesitará nuestra STA. Lo único que podemos variar de aquí son los canales, que tenemos disponibles 1, 3, 5, 7 y 9. Lo dejaré en 1 para empezar.

| Canal | Frecuencia central | Banda |
|---|---|---|
| 1 | 863.5 MHz | EU |
| 3 | 864.5 MHz | EU |
| 5 | 865.5 MHz | EU |
| 7 | 866.5 MHz | EU |
| 9 | 867.5 MHz | EU |

Finalmente veremos el resumen:

---

[![](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/scaled-1680-/image-1779180487475.png)](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/image-1779180487475.png)

---

Una vez le demos a Finish tardará un poco en cargar y nos devolverá a la pantalla inicial de Login. Si entramos con nuestros nuevos credenciales:

---

[![](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/scaled-1680-/image-1779180716777.png)](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/image-1779180716777.png)

---

Aquí podemos ya acceder a la típica pantalla de configs y dashboard, ya entraremos en más detalle más tarde.

## **Si escogemos STA:**

Ahora configuraremos la Station, hacer los mismos pasos de login con MAC de antes, etc.. (Este lo configuraremos con `usr: STAHaLow` y cuando lleguemos a `Mode`, veremos:

---

[![](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/scaled-1680-/image-1779179858819.png)](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/image-1779179858819.png)

---

Que es lo mismo que en AP por ahora, aquí lo que haremos será cambiar su IP a `IP Adress 192.168.3.252`, para que puedan comunicarse.

Si seguimos veremos:

---

[![](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/scaled-1680-/image-1779181005178.png)](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/image-1779181005178.png)

---

Dejamos Use HaLow Radio como está, y en SSID o ponemos el SSID del AP o le damos a `Scan` para comprobar que hemos hecho bien el config del AP. (Hay que tener encendido el AP, no tiene porqué estar conectado a ningún PC)

Y veremos esto:

---

[![](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/scaled-1680-/image-1779181082511.png)](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/image-1779181082511.png)

---

Un pop-up con el módulo que haya detectado, nos chiva su SSID, y sus datos. El RSSI no es el real si hay alguna duda, es un placeholder que hasta que no los emparejemos no cambiará.

Si lo clicamos, se nos rellenarán los campos y solo quedará poner la `Passphrase`. (12345678)

---

[![](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/scaled-1680-/image-1779181214891.png)](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/image-1779181214891.png)

---

Y finalmente, se mostrará como en el anterior el resumen del config.

---

[![](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/scaled-1680-/image-1779181273751.png)](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/image-1779181273751.png)

---

Si le damos a finish, después de cargar un poco, como antes, nos devolverá a la página de login, iniciamos con nuestros nuevos credenciales y veremos:

---

[![](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/scaled-1680-/image-1779181419552.png)](https://docs.rimaspec.upc.edu/uploads/images/gallery/2026-05/image-1779181419552.png)

---

Y ya los tendremos configurados. 

#### Importante

Ahora el AP es accesible a través de `http://192.168.1.253`, pero STA desde `http://192.168.1.252`.

Ahora si nos fijamos en el dashboard del STA, pone que el Status: OFF, reiniciamos ambos módulos desconectando y conectado y cuando volvamos a entrar estarán emparejados.

Podemos hacer una simple prueba, si estamos conectados con el ethernet al AP, si hacemos:

```bash
ping 192.168.1.252
```

Y tenemos respuesta, todo va bien, de hecho, si ambos dispositivos están encendidos, podemos entrar a `http://192.168.1.252` (STA), estando conectados al `192.168.1.253` por ethernet.

Ya están enlazados.


## Indicadores LED

| LED | Estado | Significado |
|---|---|---|
| PWR | Verde fijo | Alimentación correcta |
| STA | Verde fijo | Módulo en modo Station |
| LNK/ACT | Verde fijo/parpadeando | Enlace Ethernet activo / tráfico |
| RF Signal | 3 LEDs verdes| Calidad de la señal HaLow |

---

## Pruebas
 
Haremos las pruebas desde un PC Windows 11 y una Raspberry Pi 5 con Ubuntu 22.04.
 
Las antenas separadas unos 15cm, en línea de visión directa (LOS).
 
### Problema de subredes
 
La red local (router, WiFi, internet) usa `192.168.1.x`. Al poner los módulos HaLow en la misma subred, el tráfico se enrutaba por WiFi en lugar de por HaLow, causando conflictos de ruta.
 
La solución es mover toda la red HaLow a una subred dedicada `192.168.3.x`:
 
| Dispositivo | IP |
|---|---|
| HLB-100 AP | `192.168.3.253` |
| HLB-100 Station | `192.168.3.252` |
| PC (ethernet) | `192.168.3.100` |
| Pi5 (eth0) | `192.168.3.50` |
 
### Configuración de red en el PC (Windows)
 
```powershell
# Asignar IP estática en la interfaz ethernet (hacia el AP)
netsh interface ip set address "Ethernet" static 192.168.3.100 255.255.255.0
 
# Volver a DHCP al terminar
netsh interface ip set address "Ethernet" dhcp
```
 
El WiFi sigue en `192.168.1.x` para internet — no se ve afectado.
 
### Configuración de red en la Pi5 (Linux)
 
```bash
# Levantar eth0 y asignar IP
sudo ip link set eth0 up
sudo ip addr add 192.168.3.50/24 dev eth0
 
# Verificar
ip a show eth0
 
# Verificar que la ruta hacia 192.168.3.x sale por eth0
ip route show | grep 192.168.3
```
 
Los cambios con `ip` no son persistentes tras reinicio. Para hacerlos permanentes edita el netplan o usa nmcli.
 
### Conectividad simultánea HaLow + internet + SSH
 
**PC:** ethernet en `192.168.3.100` (HaLow) + WiFi en `192.168.1.x` (internet)
 
**Pi5:** eth0 en `192.168.3.50` (HaLow) + wlan0 en `192.168.1.45` (internet y SSH)
 
El SSH a la Pi5 sigue funcionando por `wlan0` y no se ve afectado por los cambios en `eth0`.
 
### Verificar el enlace HaLow
 
```bash
# En la Pi5 — comprobar que eth0 recibe tráfico
sudo tcpdump -i eth0 -c 10
 
# Si no aparece tráfico, forzar negociación ethernet
sudo apt install -y ethtool
sudo ethtool -s eth0 speed 100 duplex full autoneg off
sudo ip link set eth0 up
```
 
### Conectividad básica
 
```bash
# Desde PC ping a Pi5
ping 192.168.3.50
 
# Ping con estadísticas (Linux)
ping -c 100 192.168.3.50
 
# Ping continuo (Windows)
ping -t 192.168.3.50
```
 
### Throughput — iperf3
 
```bash
# Instalar
sudo apt install -y iperf3       # Linux
# Windows: descargar desde https://iperf.fr
 
# Pi5 como servidor
iperf3 -s
 
# PC como cliente — test TCP 60 segundos
iperf3 -c 192.168.3.50 -t 60
 
# Test UDP con bitrate realista para HaLow EU
iperf3 -c 192.168.3.50 -u -b 200K -t 60
 
# Test bidireccional
iperf3 -c 192.168.3.50 -t 60 --bidir
```
 
---
 
## Resultados obtenidos
 
Condiciones: LOS a 15cm, canal 1 MHz, canal 1 (863.5 MHz), WPA3.
 
### Throughput TCP
 
| Dirección | Throughput medio | Patrón |
|---|---|---|
| PC → Pi5 (downstream) | ~125-191 Kbits/sec | Ráfagas de 128KB cada ~7s |
| Pi5 → PC (upstream) | ~34-70 Kbits/sec | Ráfagas menos frecuentes |
 
El patrón de ráfagas seguidas de silencio es consecuencia directa del **duty cycle del 1%** en la banda 868 MHz EU — el módulo transmite durante ~0.07 segundos y luego debe guardar silencio el resto del ciclo.
 
### Throughput UDP
 
| Bitrate objetivo | Resultado | Pérdida |
|---|---|---|
| 5 Mbps | 0 bytes recibidos | 100% — el enlace no puede absorberlo |
| 200 Kbps | ~170-200 Kbits/sec estables | 0.74% |
 
Para UDP hay que ajustar el bitrate al límite real del enlace (~150-200 Kbps). A 5 Mbps el buffer del módulo se satura y descarta todos los paquetes.
 
### Latencia
 
| Métrica | HaLow 868 MHz (1 MHz BW) | Wi-Fi 2.4 GHz |
|---|---|---|
| Latencia mínima | ~19 ms | ~2.8 ms |
| Latencia media | ~38-53 ms | ~6.9 ms |
| Latencia máxima | ~119 ms | ~34.7 ms |
| Jitter (mdev) | ~13-30 ms | ~5.5 ms |
| Pérdida de paquetes | 0-12.5% | 0% |
| Throughput TCP | ~125-191 Kbps | >100 Mbps |


### RSSI y estado del enlace

Desde la interfaz web del AP (`http://192.168.3.253`) → **HaLow → Connection Status**:

| Campo | Valor (LOS 15cm) |
|---|---|
| RSSI | -7 dBm |
| TX Link Speed | 3.5 Mbps |
| RX Link Speed | 3.5 Mbps |
| Uptime | estable >1h |

Con las antenas a 15cm en LOS el RSSI es prácticamente perfecto. Habría que repetir esta lectura a cada distancia/obstáculo durante las pruebas para correlacionar señal con throughput y latencia.
 
---
 
## Limitaciones de HaLow EU
 
### Duty cycle del 1%
 
Es la limitación más jodida. La regulación europea obliga a que los dispositivos en 868 MHz solo transmitan durante el 1% del tiempo, en la práctica esto significa que por cada 70ms de transmisión hay ~7 segundos de silencio obligatorio. Esto explica el patrón de ráfagas que se ve en iperf3 y hace que el throughput medio sea muy bajo.
 
En USA (915 MHz) no existe esta restricción — los módulos HLB-100 versión US pueden transmitir continuamente y el throughput real se acerca a los 3-4 Mbps con canal de 4 MHz.
 
### Ancho de canal limitado a 1 MHz
 
En Europa el espectro disponible es solo de 5 MHz (863-868 MHz), lo que limita el ancho de canal máximo a 1 MHz. En USA hay 26 MHz disponibles y se pueden usar canales de 1, 2, 4 y 8 MHz — con 8 MHz el throughput sube a ~15 Mbps.
 
### Jitter alto
 
El jitter de 13-30 ms hace que HaLow EU no sea apto para aplicaciones en tiempo real estricto como streaming de vídeo o para un caso especial LiDARs.
 
---
 
## Mejoras posibles
 
 
### Antenas direccionales
 
Las antenas omnidireccionales incluidas son adecuadas para entornos abiertos. En entornos con muchos obstáculos, antenas Yagi o patch direccionales en el conector SMA pueden mejorar el RSSI y reducir la pérdida de paquetes.
 
---
 
## Prueba de penetración de obstáculos
 
Coloca los módulos en distintas posiciones y anota el throughput y latencia:
 
| Escenario | Throughput TCP | Latencia | Pérdida |
|---|---|---|---|
| Misma habitación (LOS 15cm) | ~150 Kbps | ~38 ms | 0-12% |
| Una pared de yeso | | | |
| Dos paredes de yeso | | | |
| Pared de hormigón | | | |
| Dos plantas | | | |
| Extremos opuestos de la casa | | | |
 
### Estabilidad — test de larga duración
 
```bash
# iperf3 durante 1 hora con reporte cada minuto
iperf3 -c 192.168.3.50 -t 3600 -i 60
 
# Ping continuo con log
ping 192.168.3.50 | tee halow_ping_log.txt        # Linux
ping -t 192.168.3.50 > halow_ping_log.txt         # Windows
```
 
---
 
## Notas sobre regulación europea
 
En Europa (868 MHz):
- Duty cycle máximo del **1%** — 0.7 segundos de transmisión por cada 70 segundos
- Potencia máxima de transmisión limitada a **25 mW ERP**
- Solo canales de **1 MHz** disponibles en el rango 863-868 MHz
Para pruebas puntuales en interior no suele ser un problema legal, pero hay que tenerlo en cuenta para despliegues permanentes.
 
---
 
## Referencias
 
- [Planet HLB-100 — Página oficial](https://www.planet.com.tw/en/product/hlb-100)
- [Planet HLB-100 — Quick Installation Guide (PDF)](https://planetechusa.com/wp-content/uploads/2025/06/HLB-100_QuickGuide.pdf)
- [802.11ah EU spectrum limitations — Notebookcheck](https://www.notebookcheck.net/802-11ah-Wi-Fi-with-10-miles-of-range-to-gain-importance-in-Europe-with-major-limitations.947809.0.html)
- [iperf3](https://iperf.fr)