Tres maneras de acelerar un iPhone 3G... y una cuarta

Como algunos saben, soy feliz usuario de un iPhone 3G, y si bien Apple se ha esmerado en mantenerlo usable por el mayor tiempo posible, con cada actualización de software se va poniendo un poco más lento. Entonces quise ver cómo se podía mejorar el rendimiento.

Antes que nada: ninguno de estos hacks para acelerar el iPhone tiene resultados muy dramáticos, aunque la suma de ellos puede resultar notoria. Si estás obsesionado con que el iPhone ande más rápido, no le pongas el iOS 4 y punto.

Pero si ya lo hiciste, hay varios buenos tutoriales de cómo hacer downgrade a 3.1.x que Google te ayudará a encontrar.

Personalmente, me gusta el iOS 4 por algunas mejores en Exchange y otros detalles, así que mi objetivo era sacarle el mejor partido posible sin hacer downgrade, y descubrí varias cosas interesantes:

1: activar la multitarea, pero no la de Apple

Es posible –luego de hacer Jailbreak [Google]encender o apagar a voluntad la funcionalidad multitarea de iOS 4, pero en las pruebas que he hecho me ha resultado mejor la multitarea mediante Backgrounder, disponible gratis vía Cydia. Es curioso que funcione mejor que la multitarea de Apple, pero no cabe la menor duda de que es así.


Para mantener el rendimiento bajo control y convertir la multitarea en una mejora y no un retroceso, se pueden tomar las sigiuentes medidas en Backgrounder:

  • configurarlo en Global/Off para que solamente las aplicaciones que queramos se establezcan en modo multitask,

  • agregar entradas en Override para cada aplicación que sí queremos que funcione en segundo plano y de apertura rápida: por ejemplo en mi caso lo tengo configurado para Echofon y los programas que reproducen audio.

El resultado es que Echofon se abre de manera casi instantánea, y al dejar la aplicación configurada para que no actualice automáticamente, cuando está en segundo plano no consume rendimiento del sistema.

El mismo concepto se puede aplicar a otros programas, aunque obviamente si dejamos muchos abiertas podríamos tener problemas. Precisamente por eso Backgrounder es mejor que la multitarea nativa de iOS 4, al permitir que sólo algunas aplicaciones específicas queden abiertas.

2: desactivar procesos innecesarios

Una manera más concreta de mejorar rendimiento es desactivar procesos en segundo plano o "demonios" (jerga Unix) que no cumplen un propósito que nos importe. Las instrucciones en detalle están en modMyi y en resumen consisten en borrar archivos que gatillan dichos procesos, en /System/Library/LaunchDaemons

Borré sin problemas los siguientes, que están bastante documentados y se pueden sacar con bastante seguridad. Recomiendo hacer lo mismo pero primero respaldarlos en alguna parte por si algo sale mal:
  • com.apple.aslmanager.plist (gestiona logs del sistema)
  • com.apple.chud.chum.plist (al parecer tiene que ver con CHUD: Computer Hardware Understanding Developer y no debería causar problemas salvo que estés usando herramientas de desarrollo de Apple)
  • com.apple.chud.pilotfish.plist (similar al de arriba)
  • com.apple.CrashHouseKeeping.plist (se ocupa de caídas del sistema)
  • com.apple.DumpPanic.plist (similar al anterior, informa a Apple de caídas)
  • com.apple.ReportCrash.* (se trata de cinco o seis procesos que monitorean e informan caídas)
  • com.apple.syslogd.plist (registra "eventos de sistema")
Aventurando un poco más también desactivé los siguientes:
  • com.apple.tcpdump.server.plist (al parecer habilita algún tipo de sniffer, lo eliminé sin problemas)
  • com.apple.mobile.profile_janitor.plist (NPI*, pero lo eliminé y todo siguie igual)
  • com.apple.mobile.storage_mounter (parece ser el encargado de montar volúmenes externos con el kit de conexiónes de Apple, si no tienes dicho accesorio no necesitas este proceso)
  • com.apple.stackshot.server.plist (NPI*, pero también lo eliminé y todo siguie igual)
  • com.apple.racoon.plist (para VPN, si no usas redes privadas virtuales puedes eliminar el proceso)
  • com.apple.AOSNotification.plist (proceso para MobileMe, si no usas dicho servicio de Apple puede eliminarlo)
  • com.apple.AdminLite.plist (al parecer detecta si el dispositivo se "queda pegado" y devuelve el control al usuario. Lo puedes eliminar y usar la combinación de teclas de encendido+home para hacer reset si el iPhone se congela alguna vez, cosa muy rara en iOS)
