Communityoplossing

Zo voegt u veilig ontbrekende apparaatfirmware toe aan ZimaOS

A DVB-S2 tuner needed a Hauppauge firmware blob; IceWhale said users could not add host firmware directly and agreed to integrate the requested file into a release.

ZimaOS ondersteunt niet het willekeurig installeren van host-kernelfirmware met Ubuntu-achtige opdrachten zoals apt install linux-firmware-.... ZimaOS is een systeem in appliance-stijl en IceWhale gaf gebruikers uitdrukkelijk te kennen dat hostfirmware in de OS-release moet worden geïntegreerd in plaats van handmatig te worden gekopieerd.

In de broncasus ging het om een Hauppauge WinTV-NOVA-S2 USB DVB-S2-tuner die een firmwareblob nodig had voordat Tvheadend of Plex deze kon gebruiken. IceWhale stemde ermee in de firmware in een toekomstige release te integreren en vroeg de gebruiker deze te testen.

Waarom Ubuntu-opdrachten niet rechtstreeks kunnen worden overgenomen

Ubuntu-pakketbeheerders kunnen firmware naar een aanpasbaar hostbestandssysteem schrijven. ZimaOS is geen generieke Debian-installatie met dezelfde pakketwerkwijze.

Kernelfirmware moet beschikbaar zijn voor de host

Veel DVB-, wifi- en andere apparaten vragen de hostkernel tijdens het initialiseren om firmware. Een Docker-container kan dat niet oplossen als de host de hardware nooit initialiseert.

Stap 1: Identificeer het exacte apparaat en de ontbrekende blob

lsusb
dmesg | grep -i -E 'firmware|dvb|usb'

Noteer de USB-/PCI-ID's, de naam van het stuurprogramma en de exacte naam van het ontbrekende bestand.

Stap 2: Bevestig de firmwarebron en licentie

Vermeld de officiële bron van de leverancier of kernel-firmware en informatie over herdistributie wanneer je IceWhale vraagt deze mee te leveren.

Stap 3: Vraag om integratie in het besturingssysteem

IceWhale zei dat gebruikers om veiligheidsredenen niet zelf hostfirmware konden toevoegen en dat het team een specifieke blob kon integreren wanneer daar een duidelijk gebruiksscenario voor was.

Stap 4: Test nadat een release de firmware bevat

Sluit het apparaat opnieuw aan en controleer het dmesg. Je wilt dat het stuurprogramma initialiseert zonder de foutmelding “firmwarebestand niet gevonden” voordat je Tvheadend of Plex configureert.

Geef het apparaat afzonderlijk door aan de app

Nadat de host een DVB-tuner heeft herkend, heeft een Docker-app mogelijk nog steeds de relevante /dev/dvb apparaten die aan de container zijn toegewezen. Firmware op de host en toegang vanuit de container zijn afzonderlijke lagen.

Verwar gebruikersruimtefirmware niet met kernelfirmware

Sommige apps laden hun eigen model- of gegevensbestanden, die in een container kunnen worden gekoppeld. Firmware die door een kernelstuurprogramma wordt aangevraagd, is iets anders.

De handleiding voor hardwareproblemen helpt het rapport te structureren.

Hoe het laden van Linux-firmware werkt

Wanneer een kernelstuurprogramma hardware initialiseert, kan het de Linux-firmwarelader aanroepen en een blob met een bepaalde naam opvragen uit de firmwarepaden van de host. Als dat bestand ontbreekt, wordt het stuurprogramma mogelijk slechts gedeeltelijk gekoppeld of weigert het het uiteindelijke apparaatknooppunt beschikbaar te maken.

De upstream {A("https://docs.kernel.org/driver-api/firmware/request_firmware.html","Linux firmware loader documentation","Understand how kernel drivers request firmware from the host operating system")} legt dit mechanisme op hostniveau uit.

Bevestig dat het stuurprogramma bestaat voordat je alleen firmware aanvraagt

Een firmware-blob helpt niet als ZimaOS het kernelstuurprogramma voor het apparaat niet heeft. Controleer dmesg en module-informatie om te bepalen of het stuurprogramma wordt geladen en vervolgens firmware opvraagt, of dat de hardware eerder in de stack niet wordt ondersteund.

Passthrough naar de container komt na detectie door de host

Voor Tvheadend, Plex of een andere app moet je eerst controleren of de host de tuner beschikbaar maakt onder /dev/dvb. Configureer pas daarna Docker-apparaattoewijzingen en applicatiemachtigingen.

Opnieuw testen na elke ZimaOS-upgrade

Als IceWhale de firmware in een release integreert, controleer dan of de tuner na latere grote updates nog steeds initialiseert. Noteer de exacte hardware-ID's zodat regressiemeldingen reproduceerbaar zijn.

De Linux-firmwarelader begrijpen

Kernelstuurprogramma's vragen tijdens de initialisatie van een apparaat vaak om een firmware-blob met een bepaalde naam. De upstream documentatie van de Linux-firmwarelader legt uit dat dit op hostkernelniveau gebeurt, voordat de meeste applicatiecontainers het apparaat kunnen gebruiken.

Als het stuurprogramma aanwezig is maar de aangevraagde blob ontbreekt, is een door het besturingssysteem geïntegreerde firmware-update de juiste oplossing. Als het stuurprogramma zelf ontbreekt, zal alleen het toevoegen van de blob de hardware niet laten werken.

Veelgestelde vragen

Kan ik linux-firmware met apt installeren op ZimaOS?

Behandel ZimaOS niet als Ubuntu; IceWhales standpunt was dat de vereiste hostfirmware geïntegreerd moest worden.

Kan Docker de ontbrekende firmware bevatten?

Niet als de hostkernel het nodig heeft voordat het apparaat voor de container beschikbaar is.

Wat moet ik na de integratie controleren?

Gebruik dmesg en hardware-enumeratie om een correcte initialisatie te bevestigen.

Vereist firmware een desktop-GUI?

Nee. Kernel-/apparaatfirmware werkt op een headless server.