├── .gitattributes ├── META-INF └── com │ └── google │ └── android │ ├── update-binary │ └── updater-script ├── README.md ├── common ├── post-fs-data.sh ├── service.sh └── system.prop ├── install.sh ├── module.prop └── system └── placeholder /.gitattributes: -------------------------------------------------------------------------------- 1 | # Declare files that will always have LF line endings on checkout. 2 | META-INF/** text eol=lf 3 | *.prop text eol=lf 4 | *.sh text eol=lf 5 | *.md text eol=lf 6 | 7 | # Denote all files that are truly binary and should not be modified. 8 | system/** binary 9 | -------------------------------------------------------------------------------- /META-INF/com/google/android/update-binary: -------------------------------------------------------------------------------- 1 | #!/sbin/sh 2 | 3 | TMPDIR=/dev/tmp 4 | MOUNTPATH=/dev/magisk_img 5 | 6 | # Default permissions 7 | umask 022 8 | 9 | # Initial cleanup 10 | rm -rf $TMPDIR 2>/dev/null 11 | mkdir -p $TMPDIR 12 | 13 | # echo before loading util_functions 14 | ui_print() { echo "$1"; } 15 | 16 | require_new_magisk() { 17 | ui_print "***********************************" 18 | ui_print " Please install the latest Magisk! " 19 | ui_print "***********************************" 20 | exit 1 21 | } 22 | 23 | imageless_magisk() { 24 | [ $MAGISK_VER_CODE -gt 18100 ] 25 | return $? 26 | } 27 | 28 | ########################################################################################## 29 | # Environment 30 | ########################################################################################## 31 | 32 | OUTFD=$2 33 | ZIPFILE=$3 34 | 35 | mount /data 2>/dev/null 36 | 37 | # Load utility functions 38 | if [ -f /data/adb/magisk/util_functions.sh ]; then 39 | . /data/adb/magisk/util_functions.sh 40 | NVBASE=/data/adb 41 | else 42 | require_new_magisk 43 | fi 44 | 45 | # Preperation for flashable zips 46 | setup_flashable 47 | 48 | # Mount partitions 49 | mount_partitions 50 | 51 | # Detect version and architecture 52 | api_level_arch_detect 53 | 54 | # Setup busybox and binaries 55 | $BOOTMODE && boot_actions || recovery_actions 56 | 57 | ########################################################################################## 58 | # Preparation 59 | ########################################################################################## 60 | 61 | # Extract common files 62 | unzip -oj "$ZIPFILE" module.prop install.sh uninstall.sh 'common/*' -d $TMPDIR >&2 63 | 64 | [ ! -f $TMPDIR/install.sh ] && abort "! Unable to extract zip file!" 65 | # Load install script 66 | . $TMPDIR/install.sh 67 | 68 | if imageless_magisk; then 69 | $BOOTMODE && MODDIRNAME=modules_update || MODDIRNAME=modules 70 | MODULEROOT=$NVBASE/$MODDIRNAME 71 | else 72 | $BOOTMODE && IMGNAME=magisk_merge.img || IMGNAME=magisk.img 73 | IMG=$NVBASE/$IMGNAME 74 | request_zip_size_check "$ZIPFILE" 75 | mount_magisk_img 76 | MODULEROOT=$MOUNTPATH 77 | fi 78 | 79 | MODID=`grep_prop id $TMPDIR/module.prop` 80 | MODPATH=$MODULEROOT/$MODID 81 | 82 | print_modname 83 | 84 | ui_print "******************************" 85 | ui_print "Powered by Magisk (@topjohnwu)" 86 | ui_print "******************************" 87 | 88 | ########################################################################################## 89 | # Install 90 | ########################################################################################## 91 | 92 | # Create mod paths 93 | rm -rf $MODPATH 2>/dev/null 94 | mkdir -p $MODPATH 95 | 96 | on_install 97 | 98 | # Remove placeholder 99 | rm -f $MODPATH/system/placeholder 2>/dev/null 100 | 101 | # Custom uninstaller 102 | [ -f $TMPDIR/uninstall.sh ] && cp -af $TMPDIR/uninstall.sh $MODPATH/uninstall.sh 103 | 104 | # Auto Mount 105 | if imageless_magisk; then 106 | $SKIPMOUNT && touch $MODPATH/skip_mount 107 | else 108 | $SKIPMOUNT || touch $MODPATH/auto_mount 109 | fi 110 | 111 | # prop files 112 | $PROPFILE && cp -af $TMPDIR/system.prop $MODPATH/system.prop 113 | 114 | # Module info 115 | cp -af $TMPDIR/module.prop $MODPATH/module.prop 116 | if $BOOTMODE; then 117 | # Update info for Magisk Manager 118 | if imageless_magisk; then 119 | mktouch $NVBASE/modules/$MODID/update 120 | cp -af $TMPDIR/module.prop $NVBASE/modules/$MODID/module.prop 121 | else 122 | mktouch /sbin/.magisk/img/$MODID/update 123 | cp -af $TMPDIR/module.prop /sbin/.magisk/img/$MODID/module.prop 124 | fi 125 | fi 126 | 127 | # post-fs-data mode scripts 128 | $POSTFSDATA && cp -af $TMPDIR/post-fs-data.sh $MODPATH/post-fs-data.sh 129 | 130 | # service mode scripts 131 | $LATESTARTSERVICE && cp -af $TMPDIR/service.sh $MODPATH/service.sh 132 | 133 | # Handle replace folders 134 | for TARGET in $REPLACE; do 135 | mktouch $MODPATH$TARGET/.replace 136 | done 137 | 138 | ui_print "- Setting permissions" 139 | set_permissions 140 | 141 | ########################################################################################## 142 | # Finalizing 143 | ########################################################################################## 144 | 145 | cd / 146 | imageless_magisk || unmount_magisk_img 147 | $BOOTMODE || recovery_cleanup 148 | rm -rf $TMPDIR $MOUNTPATH 149 | 150 | ui_print "- Done" 151 | exit 0 152 | -------------------------------------------------------------------------------- /META-INF/com/google/android/updater-script: -------------------------------------------------------------------------------- 1 | #MAGISK 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # WiFi5GhzDisabler 2 | 3 | Disable WiFi 5Ghz Band on your Qualcomm device 4 | 5 | **NOTICE: On some ROMS with 4.x kernel and Android P (or latest) doesn't work** 6 | 7 | Disable 5Ghz band also can solve WiFi issues in devices such Xiaomi Redmi Note 5 and Mi A2 8 | 9 | # Credit 10 | Based on WiFi Bounding https://github.com/Magisk-Modules-Repo/wifi-bonding 11 | 12 | -------------------------------------------------------------------------------- /common/post-fs-data.sh: -------------------------------------------------------------------------------- 1 | #!/system/bin/sh 2 | # Do NOT assume where your module will be located. 3 | # ALWAYS use $MODDIR if you need to know where this script 4 | # and module is placed. 5 | # This will make sure your module will still work 6 | # if Magisk change its mount point in the future 7 | MODDIR=${0%/*} 8 | 9 | # This script will be executed in post-fs-data mode 10 | -------------------------------------------------------------------------------- /common/service.sh: -------------------------------------------------------------------------------- 1 | #!/system/bin/sh 2 | # Do NOT assume where your module will be located. 3 | # ALWAYS use $MODDIR if you need to know where this script 4 | # and module is placed. 5 | # This will make sure your module will still work 6 | # if Magisk change its mount point in the future 7 | MODDIR=${0%/*} 8 | 9 | # This script will be executed in late_start service mode 10 | -------------------------------------------------------------------------------- /common/system.prop: -------------------------------------------------------------------------------- 1 | # This file will be read by resetprop 2 | # Example: Change dpi 3 | # ro.sf.lcd_density=320 4 | -------------------------------------------------------------------------------- /install.sh: -------------------------------------------------------------------------------- 1 | ########################################################################################## 2 | # 3 | # Magisk Module Installer Script 4 | # 5 | ########################################################################################## 6 | ########################################################################################## 7 | # 8 | # Instructions: 9 | # 10 | # 1. Place your files into system folder (delete the placeholder file) 11 | # 2. Fill in your module's info into module.prop 12 | # 3. Configure and implement callbacks in this file 13 | # 4. If you need boot scripts, add them into common/post-fs-data.sh or common/service.sh 14 | # 5. Add your additional or modified system properties into common/system.prop 15 | # 16 | ########################################################################################## 17 | 18 | ########################################################################################## 19 | # Config Flags 20 | ########################################################################################## 21 | 22 | # Set to true if you do *NOT* want Magisk to mount 23 | # any files for you. Most modules would NOT want 24 | # to set this flag to true 25 | SKIPMOUNT=false 26 | 27 | # Set to true if you need to load system.prop 28 | PROPFILE=false 29 | 30 | # Set to true if you need post-fs-data script 31 | POSTFSDATA=false 32 | 33 | # Set to true if you need late_start service script 34 | LATESTARTSERVICE=false 35 | 36 | ########################################################################################## 37 | # Replace list 38 | ########################################################################################## 39 | 40 | # List all directories you want to directly replace in the system 41 | # Check the documentations for more info why you would need this 42 | 43 | # Construct your list in the following format 44 | # This is an example 45 | REPLACE_EXAMPLE=" 46 | /system/app/Youtube 47 | /system/priv-app/SystemUI 48 | /system/priv-app/Settings 49 | /system/framework 50 | " 51 | 52 | # Construct your own list here 53 | REPLACE=" 54 | " 55 | 56 | ########################################################################################## 57 | # 58 | # Function Callbacks 59 | # 60 | # The following functions will be called by the installation framework. 61 | # You do not have the ability to modify update-binary, the only way you can customize 62 | # installation is through implementing these functions. 63 | # 64 | # When running your callbacks, the installation framework will make sure the Magisk 65 | # internal busybox path is *PREPENDED* to PATH, so all common commands shall exist. 66 | # Also, it will make sure /data, /system, and /vendor is properly mounted. 67 | # 68 | ########################################################################################## 69 | ########################################################################################## 70 | # 71 | # The installation framework will export some variables and functions. 72 | # You should use these variables and functions for installation. 73 | # 74 | # ! DO NOT use any Magisk internal paths as those are NOT public API. 75 | # ! DO NOT use other functions in util_functions.sh as they are NOT public API. 76 | # ! Non public APIs are not guranteed to maintain compatibility between releases. 77 | # 78 | # Available variables: 79 | # 80 | # MAGISK_VER (string): the version string of current installed Magisk 81 | # MAGISK_VER_CODE (int): the version code of current installed Magisk 82 | # BOOTMODE (bool): true if the module is currently installing in Magisk Manager 83 | # MODPATH (path): the path where your module files should be installed 84 | # TMPDIR (path): a place where you can temporarily store files 85 | # ZIPFILE (path): your module's installation zip 86 | # ARCH (string): the architecture of the device. Value is either arm, arm64, x86, or x64 87 | # IS64BIT (bool): true if $ARCH is either arm64 or x64 88 | # API (int): the API level (Android version) of the device 89 | # 90 | # Availible functions: 91 | # 92 | # ui_print 93 | # print to console 94 | # Avoid using 'echo' as it will not display in custom recovery's console 95 | # 96 | # abort 97 | # print error message to console and terminate installation 98 | # Avoid using 'exit' as it will skip the termination cleanup steps 99 | # 100 | # set_perm [context] 101 | # if [context] is empty, it will default to "u:object_r:system_file:s0" 102 | # this function is a shorthand for the following commands 103 | # chown owner.group target 104 | # chmod permission target 105 | # chcon context target 106 | # 107 | # set_perm_recursive [context] 108 | # if [context] is empty, it will default to "u:object_r:system_file:s0" 109 | # for all files in , it will call: 110 | # set_perm file owner group filepermission context 111 | # for all directories in (including itself), it will call: 112 | # set_perm dir owner group dirpermission context 113 | # 114 | ########################################################################################## 115 | ########################################################################################## 116 | # If you need boot scripts, DO NOT use general boot scripts (post-fs-data.d/service.d) 117 | # ONLY use module scripts as it respects the module status (remove/disable) and is 118 | # guaranteed to maintain the same behavior in future Magisk releases. 119 | # Enable boot scripts by setting the flags in the config section above. 120 | ########################################################################################## 121 | 122 | # Set what you want to display when installing your module 123 | 124 | print_modname() { 125 | ui_print "**************************" 126 | ui_print " WiFi5GhzDisabler " 127 | ui_print "**************************" 128 | } 129 | 130 | # Copy/extract your module files into $MODPATH in on_install. 131 | 132 | on_install() { 133 | # The following is the default implementation: extract $ZIPFILE/system to $MODPATH 134 | # Extend/change the logic to whatever you want 135 | array=$(find /system /vendor -name WCNSS_qcom_cfg.ini) 136 | for CFG in $array 137 | do 138 | [[ -f $CFG ]] && [[ ! -L $CFG ]] && { 139 | SELECTPATH=$CFG 140 | mkdir -p `dirname $MODPATH$CFG` 141 | ui_print "- Migrating $CFG" 142 | [[ -f /sbin/.magisk/mirror$SELECTPATH ]] && cp -af /sbin/.magisk/mirror$SELECTPATH $MODPATH$SELECTPATH || cp -af $SELECTPATH $MODPATH$SELECTPATH 143 | ui_print "- Starting modifiy" 144 | sed -i 's/BandCapability=0/BandCapability=1/g' $MODPATH$SELECTPATH 145 | } 146 | done 147 | [[ -z $SELECTPATH ]] && abort "- WCNSS_qcom_cfg.ini not found" || { mkdir -p $MODPATH/system; mv -f $MODPATH/vendor $MODPATH/system/vendor;} 148 | } 149 | 150 | # Only some special files require specific permissions 151 | # This function will be called after on_install is done 152 | # The default permissions should be good enough for most cases 153 | 154 | set_permissions() { 155 | # The following is the default rule, DO NOT remove 156 | set_perm_recursive $MODPATH 0 0 0755 0644 157 | 158 | # Here are some examples: 159 | # set_perm_recursive $MODPATH/system/lib 0 0 0755 0644 160 | # set_perm $MODPATH/system/bin/app_process32 0 2000 0755 u:object_r:zygote_exec:s0 161 | # set_perm $MODPATH/system/bin/dex2oat 0 2000 0755 u:object_r:dex2oat_exec:s0 162 | # set_perm $MODPATH/system/lib/libart.so 0 0 0644 163 | } 164 | 165 | # You can add more functions to assist your custom script code 166 | -------------------------------------------------------------------------------- /module.prop: -------------------------------------------------------------------------------- 1 | id=wifi5ghzdisabler 2 | name=WiFi5GhzDisabler 3 | version=v1 4 | versionCode=1 5 | author=danielchc 6 | description=Disable WiFi 5Ghz Band on your Qualcomm device 7 | -------------------------------------------------------------------------------- /system/placeholder: -------------------------------------------------------------------------------- 1 | This file will be deleted in Magisk Manager, it is only a placeholder for git 2 | --------------------------------------------------------------------------------