Quizás has leído que Spotlight (función de búsquedas que poca gente usa) hace más lento el iPhone y has desactivado todos los items en en Settings/General/Spotlight Search. Esto posiblemente baja el tamaño del índice, pero en realidad no desactiva el proceso. Lo puedes eliminar totalmente para ganar otro poco de rendimiento borrando el siguente archivo, también en /System/Library/LaunchDaemons:
  • com.apple.searchd
3: aumentar la memoria disponible

Por último –y mucho más arriesgado– hay dos medidas que pueden ayuda a aumentar memoria real y virtual.

Es posible liberar espacio y ganar algo de rendimiento desactivando paquetes de idioma que no uses. Esto se puede hacer a mano pero sería un trabajo de horas. En sinfuliphone hallé el siguiente script, que ejecutado en la raíz vía SSH deja sólo los archivos de interfaz de usuario para inglés y japonés. Si no tienes problemas en usar el iPhone en inglés te podría servir:
  • for file in `find . -type d -name "*.lproj" -not -iname "en*.lproj" -not -iname "ja*.lproj" -exec echo {} \; | sed -e 's/\.\///'`; do rm -vr ./$file ; done
Tardará un par de minutos. Si no sabes lo que es SSH ni lo que es la raíz, no lo hagas, y deberías hacerlo cada vez que actualices los programas.

Por otra parte y según me mostró Jose Luis Benavente, es posible activar la función de memoria virtual de OS X, que por defecto viene desactivada en el iPhone. Aunque hay otras maneras, yo lo logré agregando un archivo /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist

Este archivo enciende el proceso que gestiona la memoria virtual, lo cual es interesante porque el sistema operativo automáticamente relega a "disco" el contenido en RAM correspondiente a procesos de menor actividad, dejando la RAM real para procesos más activos y por lo tanto generando un posible incremento del rendimiento, pero sólo debería hacerlo cuando el uso de memoria sobrepase la memoria real.

Nota: todas estas mods requieren que se haya aplicado jailbreak. Hurguetear a este nivel –además de invalidar la garantía del teléfono– podría hacer que se borre toda la información contenida en el iPhone o incluso dejarlo en estado de "ladrillo", así que antes de meter mano lee bien las instrucciones que hay en la Web, respalda tus datos y prepárate para hacerte cargo si algo sale mal. Dicho de otra manera: no lo hagas si el iPhone no es tuyo, por ejemplo.

Otra nota: si bien experimenté con el iPhone 3G con iOS 4.0.2, estos trucos pueden servir también para aumentar el rendimiento en otros modelos de iPhone, lo cual podría entregar resultados espectaculares en los modelos 3GS y 4.

De particular interés sería apagar el modo multitarea nativo en ellos y reemplazarlo por Backgrounder para ver qué sucede. Para apagar la multitarea nativa en iOS 4 en un iPhone 3GS o 4 se puede abrir /System/Library/CoreServices/SpringBoard.app/N82AP.plist y justo después de donde dice multitasking cambiar el true por false. Similarmente, al revés se puede activar la multitarea nativa de iOS 4 en el iPhone 3, pero he comprobado que no vale la pena, Backgrounder funciona mucho mejor.

Los 3 trucos que he mencionado vienen de antes de la existencia de iOS 4 y se pueden aplicar en iPhone OS 3.x también, aunque no lo he comprobado.

Una vez hechas las modificaciones, es recomendable hacer el famoso "DHR" (por Double Hard Reset en inglés, significa reiniciar el teléfono mediante combinación de teclas dos veces seguidas). Hacerlo ejecuta utilidades de autocorrección del sistema, similar a lo que sucede cuando Windows y Mac OS X se auto-revisan al reiniciarse después de un error.

Llevo una semana usando el iPhone con algunas de estas modificaciones y siento que está tan rápido (o tan lento, según el punto de vista) como cuando le puse 3.x, lo cual es indudablemente un avance.

4: la manera más rápida de acelerar un iPhone

Existe una cuarta manera, ideal si estás muy frustrado con su rendimiento: 9.81 metros por segundo al cuadrado es la aceleración natural ejercida por la gravedad terrestre. Ello se aprecia bien desde un lugar algo, lo que puede resultar en un efecto más dramático. Pero antes de recurrir a dicha medida extrema, mejor regálalo a alguien que lo necesite y cómprate un modelo más veloz.

*NPI: Ni puta idea.

Ignacio Rodríguez de Rementería