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:
118
customize.sh
Normal file
118
customize.sh
Normal 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 ""
|
||||
Reference in New Issue
Block a user