HiassofT: What about setting overlay automatically from /storage/.config/firmware/ folder? So only files in appropriate should be copied there and after reboot it would work. Without making .conf file.
I had thought about that as well. But it was puzzling me why adding firmware via .config/firmware shouldn't work so I gave it a try and - guess what - it worked as expected.
I created an RPi2 image with the RPi wifi firmwares removed and added them in .config/firmware/brcm/:
le9:~ # ls /lib/firmware/brcm/brcmfmac43430-sdio.*
/lib/firmware/brcm/brcmfmac43430-sdio.AP6212.txt
/lib/firmware/brcm/brcmfmac43430-sdio.MUR1DX.txt
le9:~ # ls -l .config/firmware/brcm/
total 1088
-rw-r--r-- 1 root root 36264 Nov 30 10:34 BCM43430A1.hcd
-rw-r--r-- 1 root root 59237 Nov 30 10:34 BCM4345C0.hcd
-rw-r--r-- 1 root root 388739 Nov 30 10:34 brcmfmac43430-sdio.bin
-rw-r--r-- 1 root root 1125 Nov 30 10:34 brcmfmac43430-sdio.txt
-rw-r--r-- 1 root root 600487 Nov 30 10:34 brcmfmac43455-sdio.bin
-rw-r--r-- 1 root root 14036 Nov 30 10:34 brcmfmac43455-sdio.clm_blob
-rw-r--r-- 1 root root 2058 Nov 30 10:34 brcmfmac43455-sdio.txt
Display More
Then booted on a RPi3B (which needs the brcmfmac43430-sdio bin and txt files) with dyndbg="module firmware_class +p" on the kernel command line to trace the kernel firmware loader.
The kernel first checks /lib/firmware/updates/4.19.4, then /lib/firmware/updates which is a symlink to /storage/config/firmware - and succeeds for the bin and txt files and fails for the clm_blob (which isn't available anywhere). In the clm_blob calls one can see though that /lib/firmware/4.19.4 and /lib/firmware are probed afterwards.
bin:
[ 6.223611] firmware_class: __allocate_fw_priv: fw-brcm/brcmfmac43430-sdio.bin fw_priv=1d7ef5e3
[ 6.223669] brcmfmac mmc1:0001:1: loading /lib/firmware/updates/4.19.4/brcm/brcmfmac43430-sdio.bin failed with error -2
[ 6.244375] firmware_class: fw_set_page_data: fw-brcm/brcmfmac43430-sdio.bin fw_priv=1d7ef5e3 data=0caa91ae size=388739
txt:
[ 6.244390] firmware_class: __allocate_fw_priv: fw-brcm/brcmfmac43430-sdio.txt fw_priv=bcdb1585
[ 6.244425] brcmfmac mmc1:0001:1: loading /lib/firmware/updates/4.19.4/brcm/brcmfmac43430-sdio.txt failed with error -2
[ 6.245707] firmware_class: fw_set_page_data: fw-brcm/brcmfmac43430-sdio.txt fw_priv=bcdb1585 data=6ad77431 size=1125
clm_blob:
[ 6.417063] firmware_class: __allocate_fw_priv: fw-brcm/brcmfmac43430-sdio.clm_blob fw_priv=1d7ef5e3
[ 6.417107] brcmfmac mmc1:0001:1: loading /lib/firmware/updates/4.19.4/brcm/brcmfmac43430-sdio.clm_blob failed with error -2
[ 6.417145] brcmfmac mmc1:0001:1: loading /lib/firmware/updates/brcm/brcmfmac43430-sdio.clm_blob failed with error -2
[ 6.417167] brcmfmac mmc1:0001:1: loading /lib/firmware/4.19.4/brcm/brcmfmac43430-sdio.clm_blob failed with error -2
[ 6.417188] brcmfmac mmc1:0001:1: loading /lib/firmware/brcm/brcmfmac43430-sdio.clm_blob failed with error -2
[ 6.417199] firmware_class: __free_fw_priv: fw-brcm/brcmfmac43430-sdio.clm_blob fw_priv=1d7ef5e3 data= (null) size=0
So I'd say everything's fine and if loading firmware via .config/firmware doesn't work on some systems that has to be investigated in detail.
so long,
Hias