From ca932427e66926a073d58ecdff22c38b42a16f38 Mon Sep 17 00:00:00 2001 From: Antoine Martin Date: Tue, 26 May 2026 02:08:41 -0400 Subject: [PATCH] device-pine64-pinenote: only create stub firmware when missing Pinenote includes waveform lookup tables that are proprietary and only available through the `waveform` partition. Before, we packaged empty files for the firmware so that mkinitfa does not fail. The init scripts then extracts the waveform binaries on first boot. Unfortunately, this has the consequence that of overriding the extracted binaries every boot. Fixes this by only creating stub files when files are missing so mkinitfs does not fail via pre upgrade and install script. Part-of: --- device/community/device-pine64-pinenote/APKBUILD | 6 +----- .../device-pine64-pinenote-nonfree-firmware.pre-install | 1 + .../device-pine64-pinenote-nonfree-firmware.pre-upgrade | 8 ++++++++ 3 files changed, 10 insertions(+), 5 deletions(-) create mode 120000 device/community/device-pine64-pinenote/device-pine64-pinenote-nonfree-firmware.pre-install create mode 100644 device/community/device-pine64-pinenote/device-pine64-pinenote-nonfree-firmware.pre-upgrade diff --git a/device/community/device-pine64-pinenote/APKBUILD b/device/community/device-pine64-pinenote/APKBUILD index f4a2fe947..380385060 100644 --- a/device/community/device-pine64-pinenote/APKBUILD +++ b/device/community/device-pine64-pinenote/APKBUILD @@ -197,6 +197,7 @@ firmware() { pkgdesc="WiFi, Bluetooth and display firmware" depends="linux-firmware-cypress linux-firmware-brcm" replaces="firmware-pine64-pinenote" + install="$subpkgname.pre-upgrade $subpkgname.pre-install" # waveform firmware is provided locally via /dev/disk/by-label/waveform # extracted using waveform_exctract.sh, then adapted to kernel using wbf_to_custom.py @@ -209,11 +210,6 @@ firmware() { "$builddir"/bin/waveform_extract.sh \ -t "$subpkgdir"/usr/libexec/pinenote - # create empty waveform firmware so that initial mkinitfs doesn't fail - mkdir -p "$subpkgdir"/usr/lib/firmware/rockchip - touch "$subpkgdir"/usr/lib/firmware/rockchip/ebc.wbf - touch "$subpkgdir"/usr/lib/firmware/rockchip/custom_wf.bin - # symbolic link for wifi firmware to where drivers expects it mkdir -p "$subpkgdir"/usr/lib/firmware/brcm ln -s ../cypress/cyfmac43455-sdio.bin.zst "$subpkgdir"/usr/lib/firmware/brcm/brcmfmac43455-sdio.pine64,pinenote-v1.2.bin.zst diff --git a/device/community/device-pine64-pinenote/device-pine64-pinenote-nonfree-firmware.pre-install b/device/community/device-pine64-pinenote/device-pine64-pinenote-nonfree-firmware.pre-install new file mode 120000 index 000000000..37d6bd8e9 --- /dev/null +++ b/device/community/device-pine64-pinenote/device-pine64-pinenote-nonfree-firmware.pre-install @@ -0,0 +1 @@ +device-pine64-pinenote-nonfree-firmware.pre-upgrade \ No newline at end of file diff --git a/device/community/device-pine64-pinenote/device-pine64-pinenote-nonfree-firmware.pre-upgrade b/device/community/device-pine64-pinenote/device-pine64-pinenote-nonfree-firmware.pre-upgrade new file mode 100644 index 000000000..738fd9722 --- /dev/null +++ b/device/community/device-pine64-pinenote/device-pine64-pinenote-nonfree-firmware.pre-upgrade @@ -0,0 +1,8 @@ +#!/bin/sh + +# create empty waveform firmware so that initial mkinitfs doesn't fail +if [ ! -d /usr/lib/firmware/rockchip ]; then + mkdir -p /usr/lib/firmware/rockchip +fi +touch /usr/lib/firmware/rockchip/ebc.wbf +touch /usr/lib/firmware/rockchip/custom_wf.bin