Un largo camino hacia Linux con un cable Suzy-Q casero y firmware BIOS / Sudo Null IT News

¡Hola Habr! Este es Kirill de MTS Digital. Después de que logré enseñarle a Chromebook a ejecutarse desde una unidad flash, de lo que hablé en la publicación “Chromebook: la vida después de EOS”, comenzó a parecer que no tenía sentido actualizar a un firmware alternativo. Pero después de otro intento de instalar Linux, noté un punto interesante: la utilidad inxi mostraba sólo los números del 0 al 9 en lugar del número de serie.

También hay algunos matices técnicos más: algunas distribuciones de Linux se negaron a detectar correctamente la resolución de la pantalla y Gentoo se congeló cuando se inició desde una imagen mínima. Sugerí que es probable que BIOS/UEFI esté interfiriendo con el uso normal de sistemas operativos alternativos. Y como se vio más tarde, así es. Entonces decidí hacer el firmware. Parecería algo elemental: hay un guión y guías especiales en Internet. ¿Qué podría salir mal? Hablé de esto debajo del corte.


Antes de pasar al tema del post, déjame recordarte que ya escribí sobre mi Chromebook:

  1. Chromebook: la vida después de EOS

  2. Estamos buscando un reemplazo adecuado para ChromeOS para un Chromebook obsoleto. Algunos experimentos interesantes


Tratar de encontrar una solución sencilla a un problema.

Primero, decidí estudiar las experiencias de otras personas: leer foros y ver videos en YouTube. De ellos, en términos generales, surgió el siguiente cuadro. BIOS/UEFI en dichos dispositivos se divide en dos partes. El primero se puede cambiar fácilmente a cualquier cosa, lo cual ya hice. Pero la segunda parte tiene protección contra escritura, que se puede implementar de diferentes maneras, desde desenroscar un perno especial hasta comprar un cable de depuración Suzy-Q: le permitía ingresar a la consola de depuración y desactivar la protección mediante programación desde allí.

Cuando desarmé el Chromebook, examiné cuidadosamente la placa base; no encontré ningún perno para quitar la protección. Esto significa que la protección se implementa de manera diferente. en el sitio web MrChromeBox.tecnología Hay una sección para dispositivos compatibles. Frente a mi modelo había dos casillas de verificación, lo que significa compatibilidad con el flasheo, tanto parcial como total. Y se indicó Cr50 (batería) como método para eliminar la protección. En el mismo recurso hay seccióndonde se describe detalladamente la secuencia de pasos para desactivar la protección:

  1. Desactiva Chromebook.

  2. Desconéctelo de la fuente de alimentación.

  3. Retire la cubierta inferior.

  4. Desconecte la batería.

  5. Vuelva a colocar la tapa.

  6. Conéctelo a una fuente de alimentación: al menos 45 W.

Una vez completado el proceso de actualización mediante el script, haga todo en orden inverso, reemplazando la batería y volviendo a ensamblar el Chromebook. Parece algo simple, pero tan pronto como desconecté la batería y volví a armar todo, el Chromebook simplemente no respondió al botón de encendido. Después de leer varios foros, me di cuenta de que hay modelos que generalmente no están diseñados para funcionar únicamente con una fuente de alimentación. En mi memoria, mi viejo MacBook Air se comportaba así y luego tuve que comprar una batería adicional: sin ella simplemente no encendía.

Para ser honesto, también pequé con la fuente de alimentación. El original se desperdició hace mucho tiempo y en su lugar uso GaN de 65W de Xiaomi. Hay mucha energía allí, pero asumí que la fuente de alimentación original de alguna manera se comunica con el controlador dentro del Chromebook y permite (o no permite) que se inicie sin batería. Bien, voy a Amazon y pido una fuente de alimentación original; afortunadamente, esto es económico y se entregará rápidamente. Pero mientras estaba en camino, decidió buscar un camino alternativo.

Suzy-Q

La opción más prometedora parecía ser comprar o ensamblar el cable Suzy-Q (Suzy-Qable). Pero resultó que la empresa SparkFun dejó de producirlos en 2021 y las raras copias que quedaron a la venta costaron una cantidad insuficiente de dinero. Existe una segunda opción: ensamblarlo usted mismo utilizando un módulo USB tipo C, donde cada línea está enrutada para facilitar la soldadura:

