Surface Pro 3 wifi no networks detected



I just installed stable Manjaro 17.0.5 on my Surface Pro 3 and am having some issues with the wifi card. This is my first foray out of the debian-based universe and I’m no driver expert so I’m rapidly finding myself out of my depth. The symptoms are fairly simple: The OS seems to recognize my wifi card and thinks it is active but it never actually detects a network. There are a few funny items in lspci and dmesg so what follows is a bunch of diagnostic outputs that I think are relevant but don’t really understand:

[jusdino@Manwe ~]$ lspci -k
01:00.0 Ethernet controller: Marvell Technology Group Ltd. 88W8897 [AVASTAR] 802.11ac Wireless
	Subsystem: SafeNet (wrong ID) Device 045e
	Kernel driver in use: mwifiex_pcie
	Kernel modules: mwifiex_pcie
[jusdino@Manwe ~]$ sudo dmesg | grep wifi
[    2.260432] mwifiex_pcie 0000:01:00.0: enabling device (0000 -> 0002)
[    2.262739] mwifiex_pcie: try set_consistent_dma_mask(32)
[    2.262766] mwifiex_pcie: PCI memory map Virt0: ffffc90002c00000 PCI memory map Virt2: ffffc90002e00000
[    2.262800] mwifiex: rx work enabled, cpus 4
[    3.280406] mwifiex_pcie 0000:01:00.0: info: FW download over, size 820212 bytes
[    4.238245] mwifiex_pcie 0000:01:00.0: WLAN FW is active
[    4.294109] mwifiex_pcie 0000:01:00.0: CMD_RESP: cmd 0x242 error, result=0x2
[    4.294120] mwifiex_pcie 0000:01:00.0: mwifiex_process_cmdresp: cmd 0x242 failed during	initialization
[    4.318998] mwifiex_pcie 0000:01:00.0: info: MWIFIEX VERSION: mwifiex 1.0 (15.68.7.p77) 
[    4.319000] mwifiex_pcie 0000:01:00.0: driver_version = mwifiex 1.0 (15.68.7.p77) 
[    4.332417] mwifiex_pcie 0000:01:00.0 wlp1s0: renamed from mlan0
[   30.721771] ieee80211 phy0: mwifiex_cfg80211_sched_scan_start : Invalid Sched_scan parameters
[   63.722762] ieee80211 phy0: mwifiex_cfg80211_sched_scan_start : Invalid Sched_scan parameters
[ 4632.541662] ieee80211 phy0: mwifiex_cfg80211_sched_scan_start : Invalid Sched_scan parameters
[ 4695.538833] ieee80211 phy0: mwifiex_cfg80211_sched_scan_start : Invalid Sched_scan parameters
[jusdino@Manwe ~]$ sudo dmesg | grep NETDEV
[    4.353642] IPv6: ADDRCONF(NETDEV_UP): wlp1s0: link is not ready
[    4.353742] IPv6: ADDRCONF(NETDEV_UP): wlp1s0: link is not ready
[ 4441.837173] IPv6: ADDRCONF(NETDEV_UP): wlp1s0: link is not ready
[ 4756.819504] IPv6: ADDRCONF(NETDEV_UP): wlp1s0: link is not ready
[jusdino@Manwe ~]$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: wlp1s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DORMANT group default qlen 1000
    link/ether de:d4:65:d8:ef:4b brd ff:ff:ff:ff:ff:ff

You can see that there are some issues showing up… Any ideas what problem could cause that and how to resolve?


Try running
rfkill list
to see if the device is blocked (airplane mode or something).
Also what kernel are you running?

One guy on ubuntu disabled bluetooth and got it working that way:
rmmod rfcomm btintel btrtl btbcm btusb


@jsamyth Thanks for the reply.

rfkill list shows:

0: phy0: Wireless LAN
            Soft blocked: no
            Hard blocked: no

My kernel is 4.9.50-1-MANJARO.

It seems none of the modules you listed in rmmod were loaded.

This couldn’t be something so simple as a non-free driver/firmware not being installed, could it? Since it’s a surface (no ethernet) and wifi doesn’t work, I’ve not been able to install anything that isn’t installed by default. My first inclination was to try to find a firmware package (like linux-firmware, or firmware-misc-nonfree in Debian) to try to find a more compatible driver package but wouldn’t even know where to start for Manjaro.


Can you give us
mhwd -li && mhwd -l && inxi -N


