Problem (maybe a solution) loading iwi firmware: firmware_get: failed to load firmware image iwi_bss

Sam Leffler sam at errno.com
Fri Jul 28 18:20:30 UTC 2006


Erik Nørgaard wrote:
> Sam Leffler wrote:
>> Erik Nørgaard wrote:
>>> The new_iwi has not been backported to -stable yet. I tried to use just
>>> the iwi-firmware-kmod port, disabling dhcp on that interface and
>>> configuring manually, loading modules in order: firmware, iwi_bss and
>>> if_iwi.
>> Either you've mis-typed the above or you are incorrect.
> 
> Sorry, I think I misunderstood it. I thought the objective of the
> new_iwi was to get everything in base thus depreciating the installation
> of net/iwi-firmware-kmod.

The firmware has always been packaged separately because of licensing
concerns.  The work on the driver had many goals; only one of which was
to eliminate the use of the user-mode tool to load microcode.

> 
>>> Still, I can not get it working, output from dmesg:
>>>
>>>
>>>   iwi0: <Intel(R) PRO/Wireless 2200BG> mem 0xb0107000-0xb0107fff irq 10
>>>      at device 10.0 on pci6
>>>   iwi0: Ethernet address: 00:16:6f:93:c9:75
>>>
>>> This appears fine after I load if_iwi no further errors. But then
>>> configuring with
>>>
>>>   # ifconfig iwi0 10.35.4.64/24 ssid MYAP mode 11g channel 6
>>>
>>> The following error appears:
>>>
>>>   Interrupt storm detected on "irq5:"; throttling interrupt source
>>>   iwi0: timeout waiting for iwi_bss firmware initialization to complete
>>>   iwi0: could not load boot firmware iwi_bss
>>>   firmware_get: failed to load firmware image iwi_bss
>>>   iwi0: could not load firmware
>>>
>>> I do get the interface configured but with "no carrier". I unload and
>>> reload if_iwi and configure again:
>>>
>>>   iwi0: detached
>>>   iwi0: <Intel(R) PRO/Wireless 2200BG> mem 0xb0107000-0xb0107fff irq 10
>>>      at  device 10.0 on pci6
>>>   iwi0: Ethernet address: 00:16:6f:93:c9:75
>>>   firmware_get: failed to load firmware image iwi_bss
>>>   iwi0: could not load firmware
>>>
>>> Note the interupt storm when the module is first loaded, but not the
>>> second time.
>>>
>>> Why on irq 5 when the iwi0 is on irq 10? Looking at my devices, lspci -v
>>> output below, there is an USB controler on irq 5 _and_ 10. Could some
>>> with the iwi problems some how propagate?
>>>
>>> As seen below the bus is ICH6 based.
>>>
>>> Any hints? Thanks, Erik
>> Figure out why you are not loading firmware properly.  The firmware is
>> packaged as normal loadable modules you can actually pre-load them using
>> kldload.  Check things loaded normally with kdlstat and/or check the
>> console log msgs.  My guess is you are not loading the correct firmware
>> modules.  I think there's a debugging knob/sysctl for firmware(9) but
>> can't remember it off hand.
> 
> First, the iwi_bss module is not loaded automatically if none of the
> modules firmware, iwi_bss and if_iwi are present,
> 
>   # kldload if_iwi
> 
> will load firmware, but not iwi_bss. 

No firmware is loaded until the device is brought up.  if_iwi requires
firmware(9) to load the firmware images so yes it is required that you
configure it into your kernel.  If you load if_iwi then it will drag it
along as a dependency so if the module isn't installed you'll get
complaints.

> It does not change anything
> manually loading firmware and/or iwi_bss before if_iwi or loading
> iwi_bss after, manually configuring iwi0 with ifconfig always causes the
> error:
> 
>   firmware_get: failed to load firmware image iwi_bss
>   iwi0: could not load firmware

If you do:

kldload if_iwi
kldload iwi_bss

and then run kldstat do you see the iwi_bss.ko loaded?

The above complaint means that iwi hit some problem loading the iwi_bss
image.  Typically this is because the file cannot be located on the
filesystem but if you can manually load it then that should make it
available regardless of where you have it sitting in the filesystem.
Past that you need the debug knob to find out why iwi's request is
failing.  It appears noone's yet added such a knob to the firmware(9)
code so one can only guess.

> 
> I am wondering if this could be caused by the ICH6 bus? I have other
> problems with the bus, usb does not work although the devices are
> registered and as mentioned there seem to be a conflict of irq's.
> 
> I can't find a firmware debug knob, but setting debug.iwi=1 just adds
> two lines to the dmesg:
> 
> iwi_newstate: INIT -> INIT flags 0x0
> iwi0: timeout waiting for iwi_bss firmware initialization to complete
> iwi0: could not load boot firmware iwi_bss
> iwi_newstate: INIT -> INIT flags 0x0

Ok, this looks more useful.  It seems your card simply didn't start up
fast enough (hopefully).  Try editing the driver to increase the time it
waits for the firmware to startup.  Looks like it's line 2516 of
if_iwi.c; change "hz" to something like 10*hz (10 seconds) and see if
that helps.  I've heard some complaints of problems like this.

	Sam


More information about the freebsd-mobile mailing list