Initial release: Miracast Enabler KernelSU module v1.0.0

Enables Wi-Fi Display (Miracast) on Pixel phones where Google
disabled it in software. Uses fabricated overlays, system properties,
and sysconfig XML. Includes WebUI for KernelSU manager.

Tested hardware: Pixel 10 Pro Fold (rango), Tensor G5, BCM4390.
This commit is contained in:
sssnake
2026-03-31 03:25:19 -07:00
commit 3f24145e94
14 changed files with 1159 additions and 0 deletions

118
customize.sh Normal file
View File

@@ -0,0 +1,118 @@
#!/system/bin/sh
# Miracast Enabler - Installation Script
SKIPUNZIP=0
ui_print "================================================"
ui_print " Miracast Enabler v1.0.0"
ui_print "================================================"
ui_print ""
# Detect device
DEVICE=$(getprop ro.product.device)
MODEL=$(getprop ro.product.model)
SOC=$(getprop ro.soc.model)
ANDROID=$(getprop ro.build.version.release)
API=$(getprop ro.build.version.sdk)
ui_print "- Device: $MODEL ($DEVICE)"
ui_print "- SoC: $SOC"
ui_print "- Android: $ANDROID (API $API)"
ui_print ""
# Pixel detection
case "$DEVICE" in
rango|comet|cometl|caiman|komodo|tokay|blazer|husky|shiba|felix|tangorpro|lynx|panther|cheetah|oriole|raven|bluejay)
ui_print "- Pixel device detected"
;;
*)
ui_print "! Non-Pixel device — module may still work"
;;
esac
# Foldable messaging
case "$DEVICE" in
rango|comet|cometl|felix)
ui_print "- Foldable detected: inner display is default Miracast source"
ui_print "- Change display source via WebUI in KernelSU manager"
;;
esac
ui_print ""
# --- Build RRO APK on-device as fallback for pre-Android 12 ---
# Android 12+ uses fabricated overlays (no APK needed)
# Pre-Android 12 needs a real RRO APK, built right here on the phone
if [ "$API" -lt 31 ]; then
ui_print "- Android < 12: building RRO overlay APK on-device..."
AAPT2=$(which aapt2 2>/dev/null)
if [ -z "$AAPT2" ]; then
# aapt2 is typically in the build-tools or framework
for candidate in \
/system/bin/aapt2 \
/system/xbin/aapt2 \
/data/adb/aapt2; do
if [ -x "$candidate" ]; then
AAPT2="$candidate"
break
fi
done
fi
if [ -n "$AAPT2" ] && [ -x "$AAPT2" ]; then
ui_print "- Found aapt2: $AAPT2"
OVERLAY_BUILD="$MODPATH/overlay_build"
mkdir -p "$OVERLAY_BUILD"
# Compile resources
"$AAPT2" compile \
--dir "$MODPATH/overlay/res" \
-o "$OVERLAY_BUILD/compiled.zip" 2>/dev/null
if [ $? -eq 0 ]; then
# Link into APK
"$AAPT2" link \
--manifest "$MODPATH/overlay/AndroidManifest.xml" \
-I /system/framework/framework-res.apk \
-o "$OVERLAY_BUILD/overlay.apk" \
"$OVERLAY_BUILD/compiled.zip" 2>/dev/null
if [ $? -eq 0 ]; then
mkdir -p "$MODPATH/system/vendor/overlay"
cp "$OVERLAY_BUILD/overlay.apk" "$MODPATH/system/vendor/overlay/MiracastEnablerOverlay.apk"
chmod 644 "$MODPATH/system/vendor/overlay/MiracastEnablerOverlay.apk"
ui_print "- RRO overlay APK built and installed"
else
ui_print "! aapt2 link failed — overlay APK not built"
fi
else
ui_print "! aapt2 compile failed — overlay APK not built"
fi
rm -rf "$OVERLAY_BUILD"
else
ui_print "! aapt2 not found on device"
ui_print "! Pre-Android 12 will rely on system properties only"
fi
else
ui_print "- Android 12+: will use fabricated overlays (no APK needed)"
fi
ui_print ""
ui_print "- Setting permissions..."
set_perm_recursive $MODPATH 0 0 0755 0644
set_perm $MODPATH/post-fs-data.sh 0 0 0755
set_perm $MODPATH/service.sh 0 0 0755
set_perm_recursive $MODPATH/system/etc 0 0 0755 0644
if [ -f "$MODPATH/system/vendor/overlay/MiracastEnablerOverlay.apk" ]; then
set_perm "$MODPATH/system/vendor/overlay/MiracastEnablerOverlay.apk" 0 0 0644
fi
ui_print ""
ui_print "- Installation complete!"
ui_print "- Reboot to activate Miracast"
ui_print "- After reboot: Settings > Connected devices >"
ui_print " Connection preferences > Cast"
ui_print "- WebUI available in KernelSU manager"
ui_print ""