mali-g610-offline-backup/README.md
2026-09-17 00:51:54 +02:00

12 KiB

HASH Ripristino offline OpenCL + Vulkan — Orange Pi 5 Plus

Scopo

Questa procedura ripristina la configurazione GPU funzionante utilizzando esclusivamente il backup:

BT /root/mali-offline-backup/ BT

oppure una copia dello stesso backup proveniente da USB, disco esterno o altro computer.

La configurazione di riferimento è:

BT Kernel Mali g21p0-01eac0 Firmware g21p0 Userspace Mali g24p0-00eac0 OpenCL 3.0 Vulkan 1.3.276 GPU Mali-G610 BT

La procedura non modifica:

  • kernel
  • DTB
  • U-Boot
  • partizioni di boot

HASH Importante

Il backup contiene le librerie userspace Mali g24 già funzionanti e il firmware g21 compatibile con il kernel.

Non utilizzare un firmware g24 al posto del firmware g21.


HASH 1. Requisiti

Il backup deve avere questa struttura:

BT mali-offline-backup/ ├── firmware/ │ └── mali_csffw.bin ├── libs/ │ ├── libmali-hook-injector.a │ ├── libmali-hook.so.1.9.0 │ ├── libmali.so.1.9.0 │ └── mali/ │ ├── libEGL.so.1 │ ├── libgbm.so.1 │ ├── libGLESv1_CM.so.1 │ ├── libGLESv2.so.2 │ ├── libMaliOpenCL.so.1 │ ├── libMaliVulkan.so.1 │ └── libwayland-egl.so.1 ├── linker/ │ └── 00-aarch64-mali.conf ├── opencl/ │ └── mali.icd ├── system/ │ └── mali-priority.sh ├── symlinks/ │ ├── libmali-hook.so │ ├── libmali-hook.so.1 │ ├── libmali-valhall-g610-g24p0-x11-wayland-gbm.so │ ├── libmali.so │ └── libmali.so.1 ├── vulkan/ │ └── mali.json └── checksums.sha256 BT


HASH 2. Posizione del backup

Se il backup è già presente:

BT /root/mali-offline-backup BT

impostare:

BT BACKUP=/root/mali-offline-backup BT

Se il backup è stato copiato da USB in un'altra posizione, modificare BACKUP di conseguenza.

Esempio:

BT BACKUP=/media/orangepi/USB/mali-offline-backup BT

Controllare:

BT sudo find BT$BACKUP__BT__ -type f -printf '%P\n' | sort BT


HASH 3. Verificare il backup prima di installarlo

BT sudo bash -c ' cd "$BACKUP" && sha256sum -c checksums.sha256 ' BT

Tutti i file devono risultare:

BT OK BT

Se anche un solo file risulta FAILED:

BT STOP BT

Non procedere con il ripristino.


HASH 4. Controllare il kernel Mali

Prima di modificare qualsiasi file:

BT uname -a BT

Controllare il DDK Mali:

BT dmesg | grep -E 'mali fb000000.gpu: (Kernel DDK|GPU identified|Probed as mali0)' BT

Il kernel previsto deve utilizzare:

BT g21p0-01eac0 BT

HASH Non procedere se il kernel utilizza un DDK incompatibile senza prima verificare la compatibilità del firmware.


HASH 5. Disabilitare il servizio firmware automatico

Controllare:

BT systemctl is-enabled set-mali-firmware.service BT

Deve risultare:

BT disabled BT

Se necessario:

BT sudo systemctl disable set-mali-firmware.service BT

Non avviare il servizio durante il ripristino.


HASH 6. Creare un backup della configurazione attuale

Prima di sovrascrivere qualsiasi file:

BT sudo mkdir -p /root/mali-before-offline-restore BT

Salvare gli elementi principali:

BT sudo cp -a /etc/OpenCL/vendors
/root/mali-before-offline-restore/

sudo cp -a /etc/ld.so.conf.d/00-aarch64-mali.conf
/root/mali-before-offline-restore/ 2>/dev/null || true

sudo cp -a /usr/share/vulkan/icd.d/mali.json
/root/mali-before-offline-restore/ 2>/dev/null || true

sudo cp -L /lib/firmware/mali_csffw.bin
/root/mali-before-offline-restore/mali_csffw.bin 2>/dev/null || true BT


HASH 7. Ripristinare il firmware g21

Creare la directory:

BT sudo mkdir -p /lib/firmware/mali_csffw_g21p0 BT

Copiare il firmware:

BT sudo cp -a "$BACKUP/firmware/mali_csffw.bin"
/lib/firmware/mali_csffw_g21p0/mali_csffw.bin BT

Creare il link attivo:

BT sudo ln -sfn /lib/firmware/mali_csffw_g21p0/mali_csffw.bin
/lib/firmware/mali_csffw.bin BT

Verificare:

BT readlink -f /lib/firmware/mali_csffw.bin BT

Deve puntare a:

BT /usr/lib/firmware/mali_csffw_g21p0/mali_csffw.bin BT

Controllare SHA-256:

BT sha256sum /lib/firmware/mali_csffw.bin BT

Deve risultare:

BT 8e7c821a55ca1c345cc79f61243616dd25fc35b81f090946f302886d67712df5 BT


HASH 8. Ripristinare le librerie Mali userspace

Creare la directory:

BT sudo mkdir -p /usr/lib/aarch64-linux-gnu/mali BT

Copiare le librerie Mali:

BT sudo cp -a "$BACKUP/libs/mali/."
/usr/lib/aarch64-linux-gnu/mali/ BT

Copiare le librerie principali:

BT sudo cp -a
"$BACKUP/libs/libmali-hook-injector.a"
"$BACKUP/libs/libmali-hook.so.1.9.0"
"$BACKUP/libs/libmali.so.1.9.0"
/usr/lib/aarch64-linux-gnu/ BT


HASH 9. Ripristinare i symlink

Copiare i symlink:

BT sudo cp -a "$BACKUP/symlinks/."
/usr/lib/aarch64-linux-gnu/ BT

Controllare:

BT ls -l
/usr/lib/aarch64-linux-gnu/libmali.so
/usr/lib/aarch64-linux-gnu/libmali.so.1
/usr/lib/aarch64-linux-gnu/libmali-valhall-g610-g24p0-x11-wayland-gbm.so
/usr/lib/aarch64-linux-gnu/libmali-hook.so
/usr/lib/aarch64-linux-gnu/libmali-hook.so.1 BT

I collegamenti devono essere equivalenti a:

BT libmali.so.1 -> libmali.so.1.9.0 libmali-valhall-g610-g24p0-x11-wayland-gbm.so -> libmali.so.1 libmali-hook.so -> libmali-hook.so.1 libmali-hook.so.1 -> libmali-hook.so.1.9.0 libmali.so -> libmali.so.1 BT


HASH 10. Ripristinare la configurazione del linker

BT sudo mkdir -p /etc/ld.so.conf.d

sudo cp -a
"$BACKUP/linker/00-aarch64-mali.conf"
/etc/ld.so.conf.d/00-aarch64-mali.conf BT

Controllare:

BT cat /etc/ld.so.conf.d/00-aarch64-mali.conf BT

Deve contenere:

BT /usr/lib/aarch64-linux-gnu/mali BT


HASH 11. Aggiornare il linker

BT sudo ldconfig BT

Se compare il warning:

BT ldconfig: /lib/librknnrt.so is not a symbolic link BT

il warning è indipendente da Mali.


HASH 12. Ripristinare OpenCL

Creare la directory:

BT sudo mkdir -p /etc/OpenCL/vendors BT

Copiare l'ICD:

BT sudo cp -a
"$BACKUP/opencl/mali.icd"
/etc/OpenCL/vendors/mali.icd BT

Controllare:

BT cat /etc/OpenCL/vendors/mali.icd BT

Deve contenere:

BT /usr/lib/aarch64-linux-gnu/mali/libMaliOpenCL.so.1 BT

HASH Importante

Se esiste un vecchio ICD g13:

BT /etc/OpenCL/vendors/mali-arm64.icd BT

non deve essere attivo contemporaneamente, se si vuole riprodurre la configurazione di riferimento.

Spostarlo in un backup:

BT if [ -f /etc/OpenCL/vendors/mali-arm64.icd ]; then sudo mv /etc/OpenCL/vendors/mali-arm64.icd
/root/mali-before-offline-restore/mali-arm64.icd.g13 fi BT


HASH 13. Ripristinare Vulkan

Creare la directory:

BT sudo mkdir -p /usr/share/vulkan/icd.d BT

Copiare l'ICD:

BT sudo cp -a
"$BACKUP/vulkan/mali.json"
/usr/share/vulkan/icd.d/mali.json BT

Controllare:

BT cat /usr/share/vulkan/icd.d/mali.json BT

Deve contenere un library_path equivalente a:

BT libMaliVulkan.so.1 BT


HASH 14. Ripristinare la configurazione Mali

BT sudo mkdir -p /etc/profile.d

sudo cp -a
"$BACKUP/system/mali-priority.sh"
/etc/profile.d/mali-priority.sh BT

Controllare:

BT cat /etc/profile.d/mali-priority.sh BT


HASH 15. Aggiornare nuovamente il linker

BT sudo ldconfig BT


HASH 16. Verifica OpenCL prima del reboot

BT clinfo | grep -E
'arm_release_ver|Number of platforms|Platform Version|Device Name' BT

Configurazione attesa:

BT arm_release_ver: g24p0-00eac0, rk_so_ver: 10 Number of platforms 1 Platform Version OpenCL 3.0 v1.g24p0-00eac0... Device Name Mali-G610 r0p0 BT


