Showcase turns an older jailbroken Apple device into a software wireless CarPlay receiver. The iPhone pairs through Settings, joins the receiver's hotspot, sends the encrypted CarPlay video stream, and receives touch input from the receiver.
Showcase beta 3 ships in rootful and rootless package layouts. Both use iOS 12 as the deployment minimum.
Add the package source in Sileo, Cydia, or Zebra.
https://aminerostane.com/repo
Then install Showcase.
Install guide and protocol write-up
https://aminerostane.com/articles/showcase
| Item | Requirement |
|---|---|
| Receiver | Cellular iPhone or iPad with Personal Hotspot |
| Tested rootful receiver | iPad Air 1 cellular, A1475, iPad4,2, iOS 12.5.8, checkra1n |
| Tested rootless receiver | iPhone 7, iPhone9,3, iOS 15.8.4, Dopamine rootless |
| Runtime packages | Rootful uses uikittools; rootless uses uikittools and ldid |
Sileo, Cydia, and Zebra install runtime packages through normal APT dependency resolution. Manual dependency installation is only needed when sideloading a .deb with dpkg -i.
The package bundles BTdaemon, libBTstack.dylib, and the BTstack launch daemon needed for /tmp/BTstack. It conflicts with the old ch.ringwald.btstack package to avoid file ownership collisions.
- Wireless CarPlay discovery over Bluetooth and AirPlay/mDNS.
- BTstack takeover while the receiver runs.
- iAP2 link setup, identification, BAA authentication, Wi-Fi handoff, and EAP session setup.
- AirPlay pair-setup, pair-verify, auth-setup, RTSP control, timing, event channel, and screen stream setup.
- H.264 screen stream decryption with ChaCha20-Poly1305.
- Single-finger touch forwarding over the encrypted event channel.
- BAA certificate preheating while the receiver still has internet access.
- Stream sizing derived from the receiver's native aspect ratio, memory, processor count, and decode budget.
- Sender-timeline H.264 presentation with an adaptive jitter budget and stale-frame recovery after transport stalls.
- Stream telemetry for arrival rate, bitrate, frame gaps, presentation delay, and UI enqueue time.
- Receiver audio for navigation, calls, radio, Apple Music, and third-party media apps.
- A named vehicle app with the Showcase icon and a clean CarPlay sidebar.
- Three-finger pause controls that dim the video and block CarPlay input while open.
- Persistent controller pairing, CarPlay screen-resource handoff, and fresh-keyframe recovery after backgrounding.
- A Bluetooth compatibility report when BTstack cannot control the receiver hardware.
Showcase embeds Monocypher and LibTomMath for CarPlay cryptography. Users no longer need an OpenSSL package or repository.
source/ app, Bluetooth helper, AirPlay helper, pairing code
btstack-rootless/
patched BTstack v1.1 iOS daemon source used by the rootless package
packaging/ Debian control files, depictions, package scripts
icon/ app icons
Showcase builds on the jailbroken receiver. The build script expects SSH access through a local forwarded port and pins the deployment target to iOS 12.0.
iproxy 2222 <ipad-sshd-port>
IPAD_PORT=2222 IPAD_PASS=alpine ./build_and_install.shFor a jailbreak SSH daemon on port 22, run this command.
iproxy 2222 22The script compiles the three binaries on-device, signs them with ldid, installs the rootful app under /Applications, and refreshes SpringBoard. Use the package scripts below for rootless builds.
Build and test the app on the iPad first.
cd packaging
./scripts/fetch-installed-app.sh
./scripts/build-rootful-deb.sh
./scripts/build-rootless-deb.sh
./scripts/generate-apt-repo.py repoThe .deb files land in packaging/build/. The APT repository lands in packaging/repo/.
For GitHub Releases, upload both .deb files from packaging/build/ after you rebuild the packages. The rootful asset ends in iphoneos-arm.deb; the rootless asset ends in iphoneos-arm64.deb.
For Sileo, Cydia, and Zebra, publish the generated packaging/repo/ contents to the web path that serves https://aminerostane.com/repo.
/var/mobile/Library/Showcase/logs/app.log
/var/mobile/Library/Showcase/logs/baa_broker.log
/var/mobile/Library/Showcase/logs/btdaemon.log
/var/mobile/Library/Showcase/logs/carplay_bt.log
/var/mobile/Library/Showcase/logs/carplay_services.log
Check logs before posting them in public issues. Logs can include device names, hotspot names, network details, and pairing traces.
The rootless package bundles a patched BTstack daemon. Its source lives in btstack-rootless/.
The patch set fixes classic BR/EDR authentication state, incoming RFCOMM cid registration, RFCOMM data routing, and classic-only daemon builds on Procursus SDKs. See btstack-rootless/README.rootless.md for the build command.
GPL-3.0-or-later. The pairing code includes work adapted from UxPlay and csrp. Binary packages bundle BTstack runtime files from the historical ch.ringwald.btstack jailbreak package by Matthias Ringwald.