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?
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.
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 .
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" .
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 0
en lugar de a 1
. Como antes, es necesario reiniciar.
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.
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.
Esta función, como explican los comentarios, es la inversa de la radiooff
funció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 radioon
y radiooff
estará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.
Grimorio
Grimorio