There are firmware for a lot of things in the manjaro-firmware packages in the ISO.
But maybe you should try a later kernel. Perhaps that chipset you have is included in later kernels.

Also you can often use our cell phone as network adaptor, if our cell plan allows such,

Also a cheap USB-Cat5 network interface are like 5 to 10 bucks.


@cscs here is the output for mhwd -li && mhwd -l && inxi -N:

> Installed PCI configs:
                  NAME               VERSION          FREEDRIVER           TYPE
           video-intel            2017.03.24                true            PCI

Warning: No installed USB configs!
> 0000:00:02.0 (0300:8086:0a26) Display controller Intel Corporation:
                  NAME               VERSION          FREEDRIVER           TYPE
           video-intel            2017.03.24                true            PCI
            video-vesa            2017.03.12                true            PCI

Resuming in non X mode: xrandr not found. For package install advice run: inxi --recommends
Network:   Card: Marvell 88W8897 [AVASTAR] 802.11ac Wireless
           driver: mwifiex_pcie

@jsamyth, It looks like the most recent release I can find is 17.0.5 (what I installed) which comes with 4.9.50. The Development releases are listed as 17.0.3-*. Am I looking in the wrong place? I’m happy to give a development release with a newer kernel a shot.


Apparently kernel 4.11+ should help alot. (That is you should try 4.13)

Download from a mirror somewhere like this:

Then you can drop those files on usb stick and run

sudo pacman -U /path/to/linux413-4.13.3-2-x86_64.pkg.tar.xz


Ok, upgraded to 4.13.3-2! @cscs, thanks for the pacman command example - I wouldn’t have been quite sure what option was appropriate for installing from a file like that.

Interestingly, I checked for wifi networks right after installing the kernel upgrade and did indeed see them! I didn’t think to check before the install - wasn’t expecting miracles - so no positive confirmation that the install is what did it. But… after rebooting, I seem to be back to the same ol’ behavior described above. I confirmed with uname -a that the kernel is successfully upgraded.

I remember seeing some discussion around some sort of firmware-loading issue where it didn’t always get loaded depending on suspend-resume, reboot sequences - something to do with a bluetooth vs. wifi module issue where they had to avoid conflicting with each other but sometimes wound up having neither load the firmware for the chip. I don’t remember where I saw that. Could something like that be happening here? I think that was in discussion of older kernels though.


check rfkill again and have a look at ‘lsmod’ for what modules are loaded. We might find some other rogue bluetooth to try and kill.
You also might try modprobing it
sudo modprobe mwifiex_pcie



0: phy0: Wireless LAN
	Soft blocked: no
	Hard blocked: no


