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 :-)

3. Maj 2024

Ubuntu Linux 24.04 LTS udgivet

Lidt “late to the game”, men bedre sent end aldrig, ik’? ;-)

En af de ting, der undrede mig mest, da jeg var ny Ubuntu-bruger var, at jeg aldrig fik besked med det samme om opgraderingen via app’en “Softwareopdatering”, når der kom en ny Long Term Support-udgave. Det er der en årsag til:

LTS-udgaverne er til dem, der vægter stabilitet over nye features.

Hvis du har sat “Softwareopdatering” til kun at gøre dig opmærksom på nye udgaver ved hver LTS-udgivelse, og du sidder med den gamle Ubuntu 22.04 LTS, så vil du først blive gjort opmærksom på den nye udgave, når det første bugfix-release 24.04.1 LTS kommer d. 15. august 2024. Det giver Canonical tid til at luge ud i de fejl, der evt. har været ved udgivelsen i april 2024.

Bruger du Ubuntu 23.10 (Mantic Minotaur), skulle du gerne have fået besked om opgraderingen allerede nu, evt. kan du skrive

sudo do-release-upgrade

i terminalen, for at igangsætte installationen manuelt (husk som altid backup).

Update: Opgraderingen gik fint. Men jeg skulle faktisk bruge

sudo do-release-upgrade -d

for at tvinge en opgradering frem. ‘-d’ bruges normalt til udviklingsudgivelser, men downloaden identificerer sig som den fulde 24.04 LTS, så den skulle være god nok :) Under opgraderingen vil updateren spørge, om den skal erstatte nogle eksisterende konfigurationsfiler. Har du lavet manuelle ændringer i de pågældende filer, er det en god idé at kigge dem igennem, ellers kan du roligt lade updateren overskrive de eksisterende.

Links

Ubuntu: Noble Numbat Release Notes

9. December 2023

Befri din mobil: OpenAndroidInstaller

På Mastodon faldt jeg lige over Open Android Installer, som gør det lettere at installere et fællesskabsdrevet operativsystem på din Android-mobil. Jeg har selv med stor succes kørt LineageOS på en gammel OnePlus One, indtil jeg kom til at sætte min store røv på den, og en del af skærmens touchfunktion holdt op med at virke. Den fungerer dog stadig som testenhed, her 10 år efter modellen kom på markedet. :-)

Disclaimer: Brug af OpenAndroidInstaller er ikke helt uden risiko for at brick’e din telefon, så den ikke virker, så alting er naturligvis på eget ansvar. Mit råd er, at prøve det af på en gammel mobil, inden du kaster dig ud i noget vildere. Held og lykke med eksperimenterne!

Bedre producentsupport, men…

Ret skal være ret, mobilproducenternes support er blevet markant bedre med årene, men de har stadig et attentionspan som en 2-årig (because profits), og enten dropper eller neddrosler deres fokus på gamle mobilenheder, når de udgiver nye, så det varierer en del, hvor mange softwareopdateringer, du kan forvente at få. Det er et gigantisk ressourcespild, at de tvinger dig ud i at skulle købe ny telefon, uden at der er et egentligt behov - det siger lidt sig selv, at kloden ikke kan bære det pres.

Upatchede, gamle mobiler er en sikkerhedsrisiko

Der er bestemt også et sikkerhedsaspekt: Enhver upatchet mobil bærer potentielt en risiko for at indgå i et botnet, der f.eks kunne have til formål at bringe internetservere i knæ ved at overbebyrde dem med trafik (DDOS-angreb). Hvis ikke det er incitament nok til at holde en mobil opdateret, hvad er så?

