מדריך | VoLTE במכשיר Qin F21 Pro - בדרך פשוטה יותר ללא צורך במודול -אפשר להסיר רוט לאחר מכן
-
המדריך הוא נסיוני - לכן אבקש שכל מי שעובד לו או לא עובד לו שיכתוב בתגובות ולציין באיזה ספק הוא ואיזה גירסה הוא משתמש כדי שנדע מה צריך לתקן.
קודם כל תודתי נתונה ל @lilo159 שהוא בעצם גם יצר את הסקריפט הזה ועזר בדרך אליו ובדק את כל המתודה ישר והפוך בגירסאות שונות ומכשירים שונים כדי לוודא שאנחנו לא שוכחים כלום ושזה עובד.
כמו כן תודתי נתונה ל @RearmostPant23 שעזר גם בבדיקה של השיטה הזאת.- לשמור את הקוד בקובץ בשם volte-install.sh :
הדרך הכי מהירה לעשות זאת דרך השל לדעתי היא:
עריכה: @lilo159 אומר שאפשר פשוט אחרי שנכנסים לadb shell כותבים פקודת su ולאחר מכן להעתיק את כל הקוד ולהדביק אותו בshell וזה גם יעבוד. ובכלל אפשר אפילו להתקין אפליקציית טרמינל כמו Termux ולעשות את זה שם כנ"ל להדביק בלי פתיחת מצב מפתחים וadb shell ללא צורך במחשב וזה גם יעבוד.
אפשר גם ליצור את הקובץ כך דרך הadb shell:
cat > volte-install.sh להדביק את הקוד ללחוץ CTRL+C
או לחילופין: מי שעובד ב Windows חשוב מאוד לשמור את הקובץ בתור unix. אחרת זה לא יעבוד (בnotepad++ זה נמצא תחת edit->EOL-> unix.)
#!/system/bin-sh # # --- Comprehensive VoLTE & IMS Enabler Script for MTK Devices (v4) --- # # This script uses a systemless approach to enable VoLTE. # IT DOES NOT MODIFY THE /system PARTITION. # # 1. Sets persistent system properties for VoLTE/VoWiFi. # 2. Dynamically gets the current carrier's information. # 3. Checks if an IMS APN already exists in the live database. # 4. If missing, inserts the IMS APN directly using the Content Provider. # 5. Sends AT commands to the modem to enable VoLTE. # 6. Conditionally applies the SGS SMS fix ONLY for the Cellcom network. # # Must be run as root. # echo "--- Comprehensive VoLTE & IMS Enabler (v4 - Systemless) ---" echo "" # --- 0. PRE-FLIGHT CHECK --- if [ "$(id -u)" -ne 0 ]; then echo "[ERROR] This script must be run as root. Please run 'su' first." exit 1 fi # --- 1. SETTING SYSTEM PROPERTIES --- echo "[STEP 1] Setting persistent system properties for VoLTE/VoWiFi..." setprop persist.vendor.mtk.volte.enable 1 setprop persist.vendor.radio.volte_state 1 setprop persist.vendor.mtk.wfc.enable 1 setprop persist.dbg.volte_avail_ovr 1 setprop persist.vendor.radio.selfreg 1 setprop persist.vendor.service.atci.pct.mode 1 setprop persist.vendor.mtk_dynamic_ims_switch 0 echo "--> System properties set successfully." echo "" # --- 2. DYNAMICALLY ADDING IMS APN VIA CONTENT PROVIDER --- echo "[STEP 2] Checking and adding IMS APN to live database..." # Get the MCC/MNC from the active SIM card OPERATOR_NUMERIC=$(getprop gsm.sim.operator.numeric) if [ -z "$OPERATOR_NUMERIC" ]; then echo "[WARNING] Could not detect SIM operator. Skipping APN insertion." else MCC=${OPERATOR_NUMERIC:0:3} MNC=${OPERATOR_NUMERIC:3} echo "[INFO] Detected Operator: MCC=$MCC, MNC=$MNC" # Check if an IMS APN already exists for this operator to avoid duplicates IMS_EXISTS=$(content query --uri content://telephony/carriers --where "numeric = '$OPERATOR_NUMERIC' AND type LIKE '%ims%'" | grep -c "Row:") if [ "$IMS_EXISTS" -gt 0 ]; then echo "--> IMS APN already exists for this operator. No action needed." else echo "--> IMS APN not found. Inserting into database..." content insert --uri content://telephony/carriers \ --bind name:s:ims \ --bind apn:s:ims \ --bind mcc:s:$MCC \ --bind mnc:s:$MNC \ --bind numeric:s:$OPERATOR_NUMERIC \ --bind type:s:ims \ --bind protocol:s:IPV4V6 \ --bind roaming_protocol:s:IPV4V6 \ --bind carrier_enabled:i:1 >/dev/null 2>&1 echo "--> IMS APN has been added successfully." fi fi echo "" # --- 3. TRIGGERING THE MODEM WITH AT COMMANDS --- echo "[STEP 3] Finding modem and sending AT command sequence..." PID=$(pidof mtkfusionrild) if [ -z "$PID" ]; then echo "[ERROR] Could not find mtkfusionrild process. Skipping AT commands." else TTY_LIST=$(lsof -p "$PID" | grep /dev/pts | awk '{print $NF}' | sort -u) RESPONSIVE_TTY="" for TTY in $TTY_LIST; do echo -e "AT\\r" > "$TTY" sleep 0.3 if [ -n "$(timeout 1 cat "$TTY" | grep OK)" ]; then RESPONSIVE_TTY=$TTY break fi done if [ -z "$RESPONSIVE_TTY" ]; then echo "[FAILURE] Could not find a responsive AT command TTY port." else echo "[SUCCESS] Found responsive TTY at: $RESPONSIVE_TTY" echo "[INFO] Sending VoLTE trigger and conditional SMS Fix..." # The confirmed Trigger Command echo -e "AT+ECFGSET=\"operator_code\",\"16386\"\\r" > "$RESPONSIVE_TTY" sleep 0.5 # Conditional SGS Command for SMS compatibility ONLY on Cellcom (MNC 02) if [ "$MNC" = "02" ]; then echo "[INFO] Cellcom network detected. Applying SGS SMS Fix..." echo -e "AT+ECFGSET=\"sdm_profile_prefer_sms_over_sgs_to_ims\",\"1\"\\r" > "$RESPONSIVE_TTY" sleep 0.5 fi # The "Apply" Command to save all settings echo -e "AT+EIMSCFG=1,0,0,0,1,1\\r" > "$RESPONSIVE_TTY" sleep 0.5 # Clear the buffer timeout 1 cat "$RESPONSIVE_TTY" > /dev/null echo "--> VoLTE AT command sequence sent successfully." fi fi echo "" # --- 4. FINAL INSTRUCTIONS --- echo "--- SCRIPT FINISHED ---" echo "All VoLTE enablement steps have been completed." echo "The VoLTE icon should appear shortly. For changes to take full effect, a REBOOT is still recommended." echo "-----------------------" exit 0
- לאחר ששמרתם אותו להכנס ל shell:
adb shell su cd <הנתיב שבו שמרתם את הקובץ> sh volte-install.sh
אם זה עובד לכם, צריך להופיע סמל HD למעלה והוא הוא אמור לחזור אחרי חזרה ממצב טיסה וגם אחרי Reboot
אם זה עובד לכם, זה צריך להמשיך לעבוד גם אחרי צריבת מחיצת בוט לא מושרש גם.בהצלחה!
- לשמור את הקוד בקובץ בשם volte-install.sh :
-
המדריך הוא נסיוני - לכן אבקש שכל מי שעובד לו או לא עובד לו שיכתוב בתגובות ולציין באיזה ספק הוא ואיזה גירסה הוא משתמש כדי שנדע מה צריך לתקן.
קודם כל תודתי נתונה ל @lilo159 שהוא בעצם גם יצר את הסקריפט הזה ועזר בדרך אליו ובדק את כל המתודה ישר והפוך בגירסאות שונות ומכשירים שונים כדי לוודא שאנחנו לא שוכחים כלום ושזה עובד.
כמו כן תודתי נתונה ל @RearmostPant23 שעזר גם בבדיקה של השיטה הזאת.- לשמור את הקוד בקובץ בשם volte-install.sh :
הדרך הכי מהירה לעשות זאת דרך השל לדעתי היא:
עריכה: @lilo159 אומר שאפשר פשוט אחרי שנכנסים לadb shell כותבים פקודת su ולאחר מכן להעתיק את כל הקוד ולהדביק אותו בshell וזה גם יעבוד. ובכלל אפשר אפילו להתקין אפליקציית טרמינל כמו Termux ולעשות את זה שם כנ"ל להדביק בלי פתיחת מצב מפתחים וadb shell ללא צורך במחשב וזה גם יעבוד.
אפשר גם ליצור את הקובץ כך דרך הadb shell:
cat > volte-install.sh להדביק את הקוד ללחוץ CTRL+C
או לחילופין: מי שעובד ב Windows חשוב מאוד לשמור את הקובץ בתור unix. אחרת זה לא יעבוד (בnotepad++ זה נמצא תחת edit->EOL-> unix.)
#!/system/bin-sh # # --- Comprehensive VoLTE & IMS Enabler Script for MTK Devices (v4) --- # # This script uses a systemless approach to enable VoLTE. # IT DOES NOT MODIFY THE /system PARTITION. # # 1. Sets persistent system properties for VoLTE/VoWiFi. # 2. Dynamically gets the current carrier's information. # 3. Checks if an IMS APN already exists in the live database. # 4. If missing, inserts the IMS APN directly using the Content Provider. # 5. Sends AT commands to the modem to enable VoLTE. # 6. Conditionally applies the SGS SMS fix ONLY for the Cellcom network. # # Must be run as root. # echo "--- Comprehensive VoLTE & IMS Enabler (v4 - Systemless) ---" echo "" # --- 0. PRE-FLIGHT CHECK --- if [ "$(id -u)" -ne 0 ]; then echo "[ERROR] This script must be run as root. Please run 'su' first." exit 1 fi # --- 1. SETTING SYSTEM PROPERTIES --- echo "[STEP 1] Setting persistent system properties for VoLTE/VoWiFi..." setprop persist.vendor.mtk.volte.enable 1 setprop persist.vendor.radio.volte_state 1 setprop persist.vendor.mtk.wfc.enable 1 setprop persist.dbg.volte_avail_ovr 1 setprop persist.vendor.radio.selfreg 1 setprop persist.vendor.service.atci.pct.mode 1 setprop persist.vendor.mtk_dynamic_ims_switch 0 echo "--> System properties set successfully." echo "" # --- 2. DYNAMICALLY ADDING IMS APN VIA CONTENT PROVIDER --- echo "[STEP 2] Checking and adding IMS APN to live database..." # Get the MCC/MNC from the active SIM card OPERATOR_NUMERIC=$(getprop gsm.sim.operator.numeric) if [ -z "$OPERATOR_NUMERIC" ]; then echo "[WARNING] Could not detect SIM operator. Skipping APN insertion." else MCC=${OPERATOR_NUMERIC:0:3} MNC=${OPERATOR_NUMERIC:3} echo "[INFO] Detected Operator: MCC=$MCC, MNC=$MNC" # Check if an IMS APN already exists for this operator to avoid duplicates IMS_EXISTS=$(content query --uri content://telephony/carriers --where "numeric = '$OPERATOR_NUMERIC' AND type LIKE '%ims%'" | grep -c "Row:") if [ "$IMS_EXISTS" -gt 0 ]; then echo "--> IMS APN already exists for this operator. No action needed." else echo "--> IMS APN not found. Inserting into database..." content insert --uri content://telephony/carriers \ --bind name:s:ims \ --bind apn:s:ims \ --bind mcc:s:$MCC \ --bind mnc:s:$MNC \ --bind numeric:s:$OPERATOR_NUMERIC \ --bind type:s:ims \ --bind protocol:s:IPV4V6 \ --bind roaming_protocol:s:IPV4V6 \ --bind carrier_enabled:i:1 >/dev/null 2>&1 echo "--> IMS APN has been added successfully." fi fi echo "" # --- 3. TRIGGERING THE MODEM WITH AT COMMANDS --- echo "[STEP 3] Finding modem and sending AT command sequence..." PID=$(pidof mtkfusionrild) if [ -z "$PID" ]; then echo "[ERROR] Could not find mtkfusionrild process. Skipping AT commands." else TTY_LIST=$(lsof -p "$PID" | grep /dev/pts | awk '{print $NF}' | sort -u) RESPONSIVE_TTY="" for TTY in $TTY_LIST; do echo -e "AT\\r" > "$TTY" sleep 0.3 if [ -n "$(timeout 1 cat "$TTY" | grep OK)" ]; then RESPONSIVE_TTY=$TTY break fi done if [ -z "$RESPONSIVE_TTY" ]; then echo "[FAILURE] Could not find a responsive AT command TTY port." else echo "[SUCCESS] Found responsive TTY at: $RESPONSIVE_TTY" echo "[INFO] Sending VoLTE trigger and conditional SMS Fix..." # The confirmed Trigger Command echo -e "AT+ECFGSET=\"operator_code\",\"16386\"\\r" > "$RESPONSIVE_TTY" sleep 0.5 # Conditional SGS Command for SMS compatibility ONLY on Cellcom (MNC 02) if [ "$MNC" = "02" ]; then echo "[INFO] Cellcom network detected. Applying SGS SMS Fix..." echo -e "AT+ECFGSET=\"sdm_profile_prefer_sms_over_sgs_to_ims\",\"1\"\\r" > "$RESPONSIVE_TTY" sleep 0.5 fi # The "Apply" Command to save all settings echo -e "AT+EIMSCFG=1,0,0,0,1,1\\r" > "$RESPONSIVE_TTY" sleep 0.5 # Clear the buffer timeout 1 cat "$RESPONSIVE_TTY" > /dev/null echo "--> VoLTE AT command sequence sent successfully." fi fi echo "" # --- 4. FINAL INSTRUCTIONS --- echo "--- SCRIPT FINISHED ---" echo "All VoLTE enablement steps have been completed." echo "The VoLTE icon should appear shortly. For changes to take full effect, a REBOOT is still recommended." echo "-----------------------" exit 0
- לאחר ששמרתם אותו להכנס ל shell:
adb shell su cd <הנתיב שבו שמרתם את הקובץ> sh volte-install.sh
אם זה עובד לכם, צריך להופיע סמל HD למעלה והוא הוא אמור לחזור אחרי חזרה ממצב טיסה וגם אחרי Reboot
אם זה עובד לכם, זה צריך להמשיך לעבוד גם אחרי צריבת מחיצת בוט לא מושרש גם.בהצלחה!
תודה לך על הטרחה שלך על המדריך הזה, וגם על האזכור
- לשמור את הקוד בקובץ בשם volte-install.sh :
-
המדריך הוא נסיוני - לכן אבקש שכל מי שעובד לו או לא עובד לו שיכתוב בתגובות ולציין באיזה ספק הוא ואיזה גירסה הוא משתמש כדי שנדע מה צריך לתקן.
קודם כל תודתי נתונה ל @lilo159 שהוא בעצם גם יצר את הסקריפט הזה ועזר בדרך אליו ובדק את כל המתודה ישר והפוך בגירסאות שונות ומכשירים שונים כדי לוודא שאנחנו לא שוכחים כלום ושזה עובד.
כמו כן תודתי נתונה ל @RearmostPant23 שעזר גם בבדיקה של השיטה הזאת.- לשמור את הקוד בקובץ בשם volte-install.sh :
הדרך הכי מהירה לעשות זאת דרך השל לדעתי היא:
עריכה: @lilo159 אומר שאפשר פשוט אחרי שנכנסים לadb shell כותבים פקודת su ולאחר מכן להעתיק את כל הקוד ולהדביק אותו בshell וזה גם יעבוד. ובכלל אפשר אפילו להתקין אפליקציית טרמינל כמו Termux ולעשות את זה שם כנ"ל להדביק בלי פתיחת מצב מפתחים וadb shell ללא צורך במחשב וזה גם יעבוד.
אפשר גם ליצור את הקובץ כך דרך הadb shell:
cat > volte-install.sh להדביק את הקוד ללחוץ CTRL+C
או לחילופין: מי שעובד ב Windows חשוב מאוד לשמור את הקובץ בתור unix. אחרת זה לא יעבוד (בnotepad++ זה נמצא תחת edit->EOL-> unix.)
#!/system/bin-sh # # --- Comprehensive VoLTE & IMS Enabler Script for MTK Devices (v4) --- # # This script uses a systemless approach to enable VoLTE. # IT DOES NOT MODIFY THE /system PARTITION. # # 1. Sets persistent system properties for VoLTE/VoWiFi. # 2. Dynamically gets the current carrier's information. # 3. Checks if an IMS APN already exists in the live database. # 4. If missing, inserts the IMS APN directly using the Content Provider. # 5. Sends AT commands to the modem to enable VoLTE. # 6. Conditionally applies the SGS SMS fix ONLY for the Cellcom network. # # Must be run as root. # echo "--- Comprehensive VoLTE & IMS Enabler (v4 - Systemless) ---" echo "" # --- 0. PRE-FLIGHT CHECK --- if [ "$(id -u)" -ne 0 ]; then echo "[ERROR] This script must be run as root. Please run 'su' first." exit 1 fi # --- 1. SETTING SYSTEM PROPERTIES --- echo "[STEP 1] Setting persistent system properties for VoLTE/VoWiFi..." setprop persist.vendor.mtk.volte.enable 1 setprop persist.vendor.radio.volte_state 1 setprop persist.vendor.mtk.wfc.enable 1 setprop persist.dbg.volte_avail_ovr 1 setprop persist.vendor.radio.selfreg 1 setprop persist.vendor.service.atci.pct.mode 1 setprop persist.vendor.mtk_dynamic_ims_switch 0 echo "--> System properties set successfully." echo "" # --- 2. DYNAMICALLY ADDING IMS APN VIA CONTENT PROVIDER --- echo "[STEP 2] Checking and adding IMS APN to live database..." # Get the MCC/MNC from the active SIM card OPERATOR_NUMERIC=$(getprop gsm.sim.operator.numeric) if [ -z "$OPERATOR_NUMERIC" ]; then echo "[WARNING] Could not detect SIM operator. Skipping APN insertion." else MCC=${OPERATOR_NUMERIC:0:3} MNC=${OPERATOR_NUMERIC:3} echo "[INFO] Detected Operator: MCC=$MCC, MNC=$MNC" # Check if an IMS APN already exists for this operator to avoid duplicates IMS_EXISTS=$(content query --uri content://telephony/carriers --where "numeric = '$OPERATOR_NUMERIC' AND type LIKE '%ims%'" | grep -c "Row:") if [ "$IMS_EXISTS" -gt 0 ]; then echo "--> IMS APN already exists for this operator. No action needed." else echo "--> IMS APN not found. Inserting into database..." content insert --uri content://telephony/carriers \ --bind name:s:ims \ --bind apn:s:ims \ --bind mcc:s:$MCC \ --bind mnc:s:$MNC \ --bind numeric:s:$OPERATOR_NUMERIC \ --bind type:s:ims \ --bind protocol:s:IPV4V6 \ --bind roaming_protocol:s:IPV4V6 \ --bind carrier_enabled:i:1 >/dev/null 2>&1 echo "--> IMS APN has been added successfully." fi fi echo "" # --- 3. TRIGGERING THE MODEM WITH AT COMMANDS --- echo "[STEP 3] Finding modem and sending AT command sequence..." PID=$(pidof mtkfusionrild) if [ -z "$PID" ]; then echo "[ERROR] Could not find mtkfusionrild process. Skipping AT commands." else TTY_LIST=$(lsof -p "$PID" | grep /dev/pts | awk '{print $NF}' | sort -u) RESPONSIVE_TTY="" for TTY in $TTY_LIST; do echo -e "AT\\r" > "$TTY" sleep 0.3 if [ -n "$(timeout 1 cat "$TTY" | grep OK)" ]; then RESPONSIVE_TTY=$TTY break fi done if [ -z "$RESPONSIVE_TTY" ]; then echo "[FAILURE] Could not find a responsive AT command TTY port." else echo "[SUCCESS] Found responsive TTY at: $RESPONSIVE_TTY" echo "[INFO] Sending VoLTE trigger and conditional SMS Fix..." # The confirmed Trigger Command echo -e "AT+ECFGSET=\"operator_code\",\"16386\"\\r" > "$RESPONSIVE_TTY" sleep 0.5 # Conditional SGS Command for SMS compatibility ONLY on Cellcom (MNC 02) if [ "$MNC" = "02" ]; then echo "[INFO] Cellcom network detected. Applying SGS SMS Fix..." echo -e "AT+ECFGSET=\"sdm_profile_prefer_sms_over_sgs_to_ims\",\"1\"\\r" > "$RESPONSIVE_TTY" sleep 0.5 fi # The "Apply" Command to save all settings echo -e "AT+EIMSCFG=1,0,0,0,1,1\\r" > "$RESPONSIVE_TTY" sleep 0.5 # Clear the buffer timeout 1 cat "$RESPONSIVE_TTY" > /dev/null echo "--> VoLTE AT command sequence sent successfully." fi fi echo "" # --- 4. FINAL INSTRUCTIONS --- echo "--- SCRIPT FINISHED ---" echo "All VoLTE enablement steps have been completed." echo "The VoLTE icon should appear shortly. For changes to take full effect, a REBOOT is still recommended." echo "-----------------------" exit 0
- לאחר ששמרתם אותו להכנס ל shell:
adb shell su cd <הנתיב שבו שמרתם את הקובץ> sh volte-install.sh
אם זה עובד לכם, צריך להופיע סמל HD למעלה והוא הוא אמור לחזור אחרי חזרה ממצב טיסה וגם אחרי Reboot
אם זה עובד לכם, זה צריך להמשיך לעבוד גם אחרי צריבת מחיצת בוט לא מושרש גם.בהצלחה!
- לשמור את הקוד בקובץ בשם volte-install.sh :
-
המדריך הוא נסיוני - לכן אבקש שכל מי שעובד לו או לא עובד לו שיכתוב בתגובות ולציין באיזה ספק הוא ואיזה גירסה הוא משתמש כדי שנדע מה צריך לתקן.
קודם כל תודתי נתונה ל @lilo159 שהוא בעצם גם יצר את הסקריפט הזה ועזר בדרך אליו ובדק את כל המתודה ישר והפוך בגירסאות שונות ומכשירים שונים כדי לוודא שאנחנו לא שוכחים כלום ושזה עובד.
כמו כן תודתי נתונה ל @RearmostPant23 שעזר גם בבדיקה של השיטה הזאת.- לשמור את הקוד בקובץ בשם volte-install.sh :
הדרך הכי מהירה לעשות זאת דרך השל לדעתי היא:
עריכה: @lilo159 אומר שאפשר פשוט אחרי שנכנסים לadb shell כותבים פקודת su ולאחר מכן להעתיק את כל הקוד ולהדביק אותו בshell וזה גם יעבוד. ובכלל אפשר אפילו להתקין אפליקציית טרמינל כמו Termux ולעשות את זה שם כנ"ל להדביק בלי פתיחת מצב מפתחים וadb shell ללא צורך במחשב וזה גם יעבוד.
אפשר גם ליצור את הקובץ כך דרך הadb shell:
cat > volte-install.sh להדביק את הקוד ללחוץ CTRL+C
או לחילופין: מי שעובד ב Windows חשוב מאוד לשמור את הקובץ בתור unix. אחרת זה לא יעבוד (בnotepad++ זה נמצא תחת edit->EOL-> unix.)
#!/system/bin-sh # # --- Comprehensive VoLTE & IMS Enabler Script for MTK Devices (v4) --- # # This script uses a systemless approach to enable VoLTE. # IT DOES NOT MODIFY THE /system PARTITION. # # 1. Sets persistent system properties for VoLTE/VoWiFi. # 2. Dynamically gets the current carrier's information. # 3. Checks if an IMS APN already exists in the live database. # 4. If missing, inserts the IMS APN directly using the Content Provider. # 5. Sends AT commands to the modem to enable VoLTE. # 6. Conditionally applies the SGS SMS fix ONLY for the Cellcom network. # # Must be run as root. # echo "--- Comprehensive VoLTE & IMS Enabler (v4 - Systemless) ---" echo "" # --- 0. PRE-FLIGHT CHECK --- if [ "$(id -u)" -ne 0 ]; then echo "[ERROR] This script must be run as root. Please run 'su' first." exit 1 fi # --- 1. SETTING SYSTEM PROPERTIES --- echo "[STEP 1] Setting persistent system properties for VoLTE/VoWiFi..." setprop persist.vendor.mtk.volte.enable 1 setprop persist.vendor.radio.volte_state 1 setprop persist.vendor.mtk.wfc.enable 1 setprop persist.dbg.volte_avail_ovr 1 setprop persist.vendor.radio.selfreg 1 setprop persist.vendor.service.atci.pct.mode 1 setprop persist.vendor.mtk_dynamic_ims_switch 0 echo "--> System properties set successfully." echo "" # --- 2. DYNAMICALLY ADDING IMS APN VIA CONTENT PROVIDER --- echo "[STEP 2] Checking and adding IMS APN to live database..." # Get the MCC/MNC from the active SIM card OPERATOR_NUMERIC=$(getprop gsm.sim.operator.numeric) if [ -z "$OPERATOR_NUMERIC" ]; then echo "[WARNING] Could not detect SIM operator. Skipping APN insertion." else MCC=${OPERATOR_NUMERIC:0:3} MNC=${OPERATOR_NUMERIC:3} echo "[INFO] Detected Operator: MCC=$MCC, MNC=$MNC" # Check if an IMS APN already exists for this operator to avoid duplicates IMS_EXISTS=$(content query --uri content://telephony/carriers --where "numeric = '$OPERATOR_NUMERIC' AND type LIKE '%ims%'" | grep -c "Row:") if [ "$IMS_EXISTS" -gt 0 ]; then echo "--> IMS APN already exists for this operator. No action needed." else echo "--> IMS APN not found. Inserting into database..." content insert --uri content://telephony/carriers \ --bind name:s:ims \ --bind apn:s:ims \ --bind mcc:s:$MCC \ --bind mnc:s:$MNC \ --bind numeric:s:$OPERATOR_NUMERIC \ --bind type:s:ims \ --bind protocol:s:IPV4V6 \ --bind roaming_protocol:s:IPV4V6 \ --bind carrier_enabled:i:1 >/dev/null 2>&1 echo "--> IMS APN has been added successfully." fi fi echo "" # --- 3. TRIGGERING THE MODEM WITH AT COMMANDS --- echo "[STEP 3] Finding modem and sending AT command sequence..." PID=$(pidof mtkfusionrild) if [ -z "$PID" ]; then echo "[ERROR] Could not find mtkfusionrild process. Skipping AT commands." else TTY_LIST=$(lsof -p "$PID" | grep /dev/pts | awk '{print $NF}' | sort -u) RESPONSIVE_TTY="" for TTY in $TTY_LIST; do echo -e "AT\\r" > "$TTY" sleep 0.3 if [ -n "$(timeout 1 cat "$TTY" | grep OK)" ]; then RESPONSIVE_TTY=$TTY break fi done if [ -z "$RESPONSIVE_TTY" ]; then echo "[FAILURE] Could not find a responsive AT command TTY port." else echo "[SUCCESS] Found responsive TTY at: $RESPONSIVE_TTY" echo "[INFO] Sending VoLTE trigger and conditional SMS Fix..." # The confirmed Trigger Command echo -e "AT+ECFGSET=\"operator_code\",\"16386\"\\r" > "$RESPONSIVE_TTY" sleep 0.5 # Conditional SGS Command for SMS compatibility ONLY on Cellcom (MNC 02) if [ "$MNC" = "02" ]; then echo "[INFO] Cellcom network detected. Applying SGS SMS Fix..." echo -e "AT+ECFGSET=\"sdm_profile_prefer_sms_over_sgs_to_ims\",\"1\"\\r" > "$RESPONSIVE_TTY" sleep 0.5 fi # The "Apply" Command to save all settings echo -e "AT+EIMSCFG=1,0,0,0,1,1\\r" > "$RESPONSIVE_TTY" sleep 0.5 # Clear the buffer timeout 1 cat "$RESPONSIVE_TTY" > /dev/null echo "--> VoLTE AT command sequence sent successfully." fi fi echo "" # --- 4. FINAL INSTRUCTIONS --- echo "--- SCRIPT FINISHED ---" echo "All VoLTE enablement steps have been completed." echo "The VoLTE icon should appear shortly. For changes to take full effect, a REBOOT is still recommended." echo "-----------------------" exit 0
- לאחר ששמרתם אותו להכנס ל shell:
adb shell su cd <הנתיב שבו שמרתם את הקובץ> sh volte-install.sh
אם זה עובד לכם, צריך להופיע סמל HD למעלה והוא הוא אמור לחזור אחרי חזרה ממצב טיסה וגם אחרי Reboot
אם זה עובד לכם, זה צריך להמשיך לעבוד גם אחרי צריבת מחיצת בוט לא מושרש גם.בהצלחה!
- לשמור את הקוד בקובץ בשם volte-install.sh :