Utiliser un tuner PlayTV avec EyeTV sous Mac OS X

EyeTV, le programme d’Elgato pour regarder la télévision sur un Mac, est pour moi la meilleure solution du genre. Il a juste un défaut : il n’est pas aisé de le modifier pour supporter un tuner d’une marque qui n’est pas supporté officiellement. Démonstration.

J’ai plusieurs licence d’EyeTV, obtenues avec divers appareils, mais j’ai aussi un tuner TNT intéressant (car il se trouve à bon prix), le PlayTV de Sony. Il utilise une puce assez courante, et il existe des hacks sous Windows et Linux pour l’utiliser avec les pilotes d’un tuner Elgato EyeTV Diversity. Sous Mac OS X, personne n’avait visiblement réussi, mais c’est pourtant possible.

Ca marche

Ca marche

La raison principale vient d’EyeTV : sous Windows et Linux, l’astuce consiste simplement à ajouter les identifiants USB du PlayTV dans les pilotes, à la place de ceux de l’EyeTV Diversity. Comme les appareils utilisent les mêmes puces (et visiblement un design de référence), ça fonctionne. Sous Mac OS X, c’est compliqué : il n’y a pas de fichiers pour les pilotes, le fichier XML est directement dans le code de l’application EyeTV. J’ai bien essayé de modifier directement l’exécutable, mais impossible : dans ce cas-là, le programme plante au lancement. J’avais un peu laissé tomber, mais je me suis reposé la question récemment.

La solution consiste donc à remplacer l’identifiant du boîtier Sony. Pas en flashant le firmware (c’est peut-être possible mais un peu extrême) mais au niveau des pilotes. Un développeur, Andy Vandijck, propose en effet une série de petits pilotes qui permettent de modifier en direct les identifiants d’un périphérique USB, ce qui permet de faire reconnaître une webcam quelconque comme une iSight, un lecteur de cartes comme un lecteur de cartes Apple, etc. Je suis parti de celui dédié aux souris et je l’ai adapté.

Il faut donc les identifiants USB de l’appareil de base (Mac OS X les donnes dans les informations système) et ceux de l’appareil à imiter (généralement dans les pilotes officiels ou sur Internet). Attention à un point : l’OS va donner des valeurs en hexadécimale (0x1415 pour l’identifiant de Sony, par exemple) et le pilote attend une valeur en base 10 (5141). Je ne vous mets pas une copie du pilote déjà modifié (je ne sais pas si je peux le distribuer), mais en gros il faut mettre les identifiants du périphérique que l’on veut obtenir (EyeTV Diversity) dans la section après IOProviderMergeProperties et les autres dans la section principale. Si vous avez un problème, postez un commentaire ou envoyez-moi un message.

Sous Yosemite, il faudra aussi désactiver la validation des kexts et bien évidemment nettoyer les caches. Normalement, après un redémarrage, EyeTV devrait se lancer et détecter un EyeTV Diversity. Je suppose que ça marche avec d’autres appareils si vous trouvez des appareils basés sur les mêmes puces.

EyeTV

EyeTV