惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

小众软件
小众软件
N
News and Events Feed by Topic
A
About on SuperTechFans
aimingoo的专栏
aimingoo的专栏
The Cloudflare Blog
H
Heimdal Security Blog
Schneier on Security
Schneier on Security
Engineering at Meta
Engineering at Meta
Google Online Security Blog
Google Online Security Blog
宝玉的分享
宝玉的分享
AI
AI
The GitHub Blog
The GitHub Blog
MongoDB | Blog
MongoDB | Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
The Last Watchdog
The Last Watchdog
T
Troy Hunt's Blog
S
Security @ Cisco Blogs
H
Hacker News: Front Page
F
Fortinet All Blogs
博客园_首页
S
Secure Thoughts
N
News and Events Feed by Topic
P
Proofpoint News Feed
Microsoft Azure Blog
Microsoft Azure Blog
I
InfoQ
Spread Privacy
Spread Privacy
Hacker News - Newest:
Hacker News - Newest: "LLM"
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Hugging Face - Blog
Hugging Face - Blog
Hacker News: Ask HN
Hacker News: Ask HN
C
CXSECURITY Database RSS Feed - CXSecurity.com
酷 壳 – CoolShell
酷 壳 – CoolShell
Stack Overflow Blog
Stack Overflow Blog
L
LINUX DO - 最新话题
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Schneier on Security
Know Your Adversary
Know Your Adversary
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Scott Helme
Scott Helme
P
Privacy & Cybersecurity Law Blog
S
Securelist
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
O
OpenAI News
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
PCI Perspectives
PCI Perspectives
L
LangChain Blog
雷峰网
雷峰网
Security Archives - TechRepublic
Security Archives - TechRepublic
V2EX - 技术
V2EX - 技术

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python) The Hidden Cost of AI Systems Nobody Talks About. undefined vs undeclared, and how typeof behaves Switching from file-based jobs to NATS/Kafka in Rust without changing code io_uring Adventures: Rust Servers That Love Syscalls Why Agentic AI is Killing the Traditional Database The POUR principles of web accessibility for developers and designers Quantum Neural Network 3D — A Deep Dive into Interactive WebGL Visualization How To Install Caveman In Codex On macOS And Windows Automation Pipeline Reliability: Why Your Workflow Breaks When Nobody Is Watching I Built an 'Open World' AI Coding Agent — It Works From ANY Folder From Freelancing to Product: A Tech Service Company's SaaS Transformation China's AI Giants: Adding Tencent Hunyuan & ByteDance Doubao to AI University (74 Providers) On the Vibe Coders and Their Lies clerk: Auto-Summarize Your Claude Code Sessions AI Weekly — 2026/04/10–04/17 | The Model Lockdown Is Here, but the Toolchain Is the Real Battleground AI 週報 — 2026/04/10–2026/04/17 模型封鎖潮來了,但工具鏈才是真戰場 Maybe this is how Open-Source apps are born... 🚀 Fine-Tune LLMs with LoRA and QLoRA: 2026 Guide tRPC v11 + Next.js App Router: End-to-End Type Safety Without the Boilerplate ShadCN UI in 2026: Why I Stopped Installing Component Libraries and Started Owning My Components SaaS Billing in React Server Components: Stripe + Supabase Without a Single `useEffect` Join our DEV Weekend Challenge — $1,000 in Prizes Across TEN winners! Submissions Due April 20 at 6:59 AM UTC. Implementing FSRS Spaced Repetition in Flutter + Supabase — Adding Memory Science to an AI Learning App "I Texted My Localhost From the Train — Claude Code Fixed the Bug Before I Got Home" I Built a Sales Prep AI and It Went Deeper Than Expected Design to Code #2: One JSON, Eleven Outputs Solving the 100M-Row Problem: A Summary Table Pattern for High-Volume Push Notification Logs Flutter Web With Wasm: What Actually Changes For Developers I Built 50 Royalty-Free Soundtracks for My Side Project in a Weekend Using AI Music Generation The Vibe Coding Security Checklist: 7 Things to Check Before You Ship Stop Letting Googlebot Guess Fix Your React App's SEO Right Desconstruindo o Streaming do LinkedIn: Como Criar um Engine de Extração de Vídeo de Alta Performance com HLS e FFmpeg (EDA Part-1) EDA (Exploratory Data Analysis) Explained With Real Life — Why Looking at Your Data Is the Most Important Step in Machine Learning Brand Relationship Management at Scale: Our 4-Touch Outreach System for 200+ Brands Why String.fromEnvironment() Might Return an Empty String in Dart JGuardrails 1.0.0 — Hardening Java LLM Apps Against Jailbreaks, Toxicity, and Prompt Injection Plan and Schedule a Full Week of Threads Content From One Claude Conversation Coding Cat Oran Ep3, Five Tables Changed Everything Updated: BFF Pattern I'm done watching freelancers get buried by 200 proposals. So I'm building the alternative. This is my first post BFS Algorithm in Java Step by Step Tutorial with Examples Tracking LLM Pricing Monthly: An Open Dataset for 22 AI Models How We Measure Content ROI on a Comparison Site: Revenue Attribution Without Perfect Data Introducing Nova AI Ops: The AI-Native Operating System for SRE Teams I built a free desktop video downloader for Windows — Grabbit How Talkie OCR Helps Vision-Impaired & Dyslexic Users Read the World Around Them VRCFaceTracking安装和iPhone面捕配置教程,有bug Even CrowdStrike Can't See Your Agents The Automation Gold Rush: What n8n Workflows and Claude Are Opening Up for Developers Right Now
☠️ Cómo conectar tu router directo a la fibra de Entel Chile sin su módem (SFP GPON Hack)
Tomás Alegre · 2026-04-24 · via DEV Community

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)

UF-Instant junto al adaptador UART TTL — cables soldados a los pads de la PCB

Setup del experimento — transceptor modificado conectado al switch y hub USB-C

Referencia de pinout del UF-Instant (Rx, Tx, GND, VCC)
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

Enter fullscreen mode Exit fullscreen mode

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

Enter fullscreen mode Exit fullscreen mode

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

Enter fullscreen mode Exit fullscreen mode

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, mksquashfs no 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

Enter fullscreen mode Exit fullscreen mode

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

Enter fullscreen mode Exit fullscreen mode

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

Enter fullscreen mode Exit fullscreen mode

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).

🎥 La despedida oficial del módem de Entel

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 write puede brick el stick (recuperable via TFTP si U-Boot sigue respondiendo).
  • Con un media converter (TP-Link MC220L): El driver europa_drv hace 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


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.