La transcodifica hardware di solito scompare dopo un aggiornamento perché il container ricreato non vede più lo stesso dispositivo, gruppo di autorizzazioni, funzionalità del runtime o stack userspace compatibile.
La GPU dell’host potrebbe continuare a funzionare, mentre Plex, Jellyfin, Emby o un’app per telecamere passa silenziosamente alla CPU dopo la sostituzione dell’immagine. Il primo compito consiste nel verificare che il dispositivo esista all’interno del nuovo container e che l’utente del servizio possa aprirlo, quindi distinguere i problemi di mappatura del runtime e di autorizzazioni da una regressione specifica dell’immagine relativa a codec o driver.
Conferma che il carico di lavoro sia realmente passato al software
Forza la riproduzione di un file che richieda la transcodifica e registra il pannello di controllo del server multimediale, i log di FFmpeg o del transcoder, l’utilizzo della CPU dell’host e l’attività del motore GPU. La riproduzione diretta non verifica il percorso hardware.
Un caso nella community di LinuxServer consiglia di controllare un indicatore hardware esplicito e la telemetria della GPU, perché la sola attività della CPU può essere fuorviante. L’elemento distintivo utile è l’utilizzo attivo del motore GPU durante una transcodifica controllata.
Se i log mostrano che l’encoder hardware si apre correttamente, verifica la presenza di filtri non supportati, sottotitoli, tone mapping o accelerazione parziale. Se non è possibile aprire il dispositivo, continua con il rilevamento sull’host e l’accesso dal container.
Confronta i dispositivi GPU sull’host e all’interno del container
Elenca i nodi dispositivo previsti sull’host e all’interno del container aggiornato. Per VA-API Intel o AMD, confronta /dev/dri/card* e /dev/dri/renderD*; per NVIDIA, confronta la visibilità del runtime e i dispositivi segnalati dal relativo strumento di gestione.
Un caso di Quick Sync su Unraid mostra che l’host potrebbe richiedere il modulo kernel corretto prima che esista /dev/dri, mentre il container deve comunque ricevere quel dispositivo. Il punto mancante è spesso la mappatura del dispositivo /dev/dri, non la libreria multimediale o il database dell’app.
Se il dispositivo è assente sull’host, ripristina prima il driver dell’host, il BIOS, il kernel o lo stato dell’hardware. Se esiste sull’host ma non all’interno del container, confronta la configurazione dei dispositivi generata dal vecchio e dal nuovo file compose o dalla nuova interfaccia.
Verifica l’accesso ai gruppi render e video
Registra gli ID numerici del proprietario e del gruppo dei nodi dispositivo GPU sull’host, quindi controlla i gruppi assegnati all’utente del servizio all’interno del container. Nomi come render possono corrispondere a ID numerici diversi tra le immagini.
Un caso di risoluzione dei problemi di Jellyfin Docker mostra una configurazione funzionante che abbina esplicitamente l’ID del gruppo render dell’host e controlla le autorizzazioni di renderD128. Questa mappatura numerica del gruppo render può cambiare quando un’immagine modifica gli utenti o i gruppi interni.
Aggiungi il gruppo supplementare richiesto tramite la definizione del container invece di rendere il dispositivo scrivibile da chiunque. Ricrea il container e verifica l’accesso come utente effettivo del servizio multimediale.
Controlla i flag del runtime e le funzionalità specifiche dell’immagine
Confronta le definizioni dell’immagine precedente e di quella attuale per devices, group_add, impostazioni del runtime GPU, variabili delle funzionalità, modalità privilegiata ed eventuali modifiche al modello del gestore dei container.
Una segnalazione relativa a Emby descrive l’interruzione dell’accelerazione hardware in Docker mentre l’app rimaneva disponibile, illustrando il passaggio al software dopo la perdita della GPU, che rende il problema facile da non notare.
Non risolvere un problema circoscritto all’accesso al dispositivo concedendo privilegi estesi. Ripristina le autorizzazioni minime sul dispositivo e sul gruppo necessarie al percorso dell’encoder.
Distingui una regressione dell’immagine del container da un guasto dell’host
Esegui un semplice test della GPU o di FFmpeg nel container aggiornato, quindi confrontalo con l’immagine precedente fissata alla versione utilizzando gli stessi mount, le stesse mappature dei dispositivi, lo stesso file multimediale e la stessa configurazione dell’app.
Se la vecchia immagine funziona immediatamente e quella nuova non funziona con uno stato del runtime identico, conserva i log e considera l’aggiornamento una regressione dello userspace, del codec, di FFmpeg o dell’applicazione. Non riscrivere ripetutamente le autorizzazioni quando il confronto controllato tra immagini ha già isolato la versione responsabile.
Cancella solo le cache dei codec rigenerabili documentate quando i log indicano che il problema si trova lì, e lascia intatti il database dell’app e i metadati multimediali. Fissa l’immagine nota come funzionante finché la regressione non viene compresa o risolta.
Convalida l’intera pipeline dopo la riparazione
Testa la decodifica hardware, la codifica, il tone mapping, la masterizzazione dei sottotitoli e almeno un client che forzi la transcodifica. Conferma che nei log compaia il dispositivo GPU previsto e che l’host mostri un’attività sostenuta del motore.
La procedura ZimaSpace per verificare la transcodifica hardware reale offre un test di completamento più affidabile rispetto a un semplice interruttore nella pagina delle impostazioni.
Il problema è risolto solo quando il container aggiornato o fissato alla versione conserva l’accesso al dispositivo dopo la ricreazione e il riavvio, utilizza la GPU per il percorso del codec previsto e non passa più silenziosamente alla CPU. Conserva il digest dell’immagine precedente e la definizione del runtime come punto di rollback per il prossimo aggiornamento.
Supporto e consigli
Altro da leggere

Plex può condividere una GPU con un altro container Docker?
Plex e un altro container possono spesso accedere alla stessa GPU, ma è necessario testare il supporto dei driver, la mappatura dei dispositivi, il...

Come capire se un errore di Plex proviene dal client o dal server
Riproduci lo stesso elemento su un altro client, confronta il percorso della sessione, quindi raccogli le prove dal server solo dopo che l’ambito ti...

Come configurare la cache di Plex e l’archiviazione temporanea per la transcodifica
Proteggi lo stato persistente di Plex collocando i file temporanei di transcodifica su un’unità locale adatta, quindi verifica la pulizia, lo spazio libero e...

