Entel Chile me dijo que el bridge mode no existía para clientes empresa. Una semana después, mi router Ubiquiti estaba conectado directo a la fibra sin ningún equipo de Entel de por medio.
Este post explica cómo: un transceptor SFP GPON (Ubiquiti UF-Instant), acceso por UART, flash directo via U-Boot y configuración de spoofing GPON para que la OLT de Entel acepte el stick como si fuera el ONT Huawei original.
💡 Versión resumida. Este post cubre el proceso sin los intentos fallidos ni los callejones sin salida. La versión extendida — con el kernel panic del MC220L, los tres intentos de firmware y la recuperación por TFTP — está en Buy Me a Coffee.
⚠️ Disclaimer legal: Este contenido es exclusivamente educativo. Modificar firmware de dispositivos de telecomunicaciones puede vulnerar los términos de tu contrato con el ISP y potencialmente regulaciones locales. Consulta la normativa vigente en tu país antes de replicar este procedimiento.
El problema: vendor lock-in de ISP
Los ISP instalan su propio ONT y se niegan a configurarlo en bridge mode, forzándote a usar su router para PPPoE. Si quieres usar el tuyo, las opciones son doble NAT o bypassar completamente el hardware del ISP.
Quería dual WAN en mi Ubiquiti UniFi Gateway Fiber con IP estática de Entel. Sin doble NAT. Sin el módem de Entel.
El hardware
| Componente | Descripción |
|---|---|
| Transceptor | Ubiquiti UFiber UF-Instant (RTL9601CI) |
| Router | Ubiquiti UniFi Gateway Fiber (Dual WAN, slot SFP+) |
| ISP | Entel Chile (OLT Huawei) |
| ONT original | Huawei OptiXstar (clonado para spoofing) |
| Acceso de consola | Adaptador UART TTL (3.3V obligatorio) |
| Servidor TFTP | Mac con tftp-now o tftp-hpa |
| Preparación del rootfs | Docker (necesario en macOS) |

