Wormhole Display

"Een wormgat verbindt twee verre punten in de ruimtetijd. Wormhole Display overbrugt twee ecosystemen die nooit bedoeld waren om met elkaar te communiceren..."

Een tweede leven voor je Portal

Meta Portal-apparaten worden niet langer geproduceerd of verkocht, maar de hardware is nog steeds uitstekend: scherpe schermen, goede luidsprekers en een TV-model dat op elke HDMI-ingang kan worden aangesloten. Wormhole Display verandert een Portal in een scherm dat je Mac, iPhone of iPad direct kan gebruiken via Bedieningscentrum → Schermspiegeling, zowel als uitgebreid scherm als spiegel, inclusief geluid. Op het verzendende apparaat hoeft niets te worden geïnstalleerd.

Het is een reguliere app die naast Portal OS draait: er is geen root-toegang, geen wijzigingen in de firmware en geen Meta-diensten nodig. De app communiceert uitsluitend met Apple-apparaten op je lokale wifi-netwerk.

Toepassingen per model:

  • Portal+ (Gen 2): een uitgebreid scherm van 14″ (2160×1440) met luidsprekers voor je Mac.
  • Portal Mini (8″): een compact bureau-scherm dat zowel portret- als landschapsmodus ondersteunt.
  • Portal Go: een draadloos scherm op batterij die je van kamer naar kamer kunt meenemen.
  • Portal TV: verandert je tv in een doelwit voor schermspiegeling, te bedienen met de Portal TV-afstandsbediening.

Wormhole Display is een onafhankelijk community-project en is niet gelieerd aan Meta of Apple (zie de juridische sectie).

Functies

  • Zichtbaar als AirPlay-scherm: Je Portal verschijnt in Schermspiegeling als Wormhole Plus, Wormhole Go of Wormhole TV, of onder een naam die jij kiest.
  • Uitgebreid scherm of spiegelen: macOS kan de Portal gebruiken als tweede scherm, geadverteerd op de native resolutie en verversingssnelheid van het paneel.
  • Portret- & landschapsoriëntatie: Kies tussen Landschap (breedbeeld), Portret (hoog) of Automatische detectie. Bij hardware die kan draaien (zoals de Portal Mini) gebruikt de automatische modus de kantelsensor van het apparaat om de AirPlay-geometrie automatisch aan te passen wanneer je het scherm fysiek draait. Modellen met een vaste standaard (Portal TV, Portal Go, Portal+ Gen 2) staan standaard op Landschap, maar handmatige selectie voor Portret is mogelijk.
  • Hardwarematige videodecodering: H.264 via de hardwaredecoder van de Portal, met experimentele HEVC-ondersteuning voor verzenders die dit ondersteunen.
  • Geluid via de Portal: Audio wordt afgespeeld via de luidsprekers van de Portal en kan worden gedempt via het dashboard.
  • Automatisch openen bij verbinding: De ontvanger blijft op de achtergrond beschikbaar en schakelt naar volledig scherm zodra een stream start. De app kan ook worden ingesteld om te starten bij het opstarten van de Portal.
  • Verbinding verbreken via Terug- of Home-knop: Het verlaten van de stream op de Portal beëindigt de sessie ook op je Mac of iPhone.
  • Meerdere Portals in één netwerk: Elk apparaat heeft een eigen identiteit, zodat bijvoorbeeld een Portal+ en een Portal TV gelijktijdig beschikbaar kunnen zijn.
  • Afstandsbediening-vriendelijk op Portal TV: Volledige D-pad navigatie met duidelijke focus-indicatoren.
  • Dashboard en statistieken: Netwerkdetails, aanbevolen resoluties, recente verbindingen en een optionele on-screen overlay met statistieken (FPS, bitrate, codec).

Compatibiliteit

De software is getest op de volgende apparaten:

ApparaatSchermAudioOriëntatieInvoer
Portal+ (Gen 2)14″ 2160×1440 (3:2), 60 HzStereo + subwooferVaste kanteling (Standaard Landschap, handmatige Portret)Touch
Portal Mini (8″)8″ 1280×800 (16:10), 60 HzStereoDubbele oriëntatie (Auto & handmatig)Touch
Portal Go10.1″ 1280×800 (16:10), 60 HzStereo, op batterijVaste wig (Standaard Landschap, handmatige Portret)Touch
Portal TVTV via HDMI, 1080p (16:9), 60 HzTV of soundbar via HDMIVast (Standaard Landschap, handmatige Portret)Afstandsbediening (D-pad)

Andere Portal-modellen zijn nog niet getest; rapportages zijn welkom. Andere Android 9+ (API 28+) 64-bit ARM-apparaten kunnen mogelijk ook werken, maar zijn niet getest.

Je Portal instellen

1. Bereid je Portal voor

