Skip to content

Repository files navigation

ReviveDisplay

Use um iPad antigo como monitor estendido sem fio no Windows, com cliente nativo leve e vídeo H.264 de baixa latência pela rede local.

Estado do projeto: alpha experimental (0.7.0). O fluxo foi validado em um iPad 2 (iPad2,2) com iOS 9.3.5, jailbreak Phoenix, Windows 11 x64 e GPU NVIDIA. Ainda não existe instalador público de um clique nem driver assinado para uso em produção.

Ícone do ReviveDisplay

O que já funciona

  • monitor estendido real de 1024×768, não apenas espelhamento;
  • descoberta automática do PC por broadcast UDP;
  • H.264 Annex-B a 30 FPS, aproximadamente 3 Mbit/s, usando NVENC;
  • cliente Objective-C armv7 compatível com iOS 9.3.5;
  • reconexão automática quando a transmissão é interrompida;
  • reposicionamento livre da tela nas Configurações de Exibição do Windows;
  • identidade persistente por iPad, independente do endereço IP;
  • servidor nativo de bandeja com inicialização direta, sem PowerShell em segundo plano;
  • código experimental para até dois monitores virtuais independentes.

O suporte simultâneo a dois iPads está implementado no código, mas ainda precisa de validação completa com dois aparelhos físicos. Consulte STATUS.md.

Como funciona

Área de trabalho estendida do Windows
              │
              ▼
ReviveDisplay IDD (monitor virtual 1024×768)
              │
              ▼
FFmpeg/gdigrab → H.264 NVENC → TCP na rede local
                                      │
                                      ▼
                           ReviveDisplay no iPad
                           VideoToolbox → tela

O tráfego permanece na rede local; a conexão não consome franquia de internet. Em 3 Mbit/s, cada iPad movimenta aproximadamente 1,35 GB por hora dentro da LAN.

Requisitos

Windows

  • Windows 10 ou 11 x64;
  • .NET 8 Desktop Runtime para executar o host;
  • FFmpeg disponível como ffmpeg.exe ao lado do host ou no PATH;
  • GPU NVIDIA com NVENC (o encoder atual está configurado como h264_nvenc);
  • Visual Studio 2022 + Desktop C++ e Windows Driver Kit para compilar o driver;
  • rede local permitindo UDP 47830 e TCP 47831–47832.

iPad

  • iPad 32 bits com jailbreak compatível;
  • iOS 8.0 ou superior; alvo validado: iOS 9.3.5;
  • Cydia e OpenSSH;
  • PC e iPad na mesma rede local;
  • Phoenix reativado depois de cada reinicialização do iPad.

ReviveDisplay não distribui Phoenix, Cydia Impactor, Sideloadly, SDKs da Apple, credenciais ou ferramentas de jailbreak. Obtenha essas ferramentas somente de fontes confiáveis e confirme a compatibilidade exata do seu aparelho.

Instalação — visão geral

  1. Faça backup completo do iPad.
  2. Instale/ative um jailbreak compatível. No Phoenix, toque em Prepare/Kickstart Jailbreak após cada reinicialização.
  3. No Cydia, instale o OpenSSH e altere imediatamente a senha padrão do usuário root com passwd.
  4. Compile o pacote do cliente iOS ou use um .deb obtido em uma futura release.
  5. Execute o instalador SSH informando o IP atual do iPad.
  6. Compile e instale o driver virtual no Windows como administrador.
  7. Publique/inicie o host e abra o ReviveDisplay no iPad.
  8. Em Configurações > Sistema > Tela, escolha Estender estas telas e posicione o iPad onde desejar.

O passo a passo completo está em Instalação detalhada.

Compilar o host Windows

dotnet restore .\server\SpliScreen.Host\SpliScreen.Host.csproj
dotnet publish .\server\SpliScreen.Host\SpliScreen.Host.csproj `
  -c Release -o .\out\host

Copie uma versão compatível de ffmpeg.exe para out\host. Execute:

.\out\host\ReviveDisplay.Host.exe

Compilar o cliente iOS

O cliente usa Theos e não inclui SDK proprietário da Apple.

export THEOS="$HOME/theos"
cd client/ios
make clean all stage FINALPACKAGE=1

O script tools/package-ios.sh é um auxiliar do ambiente de desenvolvimento e pode exigir ajuste de caminhos. Para distribuição, gere um pacote Debian rootful iphoneos-arm contendo /Applications/ReviveDisplay.app.

Instalar o cliente em um iPad já preparado

No PowerShell:

powershell -ExecutionPolicy Bypass -File `
  .\installer\Install-SpliScreenIpad.ps1 `
  -IpadAddress 192.168.1.50 `
  -PackagePath .\artifacts\ios\com.spliscreen.client_0.7.0_iphoneos-arm.deb

O script cria uma chave RSA exclusiva no perfil local do Windows, registra apenas a chave pública no iPad, envia o .deb, instala e atualiza o cache de ícones. A chave privada e o pacote compilado não são versionados.

