diff --git a/root-module/.gitignore b/root-module/.gitignore deleted file mode 100644 index 6d86d95..0000000 --- a/root-module/.gitignore +++ /dev/null @@ -1 +0,0 @@ -system/ diff --git a/root-module/META-INF/com/google/android/update-binary b/root-module/META-INF/com/google/android/update-binary deleted file mode 100644 index ea4889e..0000000 --- a/root-module/META-INF/com/google/android/update-binary +++ /dev/null @@ -1,33 +0,0 @@ -#!/sbin/sh - -################# -# Initialization -################# - -umask 022 - -# echo before loading util_functions -ui_print() { echo "$1"; } - -require_new_magisk() { - ui_print "*******************************" - ui_print " Please install Magisk v20.4+! " - ui_print "*******************************" - exit 1 -} - -######################### -# Load util_functions.sh -######################### - -OUTFD=$2 -ZIPFILE=$3 - -mount /data 2>/dev/null - -[ -f /data/adb/magisk/util_functions.sh ] || require_new_magisk -. /data/adb/magisk/util_functions.sh -[ $MAGISK_VER_CODE -lt 20400 ] && require_new_magisk - -install_module -exit 0 \ No newline at end of file diff --git a/root-module/META-INF/com/google/android/updater-script b/root-module/META-INF/com/google/android/updater-script deleted file mode 100644 index 11d5c96..0000000 --- a/root-module/META-INF/com/google/android/updater-script +++ /dev/null @@ -1 +0,0 @@ -#MAGISK diff --git a/root-module/busybox/busybox-arm64 b/root-module/busybox/busybox-arm64 deleted file mode 100644 index 9a8246d..0000000 Binary files a/root-module/busybox/busybox-arm64 and /dev/null differ diff --git a/root-module/busybox/xz b/root-module/busybox/xz deleted file mode 100644 index d414c71..0000000 --- a/root-module/busybox/xz +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -exec /data/local/tmp/aln_unzip/busybox/busybox-arm64 xz "$@" diff --git a/root-module/customize.sh b/root-module/customize.sh deleted file mode 100644 index 9b01cd2..0000000 --- a/root-module/customize.sh +++ /dev/null @@ -1,190 +0,0 @@ -#!/system/bin/sh - -# Note: these two exec redirs are not strictly POSIX-compliant, so they can be commented out if we notice that it shows a syntax error in some environments (unlikely to happen) - -# Redirect stdout to ui_print otherwise it's not shown -exec 1> >(while read -r line; do ui_print "[O] $line"; done) -# Redirect stderr to ui_print otherwise it's not shown + ignore useless radare2 warning that clutters the logs -exec 2> >(while read -r line; do echo "$line" | grep -qv "Cannot determine entrypoint, using" && ui_print "[E] $line"; done) - -TEMP_DIR="/data/local/tmp/aln_patch" - -# Note: this dir cannot be changed without recompiling radare2 because this prefix are hardcoded inside the radare2 binaries: /data/local/tmp/aln_unzip/org.radare.radare2installer/radare2/ -UNZIP_DIR="/data/local/tmp/aln_unzip" -SOURCE_FILE="" -LIBRARY_NAME="" -APEX_DIR=false - -# Clean things up if the script crashes or exits -trap 'rm -rf "$TEMP_DIR" "$UNZIP_DIR"' EXIT INT TERM - -# https://github.com/Magisk-Modules-Repo/busybox-ndk/blob/master/busybox-arm64 -BUSYBOX="$UNZIP_DIR/busybox/busybox-arm64" -XZ="$UNZIP_DIR/busybox/xz" - -rm -rf "$TEMP_DIR" "$UNZIP_DIR" -mkdir -p "$TEMP_DIR" "$UNZIP_DIR" - -# Manually extract the $ZIPFILE to a temporary directory -ui_print "Extracting module files..." -unzip -d "$UNZIP_DIR" -oq "$ZIPFILE" || { - ui_print "Error: Failed to extract module files." - abort "Failed to unzip $ZIPFILE" -} - -set_perm "$BUSYBOX" 0 0 755 -set_perm "$XZ" 0 0 755 - -# The bundled radare2 is a custom build that works without Termux: https://github.com/devnoname120/radare2/releases/tag/5.9.8-android-aln -ui_print "Extracting radare2 to /data/local/tmp/aln_unzip..." -$BUSYBOX tar xf "$UNZIP_DIR/radare2-5.9.9-android-aarch64-aln.tar.gz" -C / || { - abort "Failed to extract "$UNZIP_DIR/radare2-5.9.9-android-aarch64-aln.tar.gz"." -} - - -if [ "$(uname -m)" = "aarch64" ]; then - export LD_LIBRARY_PATH="$UNZIP_DIR/org.radare.radare2installer/radare2/lib:$LD_LIBRARY_PATH" - export PATH="$UNZIP_DIR/org.radare.radare2installer/radare2/bin:$PATH" - export PATH="$UNZIP_DIR/busybox:$PATH" - export RABIN2="$UNZIP_DIR/org.radare.radare2installer/radare2/bin/rabin2" - export RADARE2="$UNZIP_DIR/org.radare.radare2installer/radare2/bin/radare2" -else - abort "arm64 archicture required, arm32 not supported" -fi - -set_perm "$RABIN2" 0 0 755 -set_perm "$RADARE2" 0 0 755 - -if [ -f "$RABIN2" ]; then - ui_print "rabin2 binary is ready." -else - ui_print "Error: rabin2 binary not found." - abort "rabin2 binary not found." -fi - -if [ -f "$RADARE2" ]; then - ui_print "radare2 binary is ready." -else - ui_print "Error: radare2 binary not found." - abort "radare2 binary not found." -fi - -if [ -f "$BUSYBOX" ]; then - ui_print "busybox binary is ready." -else - ui_print "Error: busybox binary not found." - abort "busybox binary not found." -fi - -if [ -f "$XZ" ]; then - ui_print "xz shim is ready." -else - ui_print "Error: xz shim not found." - abort "xz shim not found." -fi - -for lib_path in \ - "/apex/com.android.btservices/lib64/libbluetooth_jni.so" \ - "/system/lib64/libbluetooth_jni.so" \ - "/system/lib64/libbluetooth_qti.so" \ - "/system_ext/lib64/libbluetooth_qti.so"; do - if [ -f "$lib_path" ]; then - ui_print "Detected library: $lib_path" - [ -z "$SOURCE_FILE" ] && SOURCE_FILE="$lib_path" - [ -z "$LIBRARY_NAME" ] && LIBRARY_NAME="$(basename "$lib_path")" - fi -done - -[ -z "$SOURCE_FILE" ] && { - ui_print "Error: No target library found." - abort "No target library found." -} - -if echo "$LIBRARY_NAME" | grep -q "qti"; then - ui_print "ERROR: \"qti\" Bluetooth libraries are NOT supported by the patcher and you won't be able to use aln. Aborting..." - abort "Bluetooth driver not compatible." -fi - -ui_print "Calculating patch addresses for $SOURCE_FILE..." - -# export R2_LIBDIR="$UNZIP_DIR/radare2-android/libs/arm64-v8a" -# export R2_BINDIR="$UNZIP_DIR/radare2-android/bin/arm64-v8a" - -# $RADARE2 -H 1>&2 - -# ldd $RABIN2 1>&2 -# ldd $RADARE2 1>&2 - -symbols="$($RABIN2 -q -E "$SOURCE_FILE")" || abort "Failed to extract symbols from $SOURCE_FILE." - -get_symbol_address() { - symb_address=$(echo "$symbols" | grep "$1" | cut -d ' ' -f1 | tr -d '\n') - [ -n "$symb_address" ] || abort "Failed to obtain address for symbol $1" - echo "$symb_address" -} - -l2c_fcr_chk_chan_modes_address="$(get_symbol_address 'l2c_fcr_chk_chan_modes')" -ui_print " l2c_fcr_chk_chan_modes_address=$l2c_fcr_chk_chan_modes_address" - -l2cu_send_peer_info_req_address="$(get_symbol_address 'l2cu_send_peer_info_req')" -ui_print " l2cu_send_peer_info_req_address=$l2cu_send_peer_info_req_address" - - -cp "$SOURCE_FILE" "$TEMP_DIR" - -ui_print "Patching $LIBRARY_NAME..." - -apply_patch() { - $RADARE2 -q -e bin.cache=true -w -c "s $1; wx $2; wci" "$TEMP_DIR/$LIBRARY_NAME" || abort "Failed to apply $1 patch." -} - -apply_patch "$l2c_fcr_chk_chan_modes_address" "20008052c0035fd6" -apply_patch "$l2cu_send_peer_info_req_address" "c0035fd6" - -if [ -f "$TEMP_DIR/$LIBRARY_NAME" ]; then - ui_print "Installing patched file..." - - if echo "$SOURCE_FILE" | grep -q "/system/lib64"; then - TARGET_DIR="$MODPATH/system/lib64" - elif echo "$SOURCE_FILE" | grep -q "/apex/"; then - TARGET_DIR="$MODPATH/system/lib64" - APEX_DIR=true - else - TARGET_DIR="$MODPATH/system/lib" - fi - - mkdir -p "$TARGET_DIR" - - cp "$TEMP_DIR/$LIBRARY_NAME" "$TARGET_DIR/$LIBRARY_NAME" - set_perm "$TARGET_DIR/$LIBRARY_NAME" 0 0 644 - ui_print "Patched file installed at $TARGET_DIR/$LIBRARY_NAME" - - if [ "$APEX_DIR" = true ]; then - POST_DATA_FS_SCRIPT="$MODPATH/post-data-fs.sh" - APEX_LIB_DIR="/apex/com.android.btservices/lib64" - MOD_APEX_LIB_DIR="$MODPATH/apex/com.android.btservices/lib64" - WORK_DIR="$MODPATH/apex/com.android.btservices/work" - - mkdir -p "$MOD_APEX_LIB_DIR" "$WORK_DIR" - - cp "$TEMP_DIR/$LIBRARY_NAME" "$MOD_APEX_LIB_DIR/$LIBRARY_NAME" - set_perm "$MOD_APEX_LIB_DIR/$LIBRARY_NAME" 0 0 644 - - cat < "$POST_DATA_FS_SCRIPT" -#!/system/bin/sh -mount -t overlay overlay -o lowerdir=$APEX_LIB_DIR,upperdir=$MOD_APEX_LIB_DIR,workdir=$WORK_DIR $APEX_LIB_DIR -EOF - - set_perm "$POST_DATA_FS_SCRIPT" 0 0 755 - ui_print "Created script for apex library handling." - ui_print "You can now restart your device and test aln!" - ui_print "Note: If your Bluetooth doesn't work anymore after restarting, then uninstall this module and report the issue at the link below." - ui_print "https://github.com/kavishdevar/librepods/issues/new" - fi -else - ui_print "Error: patched file missing." - rm -rf "$TEMP_DIR" "$UNZIP_DIR" - abort "Failed to patch the library." -fi - -rm -rf "$TEMP_DIR" "$UNZIP_DIR" diff --git a/root-module/module.prop b/root-module/module.prop deleted file mode 100644 index 0193b14..0000000 --- a/root-module/module.prop +++ /dev/null @@ -1,7 +0,0 @@ -id=btl2capfix -name=Bluetooth L2CAP workaround for AirPods -version=v3 -versionCode=3 -author=@devnoname120 and @kavishdevar -description=Fixes the Bluetooth L2CAP connection issue with AirPods -updateJson=https://raw.githubusercontent.com/kavishdevar/librepods/main/update.json