How to restart WiFi connection?
I think I do not have problem with hardware. Sometimes the WiFi connection simply disconnects, apparently. So this is not necessarily the same as this case, I might not need to reload any modules. But how to just restart wlan0 ? I tried restart network-manager , but this seems to leave wlan0 alone.
Similar problem, only it happens after restoring from suspend or hibernate, the internal PCI wifi disappears. none of these tricks here will revive it. although, if I add a usb wifi — for some reason that has no such issue — weird. Driver for PCI wifi is the infamous «iwl3945» (Gateway laptop) which has this stupid bug but nobody ever fixes/supports/whatever. Workaround? just forget stupid linux wifi and just plug network cable into wifi extender to laptop and hope ubuntu ‘community’ eventually fixes this driver that crashes on suspend/hibernate ;-\. On win7 partition no such issue w/wifi
actually — no issue using hibernate — wifi stays stable.. but use suspend and it will work once or twice on resume, but when it goes out it stays out until reboot.
8 Answers 8
sudo service NetworkManager restart
sudo service network-manager restart
On newer versions of Ubuntu, it might (depending on whether the system is using systemd) be better to use sudo systemctl restart NetworkManager .
Works for me running 16.04 on a ThinkPad t420. Is there any documented reason why we need to do this?
Haha, yes but on Ubuntu GNOME 17.04 sudo doesn’t work when the network becomes disabled. Quite the catch 22.
adding just service network-manager restart to a desktop file or shortcut works nicely (asks for pass anyway)
These don’t need root, in case you are scripting:
nmcli networking off nmcli networking on
As these guys are saying in the comments, for WI-FI only:
nmcli radio wifi off nmcli radio wifi on
Nice! (+1) Just to make it more specific to the wifi connection, one can use: nmcli radio wifi off followed by nmcli radio wifi on
@n1k31t4 would you mind editing this answer, please? this is exactly what the OP needed and probably a lot of other people looking at this post.
sudo ifconfig wlan0 down sudo ifconfig wlan0 up
assuming these interfaces are defined in the /etc/network/interfaces file. Else, you might get the infamous Unknown interface error
«Reload the Driver»
Find the module name
Let’s find the name of the kernel module for your wireless connection:
(Install package hwinfo if you don’t have it.)
Look for the module name in the «Driver» line.
Reload the module
Now unload then re-load the module. For example, my module name is iwlwifi
You might get lucky with no error message, in which case you can immediately reload it with
but most probably you will get this failure message:
$ sudo modprobe -r iwlwifi modprobe: FATAL: Module iwlwifi is in use.
So we go looking for other modules using iwlwifi :
$ lsmod |grep iwlwifi iwlwifi 241664 1 iwldvm cfg80211 765952 4 iwldvm,iwlwifi,mac80211,rtl8187
On the left is the module name, and on the right are the other modules using it. So let’s try disabling iwldvm first:
If this works, then we can now successfully disable iwlwifi
And now re-enable both modules in the reverse order:
$ sudo modprobe iwlwifi $ sudo modprobe iwldvm
Done!
This is the only procedure that worked for me in resetting low level settings (frag, rate) that I had set using iwconfig .
What it does effectively is «reload the driver».
Thanks! It’s the only solution I’ve found works, tried the others above and elsewhere, so details in case it can help others find this answer: Running Debian 10.9 (32-bit) on Asus T100. My problem is, the WiFi connection drops, when it tries to recover it can see other more distant wifi routers, but not mine. Running the commands to stop and restart device, in my case «brcmfmac», resets and it comes back working. This can confuse some running programs (e.g. Pidgin) so I shut them down first. In my case just the first command and immediate restart works [made minor edit to clarify this]
You could try killing the power to your device. Assuming you are unable/unwilling to physically disconnect the device, you should run (as root): iwconfig wlan0 txpower off . I would then wait 10-15 seconds to make sure whatever hardware issue has caused the problem has been stopped, then: iwconfig wlan0 txpower auto .
Or, you can simply run rfkill and block/unblock your device. To do so, run rfkill block wifi , followed by rfkill unblock wifi . This second option should be faster, since you only need to wait 2-3 seconds between commands, as opposed to 10-15 seconds. In fact, on my machine, I don’t need to wait at all, although I suspect this depends on your WiFi hardware. This option can also be done as a regular user, no root needed.
You can also restart NetworkManager. If you use systemctl as your init system (as is the case with newer versions of Ubuntu), you can use systemctl restart NetworkManager . Otherwise, you can use sudo initctl restart network-manager . If you don’t know what init system you use, try both commands and see what works.
This is rather a software issue than an hardware issue, since is was working fine before Ubuntu16.04 and multiple users suffer from the same with the same Ubuntu version.
Created a script based on prior link advice with some mixing & matching of prior links. This works for me running under Mint Linux 17.3.
The file below does not require root access. It also only restarts wifi only if it is already down. Now I just need to add this script to a cron job to check my wifi connection every 15 minutes or so.
#!/bin/bash wlan=$(/sbin/ifconfig wlan0 | grep inet\ addr | wc -l) if [ $wlan -eq 0 ]; then nmcli nm wifi on else echo "interface is up" fi
+1 for the effort of automating the process. -1 because this script wouldn’t restart the WiFi connection, it’ll only start it if it’s already down. While this would fix the problem if the OP’s issue completely drops the connection. However, if the connection remains up with a valid IP, but has stopped transmitting data, then this script would just not work. -1 for having an echo in an automated (cron’d) script.
As @TSJNachos117 mentions in their comment, for versions from 15.04 onwards, Ubuntu switched to systemd as the service manager. So, one can use the following command, equivalent to the one in Radu Rădeanu’s answer, to restart the Network Manager service:
sudo systemctl restart NetworkManager
The workaround using «systemctl restart NetworkManager» works for me on two different notebooks with Broadcom and Atheros WiFi under Debian Buster and Ubuntu 19.04 — where the problem with «wifi won’t wake up on resume» happens on every fourth resume or so (= it typically works just fine.) I’ve first tried creating a desktop launcher to invoke the wifi reset manually, which works, and requires a password — but then I found several notes by people putting the reset curse into places in the system that run scripts after resume. Namely, /lib/systemd/system-sleep/ looks like a good place to put your script. And, the script should better test some conditions (obtained via cmdline arguments) to know that it’s the right time to reset the NetworkManager. Apologies for linking instead of cutting and pasting — I haven’t asked this particular author’s permission, and he may enjoy upvotes too, for his YouTube contribution (straight to the point, and well narrated).
Other than that, I’ve noticed some very simple and direct solutions to the original problem from Ubuntu 16.04: wifi.scan-rand-mac-address=no in NetworkManager.conf or even just apt-get update && apt-get upgrade . Those are the optimal solution to the particular bug in 16.04. They possibly are not a solution to other misc problems of this kind, that can be worked around by the heavy-handed (but fairly swift) restart of NetworkManager on every resume from suspend.