Pedí estos módulos en Aliexpress hace mucho tiempo, y todo este tiempo estuvieron esperando entre bastidores. Todo lo que queda es encontrar el esquema, pero resultó que el propio Google al corriente es para todos:

Soldé la primera versión del cable literalmente de rodillas, pero como no tenía resistencias del valor requerido, tuve que usar una conexión en serie de varias. Lo comprobé con un multímetro y parecía funcionar. Tenga en cuenta que este cable solo funciona en un puerto USB-C (el izquierdo en mi modelo) y solo en una posición. Si el cable está al revés, nada funcionará.

Bien, lo probé, lo monté, lo conecté. En una posición no hay emoción. Pero cuando lo conecté por la parte trasera, obtuve un efecto inesperado: el Chromebook se congeló estúpidamente y se reinició. Quedó claro que había cometido un error en alguna parte y la protección salvó el puerto USB de un cortocircuito. Por si acaso, decidí conseguir resistencias del valor requerido y fui a la tienda de radios local. Tomé otro módulo, pero antes de soldar decidí asegurarme de que el circuito fuera correcto. E inmediatamente me encontré hilodonde los participantes discutieron solo esta pregunta:

Resultó que en mi placa estos dos contactos están al revés, más precisamente, las marcas de los contactos no son para USB-C Macho, sino para USB-C Hembra. Uno de los participantes escribió que resolvió el problema, incluso con un pinout más simple:

  • A5: D+;

  • B5: D-;

  • A8: resistencia de 22K a VCC;

  • B8: resistencia de 56K a VCC.

En su dispositivo ni siquiera era necesario conectar los puntos VBUS y GND. Bueno, está bien, hago lo mismo, volteando A8 y B8. Por favor, no critiquen la calidad de la soldadura, la soldamos con lo que teníamos a mano:

Me conecto, no se reinicia nada, pero no sucede nada. Recuerdo que el enchufe sólo funciona en una posición, le doy la vuelta… y de nuevo se hace el silencio. Hubo errores en los registros de dmesg que indicaban que era imposible reconocer correctamente el dispositivo conectado. Esto quiere decir que tendremos que volver a crear el esquema completo. Pero solo me quedaba un módulo y decidí dejar de lado esta idea por ahora. Un poco más tarde, finalmente soldé la versión final, pero nuevamente aparecieron los mismos errores sobre la imposibilidad de determinar el tipo de dispositivo USB. Callejón sin salida otra vez.

De hecho, si Suzy-Qable funcionara correctamente, me daría acceso a la consola CCD (Closed-Case Debug) y con un comando podría quitar la protección. Pero, por desgracia, volví a la idea de que es necesario quitar la protección desconectando la batería. Luego me llegó la fuente de alimentación original y ese mismo día volví a desmontar el Chromebook. Después de desconectar la batería, intenté arrancarlo, como indica la guía. Pero me decepcionó: el portátil no arrancaba sin batería.

manera extrema

Entonces comencé a considerar mis opciones. Puedes intentar nuevamente hacer un cable Suzy-Q simplemente en una placa, pero en ese momento no tenía una longitud de peine adecuada. Entonces me vino a la mente el pensamiento: ¿qué pasa si desconectas la batería mientras la fuente de alimentación está conectada? Lógicamente, si algo le sucede al controlador de la batería durante el funcionamiento, entonces el circuito de carga debería entrar en modo de falla. Pero al mismo tiempo continúa trabajando, brindando al usuario la oportunidad de guardar los resultados del trabajo y apagar el dispositivo de la forma habitual. Después de esto, por supuesto, el dispositivo no se encenderá.

Sí, la idea es peligrosa, pero este es mi dispositivo y estaba mentalmente preparado para el hecho de que fallaría por completo. Por lo tanto, después de quitar la tapa trasera y conectar la fuente de alimentación, saqué la batería del conector con un movimiento preciso. El indicador de carga, como esperaba, parpadeó en naranja, indicando una falla de la batería, y el inductor de energía zumbó desagradablemente al borde de lo audible. El Chromebook siguió funcionando y, sin perder un minuto, inicié el script de actualización.