Module                  Size  Used by
uas                    24576  0
usb_storage            65536  2 uas
fuse                   94208  3
input_leds             16384  0
tpm_crb                16384  0
hid_sensor_magn_3d     16384  0
hid_sensor_rotation    16384  0
hid_sensor_accel_3d    16384  0
hid_sensor_incl_3d     16384  0
hid_sensor_gyro_3d     16384  0
hid_sensor_als         16384  0
hid_sensor_trigger     16384  12 hid_sensor_incl_3d,hid_sensor_als,hid_sensor_accel_3d,hid_sensor_magn_3d,hid_sensor_gyro_3d,hid_sensor_rotation
industrialio_triggered_buffer    16384  6 hid_sensor_incl_3d,hid_sensor_als,hid_sensor_accel_3d,hid_sensor_magn_3d,hid_sensor_gyro_3d,hid_sensor_rotation
hid_sensor_iio_common    16384  7 hid_sensor_incl_3d,hid_sensor_als,hid_sensor_accel_3d,hid_sensor_trigger,hid_sensor_magn_3d,hid_sensor_gyro_3d,hid_sensor_rotation
intel_rapl             20480  0
x86_pkg_temp_thermal    16384  0
intel_powerclamp       16384  0
coretemp               16384  0
kvm_intel             192512  0
kvm                   516096  1 kvm_intel
irqbypass              16384  1 kvm
crct10dif_pclmul       16384  0
crc32_pclmul           16384  0
crc32c_intel           24576  0
joydev                 20480  0
mousedev               20480  0
ghash_clmulni_intel    16384  0
pcbc                   16384  0
nls_iso8859_1          16384  2
nls_cp437              20480  2
aesni_intel           184320  0
vfat                   20480  2
fat                    65536  1 vfat
aes_x86_64             20480  1 aesni_intel
mac_hid                16384  0
mwifiex_pcie           36864  0
crypto_simd            16384  1 aesni_intel
glue_helper            16384  1 aesni_intel
hid_sensor_hub         20480  8 hid_sensor_incl_3d,hid_sensor_als,hid_sensor_accel_3d,hid_sensor_iio_common,hid_sensor_trigger,hid_sensor_magn_3d,hid_sensor_gyro_3d,hid_sensor_rotation
cryptd                 20480  3 crypto_simd,ghash_clmulni_intel,aesni_intel
iTCO_wdt               16384  0
intel_cstate           16384  0
iTCO_vendor_support    16384  1 iTCO_wdt
mwifiex               274432  1 mwifiex_pcie
intel_rapl_perf        16384  0
evdev                  24576  14
cfg80211              532480  1 mwifiex
pcspkr                 16384  0
rfkill                 20480  4 cfg80211
thermal                20480  0
tpm_tis                16384  0
tpm_tis_core           20480  1 tpm_tis
surface3_button        16384  0
tpm                    49152  3 tpm_tis,tpm_crb,tpm_tis_core
surfacepro3_button     16384  0
soc_button_array       16384  0
snd_soc_sst_acpi       16384  0
snd_soc_sst_match      16384  1 snd_soc_sst_acpi
8250_dw                16384  0
uvcvideo               86016  0
videobuf2_vmalloc      16384  1 uvcvideo
videobuf2_memops       16384  1 videobuf2_vmalloc
videobuf2_v4l2         20480  1 uvcvideo
videobuf2_core         36864  2 uvcvideo,videobuf2_v4l2
videodev              155648  3 uvcvideo,videobuf2_core,videobuf2_v4l2
media                  32768  2 uvcvideo,videodev
snd_hda_codec_hdmi     49152  1
snd_hda_codec_realtek    77824  1
i915                 1683456  16
snd_hda_codec_generic    69632  1 snd_hda_codec_realtek
snd_soc_rt5640        110592  0
video                  36864  1 i915
snd_soc_rl6231         16384  1 snd_soc_rt5640
snd_soc_core          192512  1 snd_soc_rt5640
snd_hda_intel          36864  4
drm_kms_helper        131072  1 i915
snd_compress           20480  1 snd_soc_core
snd_hda_codec         106496  4 snd_hda_intel,snd_hda_codec_hdmi,snd_hda_codec_generic,snd_hda_codec_realtek
snd_pcm_dmaengine      16384  1 snd_soc_core
drm                   303104  6 i915,drm_kms_helper
elan_i2c               32768  0
snd_hda_core           65536  5 snd_hda_intel,snd_hda_codec,snd_hda_codec_hdmi,snd_hda_codec_generic,snd_hda_codec_realtek
snd_hwdep              20480  1 snd_hda_codec
snd_pcm                86016  7 snd_hda_intel,snd_hda_codec,snd_pcm_dmaengine,snd_hda_core,snd_soc_rt5640,snd_hda_codec_hdmi,snd_soc_core
intel_gtt              20480  1 i915
syscopyarea            16384  1 drm_kms_helper
snd_timer              28672  1 snd_pcm
sysfillrect            16384  1 drm_kms_helper
sysimgblt              16384  1 drm_kms_helper
ac97_bus               16384  1 snd_soc_core
snd                    73728  18 snd_compress,snd_hda_intel,snd_hwdep,snd_hda_codec,snd_timer,snd_hda_codec_hdmi,snd_hda_codec_generic,snd_hda_codec_realtek,snd_soc_core,snd_pcm
button                 16384  1 i915
mei_me                 36864  0
acpi_als               16384  0
i2c_hid                20480  0
fb_sys_fops            16384  1 drm_kms_helper
soundcore              16384  1 snd
i2c_algo_bit           16384  1 i915
mei                    81920  1 mei_me
shpchp                 32768  0
i2c_i801               24576  0
lpc_ich                24576  0
kfifo_buf              16384  2 acpi_als,industrialio_triggered_buffer
industrialio           57344  10 hid_sensor_incl_3d,hid_sensor_als,hid_sensor_accel_3d,acpi_als,hid_sensor_trigger,hid_sensor_magn_3d,hid_sensor_gyro_3d,hid_sensor_rotation,industrialio_triggered_buffer,kfifo_buf
ac                     16384  0
battery                20480  0
sch_fq_codel           20480  5
uinput                 20480  0
sg                     36864  0
ip_tables              24576  0
x_tables               32768  1 ip_tables
ext4                  557056  1
crc16                  16384  1 ext4
mbcache                16384  1 ext4
jbd2                   90112  1 ext4
fscrypto               24576  1 ext4
hid_multitouch         20480  0
usbhid                 45056  0
hid                   114688  4 hid_sensor_hub,i2c_hid,usbhid,hid_multitouch
sd_mod                 49152  6
ahci                   36864  3
libahci                28672  1 ahci
libata                208896  2 ahci,libahci
xhci_pci               16384  0
xhci_hcd              188416  1 xhci_pci
scsi_mod              155648  5 sd_mod,usb_storage,libata,uas,sg
usbcore               208896  6 uvcvideo,usbhid,usb_storage,xhci_pci,uas,xhci_hcd
usb_common             16384  1 usbcore
sdhci_acpi             16384  0
sdhci                  40960  1 sdhci_acpi
led_class              16384  2 sdhci,input_leds
mmc_core              122880  2 sdhci,sdhci_acpi

