Tiny Core Extensions > TCE Tips & Tricks

How to fix failed firmware loading in TC16

(1/4) > >>

CNK:
In TC16 on x86_64 loading firmware-radeon.tcz then graphics-6.12.11-tinycore64.tcz causes the screen on my laptop to go blank. When I force a reboot with Ctrl-Alt-Delete, the display returns and I can see an error something like "radeon_cp: failed to load firmware: radeon/R520_cp.bin" before it reboots.

This is fixed (as root) either by creating this symlink:

--- Code: ---ln -s /usr/local/lib/firmware /lib/firmware

--- End code ---
Or by writing to this file in /sys:

--- Code: ---echo -n /usr/local/lib/firmware > /sys/module/firmware_class/parameters/path

--- End code ---

The kernel documentation doesn't list /usr/local/lib/firmware as a default firmware search path, so I'm not sure how this worked in TC15 on the same PC, but it seems to need help finding it now.

Hmm it seems this bug was reported already in alpha testing. I'll post this in "Tips and Tricks" then instead of the Bugs section, since I guess a fix wasn't found (although I wonder why not).

nick65go:
Hi CNK. I think in TC15 (and previous versions) was like you said,
--- Code: ---ln -s /usr/local/lib/firmware /lib/firmware
--- End code ---
search for firmware in two places, because in some TCZ firmware blob was not placed by default in /lib/firmware of TCZ. The sim-link was already present in core.

My solution for intel firmware (generation 13 CPU & generation 12 GPU) is to bind (concatenate or remaster) firmware into core.gz. It is a few minutes task, used for your specific CPU /GPU. The rest of firmware can be loaded later on-demand (for WiFi, Bluetooth etc) because they are not critical (no blank / freeze of display).
BTW: I think when you compile the kernel a path, where to search for firmware, could be provided (I think I read that in gento linux), sorry if this is may be wrong info.

Juanito:
I can’t check for a week or so, but I thought there might have been a kernel configuration setting for the firmware location?

CNK:
@nick65go:
I checked in TC15 on the same laptop and there's no symlink nor is there a path set at /sys/module/firmware_class/parameters/path, but loading graphics-KERNEL works fine there whereas in TC16 I get stuck at a black screen unless I make one of those changes first.

@juanito:
You did mention some before.But based on the descriptions for EXTRA_FIRMWARE and EXTRA_FIRMWARE_DIR it does seem like they're only used for specifying firmware files built into the kernel.

The search paths are here in the kernel source code. The first path defaults to empty and is skipped unless it's set from the firmware module's "path" parameter below (such as when set at /sys/module/firmware_class/parameters/path or on the kernel command line). Unfortunately I don't see anywhere that a custom path is set from a build-time configuration value.

GNUser:

--- Quote from: nick65go on June 01, 2025, 01:22:50 PM ---My solution for intel firmware (generation 13 CPU & generation 12 GPU) is to bind (concatenate or remaster) firmware into core.gz.

--- End quote ---
Another option is to put the firmware in its own initramfs. This approach makes it obvious to you how your setup is different from vanilla TCL, which is helpful to remember when upgrading. It's also convenient because you don't have to remaster  core.gz  every time you upgrade.

If you use grub, you specify the multiple initramfs's on the  initrd  line, like this:

--- Code: --- initrd /boot/core.gz /boot/firmware.gz
--- End code ---

Navigation

[0] Message Index

[#] Next page

Go to full version