[Buildroot] Firmware auto-loading does not work
peter at korsgaard.com
Wed Jan 25 13:52:39 UTC 2017
>>>>> "Guillaume" == Guillaume GARDET <- Oliséo <guillaume.gardet at oliseo.fr>> writes:
> Le 25/01/2017 à 13:51, Peter Korsgaard a écrit :
>>>>>>> "Guillaume" == Guillaume GARDET <- Oliséo <guillaume.gardet at oliseo.fr>> writes:
>> > Hello,
>> > I am using buildroot 2016.05 (with a 2.6.37 kernel) and firmware
>> > auto-loading does not work. I need to do it manually (through
>> > sysfs). I tried mdev and eudev, both are not working.
>> > Is there a known bug about that? In busybox, maybe?
>> If you have tried both eudev and mdev, then it is unlikely to be a bug
>> in busybox (mdev). Are you using busybox modprobe applet or kmod?
> This is not a problem of module loading (it is working fine) but
> loading _firmware_ to devices for the WiFi dongle in my case.
Heh, I wonder how I could misread your email so much - Sorry about that.
First of all, our default busybox configuration has
CONFIG_FEATURE_MDEV_LOAD_FIRMWARE disabled. Have you enabled it? Without
that option, mdev doesn't do anything about firmware.
Less ancient (since 3.7, so 2012) Linux kernels directly loads firmware
files from the kernel, so the support in mdev isn't needed, but as you
are using an ancient kernel this doesn't work for you:
Author: Linus Torvalds <torvalds at linux-foundation.org>
Date: Wed Oct 3 15:58:32 2012 -0700
firmware: teach the kernel to load firmware files directly from the filesystem
This is a first step in allowing people to by-pass udev for loading
device firmware. Current versions of udev will deadlock (causing us to
block for the 30 second timeout) under some circumstances if the
firmware is loaded as part of the module initialization path, and this
is causing problems for media drivers in particular.
The current patch hardcodes the firmware path that udev uses by default,
and will fall back to the legacy udev mode if the firmware cannot be
found there. We'd like to add support for both configuring the paths
and the fallback behaviour, but in the meantime this hopefully fixes the
immediate problem, while also giving us a way forward.
[ v2: Some VFS layer interface cleanups suggested by Al Viro ]
[ v3: use the default udev paths suggested by Kay Sievers ]
Suggested-by: Ivan Kalvachev <ikalvachev at gmail.com>
Acked-by: Greg KH <gregkh at linuxfoundation.org>
Acked-by: Al Viro <viro at zeniv.linux.org.uk>
Cc: Mauro Carvalho Chehab <mchehab at redhat.com>
Cc: Kay Sievers <kay at redhat.com>
Cc: Ming Lei <ming.lei at canonical.com>
Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
Looking at eudev git history, I see that the legacy user space loading
support got removed in 2014, so that is why it isn't working with eudev
Author: Kay Sievers <kay at vrfy.org>
Date: Mon Sep 1 09:07:49 2014 -0400
udev: remove userspace firmware loading support
Signed-off-by: Anthony G. Basile <blueness at gentoo.org>
We should probably enable CONFIG_FEATURE_MDEV_LOAD_FIRMWARE in our
default busybox.config to better support these old systems.
Can you confirm that it works if you enable that option.
Bye, Peter Korsgaard
More information about the buildroot