0

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.

7
  • Please run: lshw -C network and tell us what the driver is. Also, when you find out the exact driver name, check the message log for clues: dmesg | grep <driver_you_found> As the result may be lengthy, paste the result here and give us the link: paste.ubuntu.com
    – chili555
    Jan 28, 2018 at 14:16
  • *-network description: Wireless interface product: 88W8897 [AVASTAR] 802.11ac Wireless vendor: Marvell Technology Group Ltd. physical id: 0 bus info: pci@0000:01:00.0 logical name: wlp1s0 version: 00 serial: 4c:0b:be:26:f2:ea width: 64 bits clock: 33MHz capabilities: bus_master cap_list ethernet physical wireless configuration: broadcast=yes driver=mwifiex_pcie latency=0 multicast=yes wireless=IEEE 802.11 resources: irq:51 memory:c0500000-c05fffff memory:c0400000-c04fffff
    – alexzobi
    Jan 28, 2018 at 15:01
  • *-network description: Wireless interface physical id: 1 bus info: usb@1:1 logical name: wlx681ca20514d9 serial: 68:1c:a2:05:14:d9 capabilities: ethernet physical wireless configuration: broadcast=yes driver=rtl8xxxu driverversion=4.13.0-32-generic firmware=N/A link=no multicast=yes wireless=IEEE 802.11 WARNING: output may be incomplete or inaccurate, you should run this program as super-user.
    – alexzobi
    Jan 28, 2018 at 15:01
  • sorry but i apparently can't add images yet and the code altogether was too long to add so i had to do it in two parts. new to this site and trying to figure things out.
    – alexzobi
    Jan 28, 2018 at 15:02
  • First, the driver mwifiex is tricky and not well developed. If you have the option to use the USB instead, I'd suggest that you blacklist it and use the USB. Second, please run: dmesg | grep mwifiex and paste the result as I described above and let us have the link.
    – chili555
    Jan 28, 2018 at 17:07

2 Answers 2

1

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
4
  • I tried disabling power saving in the Network Manager and restarting to no avail. The router isn't mine to be messing with and when I go to school I certainly won't be able to adjust the routers there, so save for adjusting the router or waiting for an improvement on the driver, is there anything else I can do? As you mentioned previously, I do have a Rosewill USB wifi adapter. How do I "blacklist" the built-in wifi? and should that fail, how do I remove it from said blacklist?
    – alexzobi
    Jan 29, 2018 at 14:02
  • Please see my edit in a few moments.
    – chili555
    Jan 29, 2018 at 14:14
  • So this appears to have done the trick. The only unintended consequence that I now have is that my wifi USB does not have Bluetooth, so I've lost bluetooth, but I'll just have to buy a new one that does. Otherwise, if I can make it a few hours without dropping wifi, i'll mark this the solution. Is there a chance that in the future the driver issue will be resolved, or am I eternally left with this antenna?
    – alexzobi
    Jan 29, 2018 at 15:05
  • There is always a chance! In a few months, you can test by detaching the USB, reboot and do: sudo modprobe mwifiex_pcie If the wireless is working as expected, undo the blacklist. Frankly, googling this driver, I don't hold out much hope. If my answer has been helpful, please accept it: askubuntu.com/tour
    – chili555
    Jan 29, 2018 at 16:11
0

This is an update/permanent resolution to the situation. Or at least it was for me. I continued battling with this issue for months trying to get ubuntu 17.10 working on my surface pro 3. nothing was working. I followed the solutions recommended in a previous post and basically used an external wifi adapter which worked OK. The three most annoying parts about it were 1. disabling the network driver as recommended above also disables bluetooth, as the driver handles both. 2. the SP3 only has one built in USB port, so plugging an external wifi driver into it meant i couldn't use the usb for anything else without disconnecting from the internet. 3. having to explain to everyone and their mother why i had a giant antenna sticking out of my one and only usb port was annoying and got old fast.

After months of toiling, I found a solution that works for me. Or rather...solutionS. One of these alone did not do the trick. But the three together made it possibe:

  1. disable mac randomization.

Ubuntu GNOME 17.04: wi-fi not working -- mac address keeps changing?

  1. install/set up NDISwrapper.

NDISwrapper is a wrapper that you can use to wrap windows drivers so that they can communicate more readily with linux OS.

https://www.brighthub.com/computing/linux/articles/27412.aspx#imgn_1

  1. download WICD and DISABLE network-manager:

at first, i tried removing network-manager completely, as was the recommendation by WICD. The problem is, uninstalling the network-manager also uninstalled the unity-control-center. aka no more settings for anything. so i reinstalled unity-control-center just to find out that network-manager was installed with it. The fix? Stop network-manger and disable it, but do not uninstall it.

http://xmodulo.com/disable-network-manager-linux.html

Again, i tried all of these three things on their own and none seemed to fix the issue. They all showed A LITTLE improvement, but nothing great. But like I said, with all three in place now, my wifi is good as new. I have bluetooth and settings and my USB port back. It's hacky as hell, but it works great now. Hope this helps somebody else out there.

1
  • Op's follow up is much appreciated. Unfortunately if you are landing here in 2020, you are likely using Ubuntu 20. NDISWrapper is not compatible with Ubuntu 20 and will fail to compile on install for the required component ndiswrapper-dkms.
    – phil
    Nov 17, 2021 at 2:04

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .