Ubuntu – Ubuntu Network Driver Crashing on Wifi

connectioninternetnetwork-managernetworkingwireless

I recently switched my surface pro 3 to Ubuntu 17.10. I'm new to Linux, but need to have it for a class I'm taking and can't afford to buy a mac. The surface was given to me by my former employer, so I need to do my best to make it work if possible. Here's the issue. The network driver is constantly crashing on wifi, even when I'm ten feet from the router. I've done as much research as possible on this and I can't seem to find any one answer that gets me close.

At first, I tried restarting the network manager using the terminal. Nothing. It just said network disconnected. Before anyone asks, there is no wifi kill-switch on the surface and when checking for blocks through the terminal, there are no hard or soft blocks detected. It is just disconnected. I tried switching the wifi button in the settings off and back on again. Nothing.

From what I gathered, basically the way the network manager operates, it's constantly trying to find a better connection and can get overloaded and crash. So I tried manually setting the BSSID. Worked for a while, but only for a few hours before the problem began repeating itself again.

Onwards. I tried to get rid of the built-in network manager and replaced it with wicd. It seemed to work for a while, except that I noticed that I no longer had access to my settings. Any settings. It was just gone. I couldn't add bluetooth devices because I'm assuming the built-in network manager was in charge of that, but I couldn't even adjust display settings. There was just no settings. Fine, I'm ok with that as long as I have wifi. problem is after a few hours, it started dropping again. Then by the end of the night, it would barely even connect for more than ten minutes.

Back at square one. I reinstalled nmcli because I figured if I'm not going to have wifi, I might as well have my settings back. But I noticed something. Where once after every crash, lshw -C network would read "*-network disconnected" it now does not show disconnected. But still cannot find any networks. Here's what I think the solution is, but have no developing or IT experience and am hoping someone can help. I think there isn't a network manager out there yet built to fully integrate with the surface on linux simply because the surface is a Microsoft product and this isn't a common use of it, so the driver hasn't come about. But maybe someone can point me in the right direction.

nmcli device – wifi: wlp1s0
lo – loopback: unmanaged

product: 88W8879 [AVASTAR] 802.11ac Wireless
vendor: Marvell Technology Group
physical id: 0

so on and so forth. If there is any other information I should provide, let me know, but tell me how because I've exhausted my knowledge. I really appreciate any help, advice or direction someone can give me. Thanks people.

Best Answer

I suggest a few changes that might help. First, disable power saving in Network Manager. From the terminal:

sudo sed -i 's/3/2/' /etc/NetworkManager/conf.d/*

Then restart Network manager:

sudo service network-manager restart

Next, I suggest that you set your router to disable channel hopping, that is, use a fixed channel, either 1, 6 or 11, rather than automatic channel selection. Also, be certain the router is not set to use N speeds only; auto B, G and N is preferred. After making these changes, reboot the router.

Finally, if your router has 2.4 and also 5 gHz capabilities, I suggest giving them different names, something like zobi24 and zobi5. This will keep your router and wireless device from hopping from one band to the other.

Experiment to see which segment is more stable. I suspect it will be zobi24.

With respect to this:

info: failed: mwifiex_is_network_compatible: wpa_ie=0x0 wpa2_ie=0x30 WEP=d WPA=d WPA2=d EncMode=0x0 privacy=0x1

I recommend, again, that you check the settings in the router. WPA2-AES is preferred; not any WPA and WPA2 mixed mode and certainly not TKIP.

EDIT: To blacklist the internal device, please open a terminal and do:

sudo -i
echo "blacklist mwifiex_pcie"  >>  /etc/modprobe.d/blacklist.conf
modprobe -r mwifiex_pcie
exit

To reverse the process, edit the blacklist file:

sudo nano /etc/modprobe.d/blacklist.conf

Comment out the line you added by placing the symbol # at the beginning of the line like this:

#blacklist mwifiex_pcie

Save and close the text editor.

Finally, some of the USB adapters that you use actually load two conflicting drivers. Let's blacklist the least effective of the two:

sudo -i
echo "blacklist rtl8192cu"  >>  /etc/modprobe.d/blacklist.conf
exit
Related Question