Después de un par de segundos, vi que la broma fue un éxito y la protección estaba desactivada. El script me advirtió un par de veces que no podría volver a ChromeOS después de este procedimiento, por si acaso, me vi obligado a conectar una unidad flash e hice una copia de seguridad del volcado en ella; Después de eso, comenzó el flasheo y el sistema me informó que podía reiniciar. Por supuesto, después de apagarlo, el Chromebook simplemente se apagó y esperó hasta que volviera a conectar la batería.

Después de devolver la batería a su lugar, conecté la fuente de alimentación y, he aquí, ahora en lugar de la pantalla blanca del cargador de arranque de ChromeOS había un conejo, el logotipo también conocido como LinuxBIOS. arranque central:

Además del hecho de que tenía acceso completo al BIOS, intenté ejecutar el disco de instalación de Gentoo y se inició sin problemas. Otras distribuciones, como Debian 12 y Ubuntu 22.04, ahora detectan correctamente la resolución de la pantalla al inicio. Todos los problemas fueron resueltos. Solo quedaban un par de preguntas que me perseguían: ¿qué tipo de Cr50 es este?

¿Qué tipo de Cr50?

Puedes buscarlo fácilmente en Google aquí. Cr50 es el nombre del firmware del controlador CROS EC (Embedded Controller). Pero no estaba claro exactamente qué tipo de controlador era este hasta que encontré presentación en pdf Chip de seguridad de Google H1. El documento en sí se eliminó en 2021, pero gracias a Internet Archive, aún se puede ver a través de Wayback Machine.

Resultó que dentro del Chromebook en realidad hay otra computadora basada en ARM SecurCore SC300:

Fuente de la imagen

En cuanto a la velocidad, esta cosa es bastante lenta. En los Chromebook, su frecuencia de reloj es de sólo 24 MHz, pero hay muchas cosas ligadas a ello. Juzgue usted mismo:

En primer lugar, garantiza el funcionamiento del mecanismo de arranque del sistema operativo verificado, actuando como un TPM. En segundo lugar, está ligado al trabajo de la consola de depuración, el mismo CCD. En tercer lugar, puede indicar que se apague la batería si es necesario y también garantizar que todos los sistemas Chromebook se reinicien por completo. Y, por supuesto, es esto lo que protege la unidad flash BIOS/UEFI SPI para que no se sobrescriba.

Además, la implementación del Google Security Chip H1 permite que pueda funcionar como una clave de seguridad de hardware U2F, es decir, utilizada para la autenticación de dos factores. En definitiva, este maravilloso chip controla completamente el sistema, viviendo su vida invisible dentro de los dispositivos basados ​​en ChromeOS. Su único punto débil es su dependencia de la batería conectada. Esta es la razón por la que, una vez desconectada la batería, el chip ya no podía proporcionar protección contra escritura a la unidad flash SPI. Esto hizo posible actualizar allí sin problemas firmware de terceros.

En lugar de una conclusión

Alguien dirá que sacar la batería “con ánimo de lucro” es una especie de atropello a la tecnología. Probablemente era posible seguir intentando desactivar la protección mediante CCD. Pero en mi caso, este riesgo estaba justificado, ya que el Chromebook no está diseñado para funcionar únicamente con fuente de alimentación sin batería.

Para Chromebooks de otros proveedores, este problema no será relevante en absoluto. He visto muchas menciones en línea de que sus Chromebooks arrancaban bien sin batería y funcionaban silenciosamente. Bueno, muchos lograron ensamblar un cable Suzy-Q que funcionara y conectarlo a la consola CCD.

¿Valió la pena el juego? Definitivamente sí. Ahora mi Chromebook se ha convertido en una computadora completa en la que puedes instalar de forma segura la última versión de Linux y usar cualquier aplicación sin restricciones. Por cierto, toda esta publicación se escribió íntegramente en él: un pequeño Chromebook compacto que ha estado cumpliendo sus funciones con regularidad durante siete años. ¡Así que no me arrepiento de nada!

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *