PiggyBackBayonet/MiAuto GitHub repository, an Android car head unit that allows APK sideloading, a phone with Xiaomi CarWith, OPPO Car+, or vivo Jovi InCar, a data-capable USB cable, and adb on a workstation. Root and an adapter box are not required according to the project authors.
MiAuto is the car-side receiver for ICCOA CarLink, the projection protocol used by CarWith, Car+, and Jovi InCar. Install it on the car head unit, not on the phone. The source post confirms wireless operation and says no root or adapter box is required; it does not publish a version number, package ID, minimum Android version, ABI list, or exact pairing screens.
| Side | Component | Role |
|---|---|---|
| Car head unit | MiAuto APK | ICCOA CarLink receiver; accepts the phone stream |
| Phone | CarWith / Car+ / Jovi InCar | Sender app that starts projection |
PiggyBackBayonet/MiAuto. The source post does not name a release file or version, so read the repository documentation before downloading.adb on a workstation for command-line installation. The source post does not specify an adb version; use the Android SDK platform-tools build you already have.
What to do: Confirm that adb can see the car head unit, then inspect the APK package metadata. Save the package ID for the verification step.
Why: MiAuto must run on the car side. A successful adb devices result proves only that the workstation can talk to the head unit; it does not prove that MiAuto is installed or that projection will work.
How to check: Run the commands below. The head unit must appear as device, not unauthorized or offline.
adb devices
Expected output:
List of devices attached
<car-head-unit-serial> device
Then check that the APK exists and read its package line:
ls -lh MiAuto.apk
aapt dump badging MiAuto.apk | head -n 1
Expected output, with values from your APK:
package: name='<package.id>' versionCode='<n>' versionName='<value>'
Example: If the head unit serial is ABCD1234, adb devices shows ABCD1234 device. That means USB debugging and the cable are working. If aapt prints package: name='com.example.miauto', save com.example.miauto as <package.id> for Step 3. This works because adb talks to the Android Debug Bridge daemon on the head unit, while aapt reads the manifest inside the APK.
For a general GitHub-based install workflow, see Sideraven: install from GitHub and migrate your bookmarks.
Checklist before continuing:
device in adb devices.aapt dump badging is saved.What to do: Install the APK on the car head unit, open MiAuto, and start the receiver. Then open CarWith, Car+, or Jovi InCar on the phone and use its wireless connection entry to connect to the car.
Why: MiAuto implements the car side of ICCOA CarLink. The phone app already implements the phone side, so the two sides must be started in that order: receiver first, sender second.
How to check: adb install must return Success. The package path must resolve. The MiAuto screen must show a receiver-ready state, and the phone must show a connected or projecting state.
adb install -r MiAuto.apk
Expected output:
Success
Verify that the package manager registered the app:
PKG=$(aapt dump badging MiAuto.apk | sed -n "s/^package: name='\([^']*\)'.*/\1/p")
adb shell pm path "$PKG"
Expected output:
package:/data/app/.../base.apk
Open MiAuto from the head-unit launcher and start the receiver. The source post does not document the exact button label or permission list, so use the receiver/start control shown on the main screen and grant only permissions the app requests and the head-unit policy allows.
On the phone, open CarWith, Car+, or Jovi InCar and choose its wireless connection entry. The exact discovery screen, PIN flow, and radio requirements are not documented in the source post; follow the prompts shown by the phone app.
Example: On a phone using CarWith, open CarWith, select the wireless connection option, and wait for the car entry. The car display should leave the MiAuto receiver screen and show the phone projection interface. This works because the phone app and MiAuto speak the two sides of the same ICCOA CarLink session.

What to do: Start projection once, confirm that the phone UI appears on the car display, and capture the package-specific log. Record the working phone app, head-unit state, and package ID.
Why: A successful APK install does not prove that the wireless session completed. The log confirms that the MiAuto package is running on the head unit; the screen confirms that the phone-to-car path works.
How to check: The car display must show the phone projection UI, and the phone app must show a connected state. The log command should return lines containing the MiAuto package ID.
PKG=$(aapt dump badging MiAuto.apk | sed -n "s/^package: name='\([^']*\)'.*/\1/p")
adb logcat -d | grep -i "$PKG" | tail -n 50
Expected result: log lines that include <package.id>. Exact MiAuto messages are not published in the source post, so do not treat a missing known string as proof of failure; use the screen state and process check together.
adb shell ps -A | grep "$PKG"
Expected result: a process line for the MiAuto package. If the process is absent, open MiAuto again and repeat the projection attempt.
| Check | Success signal |
|---|---|
| APK install | `Success` |
| Package registration | `package:/data/app/.../base.apk` |
| Receiver process | Process line for `<package.id>` |
| Projection | Phone UI visible on the car display |
| Phone app | Connected/projecting state shown |
Example: After starting Car+ on the phone, the head unit shows the phone’s projection screen instead of the MiAuto receiver screen. adb shell ps -A | grep "$PKG" returns a MiAuto process line. This works because the receiver stays active while the phone app supplies the display stream.
Problem. ADB cannot see the car head unit.
adb: no devices/emulators foundadb kill-server
adb start-server
adb devices
If the unit still does not appear, install from a USB drive with the head-unit file manager instead of ADB.
Problem. ADB sees the unit but installation is blocked by authorization.
adb: device unauthorized. Please check the confirmation dialog on your device.adb kill-server
adb devices
Problem. APK installation fails with a native library error.
Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]adb shell getprop ro.product.cpu.abi
unzip -l MiAuto.apk | grep 'lib/'
Use a MiAuto build that matches the reported ABI. The source post does not list supported ABIs, so check the repository documentation; do not force-install an incompatible build.
You installed MiAuto on the car side and verified the receiver, package, and projection path with ADB and on-screen checks. Before updating, re-read the PiggyBackBayonet/MiAuto repository documentation because the source post does not publish version, compatibility, or pairing details.
Does MiAuto require root?
No. The project authors claim root is not required for the car-side receiver.
Where do I install MiAuto: on the phone or on the car?
On the car head unit. MiAuto is the ICCOA CarLink receiver that accepts the stream from CarWith, Car+, or Jovi InCar on the phone.
Which phone apps are supported?
The source post names Xiaomi CarWith, OPPO Car+, and vivo Jovi InCar. It does not list supported phone models.
What Android version does the car head unit need?
The source post does not state a minimum Android version. Check the MiAuto repository documentation and the head-unit firmware details before installing.