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.
- 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.
Á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.
- Windows 10 ou 11 x64;
- .NET 8 Desktop Runtime para executar o host;
- FFmpeg disponível como
ffmpeg.exeao lado do host ou noPATH; - 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 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.
- Faça backup completo do iPad.
- Instale/ative um jailbreak compatível. No Phoenix, toque em
Prepare/Kickstart Jailbreakapós cada reinicialização. - No Cydia, instale o OpenSSH e altere imediatamente a senha padrão do usuário
rootcompasswd. - Compile o pacote do cliente iOS ou use um
.debobtido em uma futura release. - Execute o instalador SSH informando o IP atual do iPad.
- Compile e instale o driver virtual no Windows como administrador.
- Publique/inicie o host e abra o ReviveDisplay no iPad.
- 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.
dotnet restore .\server\SpliScreen.Host\SpliScreen.Host.csproj
dotnet publish .\server\SpliScreen.Host\SpliScreen.Host.csproj `
-c Release -o .\out\hostCopie uma versão compatível de ffmpeg.exe para out\host. Execute:
.\out\host\ReviveDisplay.Host.exeO cliente usa Theos e não inclui SDK proprietário da Apple.
export THEOS="$HOME/theos"
cd client/ios
make clean all stage FINALPACKAGE=1O 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.
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.debO 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.
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=x64O 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" /installReinicie o Windows e confirme em Gerenciador de Dispositivos > Adaptadores de
vídeo se ReviveDisplay Virtual Display Adapter está sem erro.
| 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.
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.
- 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.
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.
O Phoenix é semi-untethered. Abra-o e execute Kickstart Jailbreak; depois
confirme que Cydia e OpenSSH voltaram a funcionar.
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.
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.
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.
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.
Leia SECURITY.md. Em resumo:
- use apenas em uma rede local confiável;
- altere a senha
rootdo 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.
- 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.
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.