Sobre o projeto
jiofiber-bridge é um projeto modelo para usar uma linha JioFiber (Jio Fiber Voice / JioCall via banda larga) de qualquer lugar em um softphone SIP comum, tanto para chamadas de saída quanto de entrada. A Jio entrega voz através do seu núcleo IMS usando um cliente proprietário chamado JUICE, que normalmente roda apenas no roteador do ISP ou no aplicativo JioCall. Este projeto executa uma pequena ponte headless na mesma LAN do roteador, registra-se no núcleo IMS como um dispositivo JioCall genuíno e reapresenta a linha como um trunk SIP simples. Aponte o Asterisk para esse trunk e softphones como Zoiper, Groundwire ou Linphone podem fazer e receber chamadas na linha fixa de qualquer rede.
Arquitetura: a ponte é um B2BUA que deve ficar na LAN doméstica porque o núcleo IMS só fala com o roteador e o RTP deve originar-se na interface LAN. Uma perna fala JUICE/IMS (sinalização TLS, áudio AMR/AMR-WB) com o roteador; a outra é um trunk SIP/PCMU simples, com transcodificação AMR-para-PCMU através da ponte de conferência do pjproject. O Asterisk roda em um VPS público pequeno onde os telefones se registram; ele normaliza números discados, toca nos telefones em chamadas de entrada e carrega o caller-ID. Ponte e Asterisk conectam-se por uma rede overlay privada (Tailscale ou WireGuard), então nenhuma porta SIP é exposta de casa e o VPS expõe apenas o registrador voltado para telefones.
O README destaca três problemas difíceis. Primeiro, identidade: o registro JUICE usa RFC 5626 outbound com um +sip.instance em formato específico (maiúsculas, sem prefixo urn:uuid:), além de uma senha rotativa por dispositivo e um dispositivo na lista de permissões via fluxo OTP; o pjsua padrão formata a instância de forma diferente e o núcleo descarta o REGISTER silenciosamente. Segundo, mídia: o núcleo oferece AMR/AMR-WB com um mode-set e espera que ele seja ecoado no SDP, caso contrário as chamadas são derrubadas após aproximadamente um a dois minutos. Terceiro, forking de entrada: o núcleo só toca contatos cujo registro anunciou o conjunto completo de feature tags RCS/MMTEL e um User-Agent semelhante ao JioCall; registrar apenas com mmtel faz as chamadas de saída funcionarem, mas as de entrada nunca tocam.
Requisitos incluem uma máquina Linux sempre ligada na LAN doméstica com root, um VPS público pequeno para Asterisk 18+, uma rede overlay, ferramentas de build e headers de desenvolvimento do codec AMR, detalhes da conta IMS (identidade pública, nome de usuário de autenticação, realm, endereço do registrador/roteador) e a capacidade de acionar o OTP de adição de dispositivo do provedor. O repositório fornece um arquivo-fonte do B2BUA, três patches do pjproject (mode-set AMR, formato +sip.instance, guarda de acumulação de contact_params), uma configuração de build, bridge.env.example, scripts de registro e healthcheck, um auxiliar de recuperação de credenciais para a senha digest IMS estática upstream, configurações pjsip/extensions/rtp do Asterisk e unidades systemd para a ponte e um timer de saúde de dois minutos.
As etapas de configuração cobrem compilar o pjproject com patches, configurar bridge.env, provisionar o dispositivo (lista de permissões mais busca da senha rotativa a cada início), rodar a ponte como serviço, configurar endpoints e trunk do Asterisk, registrar softphones e monitorar com um healthcheck que reinicia a ponte e pode postar alertas ntfy. O README também documenta normalização de números (móveis fora da rede precisam do prefixo STD 0 ou o núcleo retorna 484 Address Incomplete), retransmissão DTMF RFC 4733, caller-ID de entrada via X-Jio-Caller e cabeçalhos P-Asserted-Identity/Remote-Party-ID, um IVR de entrada opcional com formato WAV e avisos de caminho absoluto, orientação para outros PBXes como Grandstream UCM e FreePBX (IVRs devem atender em vez de tocar mídia antecipada) e uma saída de emergência EARLY_ANSWER. Uma seção de peculiaridades mapeia sintomas para causas, incluindo REGISTER descartado silenciosamente, chamadas morrendo em um a dois minutos, PJ_ETOOSMALL após longos períodos de atividade, áudio unilateral de RTP multi-homed e entrada sem tocar devido a feature tags ausentes. Tudo é um modelo sem números reais, IPs, senhas ou hostnames do provedor; o projeto é licenciado sob MIT e inclui um aviso de responsabilidade.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.