Changelog
What changed in each OpenXPlay Relay release, newest first. The Android app and the Linux relay are released separately; Linux releases say “Linux” in their heading. Packages and checksums are on GitHub Releases; installation and setup start at Get started.
0.2.6
2026-11-04 · Download
Android app: manual CarPlay size, screen width and view areas, a reminder to check the iPhone’s Low Data Mode in the setup guide, and no more Trusted HTTPS certificate warnings on Android 10 and earlier.
New
- Android app: Settings → CarPlay picture → Resolution offers Automatic or Manual. Manual takes width, height and density, and shows the size Automatic would use now, ready to fill in.
- Android app: CarPlay screen width has a Custom option for 100–400 mm in 5 mm steps and shows the width Automatic declares now.
- Android app: Settings → Car → CarPlay view areas offers Automatic or Manual. Manual takes a fullscreen and/or windowed size and shows the most used sizes recorded for this head unit.
Changes
- Android app: in the setup guide, Next on the network page reminds you to check, once the iPhone has connected, that Low Data Mode is off for this Wi-Fi on the iPhone (Settings → Wi-Fi → ⓘ). The network page and the message shown when the iPhone does not join the Wi-Fi say the same.
- Android app: with this phone’s hotspot, the setup guide asks you to choose Copy to settings or Use my existing hotspot before Next; neither is preselected.
- Android app: Trusted HTTPS no longer shows certificate warnings on Android 10 and earlier when a valid domain certificate is configured, and uses a certificate only within both the start and the end of its validity period.
Notes
- Includes everything in 0.2.6-beta.1 and 0.2.6-beta.2.
- New size and width settings apply at the next CarPlay connection. View areas work with an automatic CarPlay size only.
- The head-unit page still offers the four preset widths; choosing a different one there clears a custom width. Developer options → Physical width (calibration), when turned on, takes priority over a custom width; it is off by default.
- Full release notes: GitHub Releases.
0.2.5
2026-11-02 · Download
Android app: a CarLife output, wireless display as an output operated on the phone, and DiPlay 0.2.22.
New
- Android app: a CarLife output (experimental). CarPlay’s picture and touch go to the car’s CarLife over the same Wi-Fi, this phone’s hotspot or a USB accessory connection; sound stays on the iPhone’s Bluetooth link to the car. Choose it in the setup guide or in Settings → Output; the car’s IP address is optional.
- Android app: Wireless display (DLNA, Miracast) can be chosen in the setup guide and in Settings → Output, marked Experimental. The car shows the picture only; with wireless display only, this phone shows CarPlay and takes touch, with a back button, and Home offers Show CarPlay while connected.
- Android app: logs keep a connection timeline even when the system log drops records, and an export says when its capture is incomplete.
Changes
- Android app: the Carlink app output is no longer marked Experimental in the setup guide and in Settings → Output.
- Android app: DLNA wireless display carries every CarPlay sound (alerts, Siri, calls), not only music, when car Bluetooth audio is off.
- Android app: wireless display follows Settings → CarPlay picture → Resolution; DLNA declares the car screen itself.
- Android app: with DLNA, the car no longer stays on an old frame after a swipe, and a renderer that connects starts at a fresh picture.
- Android app: on the head-unit page, tapping restores full screen again, entering or leaving full screen no longer restarts CarPlay (Samsung Internet), and frames that arrive in a burst are shown instead of dropped.
- Android app: Carlink gives slow head units 4 s to answer the MTU request (the XPeng G9 takes 1.8 s), so the connection no longer fails at service discovery. Thanks, hellowalker.
- Android app: on Xiaomi phones with Android 10 or 11, Carlink’s Wi-Fi scan priming runs at most once every 2 minutes, leaving scans for the system Wi-Fi dialog, so joining the car’s Wi-Fi fails less often. Thanks, hellowalker.
- Android app: DiPlay 0.2.22. Wired CarPlay connects on the first attempt after a replug; a wireless start retries as soon as Bluetooth turns on; announcing CarPlay on the hotspot no longer waits about 20 s; wireless music keeps the iPhone’s speed (no stutter); the USB microphone records speech instead of silence; multi-finger gestures are steadier; connections and received data are checked more strictly.
- Android app: Trusted HTTPS keeps rate limits from the certificate authority per name, account or environment, and 45- and 64-day certificates renew on time.
Notes
- Includes everything in 0.2.5-beta.1 and 0.2.5-beta.2.
- Full release notes: GitHub Releases.
Linux 0.1.6
2026-11-01 · Download
Linux relay: the first release since 0.1.3. The admin page takes the Android app’s phone-first design, CarPlay fits the head-unit browser, Carlink runs on a second Wi-Fi adapter, wired CarPlay and Trusted HTTPS arrive, and OpenXPlay Flasher installs and updates the relay.
New
- The admin page has the Android app’s phone-first design, in light and dark. Home shows the connection as one path, iPhone → this relay → car, and each step opens its details and fix; the gear at the top of Home opens Settings, with the Android app’s menus. After you sign in with the default password, the page asks you to set your own (you can skip).
- iPhone pairing names the relay as the iPhone lists it, OpenXPlay Linux. Paired devices can be removed on Home and in Settings → iPhone connection.
- Wired CarPlay: Settings → iPhone connection → USB cable, with the iPhone plugged into a USB-A port on the relay through a USB-A to Lightning or USB-A to USB-C cable; the head unit still reaches the relay over Wi-Fi. Wireless stays the default.
- CarPlay view areas, on by default: when the head-unit browser enters or leaves full screen, CarPlay re-lays out to fit, without reconnecting and without black bars.
- Settings → CarPlay picture: Resolution, CarPlay screen width, Video codec and Frame rate, also in the head-unit page’s settings. After the head-unit browser leaves full screen, for example for the reverse camera, one tap brings it back.
- Settings → Car and screen: choose the car by brand, model and year from the Android app’s catalog (with ZEEKR), with screens saved per car.
- Settings → Audio → CarPlay audio over the car’s Bluetooth (experimental), on by default: music, navigation and calls play over the iPhone’s own Bluetooth connection with the car. If the sound plays on the iPhone instead, turn it off.
- Interfaces and network roles: the relay lists every Ethernet and Wi-Fi interface with what it can do and picks the one for the iPhone, the head-unit browser and Carlink; you can also choose each. The hotspot band and channel follow the Wi-Fi hardware, with Wi-Fi country and Hotspot security settings (WPA2 by default).
- Carlink runs on a second Wi-Fi adapter, so the CarPlay hotspot stays up while it joins the car. Carlink remembers how each car hands off, keeps scanning until the car appears and passes the steering-wheel media keys to the iPhone.
- Admin hotspot (off by default, needs a second Wi-Fi adapter): once turned on, it serves the admin page at
https://10.79.0.1:6975, paused while Carlink uses that adapter. - Trusted HTTPS and the Tesla browser adaptation, as on Android, off by default.
- Logs, Configuration files and Check for updates, as on Android: save the logs as a ZIP or upload them to logs.openxplay.org; the relay contacts GitHub only when you tap Check for updates.
- Identity and certificates: import or remove the Apple accessory identity (files or a ZIP), or use a remote MFi server or an authentication chip over I2C or a CH341 adapter.
- Experimental, all on by default, including three switches for iPhones, for example on iOS 16, that connect but never show a picture, and Watch for stalls. If connections get worse, turn off Use experimental options.
- Each release includes the Debian package and install manifest that OpenXPlay Flasher uses to install and update the relay. Other hosts can be described in a host profile,
/etc/openxplay/host.json; see Other Linux devices.
Changes
- With one Wi-Fi radio, as on the UFI003, the relay offers only the browser output; Carlink needs a second Wi-Fi adapter. Once a second adapter appears, Carlink works without a restart.
- The admin page has a name per network:
openxplay-car.localon the iPhone’s network andopenxplay-admin.localon the others, such as Ethernet or the admin hotspot;openxplay-linux.localstill works. An address typed withouthttps://still opens the page. - The CarPlay hotspot and the admin hotspot use the password
openxplayunless you set your own on the admin page. A hotspot password generated by an earlier version changes toopenxplaywhen you update and the name stays, so the head unit needs the new password once. - The CarPlay hotspot stays up as long as the relay runs, also after a failed start or Stop, so the admin page stays reachable in the car.
- Connect automatically starts once everything is ready, after a five-second countdown that Not now cancels; Start on device boot is a separate setting.
- After reaching the iPhone, a failing start retries five times, then stops with a report and tries once more when Bluetooth, Wi-Fi, Carlink or the iPhone comes back.
- Carlink uses the same identity in the Bluetooth handoff and in the session, so after updating the car asks for the Carlink code once.
- The relay reports its real version (0.1.3 reported 0.1.2). A missing Wi-Fi interface no longer stops it; the admin page stays reachable over Ethernet.
Notes
- Includes everything in the Linux 0.1.5 and 0.1.6 betas.
- Refresh the head-unit page once after updating from 0.1.3; later updates reload it automatically.
- Before going back to 0.1.3, put back a copy of
/var/lib/openxplay/settings.jsonfrom before the update, or delete it; 0.1.3 does not start with the settings this version writes. - Known issues: on some head-unit browsers the page shows fewer frames than it receives, which is being investigated; Experimental → Suggest working modes does nothing on Linux yet.
- On GitHub, the release marked Latest is always the Android app; Linux release tags start with
linux-v. - Full release notes: GitHub Releases.
0.2.4
2026-11-01 · Download
Android app: smoother screens, a Home button that answers the first tap, hotspot details to copy into the phone’s settings, and a Bluetooth fix for some MIUI phones on Android 12.
New
- Android app: when the iPhone connects through this phone’s hotspot, Settings → Network offers two ways to set the hotspot up. Copy to settings (recommended) suggests a name (OpenXPlay-A-…) and a 16-character password; each button copies one of them and opens the phone’s hotspot settings. Use my existing hotspot keeps a hotspot you set up yourself: enter its name and password there. The setup guide offers the same choice, and hotspot details you already saved stay as they are.
Changes
- Android app: smoother screens. Measured on a Redmi 14C (HyperOS) with Home open and no car connected; other phones will differ:
- While the relay looks for the car, Record all Bluetooth advertisements (Experimental) no longer works on the thread that draws the screens. That thread’s idle CPU time drops from 64–119 ms to 25–27 ms per second, 60–77% less.
- The button on Home acts on the first tap. Before, a tap within 0.5 s of the button appearing, for example right after returning from Settings, was ignored; now 4 of 4 such taps act.
- Until the car’s Carlink session is ready, the two Carlink output threads wake every 50 ms instead of every 5 ms and use 5 ms of CPU per second each instead of 24–27, about 80% less.
- The app’s own screens are compiled ahead of time when it is installed, so pages open a little faster the first few times: the longest frame when opening Settings is 80–96 ms instead of 99.6 ms.
- In total, the idle app uses 220–234 ms of CPU per second instead of 245–336, 10–30% less.
- Android app: keeps Android’s older Bluetooth permissions on Android 12 and later. Some MIUI phones on Android 12 still check them when the iPhone connects over Bluetooth, and the connection failed straight away.
Notes
- Known issue: opening Settings still holds one frame for 80–96 ms (about five frames at 60 fps) before the page slides in.
- Full release notes: GitHub Releases.
0.2.3
2026-10-30 · Download
Android app: a Home drawn as cables, high performance mode, background access, logs that explain stalls and interruptions, and iOS 16 wireless experiments.
New
- Android app: Home draws the connection top to bottom: the iPhone, this phone and the car joined by cables that fill as steps finish, with the steps done on each cable; this phone’s own steps fill a ring around it. Only steps that need you (!) or failed (x) carry a badge, and the step drawer’s handle says Swipe up for all steps with the overall count.
- Android app: high performance mode in Settings → Display, on by default: 20 s after CarPlay connects, the screen dims and every animation stops; only CarPlay connected stays. Tap the screen to bring Home back.
- Android app: Settings → Background shows whether OpenXPlay Relay may run unrestricted in the background, asks the system for it with one tap, and opens the phone maker’s autostart and battery saver pages where they exist. The Background step on Home and the last page of the setup guide open it.
- Android app: suggested working modes. The relay learns whether this phone turns Wi-Fi off while its hotspot is on; when the chosen setup needs both, it suggests modes that work (the car browser or USB for Carlink or Miracast; this phone’s hotspot, the car’s hotspot or USB for the iPhone connection), and a choice opens its settings page with the change made.
- Android app: stall watch. The exported log records process pauses, blocked threads with their stacks, connection steps that stop moving and the power state; it keeps a heartbeat for the next start and restarts a log recorder that went silent.
- Android app: three options in Settings → Experimental for iPhones, for example on iOS 16, that connect wirelessly but never show a picture: open the iAP2 Wi-Fi channel only when the iPhone offers it, release Bluetooth when the iPhone asks, and wait for the iPhone to reconnect. The last one also stops a restart queued by an earlier session from ending a newer one.
- Android app: Settings → Sound: while CarPlay audio over the car’s Bluetooth is on, a tip says what to do when the sound plays on the phone: open the Bluetooth settings on the car’s centre screen, find the iPhone and switch the icon on its right from muted to play.
Changes
- Android app: the exported log records how every link of the connection ended: which link, how far it had got, who ended it (the other side, the relay, a timeout or the system) and why. Each interrupted iPhone attempt gets one summary with what the relay did next and the phone’s Wi-Fi, hotspot, Bluetooth, screen and power state. The car’s browser page reports how its previous connection ended.
- Android app: the exported log records every start wait (network, Carlink, car screen, restart) and every refused start with its reason, and notes when the log recorder ended, went silent or left a gap; info.txt adds the Wi-Fi and hotspot facts, the power state, the previous process and recent exit reasons.
- Android app: the Experimental page lists its options under one header per release, newest first.
- Android app: the admin page in the browser uses the relay’s real Bluetooth name in the pairing steps, shows one dialog or sheet at a time with time-limited prompts such as the Carlink PIN first, makes Cancel the main button when confirming something destructive, and keeps the setup step that stopped marked with the reason.
Notes
- High performance mode is on by default; turn it off in Settings → Display.
- The five new options in Settings → Experimental are on by default. Each can be turned off there; the master switch turns them all off.
- Known issues: if an iPhone stops showing a picture after this update, turn off the two iOS 16 options (the iAP2 Wi-Fi channel and releasing Bluetooth) first.
- Full release notes: GitHub Releases.
0.2.2
2026-10-28 · Download
Android app: a steadier CarPlay picture when the iPhone reconnects, ZEEKR in the car list, a Settings page of its own for the Tesla browser adaptation and a single Home.
New
- Android app: three options under Settings → Experimental, on by default, for handing the CarPlay picture over from an old iPhone connection to a new one: Isolate screen sessions, Reset screen state on reconnect and Synchronize screen handoff.
- Android app: ZEEKR in the car list. With a ZEEKR chosen, Settings → Car and screen and the setup guide suggest Trusted HTTPS and offer a button to set it up.
- Android app: the Tesla browser adaptation moves to its own page, Settings → Tesla browser, always listed after Car and screen; the TeslaMirror-style address comes first and is marked as recommended. Saved choices stay as they were.
- Android app: exported logs record what DLNA and Miracast did (state, failures and statistics every 10 seconds, without web addresses), for testing wireless display through developer options.
Changes
- Android app: when the iPhone opens a new connection while the old one is still closing, the new CarPlay picture stays on screen; late frames from the old connection and its closing no longer stop it.
- Android app: DLNA casting, still reachable only through developer options, receives the iPhone’s H.264 or H.265 directly. The transcoding from H.265 to H.264 is gone (when it failed, the receiver stayed blank), and Xiaomi hyperDLNA receivers keep playing H.265.
- Android app: a single Home. Notifications, starting at boot, pairing and the CarPlay overlay no longer open a second Home; Back passes each page at most once, and only one dialog or sheet shows at a time.
- Android app: the admin page in the browser looks like the app: Home shows the same connection view, Settings uses the app’s menus, and it comes in light and dark.
Notes
- The three new options are experimental, and each can be turned off in Settings → Experimental; changes apply to the next connection.
- Full release notes: GitHub Releases.
0.2.1
2026-10-27 · Download
Android app: improvements to how a connection starts, and a head-unit page that says what it is waiting for.
New
- Android app: five options under Settings → Experimental for starting a connection, on by default. CarPlay counts as playing only once the head-unit browser shows its picture; a queued retry is cancelled when the connection has already recovered; the head-unit page shows connection progress; each stage up to the first picture is recorded in the log; and network checks the phone does not support are not repeated within one attempt.
Changes
- Android app: six Experimental options from 0.2.0 are now standard behaviour, always on and without switches. Send this phone’s Bluetooth address still stays off until you turn it on.
- Android app: upgrading turns the new options on and keeps your other settings; a Bluetooth address you entered but left off stays off.
- Head-unit page (Android relay): while CarPlay starts, the page shows whether it is waiting for the iPhone or for its CarPlay picture.
Notes
- The five new options are experimental, and each can be turned off in Settings → Experimental.
- Full release notes: GitHub Releases.
0.2.0
2026-10-26 · Download
Android app: a redesigned app that checks the connection step by step, car selection by model and year, frame-rate and Carlink picture-size settings, head-unit page settings from CarPlay’s OpenXPlay icon, log export and update checks.
New
- Android app: a redesigned app that shows the connection as one path, iPhone → relay phone → car, and checks each step live. Home has three tiles, one headline and at most one action: Connect, the fix for the current step, Retry or Start now. Tap a tile or pull up the drawer below to see every step, why it matters and what to do, such as turning on Bluetooth, pairing the iPhone or entering the Carlink code. A failure says what went wrong and what to do, with its code and time. The running page looks the same.
- Android app: light and dark appearance, following the system.
- Android app: Settings → Car and screen chooses the car by brand, model and year: every XPeng model sold in China with its model years, and the Tesla models. Built-in screen data is still only for the XPeng G6 2023. The setup guide now starts with Your car and needs a brand and a model; the year can stay Not sure. Earlier choices carry over, and setups without a car keep working, with Choose your car on Home until you pick one.
- Android app: the Tesla browser adaptation. The Tesla browser does not open local-network addresses, so with a Tesla chosen, Settings → Car and screen → Tesla browser adds an address on the relay phone through a local VPN (169.254.88.1 by default; nothing leaves the phone). There are four ways to reach the page: a trusted name or a direct address on that link-local address, or a TeslaMirror-style or TeslaAndroid-style address; the trusted-name ways need Trusted HTTPS and open without a certificate warning. It needs wireless CarPlay, the Car browser output and the relay phone’s hotspot or Wi-Fi Direct; switching between the ways keeps CarPlay running.
- Android app: Settings → CarPlay picture → Frame rate: Auto (30 or 60 fps, from the head unit’s refresh rate) or 30–60 fps in steps of 5. The head-unit page shows and changes the same setting. A change restarts a running session once. It replaces the frame-rate override in developer options; an override that was on carries over.
- Android app: Settings → CarPlay picture → Carlink picture size: Automatic (the car’s Carlink window, as before), six presets (1280×720, 1920×1080, 1280×800, 1920×720, 1024×600 and 1024×768) and up to five sizes of your own. The starred size is used for every connection; choosing another tries it for this connection only, restarting CarPlay if Carlink is running.
- Head-unit page (Android relay): tapping the OpenXPlay icon in CarPlay opens the page’s settings instead of the relay phone’s home screen. They slide in from the right, with quick tiles for sound, full screen and fill, menus for picture, sound and microphone, plugins and about, and choice pages instead of drop-down lists. The floating gear is gone; before CarPlay plays, the status card has a settings button.
- Android app: Settings → Logs. The app keeps about the last 24 hours of its own logs on the relay phone; passwords, keys, phone numbers, names, messages and precise location are replaced before anything is stored. Export logs for the past 10 minutes, 30 minutes or 24 hours as a ZIP, then choose Save to a file on this phone (no network use) or Upload online and show QR code. An upload goes to logs.openxplay.org only after you agree to the privacy notice and gives a log ID and QR code for your bug report; the receipt can be viewed for 48 hours, and the logs are deleted within 72 hours.
- Android app: Settings → Configuration files exports and imports a User configuration (connection, outputs, picture and the other settings, including developer and experimental options) and a Privacy configuration (the trusted HTTPS name, its certificate and keys, and saved DNS provider setups; keep this file private), to move to another phone or reinstall. Importing a user configuration also completes the setup guide. iPhone pairing, Carlink car trust and the Apple accessory identity do not carry over.
- Android app: Settings → About → Check for updates, with a Stable or Beta channel, shows the newest version and its release notes in the app’s language and downloads the APK in the browser. The app contacts GitHub only when you tap Check for updates.
- Android app: Settings → Experimental, for connection problems: Check and recover the iPhone Wi-Fi connection (when Wi-Fi connects but CarPlay does not start), Isolate the Carlink network, Wait for Carlink before connecting the iPhone, Remember the Bluetooth subscription method (skips a 2-second wait on cars such as the XPeng G6), Keep scanning for the car, Record all Bluetooth advertisements (only with Carlink debug on) and Send this phone’s Bluetooth address. Use experimental options and every option except the last are on by default; changes apply to the next connection.
Changes
- Android app: Carlink on Xiaomi phones with MIUI on Android 10 and 11 no longer fails to join the head unit’s Wi-Fi after 12 seconds on a system confirmation that cannot be answered. Thanks to @hellowalker.
- Android app: while an output is on, the relay runs with a low-priority “OpenXPlay Relay” notification, so Carlink and the head-unit page keep working in the background and with the screen off. Before, HyperOS froze the app seconds after it left the screen, and Carlink could not find the car.
- Android app: starting checks Bluetooth for wireless CarPlay and Carlink, and Wi-Fi for Wi-Fi Direct, Carlink and the car’s hotspot. If something is still off, Connect and an automatic start wait and begin once it is on, instead of showing a dialog or failing. A session stopped because Bluetooth, Wi-Fi or the hotspot went off restarts once when it comes back.
- Android app: when the car’s screen is not known yet, CarPlay waits up to 20 seconds for the car to report it, so it no longer restarts once the size arrives; Start now skips the wait.
- Android app: Home no longer says “Waiting for iPhone” while the iPhone is connecting. Home and the running page show the same stage: connecting over Bluetooth, starting CarPlay over Bluetooth or USB, waiting for the picture or reconnecting.
- Android app: the launch page is gone, and the app opens on Home. With Connect automatically on, the Connect button counts down five seconds; Not now pauses it.
- Android app: a calmer setup guide, with a progress bar, compact choices that expand only when selected, one network diagram for the chosen network and a preparation page that lists only the steps still open.
- Android app: far less CPU and battery use while idle, and smoother when opening Settings and going back.
- Android app: long labels wrap instead of being cut off, also with larger text.
- Android app: the Shared Wi-Fi network mode is now Use the car’s hotspot (Settings → iPhone connection → Network): the iPhone and the relay phone both join the car’s hotspot. The diagram shows the car as the hotspot, the waiting step names the car hotspot the relay phone is on, and the band field is now Hotspot band. The admin page still says Shared Wi-Fi.
- Android app: Developer options → Combine outputs replaces Both outputs at once: any outputs can run together, and at least one stays on. Existing choices carry over.
Notes
- This release contains only the Android app; the Linux relay is released separately.
- Wireless display (DLNA, Miracast) shows as Coming soon in the setup guide and in Settings → Output, and cannot be chosen yet.
- The Experimental options start on, also after upgrading. If Carlink or wireless CarPlay connects worse than before, turn off Settings → Experimental → Use experimental options; your choices are kept.
- A configuration file exported by 0.2.0 with a car chosen does not import into older versions; older files import into 0.2.0.
- If CarPlay sound plays from the iPhone instead of the car, turn off Settings → Sound → CarPlay audio over the car’s Bluetooth, or keep the iPhone paired with the car and choose Bluetooth as the car’s audio source.
- Full release notes: GitHub Releases.
- Known issues: the XPeng G6 does not tell the phone its new size when you switch its Carlink area during a session; wired CarPlay with a USB-C iPhone on a USB-C to USB-C cable usually does not work (use an OTG adapter or wireless); some phones turn Wi-Fi off when their hotspot is on, and Carlink needs both; navigation prompts and ringtones over Carlink may be silent; on Carlink head units that need H.264, transcoding on the phone can stop after a timestamp jump, and the original stream is sent instead; on the head-unit page, a tap meant to return to full screen may neither restore it nor reach CarPlay; on Android 13 and later, connections to a Tesla address outside 169.254 may be dropped (the app warns).
0.1.5
2026-10-22 · Download
Android app: H.265, Carlink in the car’s window shape with correct touch, trusted HTTPS with a free domain name, reorganised settings and clearer connection hints.
New
- Android app: H.265 video. Settings → CarPlay picture → Video codec: Automatic, Force H.265 or Force H.264, shared with the head-unit page.
- Android app: when the head unit reports H.265 support, Carlink gets the iPhone’s H.265 picture unchanged: no transcoding on the phone, smoother motion and lower latency.
- Android app: the Carlink picture takes the shape of the car’s Carlink window instead of a squeezed 1280×720 (1532×1013 on the XPeng G6, for example), and CarPlay view areas work with Carlink too.
- Android app: Settings → Output → Reconnect when the window size changes (off by default). After the car switches its Carlink area, the first touch reconnects so the picture can follow the new size.
- Android app: Trusted HTTPS. Settings → Head-unit access → Trusted HTTPS uses a free name from DuckDNS or dynv6, so the head-unit browser opens the page without a certificate warning.
- Android app: Settings → Sound → CarPlay audio over the car’s Bluetooth (experimental), on by default.
- Android app: video statistics on the home screen, under Settings → CarPlay picture → Video statistics.
- Android app: a manual start checks the relay phone’s Wi-Fi and hotspot, says what is off and opens the right settings; when Carlink fails because Wi-Fi is off, the home screen says so at once.
- Android app: when a wired session finds the relay phone attached as a USB device, the home screen explains why and suggests an OTG adapter.
- Android app: the home screen lists every connection problem, with details you can expand.
- Android app: settings are grouped into menus, and developer options get a master switch and a switch per option.
Changes
- Android app: Carlink touches land where you tap when the picture is not 1280×720.
- Android app: fixes a black Carlink picture with sound on some head units, such as the XPeng G6; the picture comes back after the reverse camera; a changed head-unit pairing key asks for the pairing code again instead of needing a reinstall. Thanks to @PicoHug.
- Android app: USB cable is marked “Not recommended” and switching to it asks first; with Carlink, the setup guide recommends This phone’s hotspot.
- Android app: a change of the phone’s network no longer restarts the web receiver or drops the head-unit page.
- Head-unit page (Android relay): the relay-wide Video codec setting replaces the per-browser “H.264 only” option.
- Android app: a new animated splash screen and one page transition for every page.
Notes
- This release contains only the Android app; the Linux relay is released separately. The 0.1.4 release candidates were withdrawn, and everything in them is in this release.
- Full release notes: GitHub Releases.
- Known issues: the XPeng G6 does not tell the phone its new size when you switch its Carlink area during a session; wired CarPlay with a USB-C iPhone on a USB-C to USB-C cable usually does not work.
0.1.3
2026-10-19 · Download
CarPlay fits the head-unit browser window without reconnecting, with car models, a Native resolution and a CarPlay screen width setting.
New
- Android app: CarPlay view areas, on by default. When the head-unit browser enters or leaves full screen, goes split screen or comes back as a window after the reverse camera, CarPlay re-lays out to fit without reconnecting, and the page shows only that area, without black bars.
- Android app: Settings → Car and screen. Choose the car’s brand and model (XPeng G6 2023 built in, or Other). The screen sizes the relay detects are shown there and used at the next start; owners of unlisted cars can copy their screen data and send it to the developers.
- Android app: the last head unit’s screen is remembered, so CarPlay fits correctly even when it starts before the head-unit page opens.
- Head-unit page (Android relay): Resolution (Automatic, Native, 1080p, 720p, Whole screen) and CarPlay screen width (125, 200, 250 or 300 mm, default 200) settings, also in the app’s settings. Native uses the head unit’s own pixels when its browser can decode them; a larger screen width shows more icons on one page.
- Head-unit page (Android relay): after the browser leaves full screen, for example for the reverse camera, one tap returns to full screen without reaching CarPlay; a setting turns this off.
- Head-unit page (Android relay): shows the page version with its commit and the app version, and reloads itself once after the app is updated.
- Android app: the accessory identity import takes both files at once, in any order, or a ZIP that contains them.
- Android app: a Carlink debug trace in the developer screen (live log, saved files, video capture).
Changes
- Android app: no pairing code any more; opening the address connects. Give the relay’s hotspot a password.
- Android app: the home screen shows the full
https://address, notes that it is https and not http, and lists only addresses the head unit can reach. - Android app: the hotspot choice recommends the 5 GHz band, and the setup guide scrolls to the fields still to fill in.
- Android app: the Carlink output is marked as experimental and possibly failing.
- Android app: English and Simplified Chinese only; the partial translations into other languages were removed.
Notes
- Refresh the head-unit page once after updating to 0.1.3; later updates reload it automatically.
- Carlink output: on some head units, such as the XPeng G6, the screen stays black; this is being investigated.
- The Linux relay has no functional changes in this release.
0.1.2
2026-10-18 · Download
A stability release for the Android app, with a video codec setting on the head-unit page.
New
- Head-unit page: a Video codec setting (Automatic or H.264 only), remembered by that head unit’s browser. The settings also show the codec in use.
- Head-unit page: reports the higher H.264 levels the browser can decode, so a capable browser receives the iPhone’s video directly instead of a slower re-encoded copy.
Fixes
- Android app: fixed a deadlock that could freeze the picture, stop touch input and make the app stop responding.
- Android app: accepts the iPhone’s H.265 configuration. For now the Android app asks the iPhone for H.264.
- Linux relay: admin sign-in, the Bluetooth pairing window and the Carlink pairing code keep working when the device clock is wrong or jumps (the UFI003 has no clock battery).
Notes
- On the Linux relay, sign in to the admin page again after each restart of the device.
0.1.1
2026-10-18 · Download
The first release with ready-made packages.
New
- Android app: a setup guide walks you through how the car shows CarPlay (car browser or Carlink app), how the iPhone connects (wireless or USB cable) and, for wireless, which network to use. It then checks permissions, the accessory identity and iPhone pairing, and starts CarPlay.
- Android app: each time you open the app with a saved setup, you can start with the last setup or set it up again. With automatic start on, the last setup starts by itself after 5 seconds.
- Android app: Home shows the current mode (car display, iPhone connection, network), each line opening the guide at that step, and this phone’s network (Wi-Fi and IP addresses).
- Signed Android app and an aarch64 Linux relay package (for devices such as the UFI003), built by GitHub Actions, with SHA-256 checksums.
Fixes
- Choosing the car browser after Carlink no longer asks for a hotspot name; a hotspot that was never named goes back to Wi-Fi Direct.
- Home shows “Connected” instead of “Unavailable” when Android hides the Wi-Fi name.
The Android package name is org.openxplay.relay. You supply your own Apple accessory (MFi) identity; no build contains one.