Compilar e instalar o driver

Abra um terminal de desenvolvedor elevado com Visual Studio 2022 e WDK:

msbuild .\driver\SpliScreen.Idd\SpliScreen.Idd.vcxproj `
  /t:Rebuild /p:Configuration=Release /p:Platform=x64

O driver alpha é assinado apenas com certificado de teste. O Windows pode exigir modo de teste e uma política de Secure Boot compatível. Isso reduz a segurança do sistema; use uma máquina de testes e nunca instale um driver cuja origem você não tenha verificado.

Depois de gerar o pacote, em PowerShell como administrador:

pnputil /add-driver ".\driver\SpliScreen.Idd\x64\Release\SpliScreen.Idd\SpliScreen.Idd.inf" /install

Reinicie o Windows e confirme em Gerenciador de Dispositivos > Adaptadores de vídeo se ReviveDisplay Virtual Display Adapter está sem erro.

Rede e firewall

Porta Protocolo Função
47830 UDP descoberta do host
47831 TCP identidade/controle
47832 TCP handshake do iPad e vídeo H.264

Não exponha essas portas à internet. O protocolo alpha não possui autenticação nem criptografia de transporte e foi projetado exclusivamente para uma LAN confiável.

Identidade e múltiplos iPads

Cada instalação cria um UUID persistente no iPad. O Windows armazena o vínculo entre UUID e tela em:

%LOCALAPPDATA%\ReviveDisplay\devices.json

O IP identifica apenas a conexão atual. Se o DHCP mudar o endereço do iPad, ele continua associado à mesma tela. Um UUID novo recebe o próximo slot disponível.

Solução de problemas

“Servidor não encontrado”

  • confirme que PC e iPad estão na mesma rede/sub-rede;
  • desative temporariamente o isolamento de clientes/AP no roteador;
  • permita o host no Firewall do Windows em redes privadas;
  • verifique se UDP 47830 e TCP 47831–47832 estão livres.

Tela preta ou cortada depois de mover o monitor

Use o host 0.7 ou mais recente. Ele detecta mudanças de posição em cerca de 500 ms e reinicia automaticamente a captura. O iPad deve reconectar sozinho.

Phoenix diz que o jailbreak não está habilitado

O Phoenix é semi-untethered. Abra-o e execute Kickstart Jailbreak; depois confirme que Cydia e OpenSSH voltaram a funcionar.

SSH recusa algoritmos antigos

O OpenSSH antigo do iOS 9 pode exigir ssh-rsa. Os scripts limitam essa exceção à conexão com o iPad. Não habilite algoritmos antigos globalmente no Windows.

Erro do NVENC

Confirme o driver NVIDIA e teste ffmpeg -encoders | findstr nvenc. GPUs sem NVENC ainda não são suportadas automaticamente; um fallback por software está no roadmap.

Antivírus sinaliza scripts ou builds locais

Não crie exceções amplas. Compile a partir do código, confira hashes/assinaturas e analise somente o arquivo específico. O projeto não desativa nem contorna antivírus.

Estrutura do repositório

client/ios/                 cliente nativo Objective-C/VideoToolbox
server/SpliScreen.Host/    host Windows, descoberta e streaming
driver/SpliScreen.Idd/     driver UMDF Indirect Display
installer/                 instalação e teste via SSH
docs/                      instalação, segurança e estado do projeto
assets/branding/           fonte visual do ícone

Os nomes internos SpliScreen foram preservados em alguns caminhos, IDs e nomes de serviço para manter compatibilidade com instalações alpha anteriores.

Segurança e privacidade

Leia SECURITY.md. Em resumo:

  • use apenas em uma rede local confiável;
  • altere a senha root do iPad;
  • nunca publique chaves SSH, Apple ID, certificados ou SDKs proprietários;
  • o projeto não automatiza silenciosamente jailbreak nem armazena Apple ID;
  • não encaminhe as portas do ReviveDisplay no roteador.

Roadmap

  • validar dois iPads simultâneos como terceira e quarta telas;
  • criar instalador Windows assinado e amigável;
  • adicionar fallback H.264 por software/AMD/Intel;
  • autenticar e criptografar o protocolo local;
  • controle de qualidade, FPS e bitrate pela bandeja;
  • releases reproduzíveis com hashes;
  • ativação dinâmica das telas para evitar monitor virtual ocioso.

Licença e atribuição

O driver deriva do IddSample da Microsoft e mantém os avisos originais. O projeto é distribuído sob a Microsoft Public License (MS-PL). Consulte também THIRD_PARTY_NOTICES.md.

Uso por sua conta e risco: jailbreak, modo de teste de drivers e alterações de segurança podem reduzir a proteção do aparelho ou do Windows.

About

Transforme um iPad antigo em monitor estendido sem fio para Windows, com H.264 de baixa latência.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages