# New firmware: Intel Pro/Wireless 2200BG (iwi)



## techie (May 8, 2009)

Hi there,

in March 2009 Intel released a new firmware version 3.1 for the WLAN device iwi, aka Intel Pro/Wireless IPW 2200BG. The old fw v3.0 should be replaced by v3.1. So you can get rid of the evil *iwi0:scan stuck* or *iwi0: firmware stuck in state 4, resetting* messages which are coming along with a broken network connection. Here is a little how-to for FreeBSD 7.2 to update 3.0 -> 3.1 (I assume you already have installed a iwi firmware plus driver. For a new installation of iwi device see "man iwi".):

1. Backup old fw v3.0 in /usr/src/sys/contrib/dev/iwi to $RUBBISH

2. Fetch fw. 3.1 from http://ipw2200.sourceforge.net/firmware.php?fid=8 or here http://ipw2200.sourceforge.net/firmware.php click "firmware v3.1"

3. Store new fw to /usr/src/sys/contrib/dev/iwi (and extract from archive file).

4. Convert binary files with uuencode to ASCII:

```
uuencode -o ipw2200-bss.fw.uu ipw2200-bss.fw ipw2200-bss.fw
uuencode -o ipw2200-ibss.fw.uu ipw2200-ibss.fw ipw2200-ibss.fw
uuencode -o ipw2200-sniffer.fw.uu ipw2200-sniffer.fw ipw2200-sniffer.fw
```

5. Edit *uu files and add beginning at line one this:

```
/*
 * INTEL license terms ... (copy text from license file)
 * ... 
*/
#define IWI_FW_VERSION 3.1
```

Be carefully! The *uu files will be converted into loadable kernel modules. Failures in editing could result in a non-bootable system.

6. 
	
	



```
cd /usr/src/sys/modules/iwifw
make
make install
```

8. Reboot and feel lucky.

I've been testing the fw this week on 7.2 and last week on 6.4. *No single one scan stuck!* Anybody who can confirm this?

I assume with the new fw one or more of the following bugs will be fixed:

http://forums.freebsd.org/showthread.php?t=1379&highlight=iwi
http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/124767
http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/131153
http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/123559
http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/122597


P.S.

FBSD 7.2: FreeBSD team already is informed about this. If there are some people who confirm positive tests to the team, then fw v3.1 will be merged into 7.2-STABLE and 7.3.

FBSD 6.4: Info mail has been send to port maintainer of net/iwi-firmware-kmod. Let's wait some days, maybe the maintainer will update the port. The procedure to update iwi on 6.4 is different to this one on 7.2.


----------



## adamk (May 8, 2009)

Hey, one of those is my bug.  I might have to give it a shot this weekend.  

Adam


----------



## adamk (May 11, 2009)

Unfortunately, updating the firmware did not resolve my bug:

http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/131153

On the plus side, though, it doesn't seem to have negatively impacted any of the access points which already worked for me.

Adam


----------



## ljboiler (Jun 11, 2009)

Been running this for the last 12 hours in a place where a "stuck in state 4" to my own wireless router was a regular thing unless I was sitting in just the right spot in the room, facing just the right way with the laptop, especially since they've been installing  city-wide wireless service.  I haven't seen that error once with the new firmware...


----------



## wexi (May 17, 2010)

Hi,

Using FreeBSD 7.3-stable with Intel's 3.1 firmware (taken from the 8-stable branch) I am still having random "iwi0 firmware stuck in state 4" problems which I can only resolve by rebooting. Anyone got a clue? Security used is WPA with a shared key.

Thanks, Enoch.


----------



## jrm@ (Mar 13, 2012)

I don't recall having problems in 7.x, but in 8.x I also see the firmware errors every few hours.  If I try to do a `# /etc/rc.d netif restart` the system reboots.

`# pciconf -lv`

```
...
iwi0@pci0:2:2:0:        class=0x028000 card=0x27018086 chip=0x42208086 rev=0x05 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = 'driverIntel PRO/Wireless 2200BG (MPCI3B)'
    class      = network
```

`# cat /boot/loader.conf`

```
...
legal.intel_iwi.license_ack=1
if_iwi_load="YES"
```

`# cat /etc/rc.conf | grep wlan`

```
wlans_iwi0="wlan0"
ifconfig_wlan0="WPA DHCP"
```

`# cat /etc/wap_supplicant.conf`

```
network={
        ssid="myssid"
        psk="mypsk"
}
```


----------

