Haywire

From The French Apple Wiki
Jump to navigationJump to search

Haywire

[edit | edit source]

Adaptateur numérique AV Lightning

Haywire est le nom de code des adaptateurs vidéo disponibles pour le connecteur Lightning. Ces adaptateurs exécutent un système d'exploitation embarqué basé sur XNU qui prend un flux vidéo compressé via Lightning et transcodifie le signal en un format adapté à un protocole de sortie vidéo standard. L'appareil iOS télécharge un firmware sur l'adaptateur lors de la connexion, qui démarre ensuite sur ce firmware et produit une sortie vidéo continue jusqu'à la déconnexion.

D'après le ChipID trouvé dans /System/Library/PreinstalledAssets/com_apple_MobileAsset_MobileAccessoryUpdate_haywire.xml, le SoC ARM utilisé est le Samsung S5L8747. Son numéro de pièce est H9TKNNN2GD. Il dispose de 256 Mo de RAM.

Il existe deux variantes :

Nom Nom interne Identifiant ApBoardID
Adaptateur numérique AV Lightning (HDMI) B137AP iAccy1,1 0x00
Adaptateur VGA Lightning B165AP iAccy1,2 0x02

Ces deux adaptateurs sont les seuls produits basés sur le Samsung S5L encore en vente et pris en charge.

Disponibilité et compatibilité du firmware

[edit | edit source]

Depuis iOS/iPadOS 16, le firmware Haywire préinstallé, situé à /System/Library/PreinstalledAssets, a été supprimé et doit être téléchargé au moment de l'exécution pour que l'adaptateur fonctionne. Lorsqu'il est correctement connecté et alimenté, l'adaptateur fonctionne également avec les appareils USB-C, bien qu'un message erroné indiquant que l'accessoire n'est pas pris en charge puisse apparaître. Il y a des rapports selon lesquels l'adaptateur ne fonctionne qu'une seule fois par restauration sur les versions iOS plus anciennes comme iOS 6 en raison d'incompatibilités entre les nouveaux firmwares et les anciennes versions d'iOS. La première fois, l'adaptateur utilise le firmware préinstallé, mais après le téléchargement du firmware mis à jour, il ne fonctionne plus.

Qualité et fiabilité de la sortie

[edit | edit source]

Il y a des discussions concernant la qualité de l'image de sortie des adaptateurs, car le firmware Haywire semble mettre à l'échelle une image de 1600×900 envoyée via Lightning vers 1080p, avec des artefacts de compression H.264 visibles. Un supposé ingénieur d'Apple a écrit en 2013 :

Airplay n'est pas impliqué dans le fonctionnement de cet adaptateur.

Il est vrai que le noyau sur lequel le SoC de l'adaptateur démarre est basé sur XNU, mais les similitudes entre iOS et le firmware de l'adaptateur s'arrêtent là. L'environnement du firmware n'exécute même pas launchd. Il n'y a pas de shell dans l'image, ni d'utilitaires (analogues à ce que nous appelions autrefois le « sous-système BSD » dans Mac OS X). Il démarre directement dans un démon conçu pour accepter les données entrantes de l'appareil hôte, décoder ce flux de données et le transmettre via les connecteurs A/V. Il existe un ensemble de modules du noyau qui gèrent le transfert de données à bas niveau et la sortie HDMI, mais c'est à peu près tout. Je souhaiterais pouvoir fournir plus de détails, mais je poste en anonyme pour une très bonne raison.

La raison de l'existence de cet adaptateur est que Lightning n'est tout simplement pas capable de diffuser un signal HDMI « brut » à travers le câble. Lightning est un bus série. Il n'y a pas de multiplexage astucieux des fils impliqué. Contrairement aux opinions exprimées dans ce fil, nous n'avons pas fait cela pour nuire au client. Nous l'avons fait pour déplacer spécifiquement la complexité de la partie « adaptateur » dans l'adaptateur lui-même, libérant le matériel hôte de toute préoccupation concernant ce qui est connecté à l'autre extrémité du câble Lightning. Si vous vouliez produire un adaptateur Lightning offrant, par exemple, un port GPIB (ne riez pas, je connais des gens qui font exactement cela), le seul support à implémenter sur l'iDevice serait logiciel, pas matériel. L'adaptateur GPIB contient tout le circuit Lightning -> GPIB pertinent.

C'est fondamentalement la même chose avec l'adaptateur HDMI. Lightning n'a rien à voir avec HDMI. Encore une fois, c'est juste une interface série à haute vitesse. Airplay utilise une technologie d'encodage matériel H.264 à laquelle nous avons déjà accès, donc ce qui se passe ici est que nous utilisons le même matériel pour encoder un flux de sortie à la volée et l'envoyer via le câble Lightning directement dans le SoC ARM découvert par les gens de Panic. Le protocole réseau Airplay lui-même n'est PAS impliqué dans ce processus. Les données encodées sont transférées sous forme de données paquetisées via le bus Lightning, où elles sont décodées par le SoC ARM et transmises via HDMI.

Ce système nous permet essentiellement de produire une sortie vers n'importe quel appareil sur la planète, quel que soit le bus de sortie (HDMI, DisplayPort, et toutes les inventions futures) en produisant simplement l'adaptateur pertinent qui se branche sur le port Lightning. Puisque l'appareil iOS ne se soucie pas du matériel connecté à l'autre extrémité, vous n'avez pas besoin d'un nouvel iPad ou iPhone lorsqu'un nouveau connecteur A/V arrive sur le marché.

Certaines personnes sont conscientes que la qualité pourrait être meilleure et d'autres travaillent dessus. Pour le moment, la qualité a été jugée suffisamment acceptable. Étant donné la nature dynamique du système (et le fait que le firmware est stocké en RAM plutôt qu'en ROM), des mises à jour seront disponibles dans le cadre des futures mises à jour iOS. Quand cela arrivera, je ne peux pas le dire pour des raisons anonymes, mais ces préoccupations n'ont pas été ignorées.

De plus, selon les avis des utilisateurs sur les adaptateurs, le matériel semble avoir un taux de défaillance inhabituellement élevé, où l'adaptateur cesse de produire une sortie vidéo. La raison de ces défaillances reste incertaine.

Liens externes

[edit | edit source]
  • Wikipédia : Connecteur Lightning