Jeg forstår godt, at man som producent måske ikke synes, det er skideskægt at skrive kode, der holder en tudsegammel mobiltelefon opdateret, men som verdenssituationen ser ud i dag, med geopolitiske spændinger alle vegne, så er det nødvendigt. Idéelt set var sikkerhedspatches bare noget, man fik automatisk, på daglig basis, ligesom på Linux og BSD’erne. Selvom Android-kernel’en er en heftigt modificeret Linux-kernel, så man kan ikke bare smaske en sikkerhedspatch beregnet til Linux derpå, desværre. Det er dog vist noget, Google arbejder på at løse indenfor en årrække, ved at bringe Android tættere på mainline Linux-kernel’en.

Halløj, serviceøkonomi

Vi bevæger os støt og roligt mod serviceøkonomiens totaldominans, hvor vi betaler alt via abonnementer (tro endelig ikke, jeg er fan, for det betyder bare, at der er flere ting, man kommer til at leje “brugsretten” til…). Så hvis du insisterer på, at det er mobilproducenten, der skal stå for din telefonens opdateringer, så burde det være muligt at tegne en slags forsikring for at få opdateringer i hele ens telefons levetid, hvis ikke en producent yder servicen af sig selv.

Open Source-fællesskabet samler op

LineageOS er et eksempel på et aktivt udviklet mobiloperativsystem drevet og vedligeholdt af opensource-fællesskabet. OS’et udspringer af Googles eget Android Open Source Project, så du får oplevelsen af Android som du kender den, men uden Googles apps som standard - du bør dog stadig vælge at installere GApps, såsom Google Play Services oveni, da den danske stat bygger en stor del sin IT-infrastruktur på IT-mastodontens teknologi, så for ikke at stå med håret i postkassen ift. f.eks MitID og Rejsekort-app’en, så kommer du næppe uden om Google Play/Google Play Services.

Måske får vi en dag mulighed for at købe flere rene Linux-mobiler med ulåste bootloadere á la PinePhone, men indtil da er dette den bedste løsning.

Link:
https://openandroidinstaller.org/

Level 9000: Ægte Linux på din mobil

Er du parat til ægte Linux-oplevelse, så kan du faktisk installere den ægte vare på din telefon (se i oversigten på nævnte websites om den er understøttet):
Ubuntu Touch, med samme type installer, eller hvis du er parat til gå fuld hardcore: PostmarketOS. Vær dog opmærksom på, at MitID-app’en formentlig ikke virker, ej heller med Anbox (Android emulator). Du kan dog bestille en kodeviser hos MitID som alternativ til at bruge en mobil. Jeg har haft en fest med at køre Wayland Weston-kompositoren på en ældgammel Samsung S3 Mini. Jeg optog et videoklip af bootsekvensen, som jeg vil se, om jeg kan finde igen. Det giver mig et kick, at kunne genoplive gammel hardware på den måde.

15. Oktober 2023

Matter - en åben SmartHome-standard

Endelig lader det til, at der kommer en åben standard indenfor Smart Home, som mange producenter bakker op om.

Vi kan nok hurtigt blive enige om, at et “smart home” bliver først rigtig smart, når alle de forskellige enheder kan kommunikere med hinanden på tværs af leverandører. Der eksisterer allerede en åben standard ved navn Zigbee, udviklet af Connectivity Standards Alliance (CSA) - tidl. Zigbee Alliance. Zigbee-standarden har desværre aldrig rigtig vundet indpas.

Matter

Nu prøver CSA så igen med Matter. Matter er en IPv6-baseret kommunikationsstandard, som opererer via Wifi, Ethernet, eller Thread (Thread vender jeg tilbage til). Matter-kompatible produkter kunne være stikkontakter, højttalere, termostater, smartlocks, medieafspillere, køleskabe etc. Den er bygget til at arbejde sammen med cloud-tjenester, men det er ikke et krav.

Matter bygger på en åben standard. SDK’et på Github er under en åben Apache licens. Samtidig har CSA fået god vind i sejlene, og har nu over 500 medlemmer, som tæller bl.a. OSRAM, LG, Google, Apple, Samsung, Amazon, Texas Instruments, Schneider Electric, IKEA, m.fl. Så det kunne tyde på, at medlemmerne kan se potentialet i projektet.

