> It's not a workaround, but how it's supposed to work. "Loading from > userspace" means using a user-space program to load the firmware. This > is not what you're trying to do, since you don't have such a program.
? Udev has been the standard way to service kernel firmware requests for quite some time. The relevant bit is in /lib/udev/rules.d/50-firmware.rules . However, udevd is only started after the kernel is loaded, and therefore will only load firmware for drivers which are built as modules. Firmware for built-in drivers must either be compiled into the kernel or be provided in an initrd along with a suitable helper. Is there a specific reason why the r8169 driver cannot be loaded as a module? AFAIK the only case in which you *need* a built-in net driver is if you're doing root over NFS. > Your other option is writing a userspace program that reads the firmware > after the kernel has booted and patches it into the hardware. Patching is always done by the kernel driver. The userspace helper only has to answer kernel requests for a specific firmware by providing the correct data. > But why would you want to do something like that anyway? Typical reasons are to keep the kernel image size down and to avoid having to recompile the kernel whenever a new firmware version is released. Though I'll admit that kernel releases tend to be more frequent than new firmware versions :) Just my .02€ andrea