2013-06-12 11:34:03

by Nick Warne

[permalink] [raw]
Subject: [QUERY] Intel Centrino Wireless-N 100 modules vs built-in

Dear Devs,

I have a strange query. Building a custom kernel on my Samsung N145 notebook I came a cropper.

05:00.0 Network controller: Intel Corporation Centrino Wireless-N 100

If I select:

Device Drivers->Network Device Support->Wireless LAN

<M> Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlwifi)
-M- Intel Wireless WiFi DVM Firmware support

all is hucky dory. But if I build-in these drivers into kernel (<*>), on boot dmesg reports:

[2.347954] iwlwifi 0000:05:00.0: request for firmware file 'iwlwifi-100-5.ucode' failed.
[2.351885] iwlwifi 0000:05:00.0: no suitable firmware found!

Am I missing something here - I don't quite understand why this happens?

Any help appricated please.

Please CC any replies please, I am not subscribed.

Nick
--
Free Software Foundation Associate Member 5508
http://linicks.net/


2013-06-12 11:50:23

by Johannes Berg

[permalink] [raw]
Subject: Re: [QUERY] Intel Centrino Wireless-N 100 modules vs built-in

Nick,

> Device Drivers->Network Device Support->Wireless LAN
>
> <M> Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlwifi)
> -M- Intel Wireless WiFi DVM Firmware support
>
> all is hucky dory. But if I build-in these drivers into kernel (<*>), on boot dmesg reports:
>
> [2.347954] iwlwifi 0000:05:00.0: request for firmware file 'iwlwifi-100-5.ucode' failed.
> [2.351885] iwlwifi 0000:05:00.0: no suitable firmware found!
>
> Am I missing something here - I don't quite understand why this happens?

The driver has to request firmware when the device is bound to it, so it
can then register correctly with mac80211. Newer versions of udev don't
respond negatively if they don't have the firmware while running from
initrd/initramfs, and will leave the driver's request pending to be
answered once the real filesystem is mounted. You seem to not be running
a version of udev with this logic.

To work around it, you could include the firmware in the
initrd/initramfs.

Alternatively, you could unbind/re-bind the driver after the system has
full booted, like this:

# echo 0000:05:00.0 > /sys/module/iwlwifi/drivers/pci\:iwlwifi/unbind
# echo 0000:05:00.0 > /sys/module/iwlwifi/drivers/pci\:iwlwifi/bind

This will force it to attempt to load the firmware from disk again.

johannes


2013-06-12 12:01:42

by Nick Warne

[permalink] [raw]
Subject: Re: [QUERY] Intel Centrino Wireless-N 100 modules vs built-in

On Wed, Jun 12, 2013 at 01:55:39PM +0200, Johannes Berg wrote:
>
> > Newer versions of udev don't
> > respond negatively if they don't have the firmware while running from
> > initrd/initramfs, and will leave the driver's request pending to be
> > answered once the real filesystem is mounted.
>
> And by "newer", I really mean "anything not ancient", the version with
> the logic was 187, released almost a year ago :-)

I will have to wait for debian/ubuntu/mint to catch up then :)

Nick
--
Free Software Foundation Associate Member 5508
http://linicks.net/

2013-06-12 12:00:09

by Nick Warne

[permalink] [raw]
Subject: Re: [QUERY] Intel Centrino Wireless-N 100 modules vs built-in

Hi Johannes,

On Wed, Jun 12, 2013 at 01:50:16PM +0200, Johannes Berg wrote:
> Nick,
>
> > Device Drivers->Network Device Support->Wireless LAN
> >
> > <M> Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlwifi)
> > -M- Intel Wireless WiFi DVM Firmware support
> >
> > all is hucky dory. But if I build-in these drivers into kernel (<*>), on boot dmesg reports:
> >
> > [2.347954] iwlwifi 0000:05:00.0: request for firmware file 'iwlwifi-100-5.ucode' failed.
> > [2.351885] iwlwifi 0000:05:00.0: no suitable firmware found!
> >
> > Am I missing something here - I don't quite understand why this happens?
>
> The driver has to request firmware when the device is bound to it, so it
> can then register correctly with mac80211. Newer versions of udev don't
> respond negatively if they don't have the firmware while running from
> initrd/initramfs, and will leave the driver's request pending to be
> answered once the real filesystem is mounted. You seem to not be running
> a version of udev with this logic.
>
> To work around it, you could include the firmware in the
> initrd/initramfs.
>
> Alternatively, you could unbind/re-bind the driver after the system has
> full booted, like this:
>
> # echo 0000:05:00.0 > /sys/module/iwlwifi/drivers/pci\:iwlwifi/unbind
> # echo 0000:05:00.0 > /sys/module/iwlwifi/drivers/pci\:iwlwifi/bind
>
> This will force it to attempt to load the firmware from disk again.

Thank you very much for a comprehensive reply.

I am using Linux-Mint on this machines, so at the moment am using the 'debian fakeroot make-kpkg...' stuff, so the build is dumbed down for the user ('tis easy on my Slackware box!).

So, reading what you said, I think I will leave 'as is'.

Again, thank you for the reply, and 'sorry for the noise!'

Nick
--
Free Software Foundation Associate Member 5508
http://linicks.net/

2013-06-12 11:55:42

by Johannes Berg

[permalink] [raw]
Subject: Re: [QUERY] Intel Centrino Wireless-N 100 modules vs built-in


> Newer versions of udev don't
> respond negatively if they don't have the firmware while running from
> initrd/initramfs, and will leave the driver's request pending to be
> answered once the real filesystem is mounted.

And by "newer", I really mean "anything not ancient", the version with
the logic was 187, released almost a year ago :-)

johannes