Doom sur l’adaptateur Lightning vers HDMI Apple

Il y a quelques jours, une vidéo amusante est sortie : Nyan Satan a lancé Doom sur l’adaptateur Lightning vers HDMI d’Apple.

C’est quelque chose que j’avais tenté de faire il y a plusieurs années en réalité, sans succès, et ça mérite quelques explications. La première chose à comprendre, c’est que l’adaptateur Lightning vers HDMI est un appareil sous iOS. Ce n’est pas très intuitif, il faut l’avouer. Quand Apple a sorti le Lightning, en 2012, un problème s’est posé : la prise en charge de la vidéo et de l’audio. Avec le vieux connecteur 30 broches, c’était assez simple : il y avait des broches pour l’analogique, et la vidéo pouvait soit passer en analogique (sur les vieux appareils, un signal S-Video), soit en numérique. A partir de l’iPad (le premier), Apple avait en effet reconfiguré certaines broches pour laisser du DisplayPort (une ligne seulement).

Avec le Lightning, c’est différent, il y a uniquement un signal numérique. La solution d’Apple était compliquée : un SoC ARM dans l’adaptateur avec une sortie HDMI, qui recevait de la vidéo compressée de l’iPhone. C’est schématiquement de l’AirPlay en local : l’iPhone compresse le contenu de l’écran en H.264, l’envoie en USB au SoC de l’adaptateur, qui décode et affiche le tout. Le premier problème, c’est que la qualité dépend largement de l’iPhone et que ce n’est donc pas une sortie sans pertes. En 2013, la qualité était vraiment mauvaise, elle s’est un peu améliorée avec iOS 8 et les iPhones plus récents. C’est lié à des améliorations de firmware, mais aussi au fait que les encodeurs des iPhone étaient meilleurs. Cette solution a continué à poser des soucis plus récemment : le firmware n’est pas dans l’adaptateur, mais dans l’iPhone. Donc dans certains cas, ça pose des soucis avec les vidéos protégées par exemple. Le truc, c’est qu’il faut que l’iPhone télécharge le firmware le plus récent sur les serveurs d’Apple, et ensuite l’envoie à chaque connexion dans l’adaptateur.

L’adaptateur contient un SoC et 256 Mo de RAM

Matériellement, c’est un SoC Samsung (S5L8747) équipé de 256 Mo de RAM. Il n’a pas de stockage local, le firmware est chargé en RAM à chaque fois (il y a juste de quoi démarrer la connexion). Question puissance, c’est un SoC avec un coeur Cortex A5 dont la fréquence n’est pas connue. Le Cortex A5 date de 2009 et c’est un coeur d’entrée de gamme destiné à remplacer l’ARM11, donc question puissance, on est du même ordre que l’iPhone original ou le 3G, a priori. Ou, si vous voulez, c’est probablement équivalent à un Raspberry Pi de première génération.

Doom sur l’adaptateur

On trouve des messages de John (Nyan Satan) sur le jailbreak de l’adaptateur dès 2019 et d’autres messages en 2021. Il a été jailbreaké il y a de nombreuses années (son nom de code est Haywire) et la question de lancer Doom dessus n’est pas nouvelle. On trouve aussi un article en russe sur le sujet qui date de 2020. J’avais un peu investigué sur le sujet, mais je ne suis pas assez calé pour compiler Doom pour une architecture que je ne connais pas et la connexion à l’adaptateur nécessite un peu de matériel tout de même.

Nyan Satan a sorti un outil de jailbreak plus moderne récemment, et il a donc décidé de lancer Doom dessus. Dans la vidéo, il y a le jeu qui tourne, mais c’est tout, pour une bonne raison : l’adaptateur n’a pas d’interfaces pour les E/S. Il n’y a pas de Bluetooth ou d’USB pour connecter un clavier, par exemple. Il explique dans les commentaires de la vidéo qu’il est possible en théorie de le faire via la connexion série.

Dernier point intéressant à noter, ce n’est pas possible avec un adaptateur USB-C vers HDMI, pour une raison simple : ça ne fonctionne pas de la même manière. L’USB-C a l’avantage d’avoir des broches reconfigurables, et donc la prise transmet directement du DisplayPort (comme le connecteur 30 broches). C’est donc une vraie sortie vidéo et pas du pseudo AirPlay en local.