An independent Lynk OS N 2.0 / Android 9 adaptation of shihabal3amri/DiPlay, integrated with upstream 0.2.12. Original author and contributor credits are retained. Lynk package: com.shihab.diplay.lynk.
The adaptation adds a Lynk interface, a read-only environment check, combined USB/wireless diagnostic export, Android 9 USB recovery, and temporary hotspot/Bluetooth lifecycle handling. The user confirmed working wired connectivity and acceptable smoothness with test17; wireless currently does not work properly and remains under debugging. This is not an official Lynk, upstream DiPlay or Apple-certified product.
The Git source tree excludes authentication material and Android signing keys. The complete R1 Release APK is distributed separately through Lynk releases, with SHA-256 checksums. It includes extractable experimental runtime authentication material; it is not Apple certification. See the Chinese fork guide, release packaging, build and validation notes, and code map.
Project website · Download source · Lynk releases · Website and app update behavior
R1: 0.2.12-lynk-osn2-r1 / code 43 / Android 9+. Install on the head unit, using the car's USB-A data port for wired CarPlay; the target vehicle's USB-C port is charging-only. R1 keeps the existing Lynk package and signature for in-place updates. The app includes automatic and manual version checks under Settings → Support → App updates. This remains an experimental community project; read the website's risk notice before installing. See R1 release notes for changes and validation limits.
The upstream 0.2.12 documentation follows. Its BYD test results do not establish Lynk compatibility.
CarPlay for compatible BYD Android head units. Wired and wireless, with the familiar DiAuto interface. Independent app: com.shihab.diplay.
BYD support scope: These projects focus on BYD cars. They may work on other brands, but other brands are unsupported and there are no plans to add support or fix brand-specific incompatibilities.
Download & website · Release · Report a problem
Install on the car, not the iPhone. No jailbreak, dongle, Mac, account or authentication server is required for use. Core CarPlay does not require ADB; optional dashboard, battery, wheel-speed and parked-video features do. Your head unit must permit APK installation. Wireless supports Wi-Fi Direct, the car’s existing hotspot or Existing Wi-Fi / Same LAN; Wi-Fi Direct requires Android 10+; the APK supports Android 9+ for wired use.
- Wired USB and wireless CarPlay with local authentication.
- BYD HUD navigation with arrows, distance and street names on verified firmware.
- Car hotspot support, improved audio buffering and saved receive diagnostics.
- Automatic address discovery, fixed-channel Wi-Fi fallbacks and successful-configuration memory.
- Icon/text size, resolution and frame rate; applying a display change reconnects CarPlay.
- Local diagnostic export. Reports are sent only if you choose to share them.
- Separate installation alongside DiAuto. Run one projection app at a time.
This is not an Apple-certified product. The APK bundles an experimental accessory identity recovered from public Carlinkit firmware, not a newly provisioned MFi identity for DiPlay. A bundled private key is extractable. Acceptance after future iOS updates, reliability across head units and suitability of that identity for general distribution are unresolved. This release invites community testing; it is not a guarantee of universal compatibility.
Earlier releases were tested on the development DiLink5.1 car: live windshield guidance and street names work, Car hotspot now starts CarPlay, and Wi-Fi Direct performance is substantially improved. Occasional audio cutouts remain and are deferred to a later update. The floating-map test build was installed on the development DiLink 5.1 car; feedback led to the pinch corrections in 0.2.9. Earlier wheel-speed and video contributions were tested on a BYD Tang with DiLink 5.0 and an iPhone 15 Pro on iOS 27; wheel-speed dead reckoning in tunnels remains unverified. Broader head-unit and iOS compatibility is not guaranteed. The HUD firmware scope and cleanup limits are documented in BYD navigation.
- Add Existing Wi-Fi / Same LAN wireless CarPlay with scoped IPv4/IPv6 discovery and network-change cleanup (#223).
- Wait for a stable car-hotspot interface and recover bounded wireless attempts when no AirPlay TCP follows StartSession (#229); add observed-state, authorized-ADB hotspot fallback on firmware exposing supported commands (#235).
- Improve Apple USB attach matching and narrowly scoped optional USB-prompt assistance (#170, #224).
- Pause Android 10 station scans during eligible hotspot/P2P sessions, preserving Same LAN, with controller leases and durable retryable restoration (#225).
- Improve split-screen, launcher cards, short-screen preparation and virtual cluster/floating-map geometry (#171, #172, #181).
- Add independent system-bar controls and correct in-session save/cancel and Local/USB-CH341 authentication selection (#191, #194).
- Add system, light-sensor, day and night CarPlay appearance modes, richer custom turn cards, and live main-video picture controls (#178, #193, #211).
- Offer custom integer resolution from 30% to 160%, with shared limits, correct 30%/160% labels and decoder/canvas capability fallback; refresh connection settings on resume (#179, #230, #196).
- Reconcile opt-in DiLink 4 cluster routing/calibration into one decoder owner, retain verified HUD gates, and journal exact stock-map holds and recovery (#213, #187).
- Add DiLink 3 guidance text and projection-display support with committed recovery before mutation, partial-setup compensation and retryable stock restoration (#182).
- Add opt-in wheel map zoom and main-screen joystick while preserving press/release and call behavior; reject stale queued work across phone/screen changes (#214, #231).
- Switch supported dashboard contents live using actual delivery and safely retained paused choices; preserve selection across stream/phone replacement (#232).
- Add a five-second dashboard-song-on-change window with timer invalidation, and retain album art while the next transfer is pending (#215, #228).
- Export reports through Downloads, document picker, app-external or private fallback storage, with explicit View/Share actions (#185, #219).
See 0.2.12 release notes and validation for the full reviewed changes, contributor evidence and remaining hardware checks. Higher resolution costs more decoder/GPU work; above 100% is not a recommended default. Supported firmware and authorization are still required for optional BYD paths. General stutter, calls/Siri, iOS 15 startup and model-specific reports remain under investigation.
If a problem remains, reproduce it on 0.2.12, then use Settings → Diagnostics → Save diagnostic report. Android 10+ normally saves to Downloads/DiPlay; Android 9 uses the document picker. If unavailable, use View report or Share from the confirmation, which identifies external/private fallback storage. Review the .txt and add it to a matching existing issue, or create one. Include vehicle/head-unit model, exact firmware and Android/DiLink, phone/iOS, connection backend, relevant settings, steps and failure time. Reports are shared only when you choose; never post your hotspot password.
Existing Wi-Fi / Same LAN keeps the iPhone and head unit on an external router. See the guide for setup, build requirements and the BYD DiLink 4.0 / Android 10 clean-install validation result.
- Install and connect
- Compatibility and troubleshooting
- Privacy and diagnostic reports
- Build from source
- Validation
- Release notes
- Credits and licenses
The website is available in English, Arabic, Russian, Ukrainian, Spanish and Simplified Chinese. The app interface supports those same six languages. Choose the app language in Settings; on Android 13+, it stays synchronized with Android’s per-app language setting.
Based on xcertplay, GPL-3.0. The home/settings UI and website adapt DiAuto, AGPL-3.0; that license is included in docs/licenses. Preserve those notices when distributing modifications. CarPlay and its icon belong to Apple Inc.; no Apple or BYD affiliation or endorsement is implied.
This repository starts with a clean public source snapshot. Local research, tester reports and release-signing secrets are excluded. The complete source corresponding to the APK is provided with every release; experimental runtime identity assets are described separately in the build instructions and notices.
The release APK intentionally contains the experimental accessory identity. The Git repository and source archive exclude all accessory and Android signing keys; tests generate synthetic identities at runtime. Source/CI builds omit runtime identity assets by default. Local release builds explicitly select an external asset directory. Publishing the APK makes its bundled identity extractable; building locally does not preserve that identity's confidentiality.