Une histoire de DRM : comment regarder Netflix sur un Mac Apple Silicon sous Linux ?

Pierre Dandumont |

Dans un long sujet, David Buchanan explique sur son blog sa quête pour tenter de faire quelque chose qui peut sembler naturel à beaucoup d'entre vous : regarder Netflix. Et avec une plateforme un peu exotique, un Mac sous Asahi Linux, ce n'est vraiment pas évident pour un résultat qui — nous le verrons — n'est pas parfait.

Une histoire de DRM

Le problème principal — expliqué dans le post — vient du fait que Netflix (tout comme Spotify, Amazon Prime Video et d'autres) se repose sur des DRM pour permettre la lecture des vidéos. Comme l'explique l'auteur, on peut ne pas aimer les DRM mais ils existent et la présence de standards pour ces derniers est un avantage dans certains cas : ils permettent de lire légalement les contenus.

Widevine, le DRM de Google.

Sous GNU/Linux, Netflix passe par les DRM Widevine de Google. Il en existe d'autres — Safari sous macOS ou Edge sous Windows n'emploient pas Widevine —, mais c'est obligatoire ici. Ce qui nous amène au premier problème : officiellement, seule la version x86-64 de Google Chrome prend en charge Widevine sous GNU/Linux. Ce n'est pas anodin : c'est aussi ce qui bloque visiblement la version ARM de Chrome pour Windows.

Dans les faits, Chrome (x86-64) passe par un blob, c'est-à-dire un morceau de code compilé qui n'est pas open source, ce qui permet à Firefox — toujours pour les machines x86 — de prendre en charge les DRM. Mais ce blob n'existe pas officiellement pour les machines ARM 64 bits.

Mais comme l'auteur l'explique, il existe des plateformes ARM qui acceptent les DRM et donc Netflix : les Chromebooks et les Raspberry Pi. Google fournit en effet le blob en question dans les Chromebooks, et il est possible de l'extraire pour l'utiliser sur une autre machine. C'est a priori la méthode employée par la fondation qui gère les cartes Raspberry Pi pour assurer la compatibilité avec Netflix.

Il y a encore un petit problème ici : le blob a été pensé pour Chrome OS qui ne fonctionne pas exactement comme une distribution GNU/Linux classique. Il faut donc prendre en compte les bizarreries de l'OS, et compiler Chromium — le pendant open source de Chrome — pour qu'il prenne en compte les DRM, ce qu'il ne fait pas par défaut.

Si vous avez une machine sous GNU/Linux qui n'est pas un Mac, ça devrait fonctionner. C'est compliqué, mais possible. Mais ce n'est pas terminé sur les Mac. Asahi Linux fonctionne en effet avec des pages de 16 ko pour la mémoire, alors que le blob attend des pages de 4 ko. Pour expliquer rapidement, il s'agit de la taille minimale pour l'adressage de la mémoire vive, et une bonne partie des systèmes se repose sur des pages de 4 ko. Cette partie est très technique dans l'article mais en résumé, le blob accepte de s'exécuter après une modification qui ne touche pas au code lui-même.

Une image proposée par l'auteur du post.

Netflix en HD

Vous pourriez vous dire « Là, ça doit être bon ». Mais en fait, non. Premièrement, il faut modifier l'User Agent du navigateur, c'est-à-dire l'identifiant qu'il emploie. En effet, Netflix ne va utiliser le blob de ChromeOS que s'il détecte ChromeOS. Mais même dans ce cas, la définition est bloquée en 720p. La raison vient du DRM : le Widevine de Google définit plusieurs niveaux de sécurité, L1, L2 et L3. Le niveau L1 — le plus sûr — repose sur une implémentation matérielle alors que le L3 effectue toutes les tâches de façon logicielle. Bien évidemment, dans notre cas de figure, la machine est uniquement certifiée L3.

Le choix d'afficher une image en 720p dépend de Netflix et plus généralement du fournisseur : certains ne fournissent même que de la SD dans ce cas de figure (c'est le cas sous Android, qui passe par une version différente de Widevine). L'affichage en 4K, lui, nécessite un autre DRM ou une certification L1. Mais ce n'est pas tout à fait vrai : Netflix peut envoyer du 1080p dans ce cas de figure. Cette possibilité n'est prévue que pour les machines sous ChromeOS, mais des extensions permettent de forcer ce mode sur une version classique de Chrome.

Sous macOS, il est possible d'afficher en 4K.

Est-ce vraiment fini ? Pas totalement. Le passage en 1080p avec un DRM Widevine L3 possède un défaut : le décodage de la vidéo s'effectue de façon logicielle, sans passer par l'accélération matérielle. Ce n'est pas réellement un souci sur un Mac Apple Silicon, mais c'en est un sur des machines moins puissantes et c'est probablement la raison de la limitation au 720p. Sur un Raspberry Pi un peu ancien, par exemple, le 1080p est inutilisable.

La conclusion de tout ceci ? Tenter de binge watcher une série Netflix sur un Mac Apple Silicon sous GNU/Linux n'est pas une partie de plaisir, mais ça reste possible de façon légale. C'est tout le point de la démonstration : même si certaines techniques employées ressemblent à du bricolage, le code n'est pas modifié.

Accédez aux commentaires de l'article