The wireless network on my laptop has always been unreliable. When I open the lid of the laptop and the computer wakes up from sleep, there is a 10% chance that the wireless network won't be able to connect. In the past, the only thing that works in this situation is a full reboot of the laptop.
- Wireless network can't connect
- Applet indicator remains in "connecting" state
- A dialog box periodically pops up for me to confirm the network password
I'd already tried:
- Turning networking off and on using the checkbox on the applet
- Disconnecting from my wireless network and re-selecting it
- Using ifup and ifdown to reconnect
- Restarting network manager
None of those actually worked. It always took a reboot, but fortunately I finally found the solution. You have dynamically remove the kernel module (driver) for the wireless network, then re-enable it. After this procedure, my wireless network connects immediately.
To do that, I first needed to find out which kernel module powers my wireless. The lshw command can do this:
sudo lshw -C network 2>&1 | grep wireless | grep driver
configuration: broadcast=yes driver=rtl8192ce driverversion=3.5.0-21-generic firmware=N/A ip=192.168.1.152 latency=0 link=yes multicast=yes wireless=IEEE 802.11bgn
Once I determined the driver (rtl8192ce), I just need to issue a command to unload the kernel module and reload it.
sudo modprobe -r rtl8192ce && sudo modprobe rtl8192ce
It works like a charm. Using this command, my network comes up immediately.