I've recently got hold of a Dell D430 laptop and installed Mint 13 Maya on it intending to use it as a small laptop to carry around with my photography kit as it's small, light and lasts two hours on a battery charge. Installing Mint wasn't a problem, and I've been surprised how quick the laptop is to use. All the components work as they should and the laptop is fast becoming the first device I reach for when I want something done quickly in the field.
However, like many people, I've had one gripe with whole set up - the annoying flashing WiFi LED just below the screen. This happens because Dell, like many other manufacturers, uses an Intel WiFi chipset in their laptops and the Intel developers who put together the Linux drivers for the chipset decided in their wisdom to make the LED 'flash' to indicate that it was passing traffic. This has annoyed so many people that a quick search will reveal a large number of solutions on the Internet where people in one way or another have 'fixed' this problem in their own particular environments.
So why do I feel the need to write another?
Well, after trying a fair few of these solutions none of them actually worked on my setup. This is not to say that these other solutions do not work - just that I wasn't successful getting them to work for me. So I've written a blog explaining how I turned off the LED rather than just a prescriptive 'do-this-then-that'.
Step One - understanding how to tackle the problem
The Intel WiFi drivers are usually installed as a family of modules that work together with the linux kernel to set up and run the WiFi chipset. Judging by the people with the same hardware as me, at least one of the module names contained the letters 'iwl', so, armed with this, I listed the modules by typing this comment into a Terminal window:
This gave me the response$ lsmod | grep iwl
So I now need to find out which of these files contain the control for the LED. This leads me to:$ lsmod | grep iwl iwl3945 73111 0 iwl_legacy 71134 1 iwl3945 mac80211 436455 3 iwl3945,iwl_legacy cfg80211 178679 4 iwl3945,iwl_legacy,mac80211$
Step Two - installing some Linux diagnostic tools
We will need to look at the capabilities of each of these modules to see which one(s) can control the LED and to do this we need to download sysfsutils. This is a set of utilities built upon sysfs, a virtual filing system in more recent kernels that lets you investigate a systems' device tree. To install the tools open a terminal window and in the window type:
Once the install is complete, you can run the systool command on each of the modules to see which module has a parameter option to control the LED. (in the examples below I chop the end of the report off to save space and make the response more meaningful):$ sudo apt-get update $ sudo apt-get install sysfsutils
You can see from this that the module iwl3945 does not have a parameter option to set the LED mode but iwl_legacy does have such a parameter - the line led_mode = "0" in the list above. So, to stop the LED flashing we need to configure iwl_legacy to switch the LED on for WiFi active and off for WiFi inactive. But what setting for led_mode should we use? The answer lies in the output of another command:$ systool -m iwl3945 -av Module = "iwl3945" Attributes: initstate = "live" refcnt = "0" srcversion = "301B04B4010DED41B0830D0" uevent =version = "in-tree:s" Parameters: antenna = "0" disable_hw_scan = "0" fw_restart = "1" swcrypto = "1" Sections: .altinstr_replacement= "0x00000000" .altinstructions = "0x00000000" [ -- some output removed for clarity -- ] $ systool -m iwl_legacy -av Module = "iwl_legacy" Attributes: initstate = "live" refcnt = "1" srcversion = "275221577F5CCA15EDB6755" uevent = version = "in-tree:" Parameters: bt_coex_active = "Y" led_mode = "0" Sections: .altinstr_replacement= "0x00000000" .altinstructions = "0x00000000" [ -- some output removed for clarity -- ] $
What we want is option 1 - On(RF On)/Off(RF Off). Now we need to configure the module to control the LED this way.$ modinfo iwl_legacy filename: /lib/modules/3.2.0-23-generic/kernel/drivers/net/wireless/iwlegacy/iwl-legacy.ko license: GPL author: Copyright(c) 2003-2011 Intel Corporationversion: in-tree: description: iwl-legacy: common functions for 3945 and 4965 srcversion: 275221577F5CCA15EDB6755 depends: mac80211,cfg80211 intree: Y vermagic: 3.2.0-23-generic SMP mod_unload modversions 686 parm: led_mode:0=system default, 1=On(RF On)/Off(RF Off), 2=blinking (int) parm: bt_coex_active:enable wifi/bluetooth co-exist (bool) $
Step Three - making the change.
To make the change to the LED we need to unload the iwl_legacy module, change its configuration file and finally reload the module. In sequence then:
If you see this, then you've made a mistake. You will need to unload the other iwl module first, as this module is preventing the other from being unloaded. (you will naturally turn off your WiFi connection at the same time, so be careful!) :$ sudo modprobe -r iwl_legacy FATAL: Module iwl_legacy is in use. $
Now the modules are unloaded you can make the changes.$ sudo modprobe -r iwl3945 $ sudo modprobe -r iwl_legacy $
In nano enter this line then save the file and exit nano.$ cd /etc/modprobe.d $ sudo nano iwl_legacy.conf
options iwl_legacy led_mode=1
Now re-start the two modules
Finally check that iwl_legacy is properly configured - and check on your laptop that the LED is behaving as it should.$ sudo modprobe iwl_legacy $ sudo modprobe iwl3945 $ cd ~ $
Assuming all of the above has been completed and you have a non-blinking LED, the last thing to do is to shut the laptop down completely and then restart it - just to make sure the configuration works the next time it is used.$ systool -m iwl_legacy -av Module = "iwl_legacy" Attributes: initstate = "live" refcnt = "1" srcversion = "275221577F5CCA15EDB6755" uevent =version = "in-tree:" Parameters: bt_coex_active = "Y" led_mode = "1" Sections: .altinstr_replacement= "0x00000000" .altinstructions = "0x00000000" [ -- some output removed for clarity -- ] $
Conclusion
You should now have a laptop without a blinking LED. You may also find this approach to tackling the blinking LED problem may be useful with other WiFi chipsets and it would be good to know if this approach helps you stop that annoyingly blinking LED too. Please add a comment below and let me know.
Update following Mint 17 (Qiana)
I've just updated my D430 to Mint 17 (Cinnamon) and had to repeat the steps in this blog article to stop the blinking LED again!! You'll be pleased to know that I used the same approach as I presented in this blog and everything was the same except one of the files has changed its name in the new release.
iwl_legacy is now called iwlegacy. This means that this blog article is still valid for Mint 17 - except wherever you read iwl_legacy you should substitute iwlegacy instead. This also applies to the line you need to put into iwlegacy.conf:
options iwlegacy led_mode=1
Good luck!
Thank you very much! Best detailed explanation on how to do it...
ReplyDeleteBrilliant. Feel I have learnt something useful, rather than just blindly entering commands. Thanks.
ReplyDeleteThanks a bunch - blinking lights = very annoying!
ReplyDeleteI had to change iwlwifi.conf instead of iwlegacy.conf (which does not exist).
ReplyDeleteWorks perfect !
This is excellent information with attention to detail & the explanations of not just the fix, but understanding the why. I used this information on my D620 laptop using the 'iwlegacy' driver with Ubuntu 16.04lts & the blinking led problem solved, great stuff & much appreciated, thanks.
ReplyDeleteThis is excellent information with great attention to detail in explaining & understanding, not just the how to, but also the why. I used this fix on my Dell d620 running Ubuntu 16.04lts with intel iwl3945, iwlegacy drivers & this solved the blinking led. Great stuff, much appreciated, thanks.
ReplyDeleteExcellent, concise step-by-step guide! Worked on "iwlegacy", when I installed ArcoLinux HP nx7400.
ReplyDeleteThanks
Thank you! Worked first time!
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThanks so much for writing this. Works on my Dell inspiron 9400. Way too often you look for answers in the linux world and get told "magic spells" that may or may not work, but here you explained what was going on!
ReplyDeleteVery helpful article.
ReplyDeleteWorked on Debian stable: Debian GNU/Linux 10 (buster)
- with iwlegacy
- with reboot (restart of networking)
I have to add to my previous comment that this was a great article! We learned not a fix on system Y but a general method (to do so much more).
ReplyDeletebtw, hardware: Compaq 2510p notebook pc.
It worked fine for me.
ReplyDeleteDell XPS m1330, archlinux 5.15, iwl3945.
your procedure works perfectly for me too. Thanks you so very much!
ReplyDeleteThis worked for me, thanks so much! Crazy how one literally has to be a computer programmer to solve simple issues on linux!
ReplyDeleteMuch thanks! have linux mint 21.1 installed on an older HP 8560w laptop and that blinking WIFI led was really annoying. Following all the steps listed here your fix of adding "led_mode=1" to (for me) iwlwifi.conf completely fixed this issue.
ReplyDeleteThank you. Worked on my HP-Pavilion-dv7-Notebook-PC with Linux Mint 21.1 Vera. For me it was the iwlwifi driver instead of the iwl_legacy driver.
ReplyDeleteThank you! I am thrilled! Dell D620, LMDE Cinnamon 32-bit.
ReplyDelete