¿Es posible desactivar completamente la señal de radio en un teléfono sin tarjeta SIM?

Tengo un Samsung Galaxy S4 Mini, alimentado por CyanogenMod 13 (Android Marshmallow 6.0.1) , que uso solo como Wi-Fi, ya que no tiene tarjeta SIM.

Sin embargo, la antena del dispositivo parece estar constantemente conectada a una torre celular, por lo que me temo que este hecho puede resultar en un mayor consumo de batería (aunque sea leve). Además, no quiero que mi posición se triangule debido a este comportamiento.

Simplemente marcar *#*#4636#*#* y deshabilitar la antena desde allí parece ser suficiente, pero el cambio no persiste entre reinicios, y repetir todo el procedimiento cada vez es una molestia.

Lo que deseo es una forma de hacer persistente el cambio mencionado anteriormente, sin la necesidad de una aplicación completa, lo que considero excesivo para una tarea tan simple . Aún mejor, prefiero una solución que utilice la Terminal integrada , ya sea un solo comando o una función, y estoy abierto a soluciones que requieran acceso de root .

¿Existe tal manera de lograr esto?

Respuestas (2)

Use el modo avión para desactivar la radio celular. Esto es simple y no requiere una aplicación, el uso de una terminal o acceso de raíz.

Por supuesto que funcionará, pero entonces tendría que encender manualmente el Wi-Fi, ¿no es así?
Solo lo probé para estar seguro: solo habilitar el modo avión deja el mensaje Sin tarjeta SIM en la barra de notificaciones, y obviamente coloca el ícono Avión . Seguramente funciona, pero tiene sus inconvenientes. ¡Gracias por responder!

A partir de ahora, he encontrado una manera de lograr lo que pide la pregunta. Esta solución ha sido probada en CyanogenMod 12.1 y 13 .


Desde la Terminal

Deshabilitar RIL

Si la operación no se va a realizar con frecuencia, una sola línea de código será todo lo que se necesita:

su -c "setprop persist.radio.noril 1"

. Esto hará que el teléfono ignore la capa de interfaz de radio , ignorando así la presencia de la antena. Se requiere un reinicio para que el cambio tenga efecto, y persistirá entre reinicios.

Además, la desactivación de RIL también hace que desaparezca el icono " Sin tarjeta SIM" .

Habilitación de RIL

Habilitar RIL nuevamente es solo una cuestión de banderas. Como se puede ver en el siguiente ejemplo:

su -c "setprop persist.radio.noril 0"

, el comando es equivalente, excepto por a 0en lugar de a 1. Como antes, es necesario reiniciar.


Como una función personalizada

También ideé dos funciones para agregar al archivo /system/etc/mkshrc . Por supuesto, generalmente es necesario volver a montar la partición / system como lectura y escritura, pero el procedimiento no se tratará en esta respuesta.

Este archivo se encarga de varias variables de entorno y alias que cargará la Terminal una vez que se inicie, por lo que a menudo se desaconseja jugar con él. Sin embargo, podemos agregar nuestras funciones personales y personalizaciones justo antes de la línea que dice:

: place customisations above this line

. Me gustaría recordar que :es un shell especial incorporado y, por lo tanto, debe dejarse intacto.

Deshabilitar RIL

Aquí, definiremos una función personalizada radiooff, que luego se podrá llamar desde la Terminal a voluntad. El código es el siguiente:

# This function detaches a device from the cellular network
# Upon execution, a reboot must be performed
function radiooff {
 if [ "$(whoami)" != "root" ]; then
  echo "Error: must be executed as root."
  return 1
 fi

 if [ "$(getprop persist.radio.noril)" == "1" ]; then
  echo "Radio is already disabled."
  return 1
 fi

 setprop persist.radio.noril 1

 if [ "$(getprop persist.radio.noril)" == "1" ]; then
  echo "Radio is now disabled. Please reboot."
  return 0
 else
  echo "Error: unable to disable radio."
  return 1
 fi
}

. Me gustaría recordar que es vital colocar este código al final del archivo, pero arriba de la línea mencionada al comienzo de esta sección.

Habilitar RIL

Esta función, como explican los comentarios, es la inversa de la radioofffunción:

# This function connects a device back on the cellular network
# Upon execution, a reboot must be performed
function radioon {
 if [ "$(whoami)" != "root" ]; then
  echo "Error: must be executed as root."
  return 1
 fi

 if [ "$(getprop persist.radio.noril)" == "0" ]; then
  echo "Radio is already enabled."
  return 1
 fi

 setprop persist.radio.noril 0

 if [ "$(getprop persist.radio.noril)" == "0" ]; then
  echo "Radio is now enabled. Please reboot."
  return 0
 else
  echo "Error: unable to enable radio."
  return 1
 fi
}

. Al guardar las modificaciones, las funciones radioony radiooffestarán disponibles para su uso después de que se inicie o reinicie la aplicación CyanogenMod Terminal . El procedimiento para usarlos es simplemente ingresar el nombre de la función necesaria y entrar.

Puede ser obvio, pero la segunda solución no funcionará si el usuario usa una Terminal que no sea la de CyanogenMod.