Closed 01micko closed 4 years ago
Your idea is a good place to start. The "linux_firmware...sfs" is now upto 186.2MiB, so we would like to avoid including that in each release. So, we need to use a subset, either a guessed manual process, (simple script), or try some logic.
So logical process becomes:
Note: This produces an "fdrv...sfs" that is dependent on the kernel, not the current hardware.
Hmmm.. could be neater if we could get "modinfo" about the modules in a specified "zdrv...sfs" rather than the current modules.
A separate process could trim it for the current hardware, by doing it for only the loaded modules.
Hmmm.. could be neater if we could get "modinfo" about the modules in a specified "zdrv...sfs" rather than the current modules.
Bingo!
# modinfo --help
Usage:
modinfo [options] filename [args]
Options:
-a, --author Print only 'author'
-d, --description Print only 'description'
-l, --license Print only 'license'
-p, --parameters Print only 'parm'
-n, --filename Print only 'filename'
-0, --null Use \0 instead of \n
-F, --field=FIELD Print only provided FIELD
-k, --set-version=VERSION Use VERSION instead of `uname -r`
-b, --basedir=DIR Use DIR as filesystem root for /lib/modules
-V, --version Show version
-h, --help Show this help
#
This numb skull already wrote a script based on my original thoughts, works too, however with -k and -b options we can easily do it before any sfs is made.
Back to work..
Of course this development will also affect 3builddistro
and change_kernels
scripts because there is limited support for fdrv
in the former and none in the latter. I'll have to revert f632263 also. The 'later date' is almost here.
Hmmm doesn't seem to work - however if I 'modinfo' the full path (can be relative it seems) I get the info I need from the target kernel. About to test a few full builds from 4.19.132 (3.16.85[EOL], 4.4.230, 4.9.230). I have only one machine that would be happy with the old one but the others should be ok on most of my hardware.
Ok, I've successfully compiled 4 kernels (3.19.85, 4.4.230, 4.9.230,4.19.132 - all latest and all with mmc builtin) with separate targeted fdrv files. They are much smaller than the rot that was produced by the old fw.sh
script. Of course non-free blobs are not included but there is a script in woof that can take care of that - which I will delete because it violates the gpl. That script can be shipped as part of the build as a user is free to download these firmwares; they are not free to redistribute (looking at you Broadcom!). That script can be modified to be targeted as well.
A separate process could trim it for the current hardware, by doing it for only the loaded modules.
Interestingly, I did write a script for my own purposes that does just that. It is what gave me the idea.
The difference in firmware versions can be demonstrated by a diff between k3.16.85 and 4.19.132 using just the iwlwifi.ko
module - this was produced by running modinfo /path/to/iwlwifi.ko -F firmware
and redirecting to file for respective kernels - not while they were running. The diff follows -
--- iwlwifi-fw-3.16.85.txt 2020-07-12 08:52:04.408430012 +1000
+++ iwlwifi-fw-4.19.132.txt 2020-07-12 08:48:45.358441715 +1000
@@ -7,10 +7,27 @@ iwlwifi-2000-6.ucode
iwlwifi-5150-2.ucode
iwlwifi-5000-5.ucode
iwlwifi-6000g2b-6.ucode
-iwlwifi-6000g2a-5.ucode
+iwlwifi-6000g2a-6.ucode
iwlwifi-6050-5.ucode
-iwlwifi-6000-4.ucode
-iwlwifi-7265-9.ucode
-iwlwifi-3160-9.ucode
-iwlwifi-7260-9.ucode
-iwlwifi-8000-8.ucode
+iwlwifi-6000-6.ucode
+iwlwifi-7265D-29.ucode
+iwlwifi-7265-17.ucode
+iwlwifi-3168-29.ucode
+iwlwifi-3160-17.ucode
+iwlwifi-7260-17.ucode
+iwlwifi-8265-36.ucode
+iwlwifi-8000C-36.ucode
+iwlwifi-9260-th-b0-jf-b0-38.ucode
+iwlwifi-9260-th-a0-jf-a0-38.ucode
+iwlwifi-9000-pu-a0-jf-b0-38.ucode
+iwlwifi-9000-pu-b0-jf-b0-38.ucode
+iwlwifi-9000-pu-a0-jf-a0-38.ucode
+iwlwifi-Qu-b0-jf-b0-38.ucode
+iwlwifi-su-z0-38.ucode
+iwlwifi-QuQnj-a0-hr-a0-38.ucode
+iwlwifi-QuQnj-a0-jf-b0-38.ucode
+iwlwifi-QuQnj-b0-hr-b0-38.ucode
+iwlwifi-Qu-b0-hr-b0-38.ucode
+iwlwifi-QuQnj-f0-hr-a0-38.ucode
+iwlwifi-Qu-a0-jf-b0-38.ucode
+iwlwifi-Qu-a0-hr-a0-38.ucode
Certainly a lot of bloat is trimmed as the full set of iwlwifi firmwares totals ~130MB uncompressed! That's just 1 example.
The following was run in linux-firmware
git local repo -
# x=0;y=0 ; for i in iwlwifi*;do x=$(stat -c %s $i);y=$(($y + $x));done;echo $y
134775401
I see you've already discovered the "-b" and "-k" options for "modinfo". I mounted the zdrv...sfs of a different Puppy as "/mnt/data" and used the command: "modinfo -b /mnt/data -k 4.4.227-mmc hid-logitech-dj" This worked for me from a Puppy running a different kernel that had the "hid-logitech-dj" driver builtin.
Anyway, it looks like you are making good progress.
I know what firmware my desktop needs, so it will be interesting to see the results of this script.
I see you've already discovered the "-b" and "-k" options for "modinfo".
It actually turns out to be less code if I just 'modinfo' the module.ko file directly in the loop. Same result. Code soon, I just want to test building in the firmware to the zdrive as well. I just set up a loop and knock off the 4 kernels in a row and walk away.
I just did a little script to generate a local "fdrv...sfs" using "modinfo" on the loaded modules. If the modules are in a sub-directory, it copies the whole of the sub-directory, but if the modules are directly in "/lib/firmware" then it copies the individual file. My idea is that the local "fdrv...sfs" might work for different kernels. On my desktop that results in just 2 sub-directories, just 2.8MiB.
It's not the firmware blobs themselves that needs to be done by the kernel-kit, it's the list of supported firmware that's important. This could be stored in "zdrv...sfs" as "/lib/modules/$KERENELVER/firmware.list", beside "modules.order", or as "/etc/modules/firmware.list.$KERNELVER" Then the "fdrv...sfs" can be generated again and again with the latest firmware blobs from a local clone of "linux_firmware" git, (or even the latest downloadable "linux_firmware...sfs"), based on the list.
If I understand correctly. You are talking about making a firmware sfs package, based on what hardware support, The kernel being used, is configured for. If correct.
The bigger problem is compiling a kernel, that has the needed hardware support, configured correctly, when it is compiled.
I am seeing, in the Puppy Forum, more and more posts, about people having to change kernel, to get their hardware supported. This does seem more about very new hardware than very old hardware. But not always that simple. In testing for bugs in Fossapup64 9.0. I had wired network etho hardware that was not recognized, along with WIFI adapter hardware. The thing that did not seem right, was this hardware worked in Bionicpup64 8.0. For the WIFI device, the firmware needed, seems to be in Fossapup64 9.0. So, I wonder if the kernel is configured to support this specific hardware device.
Also, I have a HP Chromebook that I converted to a Puppy laptop. Puppy Linux is the only OS on it. Bios has been replaced, for one that will work with and boot Linux OS's. Bionicpup64 8.0 runs great on it! But, had to replace the kernel, with one that was compiled more for the hardware, in a Chromebook. Support all the hardware, including the internal sound device.
Point is. Compiling the kernel, for correct hardware support, is just as important, as providing the needed firmware, for the hardware.
Also, seems if you are going to some location to get the firmware. The https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git would be a very good place to get it.
@bigpup1 this is OT. Configuring the kernel is a completely different subject - kernel-kit
gets its firmware from your mentioned link.
@bigpup1 what is that wireless driver you needed - rtl something?
@gyrog here are a couple of kernels to try.. (64 bit - will run in 32)
huge-4.19.132-slacko64.tar.bz2
md5: 9aa32169c8815ef3e81cd4dd811f4dab huge-4.19.132-slacko64.tar.bz2
huge-5.4.51-slacko64.tar.bz2
md5: d75bedffe6f631a3ffbde8fc018ad013 huge-5.4.51-slacko64.tar.bz2
This is info from the working Bionicpup64 8.0 It is still not found in Fossapup64 9.0.3
This is a USB WIFI adapter ID = 0846:9030 NetGear, Inc. WNA1100 Wireless-N 150 [Atheros AR9271] VendorID=0846 ProductID=9030 Rev=01.08 Manufacturer=NETGEAR WNA Product=WNA1100 SerialNumber=12345 Driver=ath9k_htc
The strange thing is the needed firmware and driver module seem to be in Fossapup64 9.0.3 If I go to Network Wizard and try to load the ath9k_htc driver module. It finds nothing for a device.
Another WIFI that also did not show in Fossapup64 9.0 needed the r8822be driver module and the rtl8822befw.bin firmware file.
Also had a problem with wired network etho until needed support files where added. Ethernet controller [0200]: Intel Corporation Ethernet Connection (7) I219-V [8086:15bc] (rev 10) • Kernel Driver: e1000e • Memory Used: 164.00 KB • Path: /lib/modules/4.19.23/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko • Driver Version: 3.2.6-k • Description: Intel(R) PRO/1000 Network Driver
Note: The hardware is on two different computers. So, the info is from the one I am on, right now. But, the same info applies to the hardware, we are talking about.
@bigpup1 try the 5.4.51 kernel in fossa - be aware if you use the latest change_kernels
it doesn't handle fdrv.
Here's a script to run where the kernel lives You may have to shift the fdrv in the kernel package there manually
#!/bin/sh
. /etc/DISTRO_SPECS
F=`ls|grep grep -o '^fdrv.*slacko64$'`
mv -f $F $DISTRO_FDRVSFS
echo 'done'
get this pet if you want to try that problematic realtek wifi thing: rt88-wirless-5.4.51-x86_64.pet. Install it and reboot. See if wireless works.
Note: as mentioned above in a previous post change_kernels
will be fixed if/when this new development is commited
Hi @bigpup1 & @01micko , i used bionicpups dotconfig as a base and believe that there's been a few changes in the driver for some realtek devices. Some now use the rtw driver and i missed that when configuring the kernel.
for the ath9k_htc the kernel module & firmware are there as far as i can tell. I've had a look in debians firmware package and it has this extra file /etc/modprobe.d/ath9k_htc.conf
options ath9k_htc use_dev_fw=1
so maybe try creating that. Also try dmesg in a terminal & have a look at /var/log/messages when you plug it in.
@01micko looking forward to your new firmware script, it will save a lot problems when deciding what firmware to include.
@01micko & @mrfricks, Thanks for all of this! With Fossapup64 9.0.3 the realtek wifi is working OK. 666philb added what was needed that was missing in the earlier versions of Fossapup64.
The netgear WiFi USB adapter is the problem. UPDATE: Forget about this device. I think it is going bad!!!
I really was not expecting you to try and fix my problems. I figure that is up to 66philb who is developing Fossapup64 9.0.X But I am sure any help by you, he would be grateful for!
I was asked for info, so I figured any problems, would be useful info to you, in trying to get this firmware issue worked out.
PS: 01micko, thanks for the updating to change_kernels, you have done so far. Much more user friendly!
@01micko I'll try your kernels.
The bit I'm concentrating on is a userland script to create an updated the fdrv...sfs for a particular kernel, using the latest firmware.
I've also played around with the concept, and I've been surprised about the number of firmware blobs that are supported by the kernels I have tried, that do not exist in "linux-firmware.git". And some modules that occur in "/lib/modules/$KERNELVER/modules.order", don't actually exist.
@01micko Just looking at your kernel packages there are just 2 things:
1) I could not find a text file containing the list of firmware blobs supported by the kernel, in the zdrv. This means that any userland regeneration of the fdrv...sfs will have to trawl the modules again.
2) Handling of symbolic links could cause a problem. e.g. in /lib/firmaware/i915, "bxt_dmc_ver1.bin" is a symbolic link to "bxt_dmc_ver1_07.bin", now we can either, copy the symbolic link and the real blob into the fdrv, or use "cp -L" to copy the real blob into the fdrv with the name of the symbolioc link, or copy the real blob into the fdrv as itself, and omit the symbolic link. Since we cannot be sure how the driver actually accesses the firmware, the first option is the safest, and it's my guess that the second option might be preferred to the third.
Note: My desktop computer uses "i915"
Sorry, you can probably forget my issue with symbolic links. I just generated a firmware list for 4.4.227 and 4.19.128, and in the 4.4.227 list the symbolic link is referenced, but in the 4.19.128 list the real blob is referenced. So whereas my 4.4.227 fdrv contains the symbolic link and the real blob, my 4.19.128 fdrv contains only the real blob, just like your 4.19.132 fdrv.
@01micko I tested your 4.9.132 kernel in bionicpup64, and your 5.4.51 kernel in ScPup32. They both worked fine.
Would it be possible for both the "fdrv" and the "kernel-modules" sfs files generated by kernel-kit to have the ".sfs" at the end of the filename, instead of in the middle? Then a single click gives an opportunity to "View contents".
FYI I've been woking on a script to do a similar process, but trawling the currently loaded modules instead of "modules.order", to produce a minimal fdrv for the current machine using the latest firmware. It downloads each individual firmware blob. I ran it in ScPup32 with your 5.4.51 kernel and it produce a 796KiB fdrv that worked fine.
Would it be possible for both the "fdrv" and the "kernel-modules" sfs files generated by kernel-kit to have the ".sfs" at the end of the filename, instead of in the middle?
Actually I am intending to do that. Again, some mods to 3builddistro
and change_kernels
scripts will be needed but only minor.
I've been woking on a script to do a similar process, but trawling the currently loaded modules instead of "modules.order", to produce a minimal fdrv for the current machine using the latest firmware. It downloads each individual firmware blob.
Sounds good.
Regarding the firmware list, I think I'll add the firmware-$KERNELVER.lst file to /etc/modules/ or even /etc/firmware/ in the fdrvxxx.sfs. Any preference? Mine is the latter.
With recent developments I have received tons of emails over the last day or so, so development will be slowish until the weekend.
Thanks for testing and your ideas.
@01micko "/etc/firmware/" is fine, but I would prefer that "firmware-$KERNELVER.lst" be stored in the generated "zdrv...sfs", so there is no danger of it being lost if the "fdrv...sfs" is regenerated. It's a little less complicated to create a replacement "fdrv...sfs" if it contains only firmware blobs.
Yes, John de Murga's contribution to Puppy will be greatly missed.
The location I have settled on is output/linux_kernel-5.4.52-slacko64/etc/modules/firmware.lst.$KVER
that is, the list goes to the zdrv .
I have added more info to the list. If a firmware isn't found then we can safely assume it is 'non-free' as in the licence doesn't permit redistribution. Mostly b43, b43legacy and dvb firmwares. Some others too. So I have appended no free firmware found
delimeted by 2 tab characters for readability. That is probably the last part open for discussion. The delim can be any char or chars and the message need not be a phrase but a single descriptive word like 'non-free'.
Here is a snippet of what I have :
mt7601u.bin
mediatek/mt7615_rom_patch.bin
mediatek/mt7615_n9.bin
mediatek/mt7615_cr4.bin
mt7662_rom_patch.bin
mt7662.bin
mt7662_rom_patch.bin
mt7662.bin
mt7603_e2.bin no free firmware found
mt7603_e1.bin no free firmware found
mt7628_e2.bin no free firmware found
mt7628_e1.bin no free firmware found
mediatek/mt7650e.bin
mediatek/mt7610e.bin
mediatek/mt7610u.bin
mediatek/mt7610e.bin
iwlwifi-4965-2.ucode
iwlwifi-3945-2.ucode
iwlwifi-100-5.ucode
iwlwifi-1000-5.ucode
iwlwifi-135-6.ucode
iwlwifi-105-6.ucode
iwlwifi-2030-6.ucode
iwlwifi-2000-6.ucode
iwlwifi-5150-2.ucode
iwlwifi-5000-5.ucode
iwlwifi-6000g2b-6.ucode
iwlwifi-6000g2a-6.ucode
iwlwifi-6050-5.ucode
iwlwifi-6000-6.ucode no free firmware found
iwlwifi-7265D-29.ucode
iwlwifi-7265-17.ucode
iwlwifi-3168-29.ucode
iwlwifi-3160-17.ucode
iwlwifi-7260-17.ucode
iwlwifi-8265-36.ucode
iwlwifi-8000C-36.ucode
iwlwifi-9260-th-b0-jf-b0-46.ucode
iwlwifi-9000-pu-b0-jf-b0-46.ucode
iwlwifi-ty-a0-gf-a0-50.ucode no free firmware found
iwlwifi-so-a0-gf-a0-50.ucode no free firmware found
iwlwifi-so-a0-hr-b0-50.ucode no free firmware found
iwlwifi-so-a0-jf-b0-50.ucode no free firmware found
iwlwifi-cc-a0-50.ucode
iwlwifi-QuQnj-b0-jf-b0-50.ucode no free firmware found
iwlwifi-QuZ-a0-jf-b0-50.ucode
iwlwifi-QuZ-a0-hr-b0-50.ucode
iwlwifi-Qu-b0-jf-b0-50.ucode
iwlwifi-Qu-c0-hr-b0-50.ucode
iwlwifi-QuQnj-a0-hr-a0-50.ucode no free firmware found
iwlwifi-QuQnj-b0-hr-b0-50.ucode no free firmware found
iwlwifi-QuQnj-f0-hr-a0-50.ucode no free firmware found
iwlwifi-Qu-a0-jf-b0-50.ucode no free firmware found
iwlwifi-Qu-a0-hr-a0-50.ucode no free firmware found
ipw2100-1.3.fw no free firmware found
ipw2100-1.3-p.fw no free firmware found
ipw2100-1.3-i.fw no free firmware found
ipw2200-bss.fw no free firmware found
ipw2200-sniffer.fw no free firmware found
ipw2200-ibss.fw no free firmware found
And the count of non free:
# grep 'no free' firmware.lst.* | wc -l
363
out of a total of :
# wc -l firmware.lst.*
1544 firmware.lst.5.4.52
On my ryzen box the list is generated in 3 seconds. On my 4th gen i5 about 15 seconds; negligible in terms of total kernel build time.
@01micko, Looking good.
My only concern for the delimiter, is that a script can easily extract the firmware blob name from each line using the standard $IFS. This is for a possible script that generates a new fdrv for the currrent kernel, but using the latest firmware. Hmm.. being able to easly extract the "non-free" indicator might be of some benefit, but then again all it would do is save the script from looking in the firmware blob repository and not finding it. Still, perhaps using "non-free", rather than "no free firmware found", might be a slight preference.
@01micko I not sure what your improved "kernel-kit" is using as a "free firmware blob" repository, but I think that kernel compilers should be encouraged to use a local clone of https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git. Then a simple "git pull" before doing the kernel compile will ensure that the generated fdrv contains the latest firmware blobs, with a minimum of net traffic.
Ok, thanks.
I'll settle on 1 tab char and 'non-free'
I not sure what your improved "kernel-kit" is using as a "free firmware blob" repository, but I think that kernel compilers should be encouraged to use a local clone of https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git.
That is what we have in 'kernel-kit'
@01micko I look forward to recompiling my kernels when the updated "kernel-kit" is available.
@01micko Sorry, I had another thought aboout the format of the list file, "/etc/modules/firmware.lst.$KVER". I've just been looking at "/lib/modules/$KVER/modules.dep", it uses the format "module-name: module-name module-name module-name". It's easy to extract the primary module-name by just dropping the ":" and everything after it. Simply dropping the ":" and everyting before it produces the second parameter (the list). Always placing a ":" delimeter after the firmware blob filename, means the format of the second parameter wouldn't matter. If there is no second parameter then there should be a firmware blob in the repositioy, if there is a second parameter, then there'e not point in looking, it's not there.
@01micko Sorry again. Actually you original 2 tab file could be fairly easily parsed with something like "read BLOB REST". So it doesn't really matter much what format you use.
2 tabs was only for human readability.
A better way, since read
can do what you want is to format the output with printf
. That way I should be able to get all the non-free
entries in 1 column, just for aesthetics.
Sounds good to me. So, as I said above, I look forward to using the updated "kernel-kit".
Here's what the new /etc/modules/firmware.lst.5.4.53
looks like - typing on an on-screen keyboard on a touchscreen tablet running that kernel:
### If 'non-free' is after a firmware entry it is non-free and will need to be found elsewhere
cavium/cnn55xx_se.fw
qat_895xcc_mmp.bin
qat_895xcc.bin
qat_c62x_mmp.bin
qat_c62x.bin
qat_c3xxx_mmp.bin
qat_c3xxx.bin
rtl_bt/rtl8822b_config.bin
rtl_bt/rtl8822b_fw.bin
rtl_bt/rtl8821a_config.bin non-free
rtl_bt/rtl8821a_fw.bin
rtl_bt/rtl8761a_config.bin non-free
rtl_bt/rtl8761a_fw.bin
rtl_bt/rtl8723ds_config.bin non-free
rtl_bt/rtl8723ds_fw.bin non-free
rtl_bt/rtl8723bs_config.bin non-free
rtl_bt/rtl8723bs_fw.bin
rtl_bt/rtl8723b_config.bin non-free
rtl_bt/rtl8723b_fw.bin
rtl_bt/rtl8723a_fw.bin
mediatek/mt7668pr2h.bin
mediatek/mt7663pr2h.bin
mediatek/mt7622pr2h.bin
ath3k-1.fw
mrvl/sd8997_uapsta.bin non-free
mrvl/sd8987_uapsta.bin non-free
mrvl/sd8977_uapsta.bin non-free
mrvl/sd8897_uapsta.bin
mrvl/sd8887_uapsta.bin
mrvl/sd8797_uapsta.bin
mrvl/sd8787_uapsta.bin
mrvl/sd8688.bin
mrvl/sd8688_helper.bin
bfubase.frm non-free
BCM2033-FW.bin non-free
BCM2033-MD.hex non-free
intel/ibt-12-16.ddc
intel/ibt-12-16.sfi
intel/ibt-11-5.ddc
intel/ibt-11-5.sfi
BT3CPCC.bin non-free
RTL8192E/data.img
RTL8192E/main.img
RTL8192E/boot.img
prism2_ru.fw non-free
rtlwifi/rtl8712u.bin
vntwusb.fw
rtlwifi/rtl8188eufw.bin
RTL8192U/data.img non-free
RTL8192U/main.img non-free
RTL8192U/boot.img non-free
me4000_firmware.bin non-free
daqboard2000_firmware.bin non-free
usbduxfast_firmware.bin
me2600_firmware.bin non-free
usbdux_firmware.bin
comedi/jr3pci.idm non-free
usbduxsigma_firmware.bin
niscrb02.bin non-free
niscrb01.bin non-free
ni6534a.bin non-free
rp2.fw
cis/RS-COM-2P.cis
cis/COMpad4.cis
cis/COMpad2.cis
cis/MT5634ZLX.cis
cis/SW_555_SER.cis
cis/SW_7xx_SER.cis
cis/SW_8xx_SER.cis
cis/3CXEM556.cis
cis/3CCFEM556.cis
cis/DP83903.cis
cis/PCMLM28.cis
dvb-fe-xc5000c-4.1.30.7.fw
dvb-fe-xc5000-1.6.114.fw
xc3028L-v36.fw non-free
xc3028-v27.fw non-free
dvb-tuner-si2157-a30-01.fw non-free
dvb-tuner-si2141-a10-01.fw non-free
dvb-tuner-si2158-a20-01.fw non-free
dvb-fe-xc4000-1.4.fw non-free
dvb-fe-xc4000-1.4.1.fw
v4l-cx25840.fw
v4l-cx231xx-avcore-01.fw
v4l-cx23885-avcore-01.fw
tdmb_nova_12mhz.inp
tdmb_nova_12mhz_b0.inp non-free
tdmb_denver.inp non-free
sms1xxx-stellar-dvbt-01.fw
sms1xxx-nova-b-dvbt-01.fw
sms1xxx-nova-a-dvbt-01.fw
isdbt_rio.inp
isdbt_pele.inp non-free
isdbt_nova_12mhz.inp
isdbt_nova_12mhz_b0.inp
sms1xxx-hcw-55xxx-isdbt-02.fw
sms1xxx-hcw-55xxx-dvbt-02.fw
fm_radio_rio.inp non-free
fm_radio.inp non-free
dvb_rio.inp non-free
dvb_nova_12mhz.inp
dvb_nova_12mhz_b0.inp
dvbh_rio.inp non-free
cmmb_venice_12mhz.inp
cmmb_vega_12mhz.inp
cmmb_ming_app.inp non-free
atsc_denver.inp non-free
dvb-fe-drxj-mc-1.0.8.fw non-free
dvb-fe-ds3000.fw non-free
dvb-fe-cx24117.fw non-free
dvb-fe-af9013.fw non-free
dvb-demod-si2168-d60-01.fw non-free
dvb-demod-si2168-b40-01.fw non-free
dvb-demod-si2168-a30-01.fw non-free
dvb-demod-si2168-a20-01.fw non-free
dvb-demod-mn88472-02.fw non-free
dvb-fe-tda10071.fw non-free
dvb-demod-si2165.fw non-free
dvb-demod-m88rs6000.fw non-free
dvb-demod-m88ds3103.fw non-free
dvb-demod-mn88473-01.fw non-free
lgs8g75.fw
go7007/go7007fw.bin
go7007/go7007tv.bin
go7007/wis-startrek.fw
go7007/lr192.fw
go7007/px-tv402u.fw
go7007/px-m402u.fw
go7007/s2250-2.fw
go7007/s2250-1.fw
cpia2/stv0672_vp4.bin
dvb-usb-p7500.fw non-free
dvb-usb-p1100.fw non-free
dvb-usb-s660.fw non-free
dvb-usb-s630.fw non-free
dvb-usb-dw3101.fw non-free
dvb-usb-dw2104.fw non-free
dvb-usb-dw2102.fw non-free
dvb-usb-dw2101.fw non-free
dvb-usb-dib0700-1.20.fw
v4l-pvrusb2-73xxx-01.fw non-free
v4l-pvrusb2-73xxx-01.fw non-free
v4l-pvrusb2-24xxx-01.fw non-free
v4l-pvrusb2-29xxx-01.fw non-free
v4l-cx23885-enc.fw non-free
f2255usb.bin
vicam/firmware.fw
ttusb-budget/dspbootcode.bin
dvb-usb-it9303-01.fw non-free
dvb-usb-it9135-02.fw
dvb-usb-it9135-01.fw
dvb-usb-af9035-02.fw non-free
dvb-usb-ec168.fw non-free
dvb-usb-terratec-h7-az6007.fw non-free
dvb-usb-lme2510-s0194.fw non-free
dvb-usb-lme2510-lg.fw non-free
dvb-usb-lme2510c-rs2000.fw non-free
dvb-usb-lme2510c-s0194.fw non-free
dvb-usb-lme2510c-lg.fw non-free
dvb-usb-lme2510c-s7395.fw non-free
dvb-usb-af9015.fw non-free
xc3028-v27.fw non-free
v4l-cx23418-apu.fw
v4l-cx23418-cpu.fw
v4l-cx23418-dig.fw
dvb-cx18-mpc718-mt352.fw non-free
v4l-cx2341x-init.mpg non-free
v4l-cx2341x-dec.fw non-free
v4l-cx2341x-enc.fw non-free
go7007/go7007tv.bin
av7110/bootcode.bin
v4l-cx23885-enc.fw non-free
cxgb4/t6fw.bin non-free
cxgb4/t5fw.bin non-free
aic94xx-seq.fw non-free
ql2500_fw.bin
ql2400_fw.bin
ql2322_fw.bin
ql2300_fw.bin
ql2200_fw.bin
ql2100_fw.bin
ct2fw-3.2.5.1.bin
ctfw-3.2.5.1.bin
cbfw-3.2.5.1.bin
isci/isci_firmware.bin
advansys/38C1600.bin
advansys/38C0800.bin
advansys/3550.bin
advansys/mcode.bin
wd719x-risc.bin non-free
wd719x-wcs.bin non-free
qlogic/12160.bin
qlogic/1280.bin
qlogic/1040.bin
isight.fw non-free
emi26/firmware.fw
emi26/bitstream.fw
emi26/loader.fw
emi62/spdif.fw
emi62/bitstream.fw
emi62/loader.fw
moxa/moxa-1151.fw
moxa/moxa-1150.fw
moxa/moxa-1131.fw
moxa/moxa-1130.fw
moxa/moxa-1110.fw
mts_mt9234zba.fw
mts_mt9234mu.fw
mts_edge.fw
mts_gsm.fw
mts_cdma.fw
ti_5052.fw
ti_3410.fw
keyspan_pda/xircom_pgs.fw
keyspan_pda/keyspan_pda.fw
whiteheat_loader.fw
whiteheat.fw
edgeport/down2.fw
edgeport/down.fw
edgeport/boot2.fw
edgeport/boot.fw
edgeport/down3.bin
keyspan/usa49wlc.fw
keyspan/usa49w.fw
keyspan/usa19w.fw
keyspan/usa18x.fw
keyspan/usa19qw.fw
keyspan/mpr.fw
keyspan/usa19qi.fw
keyspan/usa19.fw
keyspan/usa28xb.fw
keyspan/usa28xa.fw
keyspan/usa28x.fw
keyspan/usa28.fw
mt7601u.bin
mediatek/mt7615_rom_patch.bin
mediatek/mt7615_n9.bin
mediatek/mt7615_cr4.bin
mt7662_rom_patch.bin
mt7662.bin
mt7662_rom_patch.bin
mt7662.bin
mt7603_e2.bin non-free
mt7603_e1.bin non-free
mt7628_e2.bin non-free
mt7628_e1.bin non-free
mediatek/mt7650e.bin
mediatek/mt7610e.bin
mediatek/mt7610u.bin
mediatek/mt7610e.bin
iwlwifi-4965-2.ucode
iwlwifi-3945-2.ucode
iwlwifi-100-5.ucode
iwlwifi-1000-5.ucode
iwlwifi-135-6.ucode
iwlwifi-105-6.ucode
iwlwifi-2030-6.ucode
iwlwifi-2000-6.ucode
iwlwifi-5150-2.ucode
iwlwifi-5000-5.ucode
iwlwifi-6000g2b-6.ucode
iwlwifi-6000g2a-6.ucode
iwlwifi-6050-5.ucode
iwlwifi-6000-6.ucode non-free
iwlwifi-7265D-29.ucode
iwlwifi-7265-17.ucode
iwlwifi-3168-29.ucode
iwlwifi-3160-17.ucode
iwlwifi-7260-17.ucode
iwlwifi-8265-36.ucode
iwlwifi-8000C-36.ucode
iwlwifi-9260-th-b0-jf-b0-46.ucode
iwlwifi-9000-pu-b0-jf-b0-46.ucode
iwlwifi-ty-a0-gf-a0-50.ucode non-free
iwlwifi-so-a0-gf-a0-50.ucode non-free
iwlwifi-so-a0-hr-b0-50.ucode non-free
iwlwifi-so-a0-jf-b0-50.ucode non-free
iwlwifi-cc-a0-50.ucode
iwlwifi-QuQnj-b0-jf-b0-50.ucode non-free
iwlwifi-QuZ-a0-jf-b0-50.ucode
iwlwifi-QuZ-a0-hr-b0-50.ucode
iwlwifi-Qu-b0-jf-b0-50.ucode
iwlwifi-Qu-c0-hr-b0-50.ucode
iwlwifi-QuQnj-a0-hr-a0-50.ucode non-free
iwlwifi-QuQnj-b0-hr-b0-50.ucode non-free
iwlwifi-QuQnj-f0-hr-a0-50.ucode non-free
iwlwifi-Qu-a0-jf-b0-50.ucode non-free
iwlwifi-Qu-a0-hr-a0-50.ucode non-free
ipw2100-1.3.fw non-free
ipw2100-1.3-p.fw non-free
ipw2100-1.3-i.fw non-free
ipw2200-bss.fw non-free
ipw2200-sniffer.fw non-free
ipw2200-ibss.fw non-free
lbtf_usb.bin
libertas_cs.fw non-free
libertas_cs_helper.fw non-free
libertas/cf8385.bin
libertas/cf8385_helper.bin
libertas/cf8381.bin
libertas/cf8381_helper.bin
libertas/cf8305.bin non-free
libertas/gspi8688.bin
libertas/gspi8688_helper.bin
libertas/gspi8686.bin non-free
libertas/gspi8686_hlp.bin non-free
libertas/gspi8686_v9.bin
libertas/gspi8686_v9_helper.bin
libertas/gspi8385.bin non-free
libertas/gspi8385_hlp.bin non-free
libertas/gspi8385_helper.bin non-free
usb8388.bin non-free
libertas/usb8682.bin
libertas/usb8388.bin non-free
libertas/usb8388_v5.bin
libertas/usb8388_v9.bin
sd8688.bin non-free
sd8688_helper.bin non-free
libertas/sd8688.bin non-free
libertas/sd8688_helper.bin non-free
sd8686.bin non-free
sd8686_helper.bin non-free
libertas/sd8686_v8.bin
libertas/sd8686_v8_helper.bin
libertas/sd8686_v9.bin
libertas/sd8686_v9_helper.bin
sd8385.bin non-free
sd8385_helper.bin non-free
libertas/sd8385.bin
libertas/sd8385_helper.bin
mrvl/usbusb8997_combo_v4.bin
mrvl/usb8801_uapsta.bin
mrvl/usb8797_uapsta.bin
mrvl/usb8766_uapsta.bin
mrvl/sd8997_uapsta.bin non-free
mrvl/sd8987_uapsta.bin non-free
mrvl/sd8977_uapsta.bin non-free
mrvl/sd8887_uapsta.bin
mrvl/sd8897_uapsta.bin
mrvl/sd8797_uapsta.bin
mrvl/sd8787_uapsta.bin
mrvl/sd8786_uapsta.bin non-free
mwl8k/fmimage_8366_ap-3.fw
mwl8k/fmimage_8366.fw
mwl8k/helper_8366.fw
mwl8k/fmimage_8687.fw
mwl8k/helper_8687.fw
mwl8k/fmimage_8363.fw non-free
mwl8k/helper_8363.fw non-free
brcm/bcm43xx_hdr-0.fw
brcm/bcm43xx-0.fw
brcm/brcmfmac43012-sdio.bin non-free
brcm/brcmfmac4373-sdio.bin
brcm/brcmfmac4356-sdio.bin
brcm/brcmfmac4354-sdio.bin
brcm/brcmfmac43456-sdio.bin non-free
brcm/brcmfmac43455-sdio.bin
brcm/brcmfmac43430-sdio.bin
brcm/brcmfmac43430a0-sdio.bin
brcm/brcmfmac4339-sdio.bin
brcm/brcmfmac43362-sdio.bin
brcm/brcmfmac4335-sdio.bin
brcm/brcmfmac43340-sdio.bin
brcm/brcmfmac4334-sdio.bin
brcm/brcmfmac4330-sdio.bin
brcm/brcmfmac4329-sdio.bin
brcm/brcmfmac43241b5-sdio.bin
brcm/brcmfmac43241b4-sdio.bin
brcm/brcmfmac43241b0-sdio.bin
brcm/brcmfmac43143-sdio.bin
brcm/brcmfmac4373.bin
brcm/brcmfmac43569.bin
brcm/brcmfmac43242a.bin
brcm/brcmfmac43236b.bin
brcm/brcmfmac43143.bin
brcm/brcmfmac4371-pcie.bin
brcm/brcmfmac4366c-pcie.bin
brcm/brcmfmac4366b-pcie.bin
brcm/brcmfmac4365c-pcie.bin non-free
brcm/brcmfmac4365b-pcie.bin non-free
brcm/brcmfmac4359-pcie.bin non-free
brcm/brcmfmac4358-pcie.bin
brcm/brcmfmac43570-pcie.bin
brcm/brcmfmac4356-pcie.bin
brcm/brcmfmac4350c2-pcie.bin
brcm/brcmfmac4350-pcie.bin
brcm/brcmfmac43602-pcie.bin
b43legacy/ucode4.fw non-free
b43legacy/ucode2.fw non-free
b43/ucode9.fw non-free
b43/ucode42.fw non-free
b43/ucode40.fw non-free
b43/ucode5.fw non-free
b43/ucode30_mimo.fw non-free
b43/ucode33_lcn40.fw non-free
b43/ucode29_mimo.fw non-free
b43/ucode26_mimo.fw non-free
b43/ucode25_mimo.fw non-free
b43/ucode25_lcn.fw non-free
b43/ucode24_lcn.fw non-free
b43/ucode16_mimo.fw non-free
b43/ucode16_lp.fw non-free
b43/ucode15.fw non-free
b43/ucode14.fw non-free
b43/ucode13.fw non-free
b43/ucode11.fw non-free
rtlwifi/rtl8192eefw.bin
rtlwifi/rtl8723efw.bin non-free
rtlwifi/rtl8188efw.bin
rtlwifi/rtl8192cufw_TMSC.bin
rtlwifi/rtl8192cufw_B.bin
rtlwifi/rtl8192cufw_A.bin
rtlwifi/rtl8192cufw.bin
rtlwifi/rtl8723befw_36.bin
rtlwifi/rtl8723befw.bin
rtlwifi/rtl8192defw.bin
rtlwifi/rtl8821aefw_29.bin
rtlwifi/rtl8821aefw.bin
rtlwifi/rtl8192cfwU_B.bin
rtlwifi/rtl8192cfwU.bin
rtlwifi/rtl8192cfw.bin
rtlwifi/rtl8192sefw.bin
rtlwifi/rtl8723bu_bt.bin non-free
rtlwifi/rtl8723bu_nic.bin
rtlwifi/rtl8192eu_nic.bin
rtlwifi/rtl8192cufw_TMSC.bin
rtlwifi/rtl8192cufw_B.bin
rtlwifi/rtl8192cufw_A.bin
rtlwifi/rtl8723aufw_B_NoBT.bin
rtlwifi/rtl8723aufw_B.bin
rtlwifi/rtl8723aufw_A.bin
rtw88/rtw8822b_fw.bin
rtw88/rtw8822c_fw.bin
atmel_at76c505amx-rfmd.bin non-free
atmel_at76c505a-rfmd2958.bin non-free
atmel_at76c505-rfmd2958.bin non-free
atmel_at76c505-rfmd.bin non-free
atmel_at76c503-rfmd-acc.bin non-free
atmel_at76c503-rfmd.bin non-free
atmel_at76c503-i3863.bin non-free
atmel_at76c503-i3861.bin non-free
atmel_at76c506.bin non-free
atmel_at76c506-wpa.bin non-free
atmel_at76c504a_2958.bin non-free
atmel_at76c504a_2958-wpa.bin non-free
atmel_at76c504_2958.bin non-free
atmel_at76c504_2958-wpa.bin non-free
atmel_at76c504.bin non-free
atmel_at76c504-wpa.bin non-free
atmel_at76c502_3com.bin non-free
atmel_at76c502_3com-wpa.bin non-free
atmel_at76c502e.bin non-free
atmel_at76c502e-wpa.bin non-free
atmel_at76c502d.bin non-free
atmel_at76c502d-wpa.bin non-free
atmel_at76c502.bin non-free
atmel_at76c502-wpa.bin non-free
ti-connectivity/wl128x-fw-5-plt.bin
ti-connectivity/wl128x-fw-5-mr.bin
ti-connectivity/wl128x-fw-5-sr.bin
ti-connectivity/wl127x-fw-5-plt.bin
ti-connectivity/wl127x-fw-5-mr.bin
ti-connectivity/wl127x-fw-5-sr.bin
ti-connectivity/wl18xx-fw-4.bin
ti-connectivity/wl1251-nvs.bin
ti-connectivity/wl1251-fw.bin
rt73.bin
rt2860.bin
rt2870.bin
rt2661.bin
rt2561s.bin
rt2561.bin
rs9113_wlan_qspi.rps non-free
rs9113_wlan_qspi.rps non-free
isl3890 non-free
isl3886 non-free
isl3877 non-free
symbol_sp24t_sec_fw non-free
symbol_sp24t_prim_fw non-free
prism_ap_fw.bin non-free
prism_sta_fw.bin non-free
agere_ap_fw.bin
agere_sta_fw.bin
orinoco_ezusb_fw non-free
isl3886pci non-free
3826.arm non-free
isl3887usb non-free
isl3886usb non-free
zd1211/zd1211_uphr non-free
zd1211/zd1211b_uphr non-free
zd1211/zd1211_ub non-free
zd1211/zd1211b_ub non-free
zd1211/zd1211_ur non-free
zd1211/zd1211b_ur non-free
zd1201.fw non-free
zd1201-ap.fw non-free
carl9170-1.fw
ath9k_htc/htc_9271-1.4.0.fw
ath9k_htc/htc_7010-1.4.0.fw
ath6k/AR6004/hw1.3/bdata.bin
ath6k/AR6004/hw1.3/bdata.bin
ath6k/AR6004/hw1.3/fw.ram.bin non-free
ath6k/AR6004/hw1.2/bdata.bin
ath6k/AR6004/hw1.2/bdata.bin
ath6k/AR6004/hw1.2/fw.ram.bin non-free
ath6k/AR6004/hw1.1/bdata.DB132.bin non-free
ath6k/AR6004/hw1.1/bdata.bin non-free
ath6k/AR6004/hw1.1/fw.ram.bin non-free
ath6k/AR6004/hw1.0/bdata.DB132.bin non-free
ath6k/AR6004/hw1.0/bdata.bin non-free
ath6k/AR6004/hw1.0/fw.ram.bin non-free
ath6k/AR6003/hw2.1.1/bdata.SD31.bin
ath6k/AR6003/hw2.1.1/bdata.bin non-free
ath6k/AR6003/hw2.1.1/data.patch.bin
ath6k/AR6003/hw2.1.1/athwlan.bin
ath6k/AR6003/hw2.1.1/otp.bin
ath6k/AR6003/hw2.0/bdata.SD31.bin
ath6k/AR6003/hw2.0/bdata.bin non-free
ath6k/AR6003/hw2.0/data.patch.bin
ath6k/AR6003/hw2.0/athwlan.bin.z77
ath6k/AR6003/hw2.0/otp.bin.z77
ath6k/AR6004/hw1.3/bdata.bin
ath6k/AR6004/hw1.3/bdata.bin
ath6k/AR6004/hw1.3/fw.ram.bin non-free
ath6k/AR6004/hw1.2/bdata.bin
ath6k/AR6004/hw1.2/bdata.bin
fw.ram.bin non-free
ath6k/AR6004/hw1.1/bdata.DB132.bin non-free
ath6k/AR6004/hw1.1/bdata.bin non-free
fw.ram.bin non-free
ath6k/AR6004/hw1.0/bdata.DB132.bin non-free
ath6k/AR6004/hw1.0/bdata.bin non-free
fw.ram.bin non-free
wil6436.brd non-free
wil6436.fw non-free
wil6210.brd
wil6210_sparrow_plus.fw non-free
wil6210.fw
ar5523.bin
wlan/prima/WCNSS_qcom_wlan_nv.bin non-free
ath10k/QCA9377/hw1.0/board.bin
ath10k/QCA9377/hw1.0/firmware-5.bin
ath10k/QCA9377/hw1.0/firmware-6.bin
ath10k/QCA6174/hw3.0/board-2.bin
ath10k/QCA6174/hw3.0/board.bin
ath10k/QCA6174/hw3.0/firmware-6.bin
ath10k/QCA6174/hw3.0/firmware-5.bin non-free
ath10k/QCA6174/hw3.0/firmware-4.bin
ath10k/QCA6174/hw2.1/board-2.bin
ath10k/QCA6174/hw2.1/board.bin
ath10k/QCA6174/hw2.1/firmware-5.bin
ath10k/QCA6174/hw2.1/firmware-4.bin non-free
ath10k/QCA9887/hw1.0/board-2.bin non-free
ath10k/QCA9887/hw1.0/board.bin
ath10k/QCA9887/hw1.0/firmware-5.bin
ath10k/QCA988X/hw2.0/board-2.bin non-free
ath10k/QCA988X/hw2.0/board.bin
ath10k/QCA988X/hw2.0/firmware-5.bin
ath10k/QCA988X/hw2.0/firmware-4.bin
ath10k/QCA988X/hw2.0/firmware-3.bin non-free
ath10k/QCA988X/hw2.0/firmware-2.bin non-free
cxgb3/ael2020_twx_edc.bin
cxgb3/ael2005_twx_edc.bin
cxgb3/ael2005_opt_edc.bin
cxgb3/t3c_psram-1.1.0.bin
cxgb3/t3b_psram-1.1.0.bin
cxgb3/t3fw-7.12.0.bin
cxgb4/t6fw.bin non-free
cxgb4/t5fw.bin non-free
cxgb4/t4fw.bin non-free
cis/tamarack.cis
cis/PE-200.cis
cis/NE2K.cis
cis/PE520.cis
cis/LA-PCM.cis
cis/DP83903.cis
cis/PCMLM28.cis
intel/ice/ddp/ice.pkg non-free
e100/d102e_ucode.bin
e100/d101s_ucode.bin
e100/d101m_ucode.bin
adaptec/starfire_tx.bin
adaptec/starfire_rx.bin
liquidio/lio_23xx_nic.bin
liquidio/lio_410nv_nic.bin
liquidio/lio_210nv_nic.bin
liquidio/lio_210sv_nic.bin
acenic/tg2.bin
acenic/tg1.bin
sun/cassini.bin
myri10ge_rss_eth_z8e.dat
myri10ge_rss_ethp_z8e.dat
myri10ge_eth_z8e.dat
myri10ge_ethp_z8e.dat
bnx2/bnx2-rv2p-09ax-6.0.17.fw
bnx2/bnx2-rv2p-09-6.0.17.fw
bnx2/bnx2-mips-09-6.2.1b.fw
bnx2/bnx2-rv2p-06-6.0.15.fw
bnx2/bnx2-mips-06-6.2.3.fw
tigon/tg3_tso5.bin
tigon/tg3_tso.bin
tigon/tg3.bin
bnx2x/bnx2x-e2-7.13.11.0.fw
bnx2x/bnx2x-e1h-7.13.11.0.fw
bnx2x/bnx2x-e1-7.13.11.0.fw
rtl_nic/rtl8125a-3.fw
rtl_nic/rtl8107e-2.fw
rtl_nic/rtl8107e-1.fw
rtl_nic/rtl8168h-2.fw
rtl_nic/rtl8168h-1.fw
rtl_nic/rtl8168g-3.fw
rtl_nic/rtl8168g-2.fw
rtl_nic/rtl8106e-2.fw
rtl_nic/rtl8106e-1.fw
rtl_nic/rtl8411-2.fw
rtl_nic/rtl8411-1.fw
rtl_nic/rtl8402-1.fw
rtl_nic/rtl8168f-2.fw
rtl_nic/rtl8168f-1.fw
rtl_nic/rtl8105e-1.fw
rtl_nic/rtl8168e-3.fw
rtl_nic/rtl8168e-2.fw
rtl_nic/rtl8168e-1.fw
rtl_nic/rtl8168d-2.fw
rtl_nic/rtl8168d-1.fw
slicoss/oasisdownload.sys
slicoss/gbdownload.sys
slicoss/oasisrcvucode.sys
slicoss/gbrcvucode.sys
qed/qed_init_values_zipped-8.37.7.0.bin
phanfw.bin
phanfw.bin
ositech/Xilinx7OD.bin
3com/typhoon.bin
tehuti/bdx.bin
kaweth/trigger_code_fix.bin
kaweth/trigger_code.bin
kaweth/new_code_fix.bin
kaweth/new_code.bin
ast_dp501_fw.bin non-free
i915/bxt_dmc_ver1_07.bin
i915/skl_dmc_ver1_27.bin
i915/kbl_dmc_ver1_04.bin
i915/glk_dmc_ver1_04.bin
i915/cnl_dmc_ver1_07.bin
i915/icl_dmc_ver1_07.bin
i915/tgl_dmc_ver2_04.bin
i915/skl_huc_ver01_07_1398.bin
i915/skl_guc_33.0.0.bin
i915/bxt_huc_ver01_8_2893.bin
i915/bxt_guc_33.0.0.bin
i915/kbl_huc_ver02_00_1810.bin
i915/kbl_guc_33.0.0.bin
i915/glk_huc_ver03_01_2893.bin
i915/glk_guc_33.0.0.bin
i915/kbl_huc_ver02_00_1810.bin
i915/kbl_guc_33.0.0.bin
i915/icl_huc_ver8_4_3238.bin
i915/icl_guc_33.0.0.bin
radeon/R520_cp.bin
radeon/RS600_cp.bin
radeon/RS690_cp.bin
radeon/R420_cp.bin
radeon/R300_cp.bin
radeon/R200_cp.bin
radeon/R100_cp.bin
radeon/SUMO2_me.bin
radeon/SUMO2_pfp.bin
radeon/SUMO_me.bin
radeon/SUMO_pfp.bin
radeon/SUMO_rlc.bin
radeon/PALM_me.bin
radeon/PALM_pfp.bin
radeon/CYPRESS_smc.bin
radeon/CYPRESS_rlc.bin
radeon/CYPRESS_me.bin
radeon/CYPRESS_pfp.bin
radeon/JUNIPER_smc.bin
radeon/JUNIPER_rlc.bin
radeon/JUNIPER_me.bin
radeon/JUNIPER_pfp.bin
radeon/REDWOOD_smc.bin
radeon/REDWOOD_rlc.bin
radeon/REDWOOD_me.bin
radeon/REDWOOD_pfp.bin
radeon/CEDAR_smc.bin
radeon/CEDAR_rlc.bin
radeon/CEDAR_me.bin
radeon/CEDAR_pfp.bin
radeon/R700_rlc.bin
radeon/R600_rlc.bin
radeon/RV710_smc.bin
radeon/RV710_me.bin
radeon/RV710_pfp.bin
radeon/RV740_smc.bin
radeon/RV730_smc.bin
radeon/RV730_me.bin
radeon/RV730_pfp.bin
radeon/RV770_smc.bin
radeon/RV770_me.bin
radeon/RV770_pfp.bin
radeon/RS780_me.bin
radeon/RS780_pfp.bin
radeon/RV670_me.bin
radeon/RV670_pfp.bin
radeon/RV635_me.bin
radeon/RV635_pfp.bin
radeon/RV620_me.bin
radeon/RV620_pfp.bin
radeon/RV630_me.bin
radeon/RV630_pfp.bin
radeon/RV610_me.bin
radeon/RV610_pfp.bin
radeon/R600_me.bin
radeon/R600_pfp.bin
radeon/ARUBA_rlc.bin
radeon/ARUBA_me.bin
radeon/ARUBA_pfp.bin
radeon/CAYMAN_smc.bin
radeon/CAYMAN_rlc.bin
radeon/CAYMAN_mc.bin
radeon/CAYMAN_me.bin
radeon/CAYMAN_pfp.bin
radeon/CAICOS_smc.bin
radeon/CAICOS_mc.bin
radeon/CAICOS_me.bin
radeon/CAICOS_pfp.bin
radeon/TURKS_smc.bin
radeon/TURKS_mc.bin
radeon/TURKS_me.bin
radeon/TURKS_pfp.bin
radeon/BTC_rlc.bin
radeon/BARTS_smc.bin
radeon/BARTS_mc.bin
radeon/BARTS_me.bin
radeon/BARTS_pfp.bin
radeon/si58_mc.bin
radeon/banks_k_2_smc.bin
radeon/hainan_k_smc.bin
radeon/hainan_smc.bin
radeon/hainan_rlc.bin
radeon/hainan_mc.bin
radeon/hainan_ce.bin
radeon/hainan_me.bin
radeon/hainan_pfp.bin
radeon/HAINAN_smc.bin
radeon/HAINAN_rlc.bin
radeon/HAINAN_mc2.bin
radeon/HAINAN_mc.bin
radeon/HAINAN_ce.bin
radeon/HAINAN_me.bin
radeon/HAINAN_pfp.bin
radeon/oland_k_smc.bin
radeon/oland_smc.bin
radeon/oland_rlc.bin
radeon/oland_mc.bin
radeon/oland_ce.bin
radeon/oland_me.bin
radeon/oland_pfp.bin
radeon/OLAND_smc.bin
radeon/OLAND_rlc.bin
radeon/OLAND_mc2.bin
radeon/OLAND_mc.bin
radeon/OLAND_ce.bin
radeon/OLAND_me.bin
radeon/OLAND_pfp.bin
radeon/verde_k_smc.bin
radeon/verde_smc.bin
radeon/verde_rlc.bin
radeon/verde_mc.bin
radeon/verde_ce.bin
radeon/verde_me.bin
radeon/verde_pfp.bin
radeon/VERDE_smc.bin
radeon/VERDE_rlc.bin
radeon/VERDE_mc2.bin
radeon/VERDE_mc.bin
radeon/VERDE_ce.bin
radeon/VERDE_me.bin
radeon/VERDE_pfp.bin
radeon/pitcairn_k_smc.bin
radeon/pitcairn_smc.bin
radeon/pitcairn_rlc.bin
radeon/pitcairn_mc.bin
radeon/pitcairn_ce.bin
radeon/pitcairn_me.bin
radeon/pitcairn_pfp.bin
radeon/PITCAIRN_smc.bin
radeon/PITCAIRN_rlc.bin
radeon/PITCAIRN_mc2.bin
radeon/PITCAIRN_mc.bin
radeon/PITCAIRN_ce.bin
radeon/PITCAIRN_me.bin
radeon/PITCAIRN_pfp.bin
radeon/tahiti_smc.bin
radeon/tahiti_rlc.bin
radeon/tahiti_mc.bin
radeon/tahiti_ce.bin
radeon/tahiti_me.bin
radeon/tahiti_pfp.bin
radeon/TAHITI_smc.bin
radeon/TAHITI_rlc.bin
radeon/TAHITI_mc2.bin
radeon/TAHITI_mc.bin
radeon/TAHITI_ce.bin
radeon/TAHITI_me.bin
radeon/TAHITI_pfp.bin
radeon/mullins_sdma.bin
radeon/mullins_rlc.bin
radeon/mullins_mec.bin
radeon/mullins_ce.bin
radeon/mullins_me.bin
radeon/mullins_pfp.bin
radeon/MULLINS_sdma.bin
radeon/MULLINS_rlc.bin
radeon/MULLINS_mec.bin
radeon/MULLINS_ce.bin
radeon/MULLINS_me.bin
radeon/MULLINS_pfp.bin
radeon/kabini_sdma.bin
radeon/kabini_rlc.bin
radeon/kabini_mec.bin
radeon/kabini_ce.bin
radeon/kabini_me.bin
radeon/kabini_pfp.bin
radeon/KABINI_sdma.bin
radeon/KABINI_rlc.bin
radeon/KABINI_mec.bin
radeon/KABINI_ce.bin
radeon/KABINI_me.bin
radeon/KABINI_pfp.bin
radeon/kaveri_sdma.bin
radeon/kaveri_rlc.bin
radeon/kaveri_mec2.bin
radeon/kaveri_mec.bin
radeon/kaveri_ce.bin
radeon/kaveri_me.bin
radeon/kaveri_pfp.bin
radeon/KAVERI_sdma.bin
radeon/KAVERI_rlc.bin
radeon/KAVERI_mec.bin
radeon/KAVERI_ce.bin
radeon/KAVERI_me.bin
radeon/KAVERI_pfp.bin
radeon/hawaii_k_smc.bin
radeon/hawaii_smc.bin
radeon/hawaii_sdma.bin
radeon/hawaii_rlc.bin
radeon/hawaii_mc.bin
radeon/hawaii_mec.bin
radeon/hawaii_ce.bin
radeon/hawaii_me.bin
radeon/hawaii_pfp.bin
radeon/HAWAII_smc.bin
radeon/HAWAII_sdma.bin
radeon/HAWAII_rlc.bin
radeon/HAWAII_mc2.bin
radeon/HAWAII_mc.bin
radeon/HAWAII_mec.bin
radeon/HAWAII_ce.bin
radeon/HAWAII_me.bin
radeon/HAWAII_pfp.bin
radeon/bonaire_k_smc.bin
radeon/bonaire_smc.bin
radeon/bonaire_sdma.bin
radeon/bonaire_rlc.bin
radeon/bonaire_mc.bin
radeon/bonaire_mec.bin
radeon/bonaire_ce.bin
radeon/bonaire_me.bin
radeon/bonaire_pfp.bin
radeon/BONAIRE_smc.bin
radeon/BONAIRE_sdma.bin
radeon/BONAIRE_rlc.bin
radeon/BONAIRE_mc2.bin
radeon/BONAIRE_mc.bin
radeon/BONAIRE_mec.bin
radeon/BONAIRE_ce.bin
radeon/BONAIRE_me.bin
radeon/BONAIRE_pfp.bin
radeon/bonaire_uvd.bin
radeon/BONAIRE_uvd.bin
radeon/TAHITI_uvd.bin
radeon/SUMO_uvd.bin
radeon/CYPRESS_uvd.bin
radeon/RV710_uvd.bin
radeon/RV770_uvd.bin
radeon/RS780_uvd.bin
radeon/R600_uvd.bin
radeon/BONAIRE_vce.bin
radeon/TAHITI_vce.bin
nvidia/gp100/gr/sw_method_init.bin
nvidia/gp100/gr/sw_bundle_init.bin
nvidia/gp100/gr/sw_nonctx.bin
nvidia/gp100/gr/sw_ctx.bin
nvidia/gp100/gr/gpccs_sig.bin
nvidia/gp100/gr/gpccs_data.bin
nvidia/gp100/gr/gpccs_inst.bin
nvidia/gp100/gr/gpccs_bl.bin
nvidia/gp100/gr/fecs_sig.bin
nvidia/gp100/gr/fecs_data.bin
nvidia/gp100/gr/fecs_inst.bin
nvidia/gp100/gr/fecs_bl.bin
nvidia/gp100/acr/ucode_unload.bin
nvidia/gp100/acr/ucode_load.bin
nvidia/gp100/acr/bl.bin
nvidia/gm206/gr/sw_method_init.bin
nvidia/gm206/gr/sw_bundle_init.bin
nvidia/gm206/gr/sw_nonctx.bin
nvidia/gm206/gr/sw_ctx.bin
nvidia/gm206/gr/gpccs_sig.bin
nvidia/gm206/gr/gpccs_data.bin
nvidia/gm206/gr/gpccs_inst.bin
nvidia/gm206/gr/gpccs_bl.bin
nvidia/gm206/gr/fecs_sig.bin
nvidia/gm206/gr/fecs_data.bin
nvidia/gm206/gr/fecs_inst.bin
nvidia/gm206/gr/fecs_bl.bin
nvidia/gm206/acr/ucode_unload.bin
nvidia/gm206/acr/ucode_load.bin
nvidia/gm206/acr/bl.bin
nvidia/gm204/gr/sw_method_init.bin
nvidia/gm204/gr/sw_bundle_init.bin
nvidia/gm204/gr/sw_nonctx.bin
nvidia/gm204/gr/sw_ctx.bin
nvidia/gm204/gr/gpccs_sig.bin
nvidia/gm204/gr/gpccs_data.bin
nvidia/gm204/gr/gpccs_inst.bin
nvidia/gm204/gr/gpccs_bl.bin
nvidia/gm204/gr/fecs_sig.bin
nvidia/gm204/gr/fecs_data.bin
nvidia/gm204/gr/fecs_inst.bin
nvidia/gm204/gr/fecs_bl.bin
nvidia/gm204/acr/ucode_unload.bin
nvidia/gm204/acr/ucode_load.bin
nvidia/gm204/acr/bl.bin
nvidia/gm200/gr/sw_method_init.bin
nvidia/gm200/gr/sw_bundle_init.bin
nvidia/gm200/gr/sw_nonctx.bin
nvidia/gm200/gr/sw_ctx.bin
nvidia/gm200/gr/gpccs_sig.bin
nvidia/gm200/gr/gpccs_data.bin
nvidia/gm200/gr/gpccs_inst.bin
nvidia/gm200/gr/gpccs_bl.bin
nvidia/gm200/gr/fecs_sig.bin
nvidia/gm200/gr/fecs_data.bin
nvidia/gm200/gr/fecs_inst.bin
nvidia/gm200/gr/fecs_bl.bin
nvidia/gm200/acr/ucode_unload.bin
nvidia/gm200/acr/ucode_load.bin
nvidia/gm200/acr/bl.bin
nvidia/gp107/sec2/sig-1.bin
nvidia/gp107/sec2/image-1.bin
nvidia/gp107/sec2/desc-1.bin
nvidia/gp107/sec2/sig.bin
nvidia/gp107/sec2/image.bin
nvidia/gp107/sec2/desc.bin
nvidia/gp107/nvdec/scrubber.bin
nvidia/gp107/gr/sw_method_init.bin
nvidia/gp107/gr/sw_bundle_init.bin
nvidia/gp107/gr/sw_nonctx.bin
nvidia/gp107/gr/sw_ctx.bin
nvidia/gp107/gr/gpccs_sig.bin
nvidia/gp107/gr/gpccs_data.bin
nvidia/gp107/gr/gpccs_inst.bin
nvidia/gp107/gr/gpccs_bl.bin
nvidia/gp107/gr/fecs_sig.bin
nvidia/gp107/gr/fecs_data.bin
nvidia/gp107/gr/fecs_inst.bin
nvidia/gp107/gr/fecs_bl.bin
nvidia/gp107/acr/ucode_unload.bin
nvidia/gp107/acr/ucode_load.bin
nvidia/gp107/acr/unload_bl.bin
nvidia/gp107/acr/bl.bin
nvidia/gp106/sec2/sig-1.bin
nvidia/gp106/sec2/image-1.bin
nvidia/gp106/sec2/desc-1.bin
nvidia/gp106/sec2/sig.bin
nvidia/gp106/sec2/image.bin
nvidia/gp106/sec2/desc.bin
nvidia/gp106/nvdec/scrubber.bin
nvidia/gp106/gr/sw_method_init.bin
nvidia/gp106/gr/sw_bundle_init.bin
nvidia/gp106/gr/sw_nonctx.bin
nvidia/gp106/gr/sw_ctx.bin
nvidia/gp106/gr/gpccs_sig.bin
nvidia/gp106/gr/gpccs_data.bin
nvidia/gp106/gr/gpccs_inst.bin
nvidia/gp106/gr/gpccs_bl.bin
nvidia/gp106/gr/fecs_sig.bin
nvidia/gp106/gr/fecs_data.bin
nvidia/gp106/gr/fecs_inst.bin
nvidia/gp106/gr/fecs_bl.bin
nvidia/gp106/acr/ucode_unload.bin
nvidia/gp106/acr/ucode_load.bin
nvidia/gp106/acr/unload_bl.bin
nvidia/gp106/acr/bl.bin
nvidia/gp104/sec2/sig-1.bin
nvidia/gp104/sec2/image-1.bin
nvidia/gp104/sec2/desc-1.bin
nvidia/gp104/sec2/sig.bin
nvidia/gp104/sec2/image.bin
nvidia/gp104/sec2/desc.bin
nvidia/gp104/nvdec/scrubber.bin
nvidia/gp104/gr/sw_method_init.bin
nvidia/gp104/gr/sw_bundle_init.bin
nvidia/gp104/gr/sw_nonctx.bin
nvidia/gp104/gr/sw_ctx.bin
nvidia/gp104/gr/gpccs_sig.bin
nvidia/gp104/gr/gpccs_data.bin
nvidia/gp104/gr/gpccs_inst.bin
nvidia/gp104/gr/gpccs_bl.bin
nvidia/gp104/gr/fecs_sig.bin
nvidia/gp104/gr/fecs_data.bin
nvidia/gp104/gr/fecs_inst.bin
nvidia/gp104/gr/fecs_bl.bin
nvidia/gp104/acr/ucode_unload.bin
nvidia/gp104/acr/ucode_load.bin
nvidia/gp104/acr/unload_bl.bin
nvidia/gp104/acr/bl.bin
nvidia/gp102/sec2/sig-1.bin
nvidia/gp102/sec2/image-1.bin
nvidia/gp102/sec2/desc-1.bin
nvidia/gp102/sec2/sig.bin
nvidia/gp102/sec2/image.bin
nvidia/gp102/sec2/desc.bin
nvidia/gp102/nvdec/scrubber.bin
nvidia/gp102/gr/sw_method_init.bin
nvidia/gp102/gr/sw_bundle_init.bin
nvidia/gp102/gr/sw_nonctx.bin
nvidia/gp102/gr/sw_ctx.bin
nvidia/gp102/gr/gpccs_sig.bin
nvidia/gp102/gr/gpccs_data.bin
nvidia/gp102/gr/gpccs_inst.bin
nvidia/gp102/gr/gpccs_bl.bin
nvidia/gp102/gr/fecs_sig.bin
nvidia/gp102/gr/fecs_data.bin
nvidia/gp102/gr/fecs_inst.bin
nvidia/gp102/gr/fecs_bl.bin
nvidia/gp102/acr/ucode_unload.bin
nvidia/gp102/acr/ucode_load.bin
nvidia/gp102/acr/unload_bl.bin
nvidia/gp102/acr/bl.bin
nvidia/gv100/sec2/sig.bin
nvidia/gv100/sec2/image.bin
nvidia/gv100/sec2/desc.bin
nvidia/gv100/nvdec/scrubber.bin
nvidia/gv100/gr/sw_method_init.bin
nvidia/gv100/gr/sw_bundle_init.bin
nvidia/gv100/gr/sw_nonctx.bin
nvidia/gv100/gr/sw_ctx.bin
nvidia/gv100/gr/gpccs_sig.bin
nvidia/gv100/gr/gpccs_data.bin
nvidia/gv100/gr/gpccs_inst.bin
nvidia/gv100/gr/gpccs_bl.bin
nvidia/gv100/gr/fecs_sig.bin
nvidia/gv100/gr/fecs_data.bin
nvidia/gv100/gr/fecs_inst.bin
nvidia/gv100/gr/fecs_bl.bin
nvidia/gv100/acr/ucode_unload.bin
nvidia/gv100/acr/ucode_load.bin
nvidia/gv100/acr/unload_bl.bin
nvidia/gv100/acr/bl.bin
nvidia/gp108/sec2/sig.bin
nvidia/gp108/sec2/image.bin
nvidia/gp108/sec2/desc.bin
nvidia/gp108/nvdec/scrubber.bin
nvidia/gp108/gr/sw_method_init.bin
nvidia/gp108/gr/sw_bundle_init.bin
nvidia/gp108/gr/sw_nonctx.bin
nvidia/gp108/gr/sw_ctx.bin
nvidia/gp108/gr/gpccs_sig.bin
nvidia/gp108/gr/gpccs_data.bin
nvidia/gp108/gr/gpccs_inst.bin
nvidia/gp108/gr/gpccs_bl.bin
nvidia/gp108/gr/fecs_sig.bin
nvidia/gp108/gr/fecs_data.bin
nvidia/gp108/gr/fecs_inst.bin
nvidia/gp108/gr/fecs_bl.bin
nvidia/gp108/acr/ucode_unload.bin
nvidia/gp108/acr/ucode_load.bin
nvidia/gp108/acr/unload_bl.bin
nvidia/gp108/acr/bl.bin
amdgpu/navi12_gpu_info.bin non-free
amdgpu/navi14_gpu_info.bin
amdgpu/navi10_gpu_info.bin
amdgpu/renoir_gpu_info.bin
amdgpu/arcturus_gpu_info.bin non-free
amdgpu/raven2_gpu_info.bin
amdgpu/picasso_gpu_info.bin
amdgpu/raven_gpu_info.bin
amdgpu/vega12_gpu_info.bin
amdgpu/vega10_gpu_info.bin
amdgpu/mullins_mec.bin
amdgpu/mullins_rlc.bin
amdgpu/mullins_ce.bin
amdgpu/mullins_me.bin
amdgpu/mullins_pfp.bin
amdgpu/kabini_mec.bin
amdgpu/kabini_rlc.bin
amdgpu/kabini_ce.bin
amdgpu/kabini_me.bin
amdgpu/kabini_pfp.bin
amdgpu/kaveri_mec2.bin
amdgpu/kaveri_mec.bin
amdgpu/kaveri_rlc.bin
amdgpu/kaveri_ce.bin
amdgpu/kaveri_me.bin
amdgpu/kaveri_pfp.bin
amdgpu/hawaii_mec.bin
amdgpu/hawaii_rlc.bin
amdgpu/hawaii_ce.bin
amdgpu/hawaii_me.bin
amdgpu/hawaii_pfp.bin
amdgpu/bonaire_mec.bin
amdgpu/bonaire_rlc.bin
amdgpu/bonaire_ce.bin
amdgpu/bonaire_me.bin
amdgpu/bonaire_pfp.bin
amdgpu/mullins_sdma1.bin
amdgpu/mullins_sdma.bin
amdgpu/kabini_sdma1.bin
amdgpu/kabini_sdma.bin
amdgpu/kaveri_sdma1.bin
amdgpu/kaveri_sdma.bin
amdgpu/hawaii_sdma1.bin
amdgpu/hawaii_sdma.bin
amdgpu/bonaire_sdma1.bin
amdgpu/bonaire_sdma.bin
amdgpu/si58_mc.bin
amdgpu/hainan_mc.bin
amdgpu/oland_mc.bin
amdgpu/verde_mc.bin
amdgpu/pitcairn_mc.bin
amdgpu/tahiti_mc.bin
amdgpu/hainan_rlc.bin
amdgpu/hainan_ce.bin
amdgpu/hainan_me.bin
amdgpu/hainan_pfp.bin
amdgpu/oland_rlc.bin
amdgpu/oland_ce.bin
amdgpu/oland_me.bin
amdgpu/oland_pfp.bin
amdgpu/verde_rlc.bin
amdgpu/verde_ce.bin
amdgpu/verde_me.bin
amdgpu/verde_pfp.bin
amdgpu/pitcairn_rlc.bin
amdgpu/pitcairn_ce.bin
amdgpu/pitcairn_me.bin
amdgpu/pitcairn_pfp.bin
amdgpu/tahiti_rlc.bin
amdgpu/tahiti_ce.bin
amdgpu/tahiti_me.bin
amdgpu/tahiti_pfp.bin
amdgpu/banks_k_2_smc.bin
amdgpu/hainan_k_smc.bin
amdgpu/hainan_smc.bin
amdgpu/oland_k_smc.bin
amdgpu/oland_smc.bin
amdgpu/verde_k_smc.bin
amdgpu/verde_smc.bin
amdgpu/pitcairn_k_smc.bin
amdgpu/pitcairn_smc.bin
amdgpu/tahiti_smc.bin
amdgpu/topaz_mc.bin
amdgpu/hawaii_mc.bin
amdgpu/bonaire_mc.bin
amdgpu/polaris12_k_mc.bin
amdgpu/polaris10_k_mc.bin
amdgpu/polaris11_k_mc.bin
amdgpu/polaris12_mc.bin
amdgpu/polaris10_mc.bin
amdgpu/polaris11_mc.bin
amdgpu/tonga_mc.bin
amdgpu/vega12_asd.bin
amdgpu/vega12_sos.bin
amdgpu/vega10_asd.bin
amdgpu/vega10_sos.bin
amdgpu/raven2_asd.bin
amdgpu/picasso_asd.bin
amdgpu/raven_asd.bin
amdgpu/arcturus_asd.bin non-free
amdgpu/arcturus_sos.bin non-free
amdgpu/navi12_asd.bin non-free
amdgpu/navi12_sos.bin non-free
amdgpu/navi14_asd.bin
amdgpu/navi14_sos.bin
amdgpu/navi10_asd.bin
amdgpu/navi10_sos.bin
amdgpu/vega20_ta.bin
amdgpu/vega20_asd.bin
amdgpu/vega20_sos.bin
amdgpu/renoir_asd.bin
amdgpu/vegam_rlc.bin
amdgpu/vegam_mec2.bin
amdgpu/vegam_mec.bin
amdgpu/vegam_me.bin
amdgpu/vegam_pfp.bin
amdgpu/vegam_ce.bin
amdgpu/polaris12_rlc.bin
amdgpu/polaris12_mec2_2.bin
amdgpu/polaris12_mec2.bin
amdgpu/polaris12_mec_2.bin
amdgpu/polaris12_mec.bin
amdgpu/polaris12_me_2.bin
amdgpu/polaris12_me.bin
amdgpu/polaris12_pfp_2.bin
amdgpu/polaris12_pfp.bin
amdgpu/polaris12_ce_2.bin
amdgpu/polaris12_ce.bin
amdgpu/polaris11_rlc.bin
amdgpu/polaris11_mec2_2.bin
amdgpu/polaris11_mec2.bin
amdgpu/polaris11_mec_2.bin
amdgpu/polaris11_mec.bin
amdgpu/polaris11_me_2.bin
amdgpu/polaris11_me.bin
amdgpu/polaris11_pfp_2.bin
amdgpu/polaris11_pfp.bin
amdgpu/polaris11_ce_2.bin
amdgpu/polaris11_ce.bin
amdgpu/polaris10_rlc.bin
amdgpu/polaris10_mec2_2.bin
amdgpu/polaris10_mec2.bin
amdgpu/polaris10_mec_2.bin
amdgpu/polaris10_mec.bin
amdgpu/polaris10_me_2.bin
amdgpu/polaris10_me.bin
amdgpu/polaris10_pfp_2.bin
amdgpu/polaris10_pfp.bin
amdgpu/polaris10_ce_2.bin
amdgpu/polaris10_ce.bin
amdgpu/fiji_rlc.bin
amdgpu/fiji_mec2.bin
amdgpu/fiji_mec.bin
amdgpu/fiji_me.bin
amdgpu/fiji_pfp.bin
amdgpu/fiji_ce.bin
amdgpu/topaz_rlc.bin
amdgpu/topaz_mec.bin
amdgpu/topaz_me.bin
amdgpu/topaz_pfp.bin
amdgpu/topaz_ce.bin
amdgpu/tonga_rlc.bin
amdgpu/tonga_mec2.bin
amdgpu/tonga_mec.bin
amdgpu/tonga_me.bin
amdgpu/tonga_pfp.bin
amdgpu/tonga_ce.bin
amdgpu/stoney_rlc.bin
amdgpu/stoney_mec.bin
amdgpu/stoney_me.bin
amdgpu/stoney_pfp.bin
amdgpu/stoney_ce.bin
amdgpu/carrizo_rlc.bin
amdgpu/carrizo_mec2.bin
amdgpu/carrizo_mec.bin
amdgpu/carrizo_me.bin
amdgpu/carrizo_pfp.bin
amdgpu/carrizo_ce.bin
amdgpu/renoir_rlc.bin
amdgpu/renoir_mec2.bin
amdgpu/renoir_mec.bin
amdgpu/renoir_me.bin
amdgpu/renoir_pfp.bin
amdgpu/renoir_ce.bin
amdgpu/arcturus_rlc.bin non-free
amdgpu/arcturus_mec2.bin non-free
amdgpu/arcturus_mec.bin non-free
amdgpu/raven_kicker_rlc.bin
amdgpu/raven2_rlc.bin
amdgpu/raven2_mec2.bin
amdgpu/raven2_mec.bin
amdgpu/raven2_me.bin
amdgpu/raven2_pfp.bin
amdgpu/raven2_ce.bin
amdgpu/picasso_rlc_am4.bin
amdgpu/picasso_rlc.bin
amdgpu/picasso_mec2.bin
amdgpu/picasso_mec.bin
amdgpu/picasso_me.bin
amdgpu/picasso_pfp.bin
amdgpu/picasso_ce.bin
amdgpu/raven_rlc.bin
amdgpu/raven_mec2.bin
amdgpu/raven_mec.bin
amdgpu/raven_me.bin
amdgpu/raven_pfp.bin
amdgpu/raven_ce.bin
amdgpu/vega20_rlc.bin
amdgpu/vega20_mec2.bin
amdgpu/vega20_mec.bin
amdgpu/vega20_me.bin
amdgpu/vega20_pfp.bin
amdgpu/vega20_ce.bin
amdgpu/vega12_rlc.bin
amdgpu/vega12_mec2.bin
amdgpu/vega12_mec.bin
amdgpu/vega12_me.bin
amdgpu/vega12_pfp.bin
amdgpu/vega12_ce.bin
amdgpu/vega10_rlc.bin
amdgpu/vega10_mec2.bin
amdgpu/vega10_mec.bin
amdgpu/vega10_me.bin
amdgpu/vega10_pfp.bin
amdgpu/vega10_ce.bin
amdgpu/navi12_rlc.bin non-free
amdgpu/navi12_mec2.bin non-free
amdgpu/navi12_mec.bin non-free
amdgpu/navi12_me.bin non-free
amdgpu/navi12_pfp.bin non-free
amdgpu/navi12_ce.bin non-free
amdgpu/navi14_rlc.bin
amdgpu/navi14_mec2.bin
amdgpu/navi14_mec.bin
amdgpu/navi14_me.bin
amdgpu/navi14_pfp.bin
amdgpu/navi14_ce.bin
amdgpu/navi14_mec2_wks.bin
amdgpu/navi14_mec_wks.bin
amdgpu/navi14_me_wks.bin
amdgpu/navi14_pfp_wks.bin
amdgpu/navi14_ce_wks.bin
amdgpu/navi10_rlc.bin
amdgpu/navi10_mec2.bin
amdgpu/navi10_mec.bin
amdgpu/navi10_me.bin
amdgpu/navi10_pfp.bin
amdgpu/navi10_ce.bin
amdgpu/topaz_sdma1.bin
amdgpu/topaz_sdma.bin
amdgpu/vegam_sdma1.bin
amdgpu/vegam_sdma.bin
amdgpu/polaris12_sdma1.bin
amdgpu/polaris12_sdma.bin
amdgpu/polaris11_sdma1.bin
amdgpu/polaris11_sdma.bin
amdgpu/polaris10_sdma1.bin
amdgpu/polaris10_sdma.bin
amdgpu/stoney_sdma.bin
amdgpu/fiji_sdma1.bin
amdgpu/fiji_sdma.bin
amdgpu/carrizo_sdma1.bin
amdgpu/carrizo_sdma.bin
amdgpu/tonga_sdma1.bin
amdgpu/tonga_sdma.bin
amdgpu/renoir_sdma.bin
amdgpu/arcturus_sdma.bin non-free
amdgpu/raven2_sdma.bin
amdgpu/picasso_sdma.bin
amdgpu/raven_sdma.bin
amdgpu/vega20_sdma1.bin
amdgpu/vega20_sdma.bin
amdgpu/vega12_sdma1.bin
amdgpu/vega12_sdma.bin
amdgpu/vega10_sdma1.bin
amdgpu/vega10_sdma.bin
amdgpu/navi12_sdma1.bin non-free
amdgpu/navi12_sdma.bin non-free
amdgpu/navi14_sdma1.bin
amdgpu/navi14_sdma.bin
amdgpu/navi10_sdma1.bin
amdgpu/navi10_sdma.bin
amdgpu/navi10_mes.bin non-free
amdgpu/vega20_uvd.bin
amdgpu/vega12_uvd.bin
amdgpu/vega10_uvd.bin
amdgpu/vegam_uvd.bin
amdgpu/polaris12_uvd.bin
amdgpu/polaris11_uvd.bin
amdgpu/polaris10_uvd.bin
amdgpu/stoney_uvd.bin
amdgpu/fiji_uvd.bin
amdgpu/carrizo_uvd.bin
amdgpu/tonga_uvd.bin
amdgpu/mullins_uvd.bin
amdgpu/hawaii_uvd.bin
amdgpu/kaveri_uvd.bin
amdgpu/kabini_uvd.bin
amdgpu/bonaire_uvd.bin
amdgpu/vega20_vce.bin
amdgpu/vega12_vce.bin
amdgpu/vega10_vce.bin
amdgpu/vegam_vce.bin
amdgpu/polaris12_vce.bin
amdgpu/polaris11_vce.bin
amdgpu/polaris10_vce.bin
amdgpu/stoney_vce.bin
amdgpu/fiji_vce.bin
amdgpu/carrizo_vce.bin
amdgpu/tonga_vce.bin
amdgpu/mullins_vce.bin
amdgpu/hawaii_vce.bin
amdgpu/kaveri_vce.bin
amdgpu/kabini_vce.bin
amdgpu/bonaire_vce.bin
amdgpu/navi12_vcn.bin non-free
amdgpu/navi14_vcn.bin
amdgpu/navi10_vcn.bin
amdgpu/renoir_vcn.bin
amdgpu/arcturus_vcn.bin non-free
amdgpu/raven2_vcn.bin
amdgpu/picasso_vcn.bin
amdgpu/raven_vcn.bin
amdgpu/vega20_smc.bin
amdgpu/vega12_smc.bin
amdgpu/vega10_acg_smc.bin
amdgpu/vega10_smc.bin
amdgpu/vegam_smc.bin
amdgpu/polaris12_k_smc.bin
amdgpu/polaris12_smc.bin
amdgpu/polaris11_k2_smc.bin
amdgpu/polaris11_k_smc.bin
amdgpu/polaris11_smc_sk.bin
amdgpu/polaris11_smc.bin
amdgpu/polaris10_k2_smc.bin
amdgpu/polaris10_k_smc.bin
amdgpu/polaris10_smc_sk.bin
amdgpu/polaris10_smc.bin
amdgpu/fiji_smc.bin
amdgpu/tonga_k_smc.bin
amdgpu/tonga_smc.bin
amdgpu/topaz_k_smc.bin
amdgpu/topaz_smc.bin
amdgpu/hawaii_k_smc.bin
amdgpu/hawaii_smc.bin
amdgpu/bonaire_k_smc.bin
amdgpu/bonaire_smc.bin
amdgpu/navi12_smc.bin non-free
amdgpu/navi14_smc.bin
amdgpu/navi10_smc.bin
amdgpu/arcturus_smc.bin non-free
amdgpu/vega20_smc.bin
amdgpu/raven_dmcu.bin
vx/l_1_vp4.d56 non-free
vx/l_1_vxp.d56 non-free
vx/l_1_v22.d56 non-free
vx/l_1_vx2.d56 non-free
vx/bd563s3.boot non-free
vx/bd563v2.boot non-free
vx/bd56002.boot non-free
vx/x1_1_vp4.xlx non-free
vx/x1_1_vxp.xlx non-free
vx/x1_2_v22.xlx non-free
vx/x1_1_vx2.xlx non-free
vx/bx_1_vp4.b56 non-free
vx/bx_1_vxp.b56 non-free
6fire/dmx6firecf.bin non-free
6fire/dmx6fireap.ihx non-free
6fire/dmx6firel2.ihx non-free
yamaha/ds1e_ctrl.fw
yamaha/ds1_ctrl.fw
yamaha/ds1_dsp.fw
cs46xx/cwcdma non-free
cs46xx/cwcbinhack non-free
cs46xx/cwcsnoop non-free
cs46xx/cwcasync non-free
cs46xx/cwc4630 non-free
asihpi/dsp8900.bin non-free
asihpi/dsp8700.bin non-free
asihpi/dsp6600.bin non-free
asihpi/dsp6400.bin non-free
asihpi/dsp6205.bin non-free
asihpi/dsp6200.bin non-free
asihpi/dsp5000.bin non-free
riptide.hex non-free
ctefx-r3di.bin non-free
ctefx-desktop.bin non-free
ctefx.bin
mixart/miXart8AES.xlx non-free
mixart/miXart8.elf non-free
mixart/miXart8.xlx non-free
korg/k1212.dsp
pcxhr/dspd222.d56 non-free
pcxhr/dspb924.b56 non-free
pcxhr/dspe924.e56 non-free
pcxhr/xlxc924.dat non-free
pcxhr/xlxc222.dat non-free
pcxhr/dspd1222.d56 non-free
pcxhr/dspb1222e.b56 non-free
pcxhr/dspb1222hr.b56 non-free
pcxhr/xlxc1222e.dat non-free
pcxhr/xlxc1222hr.dat non-free
pcxhr/dspd882.d56 non-free
pcxhr/dspb882e.b56 non-free
pcxhr/dspb882hr.b56 non-free
pcxhr/dspe882.e56 non-free
pcxhr/xlxc882e.dat non-free
pcxhr/xlxc882hr.dat non-free
pcxhr/xlxint.dat non-free
ess/maestro3_assp_minisrc.fw
ess/maestro3_assp_kernel.fw
ea/darla24_dsp.fw non-free
ea/indigo_dsp.fw non-free
ea/loader_dsp.fw non-free
ea/indigo_djx_dsp.fw non-free
ea/loader_dsp.fw non-free
ea/indigo_io_dsp.fw non-free
ea/loader_dsp.fw non-free
ea/gina24_361_asic.fw non-free
ea/gina24_301_asic.fw non-free
ea/gina24_361_dsp.fw non-free
ea/gina24_301_dsp.fw non-free
ea/loader_dsp.fw non-free
ea/mona_2_asic.fw non-free
ea/mona_361_1_asic_96.fw non-free
ea/mona_361_1_asic_48.fw non-free
ea/mona_301_1_asic_96.fw non-free
ea/mona_301_1_asic_48.fw non-free
ea/mona_361_dsp.fw non-free
ea/mona_301_dsp.fw non-free
ea/loader_dsp.fw non-free
ea/3g_asic.fw non-free
ea/echo3g_dsp.fw non-free
ea/loader_dsp.fw non-free
ea/indigo_iox_dsp.fw non-free
ea/loader_dsp.fw non-free
ea/gina20_dsp.fw non-free
ea/darla20_dsp.fw non-free
ea/mia_dsp.fw non-free
ea/loader_dsp.fw non-free
ea/layla20_asic.fw non-free
ea/layla20_dsp.fw non-free
ea/layla24_2S_asic.fw non-free
ea/layla24_2A_asic.fw non-free
ea/layla24_1_asic.fw non-free
ea/layla24_dsp.fw non-free
ea/loader_dsp.fw non-free
ea/indigo_dj_dsp.fw non-free
ea/loader_dsp.fw non-free
emu/emu1010_notebook.fw non-free
emu/emu0404.fw non-free
emu/micro_dock.fw non-free
emu/emu1010b.fw non-free
emu/audio_dock.fw non-free
emu/hana.fw non-free
digiface_firmware_rev11.bin non-free
digiface_firmware.bin non-free
multiface_firmware_rev11.bin non-free
multiface_firmware.bin non-free
rpm_firmware.bin non-free
I compiled kernel 4.9.231 in bionicpup32 using current kernel-kit. All looks good, the kernel fdrv and zdrv all worked fine.
Noticed an issue with 'firmware_picker.sh', it doesn't honour $COMP from 'build.conf' when making the fdrv sfs.
I had to repeat the compile, a "build.sh clean" command seems a lot more aggressive than before.
I did appreceiate the support for "../linux-firmware" as a symbolioc link. I already have a local clone of "linux-firmware" git.
Ok, I'll fix $COMP
and then that will pretty much wind up this issue.
Sorry, there is still an issue. I compiled kernel 4.4.232 in xenialpup and ended up with 2 dead symbolic links in "/lib/firmware/i915" in the generated "fdrv-4.4.232-gyro-pae.sfs". Maybe you should consider changing the "cp -d" commands in "firmware_picker.sh" to "cp -L" or even "cp -aLf". Then at least we get a real firmware blob in the "fdrv", not just a symbolic link.
So did you change to 'cp -L' or 'cp -aLf' (latter should be overkill) and test?
Anyway, doing a similar build right now with '-L'
Yep, '-L' works fine, in /lib/firmware/i915 all looks good.
Yes, I test by doing a compile with a modified 'firmware_picker.sh' I just tested 'cp -Ln' and that also works fine. I added the 'n' because I worked out that my '/etc/modules/firmware.lst.$KVER' contains a small number of duplicates, and the 'n' avoids copying twice. But not a biggie, using '-L' instead of '-d' is the important thing.
Thinking of looking at running '/etc/modules/firmware.lst.$KVER' through a "sort -u" before it gets stored in the 'zdrv...sfs'. But that could easily be patched in later.
I finally worked out why we get duplicate entries in the list; the same firmware blob is referenced by more than 1 module.
I have some code to do "sort -u" on the list, that works in a test stub, but I haven't done a test kernel compile yet. If it works in kernel compile, I can commit the patch to 'firmware_picker.sh' later.
what about something like [ -f "dest/file" ] || { cp -Ln "source/file"; log source/file }
?
Tried that approach, only works for the firmware that we have blobs for, not the "non-free" ones.
I've just done a test compile of 5.4.55 in bionicpup64, and it works fine Uses: "fw_tmp_list=/tmp/firmware.lst.${kernel_version}" and "fw_msg $fw $fw_tmp_list # log to zdrv" and "sort -u < $fw_tmp_list >> $fw_list" and "cp -L -n $SRC_FW_DIR/$fw $FIRMWARE_RESULT_DIR"
i.e. write entries to a temp file and then appends this to the real file via "sort -u". This also gives us a sorted "/etc/modules/firmware.lst.$KVER" file, better for browsing.
My plan is to commit a patched 'firmware_picker.sh' after a few more kernel compiles. firmware_picker.sh.gz
Unfortunately, I have another bright idea.
Since kernel-kit produces "vmlinuz-${kernel_ver}-${package_name_suffix}", should it produce fdrv as "firmware-${kernel_ver}-${package_name_suffix}.sfs". and zdrv as "modules-${kernel_ver}-${package_name_suffix}.sfs".
I have attached a copy of the patched 'firmware_picker.sh' to post above. Here is the patch file: duplicates.diff.gz
Since kernel-kit produces "vmlinuz-${kernel_ver}-${package_name_suffix}", should it produce fdrv as "firmware-${kernel_ver}-${package_name_suffix}.sfs". and zdrv as "modules-${kernel_ver}-${package_name_suffix}.sfs".
Doesn't matter about the name. I don't feel like patching change_kernels
and support/huge_kernels.sh
because backward compatibility will then become an issue.
i.e. write entries to a temp file and then appends this to the real file via "sort -u". This also gives us a sorted "/etc/modules/firmware.lst.$KVER" file, better for browsing.
I took a slightly different approach, only because 'sort' may not be available or may differ. I recall BK had problems with 'sort' versions a while ago. However 'grep' is fairly consistent and the order is preserved in a while read line
loop. Code shortly.
BTW, there were about 60 duplicates I found in k4.4.230, and a few of those were radeon/amd_gpu firmware blobs. Yes after I posted I realised that non-free (or 'not found') would be an issue.
Ok, here is my diff, the read loop only takes a second or two on my 4th gen i5 desktop.
--- ../woof-CE/kernel-kit/firmware_picker.sh 2020-08-03 21:44:22.072947050 +1000
+++ firmware_picker.sh 2020-08-03 21:41:07.658958480 +1000
@@ -78,7 +78,8 @@ mkdir -p $FIRMWARE_RESULT_DIR
firmware_list_dir=output/${linux_kernel_dir}/etc/modules/
mkdir -p $firmware_list_dir
fw_list=${firmware_list_dir}/firmware.lst.${kernel_version}
-echo "### If 'non-free' is after a firmware entry it is non-free and will need to be found elsewhere" > $fw_list
+tmp_list=/tmp/firmware.lst
+echo "### If 'non-free' is after a firmware entry it may be non-free and will need to be found elsewhere" > $fw_list
# find the modules and see what firmware they need
# NOTE 0: modinfo to the actual full path to the .ko module file works
@@ -91,25 +92,30 @@ do
fw_dir=${fw%\/*} # dirname
if [ "$fw" = "$fw_dir" ];then # not in subdir
if [ -e "$SRC_FW_DIR/$fw" ];then
- cp -L $SRC_FW_DIR/$fw $FIRMWARE_RESULT_DIR
- fw_msg $fw $fw_list # log to zdrv
+ cp -Ln $SRC_FW_DIR/$fw $FIRMWARE_RESULT_DIR
+ fw_msg $fw $tmp_list # log to zdrv
else
- fw_msg "${fw} non-free" $fw_list # log to zdrv
+ fw_msg "${fw} non-free" $tmp_list # log to zdrv
continue
fi
else
if [ -e "$SRC_FW_DIR/$fw" ];then
mkdir -p $FIRMWARE_RESULT_DIR/$fw_dir
- cp -L $SRC_FW_DIR/$fw $FIRMWARE_RESULT_DIR/$fw_dir
- fw_msg $fw $fw_list # log to zdrv
+ cp -Ln $SRC_FW_DIR/$fw $FIRMWARE_RESULT_DIR/$fw_dir
+ fw_msg $fw $tmp_list # log to zdrv
else
- fw_msg "${fw} non-free" $fw_list # log to zdrv
+ fw_msg "${fw} non-free" $tmp_list # log to zdrv
continue
fi
fi
done
done
+cat $tmp_list | while read entry
+do
+ grep -q "$entry" $fw_list || echo "$entry" >> $fw_list
+done
+
# extract licences
licence_func
better for browsing.
Maybe sort is better for browsing. I'll think about it.
There is really no difference between yours and mine - same approach from slightly different angles. I think 'better for browsing' wins. (not keen on your other 'bright idea' though :stuck_out_tongue: - only the timing is unfortunate, couple of years ago would have been better )
Just commit and close this so we can move on. We've done a good job IMHO.
Ok
Done
There is an ancient script in
kernel-kit
calledfw.sh
which attempts to cherry pick firmware for the configured kernel. While this works it doesn't filter the firmware on kernel version resulting in a rather bloated fdrv or zdrv.I trawled through various kernel sources and modules that require firmware (mainly wireless and gpu) to see if I could grok out the firmware versions for the kernel being built to no avail. Sources between modules differ too much to make an efficient script in a timely manner - in other words, I don't have a month to dedicate to this! So, as we do, I have come up with a work-around but it does have certain caveats.
What it does is queries
modinfo
for every module in/lib/modules/$(uname -r)
tree looking for thefirmware:
line. The big disadvantage with that is that you can only build a kernel the same version as the kernel you are running. The big advantage is that thefdrv
is reduced from around 100MB to 40MB so is feasible to include in an iso. Lets face a fact - if a user's hardware doesn't work - especially the main things such as GPU, input devices and network connectivity, then that user is more than likely to move on from Puppy :disappointed: .I think (
disclaimer*
don't know) that this should work across kernelPATCHLEVEL
s; ie: you should be able to use this method from say a 4.19.54 kernel when building a 4.19.132 kernel (latest at time of writing) however YMMV and the kernel configuration would need to be near identical as firmware blobs could be missed. I would be more comfortable if theSUBLEVEL
were within say 10 to 15 releases. It all depends if the developers decided that a driver for say a wifi device needed the upgraded corresponding firmware blob, for instance if the vendor of that blob issued a critical security patch.This does become somewhat of a "chicken and egg" problem but there is another work-around that could be employed. Instead of doing a full kernel rebuild, perhaps, if this new method is employed, that either only the zdrv (kernel-modules*.sfs) or only the fdrv need to be rebuilt, but of course depending on the fact the the newly built kernel is running such that correct firmware is chosen. Of course all firmware is grabbed from the latest
linux-firmware
git repo.