Thursday, December 12, 2013

Linux mint 16 Petra with my laptop HP Pavilion dm4 Notebook PC

hi all,

All this while, I have been struggling with the iwlwifi kernel module working with my Intel wireless card, Centrino Wireless-N 1000 [Condor Peak]. It always having the kernel initialization errors and/or having the wireless connectivity intermittent. There are many posts out in the internet about to remedy this problem. But, none of them are working for me, until I upgraded my OS to Linux Mint 16, Petra with a little bit of tweaks. So, I would like to take this opportunity to list down all the changes in order to make it works.

1.   I have blacklisted my bluetooth driver. It is always rare to use and this bluetooth kernel is always fighting with the iwldvm module to initialize the hardware. So, I decided to blacklist it.

tehtarik ~ # tail -n2  /etc/modprobe.d/blacklist.conf
# Hiu added this
blacklist bluetooth

2. I have taken out all of the unrelated intel wireless firmware. For more details you can refer it to http://wireless.kernel.org/en/users/Drivers/iwlwifi. I know my firmware is /lib/firmware/iwlwifi-1000-5.ucode. So, I purposely taken out the rest of the intel firmware and move them under my /root directory like this.

tehtarik ~ # ls -al /root/iwlwifi/
total 8068
drwxr-xr-x  2 root root   4096 Dec  1 22:23 .
drwx------ 12 root root   4096 Dec 13 00:53 ..
-rw-r--r--  1 root root 337572 Apr 25  2013 iwlwifi-100-5.ucode
-rw-r--r--  1 root root 689680 Apr 25  2013 iwlwifi-105-6.ucode
-rw-r--r--  1 root root 701228 Apr 25  2013 iwlwifi-135-6.ucode
-rw-r--r--  1 root root 695876 Apr 25  2013 iwlwifi-2000-6.ucode
-rw-r--r--  1 root root 707392 Apr 25  2013 iwlwifi-2030-6.ucode
-rw-r--r--  1 root root 670172 Jul 10 22:59 iwlwifi-3160-7.ucode
-rw-r--r--  1 root root 150100 Apr 25  2013 iwlwifi-3945-2.ucode
-rw-r--r--  1 root root 187972 Apr 25  2013 iwlwifi-4965-2.ucode
-rw-r--r--  1 root root 340696 Sep 30 22:33 iwlwifi-5000-5.ucode
-rw-r--r--  1 root root 337400 Apr 25  2013 iwlwifi-5150-2.ucode
-rw-r--r--  1 root root 454608 Apr 25  2013 iwlwifi-6000-4.ucode
-rw-r--r--  1 root root 444128 Apr 25  2013 iwlwifi-6000g2a-5.ucode
-rw-r--r--  1 root root 677296 Apr 25  2013 iwlwifi-6000g2a-6.ucode
-rw-r--r--  1 root root 679436 Apr 25  2013 iwlwifi-6000g2b-6.ucode
-rw-r--r--  1 root root 469780 Apr 25  2013 iwlwifi-6050-5.ucode
-rw-r--r--  1 root root 682892 Jul 10 22:59 iwlwifi-7260-7.ucode

3. I have put some of the important kernel parameter tweaks of iwlwifi. Here is how it is look like. This line is really important: options iwlwifi 11n_disable=1 bt_coex_active=0. Actually, there are many people are documenting the same tweaks on this kernel module. But, for me these are the mostly important tweaks and you must have it.


tehtarik ~ # cat /etc/modprobe.d/iwlwifi.conf
# /etc/modprobe.d/iwlwifi.conf
# iwlwifi will dyamically load either iwldvm or iwlmvm depending on the
# microcode file installed on the system.  When removing iwlwifi, first
# remove the iwl?vm module and then iwlwifi.
remove iwlwifi \
(/sbin/lsmod | grep -o -e ^iwlmvm -e ^iwldvm -e ^iwlwifi | xargs /sbin/rmmod) \
&& /sbin/modprobe -r mac80211
options iwlwifi 11n_disable=1 bt_coex_active=0


With all the steps applied onto my laptop, I don't have any more wireless connectivity hiccup and happily ever after. I don't need to figure out the alternative way of configuring the ndiswrapper or buying another external usb wireless adapter.  Hope it helps you all.

Thanks.