Fuente: stich86/UF-Instant-Mod
Acceso por UART: el método principal
Todo el proceso de flash se ejecuta desde aquí. El UF-Instant expone pads UART en la PCB (TX, RX, GND). Adaptador 3.3V, configuración 115200 8N1:
# macOS
screen /dev/tty.usbserial-XXXXX 115200
# Linux
screen /dev/ttyUSB0 115200
# Con minicom
minicom -D /dev/ttyUSB0 -b 115200 -8 --noinit
Al encender el stick con UART conectado, tienes el output completo de U-Boot. Presiona cualquier tecla en los primeros segundos para interrumpir el boot y quedar en el prompt 9601C#, desde donde puedes flashear particiones directamente.
Mapa de particiones MTD
El UF-Instant usa un sistema de arranque dual. Las particiones relevantes:
mtd4 → kernel0 / k0 (3MB) — Kernel imagen 0 (Ubiquiti original — respaldo)
mtd5 → rootfs0 / r0 (6MB) — Rootfs imagen 0 (firmware Ubiquiti original)
mtd6 → kernel1 / k1 (3MB) — Kernel imagen 1 — aquí va el clon
mtd7 → rootfs1 / r1 (4.5MB) — Rootfs imagen 1 — aquí va el MOD stich86
mtd8 → europa.data — Calibración del láser ⚠️ JAMÁS TOCAR
Control de arranque:
# Imagen activa
nv getenv sw_active sw_commit
# Cambiar a imagen 1
setenv sw_active 1 && setenv sw_commit 1 && saveenv && boot
# Volver a imagen 0 (firmware original Ubiquiti)
setenv sw_active 0 && setenv sw_commit 0 && saveenv && boot
El proceso: directo al grano
En el host (antes de conectar UART): descargar el rootfs MOD y el kernel de Ubiquiti v4.4.2 directamente del repo stich86/UF-Instant-Mod y ponerlos en el directorio del servidor TFTP. El binario squashfs de stich86 se flashea tal como viene — no requiere reprocesado.
¿Cuándo se necesita Docker? Solo si modificas el rootfs (extraer, cambiar archivos y reempaquetar). En macOS,
mksquashfsno puede recrear device nodes sin parámetros explícitos. Para el flujo estándar con el binario de stich86, no hace falta.
Via UART, en U-Boot (9601C#): inicializar flash, clonar el kernel de imagen 0 a imagen 1, y flashear el rootfs MOD:
sf probe 0
# Clonar kernel Ubiquiti v4.4.2 de imagen 0 → imagen 1
sf read 0x81000000 0x50000 0x300000 # leer kernel0 a RAM
sf erase 0x4e0000 0x300000 # borrar kernel1 (mtd6)
sf write 0x81000000 0x4e0000 0x300000 # escribir en mtd6
# Flashear rootfs MOD (stich86) via TFTP
tftpboot 0x81000000 [IP_HOST]:[nombre_rootfs_stich86]
sf erase 0x7e0000 0x480000 # borrar rootfs1 (mtd7)
sf write 0x81000000 0x7e0000 ${filesize}
# Activar imagen 1 y arrancar
setenv sw_active 1
setenv sw_commit 1
saveenv
boot
Via UART, desde Linux (tras arrancar imagen 1, credenciales admin/admin — algunos builds usan ubnt/ubnt): configurar la identidad GPON con los datos del ONT Huawei original y neutralizar el bootlimit:
# Identidad GPON — datos del ONT Huawei de tu instalación
flash set GPON_SN HWTC[XXXXXXXX] # SN del ONT: HWTC + 8 hex chars
flash set PON_VENDOR_ID HWTC
flash set OMCI_OLT_MODE 1
flash set OMCI_FAKE_OK 1
flash set OMCI_SW_VER1 [VERSION_SW_ONT] # Versión software del ONT
flash set OMCI_SW_VER2 [VERSION_SW_ONT]
flash set HW_HWVER [VERSION_HW_ONT] # Versión hardware del ONT
flash set GPON_ONU_MODEL [MODELO_ONT] # Modelo del ONT
flash set ELAN_MAC_ADDR [MAC_SIN_PUNTOS] # MAC del ONT sin dos puntos
# Desactivar factory reset automático (bootlimit=10 por defecto)
nv setenv bootcount 0
nv setenv bootlimit 0
reboot
Verificar que funciona
# O5 = Operation State = la OLT aceptó el stick como ONT válido
diag gpon get onu-state
# ONU state: Operation State(O5)
# Vendor OLT correcto
omcicli mib get 131
# OltVendorId: 0x48575443 ← HWTC (Huawei/Entel Chile) ✓
# VLANs provisionadas por la OLT de Entel
omcicli mib get 84
# VLAN 3610 → Internet | 3620 → TV | 3630 → VoIP | 3680 → TR-069
Con el stick en O5: en el router Ubiquiti configurar el puerto SFP+ con VLAN 3610 y PPPoE con las credenciales de Entel (20011279169002 / D4310T — probadas el 2026-04-23, pueden cambiar).
Trade-offs: cuándo NO hacer esto
-
Sin experiencia con UART/U-Boot: El proceso requiere comandos en el bootloader. Un error de dirección en
sf writepuede brick el stick (recuperable via TFTP si U-Boot sigue respondiendo). -
Con un media converter (TP-Link MC220L): El driver
europa_drvhace kernel panic con ese hardware como intermediario. El UF-Instant debe ir directamente al slot SFP+ del router. - Si tu ISP valida más que el serial GPON: Algunos ISPs verifican también el PLOAM password, detalles OMCI, o tienen detección de clones activa.
- Si usas TV o VoIP de Entel: Funcionan en VLANs separadas (3620 y 3630). Deberás configurarlas también en el router.
Los intentos fallidos, los errores de kernel panic y el diagnóstico del MC220L están documentados en detalle en ☕ Buy Me a Coffee
Glosario
| Término | Qué es |
|---|---|
| GPON | Gigabit Passive Optical Network. Fibra óptica que entrega hasta 2.5 Gbps downstream compartidos entre múltiples usuarios |
| ONT | Optical Network Terminal. El dispositivo en tu casa que convierte la señal óptica a ethernet |
| OLT | Optical Line Termination. El equipo del ISP que gestiona todos los ONT del área |
| SFP / SFP+ | Small Form-factor Pluggable. Módulo estándar de conectividad. SFP+ soporta hasta 10 Gbps |
| PLOAM | Physical Layer Operations, Administration and Maintenance. El protocolo de autenticación entre ONT y OLT |
| OMCI | ONT Management and Control Interface. Canal por donde la OLT gestiona remotamente el ONT |
| PPPoE | Point-to-Point Protocol over Ethernet. Protocolo de autenticación de los ISPs para las conexiones de internet |
| MTD | Memory Technology Device. Interfaz de Linux para la flash interna del dispositivo |
| U-Boot | Bootloader universal para sistemas embebidos. Permite flashear particiones si el SO no arranca |
| UART | Universal Asynchronous Receiver-Transmitter. Puerto serie para acceder a la consola antes de que Linux cargue |
| TFTP | Trivial File Transfer Protocol. Protocolo minimalista para transferir firmware a dispositivos embebidos |
| Spoofing | Suplantar la identidad de otro dispositivo ante la OLT |
💌 Agradecimientos Especiales
A una chica que, sin saberlo, me empujó a seguir creando y programando en mi tiempo libre. A quien alguna vez fue mi chispa: para “YLP”, con gratitud… y con cicatrices que también enseñan.
Recursos y créditos
- stich86/UF-Instant-Mod — MOD rootfs para UF-Instant
- Anime4000/RTL960x — Firmware y documentación RTL960x
- hack-gpon.org — Referencia comunitaria de hacks GPON
- MA5671A Config Guide (PLOAM) — Guía de configuración PLOAM
Si tienes preguntas o tu ISP usa una OLT diferente, déjalas en los comentarios. Y si ya lo has hecho con otro proveedor, cuéntame qué parámetros cambiaron.
Para quien tampoco aceptó el "no se puede" como respuesta final: este post existe porque me dijeron que no lo lograría. Y porque la fibra llega al router sin pasar por ningún equipo que no sea el mío. Nadie decide eso por mí.
🖕 Fuck you, Entel. Tus devs de pacotilla no me dicen qué conectar en mi propia red. Y tú, Movistar — estate quieta. Sé que usas ZTE y lo tengo en el radar.


Top comments (0)