Skip to content
kotXioPublic

About

Turn old Android tablets into subscription-free macOS displays over USB/ADB, with hardware H.264, touch, and experimental camera/microphone support.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

ZombieTab

ZombieTab turns an old Android tablet into an additional macOS display over USB. It is a local, subscription-free proof of concept focused on reusing existing hardware with low CPU overhead.

What it can do

  • Create a real extended virtual display on macOS.
  • Drive any number of Android tablets independently; ZombieTab imposes no fixed device limit. Practical capacity depends on macOS, available USB bandwidth, and Mac hardware resources.
  • Use hardware H.264 encoding on the Mac and hardware decoding on Android.
  • Support display rotation, scaling, selectable FPS, reconnects, and stable monitor identities.
  • Send touch, drag, right-click, and two-finger scroll gestures back to macOS.
  • Experimentally expose an Android microphone and camera to Mac applications.
  • Experimentally connect to the Yam Display iOS client without running the native Yam Display Mac application.

How it works

The Android app runs with USB debugging enabled. The Mac app discovers it through ADB, reads the tablet's display capabilities, creates a matching virtual display, and captures that display with ScreenCaptureKit. Video is encoded by VideoToolbox and sent through TCP ports mapped over USB with adb reverse. Android decodes directly to a SurfaceView with MediaCodec.

A separate control channel carries touch events back to the Mac. No cloud service or network account is required.

Requirements

  • macOS 13 or newer; currently developed and tested on Apple Silicon.
  • Android 7.1 / API 25 or newer with USB debugging enabled.
  • ADB, Xcode/Swift, JDK 17, and Android SDK 34 for development.
  • Screen Recording permission on macOS; Accessibility permission for touch control.

Experimental Yam Display compatibility

ZombieTab can experimentally use an existing, legally installed Yam Display iOS client as an additional display receiver. The Yam Display app must be open on the iPad, while the native Yam Display Mac application must be completely closed because it conflicts with ZombieTab over the same client connection.

ZombieTab does not include or redistribute the Yam Display iOS client. This compatibility layer is unofficial and is not affiliated with or endorsed by Yamstu Inc.

Optional Mac media dependencies

ZombieTab does not bundle the virtual audio or camera endpoints below. Install them separately only if you want to use an Android microphone or camera in Mac applications.

Microphone

Install BlackHole 2ch, for example with:

brew install blackhole-2ch

Close audio applications before installation, then restart affected applications or macOS if requested. ZombieTab writes the Android microphone stream to the BlackHole 2ch device; select BlackHole 2ch as the microphone in QuickTime, Teams, or another client. The client application may request macOS Microphone permission.

Camera

Install official OBS Studio 30 or newer. The current POC was tested with OBS 32.2.2 on macOS 13+.

Launch OBS once, activate Virtual Camera, and approve the OBS Camera Extension in System Settings if macOS asks. After activation, quit OBS completely. ZombieTab feeds the installed extension directly through CoreMediaIO, so OBS Studio does not need to run and must not already own the virtual-camera endpoint. Select OBS Virtual Camera in QuickTime, Teams, or another client.

If the camera does not appear, follow the official OBS Virtual Camera troubleshooting steps. An OBS update may change the extension contract and require a ZombieTab compatibility update.

BlackHole and OBS are independent third-party projects with their own licenses and are not redistributed by ZombieTab.

Build

./gradlew :android-client:assembleDebug
./scripts/build-mac-sender-app.sh

This is an early proof of concept. The macOS virtual-display implementation uses undocumented system APIs and may require changes after macOS updates.

Prebuilt v0.15 binaries

Prebuilt proof-of-concept binaries are attached to the GitHub v0.15 release for testing:

  • ZombieTab-0.15-macOS.zip

  • ZombieTab-Receiver-0.15.apk

  • SHA256SUMS.txt

  • The macOS app uses ad-hoc signing, but it is not signed with an Apple Developer ID and is not notarized. macOS Gatekeeper is therefore expected to warn about or block the first launch. If you trust the downloaded artifact, use Control-click → Open or System Settings → Privacy & Security → Open Anyway. Do not disable Gatekeeper globally.

  • The Android APK is a debug build signed with an Android debug key. Android may require permission to install apps from the selected source and may show an unknown-app warning.

These binaries are test builds without automatic updates. Review the source and install them only if you accept the risks of an early proof of concept.

Roadmap

  • Simplify installation and produce reproducible local packages.
  • Improve compatibility, recovery, and performance across more Android hardware.
  • Prototype Windows support using an indirect display driver and hardware video pipeline.
  • Prototype Linux and Raspberry Pi host support.

License

Source is available under the PolyForm Noncommercial License 1.0.0. Commercial use is not licensed.

The included Gradle Wrapper files remain under the Apache License 2.0 stated in those files.

Copyright © 2026 Kostiantyn Andriiuk. See NOTICE.

About

Turn old Android tablets into subscription-free macOS displays over USB/ADB, with hardware H.264, touch, and experimental camera/microphone support.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages