Expandir la memoria disponible para aplicaciones del Samsung Galaxy S3

Gabolonte Blasfemus

SDs interna y externa en el S3Hace un tiempo hablábamos de como el Samsung Galaxy S3 (y posiblemente todo otro smartphone con Android 4.0 o superior) tiene una suerte de tarjeta SD interna y un slot disponible para otra externa, la primera se accede a través de la importantísima ruta /sdcard, y como no existe la opción de instalar o mover las aplicaciones a la memoria del teléfono, todas son instaladas por defecto ahí. Si insertamos una tarjeta microSD está será accesible bajo /extSdCard.

Lo que a simple vista parece genial (disponer de una SD interna y además la posibilidad de expandir con una externa en caso de quedarnos cortos de espacio) tiene un par de peros que nos desbaratan el entusiasmo: En el Galaxy S3 las aplicaciones no se pueden mover a la SD externa y, por supuesto, el tamaño de la interna no se puede expandir. Desconozco en cuantos dispositivos suceda esto, pero en otros no pasa este inconveniente, como por ejemplo en algunas tablets chinas donde se puede configurar el llamado almacenamiento para aplicaciones tanto en la memoria local como en la (verdadera) SD. Lo peor, es que el S3 que se vende en todos lados, y posiblemente el único disponible en las operadoras argentinas, viene con la capacidad más básica que es de 16 GB; existen modelos con 32 y 64 GB de SD interna, pero son difíciles de encontrar y posiblemente haya que vender un órgano para conseguirlos. Esto nos limita, sin posibilidad de escape alguna, a la capacidad interna del aparato a la hora de instalar aplicaciones.

En mi caso, creía que 16 GB son más que suficientes; de hecho nunca logré llenar los 8 de mi anterior Android. O al menos, eso pensaba hasta hace unos meses atrás, antes de instalar El caballero oscuro y Asphalt 7, que sumados a otros tantos juegos que tenía, me hicieron notar que el espacio libre se reducía a límites peligrosos, más teniendo en cuenta lo rápido que se consumen megabytes filmando en HD. Por supuesto, siempre puedo mover inmediatamente las fotos y videos tomados a la tarjeta externa, pero se vuelve una molestia que hay que estar tomándose con frecuencia.

Rompiendo barreras del almacenamiento interno, o haciéndole pito catalán a Samsung

Actualmente existen al menos dos soluciones a esta limitación de Samsung, y ambas implican contar con un S3 rooteado. Posiblemente existan otras que desconozca, tal vez a estas alturas ya existan ROMs alternativas que lidien mejor con este asunto, pero estas dos soluciones son particularmente viables, en particular la última si te interesa continuar con la stock ROM de tu S3. El único pero de la cuestión es el root, donde ya sabemos que se pierde toda garantía (a menos que pongas a cero el contador de flasheos, técnica que corre el riesgo de dejarte un carísimo pisapapeles…), pero si estás dispuesto a aceptarlo, o ya lo hiciste, no hay mucho más que obstaculice el camino a un S3 con más capacidad de almacenamiento. Vamos con los métodos.

El método extremo

Lo llamo así porque con este hack literalmente se le hace creer al S3 que la memoria interna es la externa, y viceversa. Esto significa que si tenemos un teléfono con 16 GB internos al que le colocamos una tarjeta microSD de 64 GB, con este método va a pasar a pensar que tiene una SD interna de 64 GB, mientras que le queda una SD externa de 16 que en realidad es la memoria interna del aparato. Esto hace que el almacenamiento interno sólo sea usado para contener a las aplicaciones, mientras que todos sus recursos (imágenes, videos, texturas de juegos, etc) serán almacenadas en la microSD externa, liberando así una cantidad de espacio importantísima. Este método, sin embargo, tiene algunos peros y requisitos importantes:

  1. Se requiere un kernel que soporte init.d
  2. El Samsung Galaxy S3 debe ser la versión internacional, el GT-9300
  3. Se recomienda flashear la rom y paso siguiente aplicar este método, no se recomienda para nada hacerlo sobre un teléfono con aplicaciones instaladas e información sin respaldar.

Inversión de las SD con ExtSd2InternalSd

Los pasos completos para realizar esta transformación, junto a los archivos que hace falta descargar, los podemos encontrar en el hilo oficial de XDA Developers. Lo bueno de este método es que una vez que lo hacemos nos olvidamos, pasamos a tener un teléfono con una capacidad interna dictaminada por la microSD que le hayamos puesto.

El método sutil y puntual

Este es el que por ser menos peligroso e intrusivo elegí para mi S3, y me dio excelentes resultados. Utiliza una técnica llamada directory binding, una de esas maravillas del mundo *nix, similar a cuando se monta una unidad en una ruta, sólo que en este caso montaremos una ruta en otra ruta.

