No, replacing firmware files is not viable.
Let me give you a practical example. In the course of SOF development,
we routinely copy new test firmware+topology in the location of
distribution-managed files. It's classic that when there is a
distribution update in the background to install the latest SOF
release, our test files are overwritten and it's not usual for
developers to lose time trying to figure out why the functionality
changed. We do need to have multiple paths and NEVER override what is
provided by the distributions. it's the moral equivalent of /usr/bin
v. /usr/local/bin.
Use /lib/firmware/updates/*. That precedes over the standard path
/lib/firmware/*. (Also /lib/firmware/updates/$VERSION has even higher
priority.)
thanks for the feedback Takashi, I had no idea this even existed :-)
The documentation is here:
https://www.kernel.org/doc/html/latest/driver-api/firmware/fw_search_path.html
I guess that removes the need for udev rules to select the
firmware+topology in simple cases, e.g. if you have only one custom
version or an image overlay.