Sobre el proyecto

jiofiber-bridge es un proyecto plantilla para usar una línea fija de JioFiber (Jio Fiber Voice / JioCall por banda ancha) desde cualquier lugar en un softphone SIP ordinario, tanto para llamadas salientes como entrantes. Jio entrega voz a través de su núcleo IMS mediante un cliente propietario llamado JUICE que normalmente solo se ejecuta en el router del ISP o en la aplicación JioCall. Este proyecto ejecuta un pequeño puente headless en la misma LAN que el router, se registra en el núcleo IMS como lo haría un dispositivo JioCall genuino y re-presenta la línea como un trunk SIP simple. Apunte Asterisk a ese trunk y softphones como Zoiper, Groundwire o Linphone pueden realizar y recibir llamadas en la línea fija desde cualquier red. Arquitectura: el puente es un B2BUA que debe residir en la LAN doméstica porque el núcleo IMS solo habla con el router y el RTP debe originarse en la interfaz LAN. Una pata habla JUICE/IMS (señalización TLS, audio AMR/AMR-WB) al router; la otra es un trunk SIP/PCMU simple, con transcodificación AMR-a-PCMU mediante el puente de conferencia de pjproject. Asterisk se ejecuta en un pequeño VPS público donde los teléfonos se registran; normaliza los números marcados, hace sonar los teléfonos en entrantes y transporta la identificación de llamante. El puente y Asterisk se conectan a través de una red privada superpuesta (Tailscale o WireGuard), por lo que ningún puerto SIP se expone desde casa y el VPS solo expone el registrador orientado al teléfono. El README destaca tres problemas difíciles. Primero, identidad: el registro JUICE usa RFC 5626 outbound con un +sip.instance en una forma específica (mayúsculas, sin prefijo urn:uuid:), más una contraseña rotativa por dispositivo y un dispositivo en lista blanca mediante un flujo OTP; pjsua estándar formatea la instancia de manera diferente y el núcleo descarta el REGISTER silenciosamente. Segundo, medios: el núcleo ofrece AMR/AMR-WB con un mode-set y espera que se refleje en SDP, de lo contrario las llamadas se terminan después de aproximadamente uno o dos minutos. Tercero, bifurcado entrante: el núcleo solo hace sonar contactos cuyo registro anunció el conjunto completo de etiquetas de características RCS/MMTEL y un User-Agent tipo JioCall; registrarse solo con mmtel hace que salientes funcionen pero entrantes nunca suenen. Los requisitos incluyen una máquina Linux siempre encendida en la LAN doméstica con root, un pequeño VPS público para Asterisk 18+, una red superpuesta, herramientas de compilación más encabezados de desarrollo del códec AMR, detalles de cuenta IMS (identidad pública, nombre de usuario de autenticación, realm, dirección del router/registrador) y la capacidad de activar el OTP de agregar dispositivo del proveedor. El repositorio proporciona un archivo fuente B2BUA, tres parches para pjproject (mode-set AMR, formato +sip.instance, guardia de acumulación de contact_params), una configuración de compilación, bridge.env.example, scripts de registro y comprobación de salud, un ayudante de recuperación de credenciales para la contraseña digest IMS estática aguas arriba, configuraciones pjsip/extensions/rtp de Asterisk y unidades systemd para el puente y un temporizador de salud de dos minutos. Los pasos de configuración cubren compilar pjproject parcheado, configurar bridge.env, aprovisionar el dispositivo (lista blanca más obtener la contraseña rotativa en cada inicio), ejecutar el puente como servicio, configurar endpoints y trunk de Asterisk, registrar softphones y monitorear con una comprobación de salud que reinicia el puente y puede publicar alertas ntfy. El README también documenta normalización de números (móviles fuera de red necesitan el prefijo STD 0 o el núcleo devuelve 484 Address Incomplete), retransmisión DTMF RFC 4733, identificación de llamante entrante mediante X-Jio-Caller y encabezados P-Asserted-Identity/Remote-Party-ID, un IVR entrante opcional con formato WAV y advertencias de rutas absolutas, orientación para otros PBX como Grandstream UCM y FreePBX (los IVR deben responder en lugar de reproducir medios tempranos) y una vía de escape EARLY_ANSWER. Una sección de peculiaridades mapea síntomas a causas, incluidos registros REGISTER descartados silenciosamente, llamadas que mueren a uno o dos minutos, PJ_ETOOSMALL después de tiempos de actividad largos, audio unidireccional desde RTP multi-homed y entrantes que no suenan debido a etiquetas de características faltantes. Todo es una plantilla sin números reales, IPs, contraseñas o nombres de host del proveedor; el proyecto tiene licencia MIT e incluye un descargo de responsabilidad.