modprobe mwifiex_pcie had no effect but exited with status 0.


Since I seem to be stuck here (and I’m getting way behind in work, trying to get this device up and working), I tried a couple of other flavors of Linux just to see if they had any different results:

  • Ubuntu 17.04 - Kernel 4.10
  • Fedora 26 - Kernel 4.11

No luck.

Including the attempts I’ve made with Manjaro, I’ve tried kernels 4.9, 4.10, 4.11 and 4.13 now. They all show the wifi device, but fail to see any networks. During the Ubuntu install, I did randomly see networks again ONCE and only in the live image. I could not come up with any steps to recreate the fluke… I don’t get it. I thought Manjaro at least had the kernel fixed up with Surface hardware support back in 4.9 with several people reporting it worked great!

Does my Surface have a different wireless chip than usual?
Marvell 88W8897 [AVASTAR] 802.11ac Wireless

I’m seriously at a loss but am really dreading having to go back on my pledge to abandon Windows after an update broke a lot of my tools…


I wonder if downgrading linux-firmware will help your issues


Worth a shot. I’ll have to reinstall Manjaro then downgrade. Will report back. Not sure if I’ll get to it tonight though.


OK. I downgraded from:

No change in behavior.

I did some digging and found that the firmware for my chip uses 88W8897.bin, which appears to have been provided by the chip manufacturer, Marvell. It seems that bin file has been untouched in various kernel updates since it was formerly available for download from the Marvell website (may still be but I can’t find where). Presumably, that file should support the chip it is named after. So what could the problem be? Some other firmware / module that is interfering? I don’t know enough about kernel modules to even begin guessing which modules that may be but the list of modules loaded is posted above… I’m stumped.


They are provided by linux-firmware to be exact

~ >>> pacman -Qo /usr/lib/firmware/mwlwifi/88W8897.bin                                                                                                                  
/usr/lib/firmware/mwlwifi/88W8897.bin is owned by linux-firmware 20170907.a61ac5c-1


Which is why we wanted to newer kernel and firmware packages in the first place…
Because I have seen confirmations of it working on ubuntu and arch … so much so that most patches and things havent been looked at in 2 years and mwlwifi is now incorporated, I wonder if it might be an issue elsewhere … such as NetworkManager.

But I am not sure where to look at this point…
Maybe TLP and/or powersavings ? They might need to be disabled ?

(ex - there is a SP kernel in aur …)


The reason why I suggest to downgrade linux-firmware is because I remember this thread :


Hey @illkitten I saw your recent intro post … you have the same rig - can you weigh on on this?


Sorry for the late response. I am using the exact same WiFi driver as yours. No issues on the 4.9 kernel, but 4.13 kernel drops WiFi after 10 minutes and I can’t get it back unless I reboot.


Hey folks,

Sorry for the silence for a few days but I’m pretty sure I finally figured out what my problem is: My WiFi card is bad or at least on the fritz.

I reinstalled Windows to see what I could test from there and the WiFi is doing the same thing there: every time I reboot there is a 1/5 chance that the card just works, regardless of what OS I’m running. I’ve been watching this behavior as I switch back and forth between Windows and a linux flavor of the hour, working on finding a good work-around with a USB WiFi card I had handy. The built-in card just doesn’t work most of the time, no matter whether I’m running linux or Windows.