8. Juli 2024

DRM på Linux og Android (1. del)

Okay, dette er ikke en “sådan gør du”-tutorial, for DRM er ikke et område, jeg har rodet ret meget ved, og der er ikke noget entydigt svar på, hvordan du får DRM-understøttelse til at virke for netop din type hardware. Så du skal betragte dette opslag som et “nørden udforsker” i bedste Indiana Jones-stil.

Jeg ser film på mit TV, via Googles proprietære Chromecast, så jeg har ikke rigtig bakset med DRM… før nu. Men det slår mig, at mange Linux og Android-distributioner har forskellige tilgange til afvikling af DRM-beskyttet materiale. Nogle har fuldstændig support, andre basal eller slet ingen (og som det skal vise sig, så spiller hardwaren en stor rolle).

Android-kernen er principelt set en heftigt modificeret Linux-kernel - som Google vistnok har lovet at bringe tættere på mainline Linux-kernel’en med tiden. I dette opslags perspektiv giver det dog bedst mening at omtale de to forskelligt, da de har hver deres økosystem.

2025 - the year of the Linux desktop?

I og med, at jeg forventer, at en del mennesker vil afprøve Linux, når Microsoft stopper Windows 10s support i 2025, så må jeg hellere prøve at dykke ned i, hvordan man får DRM-understøttelse til at spille på Linux, Android og andre platforme, så vi måske kan redde folk fra at smide deres gamle fungerende computer på lossepladsen.

Microsoft dikterer naturligvis ikke noget direkte, men når de kunstigt øger hardwarekravene ift. den nyere Windows 11 og med tiden stopper sikkerhedsopdateringerne til Windows 10, så skaber de et kunstigt behov, som tvinger folk til at opgradere. Her er det jo så, jeg vil gentage, at jeg synes folk skal lege med Linux og overveje, om deres behov kan dækkes af dette frie og åbne vidunder.

Det er dog ikke uden forhindringer, og her kommer en af dem:

DRM og streaming

Streamingtjenester såsom Netflix og Amazon Prime bruger Google Widevine DRM til at beskytte sit indhold mod kopiering. Det stiller nogle krav til ens udstyr. Widevine har forskellige lag af beskyttelse. L1, L2 og L3. L1 er den mest restriktive, den der gør, at du kan se FullHD og 4K-indhold, som kræver “TrustZone”-support i processoreren på dit udstyr. Det har det meste moderne hardware, det er på softwaresiden, det halter.

Android Authority skriver:

To meet security Level 1, all content processing, cryptography, and control must be performed within the Trusted Execution Environment (TEE) of the device’s processor. This is to prevent external tampering and copying of the media file. All ARM Cortex-A processors implement TrustZone technology, creating a hardware separation that allows a trusted OS (such as Android) to create a TEE for DRM, and other secure applications.

https://www.androida … ne-explained-821935/

Kan du slet ikke se DRM-beskyttet materiale i HD og UltraHD på din Linux- eller Android-box, så er det fordi din distribution mangler Widevine L1-certificering.

Kan du kun se indhold i SD-kvalitet, så kører din distribution Widevine niveau L3, og du må så se medieindhold, der ligner LEGO-klodsgrafikken fra Minecraft. Det fungerer måske på mobiltelefoner, men er ikke så holdbart til mediestreaming på dit TV.

Hvordan ser det ud på Linux?

Google Chrome, ingen problemer.
Understøttelsen burde være bagt ind i browseren.
Virker det alligevel ikke, så prøv at se om libwidevine mangler.

Folkene bag Brave-browseren anbefaler, man finder Widevine-filerne i en understøttet distro, som f.eks RaspberryPi OS
https://support.brav … RM-protected-content

Ifølge Mozilla, så understøtter Firefox Widevine på 64-bits Linux-udgaver
https://support.mozi … et-indhold-i-firefox,
hvis du har problemer med afspilningen, så se efter om der er sat flueben i “Afspil DRM-beskyttet indhold” inde i indstillingerne. Virker det stadig ikke, kan det ske, at du skal hente “libwidevine” fra din distros pakkerepository. Det kan hedde noget forskelligt, så helgardér ved at søge på “widevine”.

Projektet “Ungoogled Chromium” kaster håndklædet i ringen ift. DRM og anbefaler, at man henter Google Chrome:
https://ungoogled-so … ed-chromium-wiki/faq

Raspberry Pi OS og Chromium ser ud til at være understøttet (tester i 2. del.) - så burde det også virke med Chromium på andre platforme med lidt tweaks af kildekoden. Chromiums kildekode er dog en ordentlig motherf… på adskillige gigabyte, så jeg hopper elegant over den del, selvom det kribler i fingrene for at prøve.
https://forums.raspb … ewtopic.php?t=347736

Det er dog lidt bekymrende at se, at man skal “himstregimse” en fungerende distribution sammen, og jeg tænker at mange ville være irriterede over at skulle igennem disse trin.

Hvad med Android?

På Android er det lidt mere mudret. Googles Android og ARM-processorerne sidder hårdt på markedet for diverse dedikeret streaminghardware, så har din hardware en 64-bit ARM CPU (armv8/aarch64), så er du dækket ind. Alle moderne Qualcomm og MediaTek-CPU’er benytter ARM-kerner, og de burde derfor også virke.

Til syvende og sidst handler det derfor om, hvorvidt Widevine er aktiveret i Android-distributionen, du bruger. Og som om TrustZone-platformen ikke er sofistikeret nok i forvejen, så spiller status på dit udstyrs bootloader også en rolle.

På Reddit ser det ud som om, at Google-certificerede Android-udgaver virker “ud af boksen”, mens der er problemer med forskellige Android-distro forks a’ la LineageOS: Reddit-tråd: Does Netflix HD work in LineageOS. En bruger “driverdis” nævner:

L1 only works on stock roms that went through Google’s Widevine L1 certification process. On some phones (looking at you OnePlus) this drops to L3 when the boot loader is unlocked.

Det ser dermed ud til, at man må “sluge nogle kameler”, når man kører en åben ikke-kommerciel udgave af et operativsystem. Men hvor vidt rækker problemet egentlig? Det vil jeg prøve at kigge lidt på i næste del, for jeg har tilfældigvis en lille Raspberry Pi, der laver ingenting, og jeg ved, at den er et yndet omkostningseffektivt mediecenter for mange.

Jeg graver videre :-)