Pinephone y problemas de temperatura

Hace tiempo ocurrió algo en la pantalla de mi pinephone: comencé a notar una especie de cristalización en el borde superior, y recordé que a un teléfono anterior que tuve le pasó lo mismo y al tiempo dejó de funcionar la pantalla.

delaminacion_pp.jpg

Figura 1: Delaminación en el pinephone, como se ve hay unas marcas en el borde superior de la pantalla.

El diagnóstico

Quería saber qué le estaba pasando al dispositivo, confirmar si era lo mismo que le había ocurrido al anterior teléfono y si a alguien más le había pasado. Comencé preguntando por el canal de matrix de pinephone (#pinephone:matrix.org) en donde una persona identificó el problema y dijo que tenía el nombre de delaminación. Este fenómeno ocurre cuando el líquido (llámese pegamento) que mantiene unida la pantalla LCD y el touch se separa, las causas pueden ser calor, humedad o el ingreso de algún tipo de solvente que lo desintegre. Esta persona además me apuntó hacia un hilo del foro en donde se discutía el asunto.

La solución

Definitivamente la única solución es el reemplazo de la pantalla si es que esta está a un nivel de deterioro que no permite el normal funcionamiento del dispositivo, pero como mi pantalla aún funciona y este deterioro parece estar en un punto estético descarté el reemplazo como solución. Según el foro sería bueno contactar a Pine64 para que se genere una gestión del asunto, evaluando si el deterioro aparece en algún lote específico de producción o si es un defecto del diseño y manufactura del mismo. Lamentablemente los comentarios son variados, en algunos mencionan que Pine64 se hace cargo de los costos de envío y proporciona una reparación (cambio de pantalla) sin cargo extra, pero en otros no aseguran que así sea el caso. Tomando en cuenta que por mi pinephone terminé pagando alrededor de 450 dólares debido a los costos de envío, impuestos y comisiones la idea de costear por mi parte los costos de envío no me apece, así que descarté también enviar el dispositivo. De todas formas planeo comprar una pantalla y un módulo de parlante+vibración (una historia que contaré otro día) en el futuro cercano.

Mitigaciones y buenas prácticas

En el mismo hilo mencionan que la causa más probable sea el calor generado por el SoC que queda ubicado justo detrás del lugar en donde aparecían los defectos estéticos en la mayoría de fotos que los usuarios compartieron. Un usuario propuso bajar los niveles de temperatura a los que funciona el dispositivo como medida de mitigación mediante el ajuste de los "treshold" del dispositivo, esto está documentado en la wiki de pinephone.

El problema aparece ahora, pues los pasos que aparecen en la wiki no son permanentes: los valores vuelven a los originales una vez que se vuelve a cargar el kernel, por ejemplo en un reinicio. Sin embargo los usuarios compartieron soluciones para que los cambios sean permanentes, o mejor dicho que los cambios se ejecuten en cada inicio del sistema sobreescribiendo los valores por defecto.

El usuario Fish proporcionó estos pasos para los sistemas que usan systemd pero al parecer en arch y manjaro no funciona pues sysfsutils no instala un servicio:

A small manual for noobs like me to lower the temperature values (please correct me if I made a mistake): on mobian: First install sysfsutils: sudo apt install sysfsutils

Check service status: systemctl status sysfsutils

Ensure the service is enabled at boot: systemctl is-enabled sysfsutils

Change the values (like the post above in millidegree Celsius), sudo password is needed:

echo -e "class/thermal/thermal_zone0/trip_point_0_temp = 45000\nclass/thermal/thermal_zone0/trip_point_1_temp = 65000\nclass/thermal/thermal_zone0/trip_point_2_temp = 90000" | sudo tee /etc/sysfs.d/throttling.conf

Restart sysfsutil: sudo systemctl restart sysfsutils

El usuario marcih expande la solución anterior precisamente para los sistemas que no generan dicho servicio:

Expanding the guide above by adding a more "modern" (read: "systemd-centric") way of doing the same thing using systemd's tmpfiles, something that Arch and Manjaro users need to do due to the lack of a sysfsutils init script or service unit. I'm sure there's also a way to do this using udev rules, but I'm not that familiar with those (yet Wink).

You'll want to create a configuration file in "etc/tmpfiles.d". Using the one-liner from the original post, we would have:

echo -e "w /sys/class/thermal/thermal_zone0/trip_point_0_temp - - - - 45000\nw /sys/class/thermal/thermal_zone0/trip_point_1_temp - - - - 65000\nw /sys/class/thermal/thermal_zone0/trip_point_2_temp - - - - 90000" | sudo tee /etc/tmpfiles.d/throttling.conf

Your "/etc/tmpfiles.d/throttling.conf" file should then look like this:

Code: w /sys/class/thermal/thermal_zone0/trip_point_0_temp - - - - 45000 w /sys/class/thermal/thermal_zone0/trip_point_1_temp - - - - 65000 w /sys/class/thermal/thermal_zone0/trip_point_2_temp - - - - 90000

Now either reboot your phone or run "sudo systemd-tmpfiles –create" to apply the settings.

¿Y qué pasa con los sistemas que no usan systemd como PostmarketOS? bueno, yo uso pmos y estoy familiarizado con openrc así que les traigo la solución para ese caso:

  1. Creamos un archivo llamado throttling.start (el nombre da igual pero tiene que terminar en .start) en la carpeta /etc/local.d:

    $ sudo touch /etc/local.d/throttling.start
    
  2. Dentro del archivo ponemos el script que queremos que se ejecute en cada reinicio:

    $ sudo nano /etc/local.d/throttling.start
    
    #!/bin/bash
    echo 55000  > /sys/class/thermal/thermal_zone0/trip_point_0_temp  # passive
    echo 75000  > /sys/class/thermal/thermal_zone0/trip_point_1_temp  # hot
    echo 100000 > /sys/class/thermal/thermal_zone0/trip_point_2_temp  # critical
    
  3. Marcamos el archivo como ejecutable:

    $ sudo chmod +x /etc/local.d/throttling.start
    

Con eso lo que hacemos es utilizar el servicio local de openrc para ejecutar el script en cada reinicio, dentro de la carpeta /etc/local.d hay un README que es buena idea leer.

Resultados

Luego de haber modificado los valores de temperatura hice una prueba y cargué el pinephone al 100%, le encendí todos los switches, lo conecté a wifi y a la red móvil y lo usé hasta que se acabó la batería. Cabe mencionar que durante la prueba usé PostmarketOS con Phosh con la batería limitada al 80%, pueden encontrar ese ajuste en la app de tweaks. Todos los días revisé la carga restante y noté que no se gastaba tan rápido como antes. Sin los valores cambiados de temperatura el pinephone tenía una autonomía de poco menos de 2 días, ahora logré verlo funcionar por lo menos 4 días y lo mejor es que durante ese proceso no se recalentó al nivel de deteriorar más la pantalla.

Y bueno, eso es todo el contenido del post. Recomiendo modificar los valores de temperatura lo antes posible en sus pinephones para evitar cosas como la delaminación y aumentar la autonomía (a costa de restringir un poco la potencia del no tan potente procesador) y si tienen alguna duda el foro de pine64 y sus canales de matrix/telegram son muy buena fuente de ayuda. También existe un canal en español! aunque no oficial, pueden encontrarlo en telegram como "PinePhoneES (no oficial)" (t.me/pinephone_es) y en matrix (bridge) como #pinephone-es:matrix.org. Saludos y gracias por leer :D