Væk er behovet for at have en proprietær, leverandørbestemt bridge (f.eks Philips Hue Bridge), som det har været kotyme før. Du skal dog stadig have en enhed, der kan agere “Matter Controller”. Det er en Matter-kompatibel enhed, der kan kobles på dit hjemmenetværk, og som du så kan bruge til at konfigurere dine øvrige Matter-enheder. Listen over “Matter Controllers” vokser, det kunne f.eks være Samsung Smarthome-enheder, Apple HomePod eller AppleTV, Amazon Echo, Google Nest Hub, osv.

Mens jeg skriver dette, er Matter ude i v.1.1, men understøtter endnu ikke hårde hvidevarer - det kommer i en senere update.

Thread

Har du hørt om Matter, så har du nok også hørt om Thread.

Matter understøtter Thread-protokollen, som er udviklet af Google, Cisco, ARM, og Nest Labs. Thread er målrettet enheder, der godt kan nøjes med lave datatransmissionshastigheder, og som har et lavt strømforbrug. Teknologien minder på mange måder om Bluetooth LE eller Bluetooth Mesh og er bygget til at kunne danne et mesh-netværk med andre Thread-enheder på 2.4GHz frekvensbåndet. Et typisk eksempel på en Thread-aktiverede enheder kunne være en lyskontakt, en havesprinkler eller en højtaler på batteri.

Thread er ligesom forgængeren Zigbee ZWave også baseret på IEEE 802.15.4-netværksstandarden, men har de forskelle, at Thread er adressérbar via IPv6 og er self-healing, dvs. i stand til at finde alternative netværksruter til data, hvis en modtagerenhed er slukket.

Ligesom Bluetooth LE kommunikerer Thread-enheder over korte afstande, og kræver ikke adgang til dit hjemmenetværk. Nogle større Thread-kompatible enheder kan/skal fungere som “Thread Border Routers”, hvis de skal kommunikere med Matter og dit hjemmenetværk.

Måske er du lidt forvirret over det hele, så skal du vide, at det er jeg også :D Det vigtige her er, at vide, at nogle Matter Controllers også kan være Thread Border Routers, så de overlapper teknologisk på hermafroditagtig vis. Men jeg forudser, at der bliver travlt i kundesupporten rundt omkring, hvis ikke man tydeliggør forholdet mellem Matter og Thread bedre.

Fremtidsperspektiver

Teknologisk set er den her sammenkobling af enheder megaspændende. Som en, der har set massevis af science fiction-film, så kan jeg snildt se, at vi kommer vi tættere og tættere på de teknologiske fremskridt, som filmene ofte skildrer. Der, hvor grænserne mellem enheder udviskes. Ingen roser uden torne, for der er også bagsiderne. Der bør følge nogle privatlivs- og sikkerhedsovervejelser med, når man investerer i SmartHome-teknologi, særlig hvis kildekoden til enheden ikke er Open Source, og/eller adgang omfatter en cloud-tjeneste.

Jeg vil lade det blive ved det positive aspekt for nu, jeg håber Open Source-miljøet kommer til at levere nogle fede løsninger på sigt, for det er nødvendigt ift. ultimativ transperans. Nørden i mig er megafascineret over det her, og jeg kan da næsten ikke vente med at prøve at lave nogle integrationer til Linux (mangler dog udstyr). Det ville være fedt med 1st class support via indbyggede home automation apps direkte i Gnome, KDE, m.fl.

Nyhedsmediet The Verge har samlet en liste over udstyr, der er Matter-kompatibelt
https://www.theverge … mazon-google-samsung

Byg en SmartHome-enhed på 10 minutter (ESP32)
https://www.youtube. … /watch?v=nO45szofvOM

Øvrige links:
https://csa-iot.org/
https://www.macworld … t-thread-matter.html
https://en.wikipedia … y_Standards_Alliance
https://github.com/p … edhomeip/tree/master