HASH 17. Verifica Vulkan prima del reboot

Utilizzare esplicitamente l'ICD Mali:

BT VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/mali.json
vulkaninfo --summary BT

Devono comparire:

BT Mali-G610 DRIVER_ID_ARM_PROPRIETARY apiVersion = 1.3.276 driverVersion = 24.0.0 BT

HASH Nota

Un semplice vulkaninfo --summary può fallire con XCB se non è disponibile un server X. Il test con VK_ICD_FILENAMES è quello da utilizzare per verificare il driver.


HASH 18. Verifica del firmware prima del reboot

BT readlink -f /lib/firmware/mali_csffw.bin sha256sum /lib/firmware/mali_csffw.bin systemctl is-enabled set-mali-firmware.service BT

Devono risultare:

BT /usr/lib/firmware/mali_csffw_g21p0/mali_csffw.bin 8e7c821a55ca1c345cc79f61243616dd25fc35b81f090946f302886d67712df5 disabled BT

HASH Se il firmware non corrisponde allo SHA-256 previsto, NON riavviare.


HASH 19. Riavvio

Se tutti i controlli precedenti sono corretti:

BT sudo reboot BT


HASH 20. Verifica dopo il reboot

Controllare il kernel Mali:

BT dmesg | grep -E
'mali fb000000.gpu: (Kernel DDK|GPU identified|Probed as mali0|Loading Mali firmware|Mali firmware git_sha)' BT

Devono essere presenti:

BT Kernel DDK version g21p0-01eac0 GPU identified as 0x7 arch 10.8.6 r0p0 status 0 Probed as mali0 Mali firmware git_sha: 221d2b3e5f4cf47df6227ccb24c82c4e4baa986e BT


HASH 21. Verifica OpenCL dopo il reboot

BT clinfo | grep -E
'arm_release_ver|Number of platforms|Platform Version|Device Name' BT

Atteso:

BT arm_release_ver: g24p0-00eac0, rk_so_ver: 10 Number of platforms 1 Platform Version OpenCL 3.0 v1.g24p0-00eac0... Device Name Mali-G610 r0p0 BT


HASH 22. Verifica Vulkan dopo il reboot

BT VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/mali.json
vulkaninfo --summary BT

Atteso:

BT Mali-G610 DRIVER_ID_ARM_PROPRIETARY apiVersion = 1.3.276 driverVersion = 24.0.0 BT


HASH 23. Verifica finale dell'integrità del backup

Il backup originale non deve essere modificato durante il ripristino.

Se il backup si trova ancora nella posizione originale:

BT sudo bash -c ' cd "$BACKUP" && sha256sum -c checksums.sha256 ' BT

Tutti i file devono risultare OK.


HASH 24. Problemi comuni

HASH OpenCL mostra due piattaforme

Controllare:

BT ls -l /etc/OpenCL/vendors/ BT

Se è presente il vecchio ICD g13:

BT /etc/OpenCL/vendors/mali-arm64.icd BT

spostarlo fuori dalla directory attiva.

HASH Vulkan restituisce errore XCB

Utilizzare:

BT VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/mali.json
vulkaninfo --summary BT

HASH Il firmware ha SHA-256 diverso

Non riavviare.

Ripristinare:

BT sudo cp -a "$BACKUP/firmware/mali_csffw.bin"
/lib/firmware/mali_csffw_g21p0/mali_csffw.bin

sudo ln -sfn /lib/firmware/mali_csffw_g21p0/mali_csffw.bin
/lib/firmware/mali_csffw.bin BT

Poi verificare nuovamente lo SHA-256.

HASH clinfo restituisce zero piattaforme

Controllare:

BT cat /etc/OpenCL/vendors/mali.icd ls -l /usr/lib/aarch64-linux-gnu/mali/libMaliOpenCL.so.1 ldconfig -p | grep -i mali BT

HASH Non utilizzare apt autoremove

Il ripristino è offline e non richiede la rimozione automatica dei pacchetti.


HASH 25. Rollback del ripristino

Prima del ripristino è stata creata:

BT /root/mali-before-offline-restore/ BT

Se qualcosa non funziona, non modificare kernel, DTB o U-Boot.

Prima fermarsi e verificare:

BT dmesg | grep -i mali clinfo VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/mali.json vulkaninfo --summary BT

Il backup originale rimane disponibile per un ulteriore tentativo.


HASH 26. Stato finale desiderato

La configurazione finale deve essere:

BT Kernel Mali g21p0-01eac0 Firmware g21p0 Userspace Mali g24p0-00eac0 GPU Mali-G610 r0p0 OpenCL 3.0 Vulkan 1.3.276 OpenCL platforms 1 BT

Il ripristino utilizza esclusivamente i file contenuti nel backup e non richiede il download del pacchetto Mali g24 originale.