Por ejemplo, podemos hacer un binding del directorio /sdcard/Android, en donde están almacenados los recursos de casi todas las aplicaciones, a una carpeta Android que hayamos creado en la microSD, accesible bajo la ruta /mnt/extSdCard/Android. Esto significa que cada vez que el sistema lea o grabe datos en la primer ruta, en realidad lo estará haciendo, sin saberlo, en la segunda. Significa que podemos tener esa carpeta vacía en la SD interna y dejar todos los datos en la externa, y Android seguirá creyendo que accede a la información en la interna.

Este método podemos aplicarlo tanto a nivel masivo, mapeando directamente /sdcard a /mnt/extSdCard, o a un nivel más específico, como en el caso anterior. En mi caso, sólo me interesa mover a la SD externa lo más grande, mientras que el resto no me importa que se quede en la interna, ya que tiene una mayor velocidad de acceso y grabación, y es por ejemplo una de las ventajas claves de la cámara del S3 que posiblemente se perdería si empezara a grabar en una microSD que a lo mejor no sea la más veloz del mercado. En mi caso encontré que con mover los recursos de los juegos de Gameloft instalados ya ganaba casi la mitad del espacio, y sólo tenía que mapear una ruta específica: /sdcard/Android/obb. ¿Suena bien? Suena aún mejor cuando vemos lo fácil que es de hacer:

  1. Diálogo para agregar un bindingCreamos en la microSD externa el directorio donde vamos a poner los datos del directorio original. Por ejemplo, para replicar la estructura en la SD interna, yo creé para los datos de Gameloft en la SD externa la ruta /Android/obb, que desde el teléfono es accecible como /mnt/extSdCard/Android/obb.
  2. Movemos todo el contenido dentro de la ruta original /sdcard/Android/obb (siguiendo el ejemplo) a /mnt/extSdCard/Android/obb. Esto va a tomar un tiempo si justamente tenemos muchos gigabytes almacenados.
  3. Cuando termine, instalamos la última versión disponible de la aplicación Directory Bind, que deberemos descargar desde su hilo oficial en (adivinen…) XDA Developers.
  4. Una vez instalada, presionamos Menú y elegimos Add new entry para agregar un binding o mapeo. Nos saldrá entonces un diálogo donde en el primer campo de texto debemos ingresar la ruta a la SD externa, o sea en donde tenemos los datos movidos ahora, y en el segundo la ruta original a la SD interna, o sea en donde se supone que deberían estar (pero de donde los movimos para liberar espacio). No hace falta tipear cada ruta, con mantener presionado cada campo se despliega un navegador de archivos donde podremos seleccionar fácilmente las ubicaciones.
  5. Dejamos destildada la opción Transfer files from target to data. Es para realizar automáticamente lo que ya nos ocupamos de hacer en el paso 2, y además está en fase experimental por lo que no se recomienda usarla para mover datos críticos o sin respaldo.
  6. Le damos finalmente al botón Add, y vemos como nos aparecerá listado el nuevo binding, con el icono de un disquete al lado, que puede tomar los siguientes colores:
  • Gris, cuando el binding no está activo.
  • Rojo, cuando el intento de binding falló.
  • Azul, cuando está esperando a que el medio esté disponible para entonces realizar el binding. Esto puede pasar momentáneamente, en particular al inicio del sistema o si se acaba de insertar o montar la tarjeta SD.
  • Verde, cuando el binding está activo y funciona correctamente.

Vista pricipal de Directory Bind

Yendo a Menú/Preferences, se puede tildar la opción Bind on boot, para que al iniciar el teléfono automáticamente se ejecuten los bindings cuyas casillas estén seleccionadas.

Bind on boot

Por supuesto, una aplicación que realiza este tipo de manejo en el sistema, como lo advertimos antes, requiere todo el tiempo permisos de root para funcionar, pero una vez otorgado funciona perfectamente, no sólo en un Galaxy S3 sino en cualquier dispositivo rooteado, e incluso con la ROM oficial del aparato. Tampoco se siente ninguna diferencia notoria de velocidad al cargar juegos cuyos recursos estén almacenados bajo este método en la tarjeta SD externa, aunque esto puede variar mucho de acuerdo a la velocidad de la misma.

Por supuesto, hay que tener cuidado con esto si montamos la tarjeta microSD como USB Mass Storage, pero esta genial aplicación también permite parar los bindings automáticamente en ese caso para luego volver a arrancarlos al finalizar la conexión USB.


Leave a Reply

Importante: Esta entrada tiene al menos un año y medio. Para saber si a alguien se le mueve un pelo por tu magnánima opinión te conviene suscribirte al feed de comentarios para este post o activar la opción de aviso por email.