Voor het installeren van de app is ADB (Android Debug Bridge) toegang tot je Portal nodig. Volg de officiële handleiding van Meta, Set up your device, om ADB in de instellingen van de Portal in te schakelen en deze via USB-C met je computer te verbinden. Je hebt ook de Android SDK Platform-Tools van Google nodig, waarin adb is opgenomen.

Controleer de verbinding met: adb devices Je Portal moet in de lijst verschijnen als device.

2. De app installeren

Download wormhole-display.apk van de nieuwste vX.Y.Z release op de Releases-pagina van deze repository (de nieuwste pre-release is een automatische build van de main branch) en installeer deze vervolgens:

adb install -r wormhole-display.apk

3. Eerste start

Open Wormhole Display vanuit de app-lijst van de Portal (op Portal TV gebruik je de apps-rij met de afstandsbediening). Tik op het dashboard op Allow naast Auto-open on connect en schakel Display over other apps in. Android staat de ontvanger alleen toe zichzelf op de voorgrond te plaatsen voor een inkomende stream met deze toestemming; zonder deze permissie speelt de stream nog steeds, maar moet je de app handmatig openen.

Laat Run in Background ingeschakeld, zodat je Portal beschikbaar blijft in Schermspiegeling nadat je de app sluit.

Verbinding maken

Vanaf een Mac

Zorg ervoor dat je Mac en Portal op hetzelfde wifi-netwerk zitten. Open Bedieningscentrum → Schermspiegeling en kies je Portal:

  • Wormhole Plus: Portal+ (2160×1440, 3:2)
  • Wormhole Go: Portal Go (1280×800, 16:10)
  • Wormhole TV: Portal TV (1080p, 16:9)

Kies in Systeeminstellingen → Beeldschermen voor Uitgebreid scherm of Spiegelen. Schakel Alle resoluties tonen in om een exacte native modus te kiezen en zwarte randen (letterboxing) te voorkomen.

Vanaf een iPhone of iPad

Open Bedieningscentrum → Schermspiegeling en kies je Portal.

Een sessie beëindigen

Druk op Terug of Home op de Portal, of stop de schermspiegeling op je Mac, iPhone of iPad.

Bouwen vanuit broncode

Vereisten:

  • JDK 17
  • Android SDK (ANDROID_HOME moet verwijzen naar je SDK-directory)
  • Android NDK r27d (alleen nodig bij wijzigingen in native C-code; vooraf gebouwde statische bibliotheken voor OpenSSL en libplist staan in app/src/main/cpp/deps/)

Build-commando's:

# Bouw de APK (output naar dist/wormhole-display.apk)
./scripts/build.sh

# Installeer en start op een verbonden Portal
adb install -r dist/wormhole-display.apk
adb shell am start -n io.github.pgodlews.wormhole/.MainActivity

Details over het protocol, notities voor bijdragers en probleemoplossing staan in AGENTS.md en docs/architecture.md.

Hoe het werkt

Wormhole Display is gebouwd op een Android-port van de C-core van UxPlay (RTSP/RAOP, pairing, AES-decryptie en een ingebouwde mDNS-responder). De desktop GStreamer-pipelines van UxPlay zijn vervangen door Android's hardware MediaCodec voor video en low-latency AudioTrack voor audio.

Beveiliging

Wormhole Display accepteert schermspiegelingsverbindingen van elk apparaat op je lokale netwerk, zonder pincode of wachtwoord. Gebruik de app alleen op netwerken die je vertrouwt.

Juridische disclaimers & handelsmerken

Disclaimer over niet-affiliatie

Wormhole Display is een onafhankelijk, door de community ontwikkeld open-source softwareproject. Het is niet geproduceerd, onderschreven, gesponsord, gelieerd aan of ondersteund door Apple Inc. of Meta Platforms, Inc.

Nominatief Fair Use

Apple, AirPlay, macOS, iOS, Mac, MacBook, Retina en Bonjour zijn handelsmerken of geregistreerde handelsmerken van Apple Inc. in de Verenigde Staten en andere landen. Meta, Portal, Portal+, Portal Go en Portal TV zijn handelsmerken of geregistreerde handelsmerken van Meta Platforms, Inc. Alle merknamen, handelsmerken, productaanduidingen en logo's in deze repository worden uitsluitend gebruikt onder Nominative Fair Use voor technische identificatie, interoperabiliteit van apparaten en nauwkeurige beschrijvende compatibiliteitsdoeleinden.

Licentie

Copyright © 2026 Piotr Godlewski Wormhole Display is gelicenseerd onder de GNU General Public License v3.0 (GPLv3) — zie LICENSE. Het bouwt voort op UxPlay (GPLv3); gebundelde componenten van derden behouden hun eigen auteursrechten en licenties, zoals vermeld in THIRDPARTYNOTICES.md.