Sunday, July 15, 2012

Udev Changed The Rule

After upgrading my laptop to the latest Slackware-Current, i noticed that my WLAN is no longer detected. I checked the dmesg message and it said that it has an old API version.
Firmware has old API version, expected v5, got v3.
Since iwlwifi-* packages has been removed from -Current, i went to Intel Wireless to download the latest version and i found iwlwifi-1000-ucode-39.31.5.1.tgz. I plunged the new firmware and removed the old one iwlwifi-1000-ucode-128.50.3.1 and rebooted.Somehow, it doesn't work well and it still doesn't load.

After looking at the ChangeLog again, there has been an upgrade to udev package and i'm wondering if these changes might change the naming rule. So i checked /etc/udev/rules.d/70-persistent-net.rules and got the following :

# PCI device 0x8086:/sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0 (iwlwifi)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1e:64:1c:9c:c2", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan0"

# PCI device 0x8086:/sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0 (iwlwifi) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1e:64:1c:9c:c2", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan1"


It's basically the same device, but it was changed from wlan0 to wlan1. So, i comment the last line (wlan1) and put back the old firmware (iwlwifi-1000-ucode-128.50.3.1) into /lib/firmware and rebooted and voila... my WLAN is now working normally again

wlan0     IEEE 802.11bgn  ESSID:"slackspot"  
          Mode:Managed  Frequency:2.462 GHz  Access Point: XX:XX:XX:XX:XX:XX   
          Bit Rate=135 Mb/s   Tx-Power=14 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality=62/70  Signal level=-48 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:71  Invalid misc:1   Missed beacon:0
 
UPDATE (15 July 2012): It seems that i forgot to install kernel-firmware which already includes all the firmware needed, but since i only need one firmware, it's easier to download the source and put the firmware in /lib/firmware and it's done