Wifi and bluetooth won't work on surface

I installed garuda onto a microsoft surface, and it won't discover any wifi networks, and it says bluetooth is unavailable. This happens on the flash drive boot as well as the installed garuda boot. I've googled and couldn't find a working solution, and I haven't touched linux in years so I don't know how to try and fix it

my garuda-inxi:

╭─[email protected] in ~
╰─λ garuda-inxi
Kernel: 6.0.2-zen1-1-zen arch: x86_64 bits: 64 compiler: gcc v: 12.2.0
parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
root=UUID=ae99ee5a-04a0-465f-98c5-3ace108256e9 rw [email protected]
quiet quiet splash rd.udev.log_priority=3 vt.global_cursor_default=0
Desktop: KDE Plasma v: 5.26.1 tk: Qt v: 5.15.6 info: latte-dock
wm: kwin_x11 vt: 1 dm: SDDM Distro: Garuda Linux base: Arch Linux
Type: Laptop System: Microsoft product: Surface Book
v: 124000000000000000000000D:0B:08F:1C:03P:38 serial: <superuser required>
Chassis: type: 9 serial: <superuser required>
Mobo: Microsoft model: Surface Book serial: <superuser required>
UEFI: Microsoft v: 92.3748.768 date: 05.04.2021
ID-1: BAT2 charge: 7.9 Wh (19.8%) condition: 39.8/51.0 Wh (78.0%)
volts: 7.1 min: 7.5 model: SMP X906980 type: Li-ion serial: <filter>
status: discharging cycles: 71
Info: model: Intel Core i5-6300U bits: 64 type: MT MCP arch: Skylake
gen: core 6 level: v3 note: check built: 2015 process: Intel 14nm family: 6
model-id: 0x4E (78) stepping: 3 microcode: 0xF0
Topology: cpus: 1x cores: 2 tpc: 2 threads: 4 smt: enabled cache:
L1: 128 KiB desc: d-2x32 KiB; i-2x32 KiB L2: 512 KiB desc: 2x256 KiB
L3: 3 MiB desc: 1x3 MiB
Speed (MHz): avg: 2364 high: 2574 min/max: 400/3000 scaling:
driver: intel_pstate governor: powersave cores: 1: 2000 2: 2385 3: 2500
4: 2574 bogomips: 19999
Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
Type: itlb_multihit status: KVM: VMX disabled
Type: l1tf mitigation: PTE Inversion; VMX: conditional cache flushes, SMT
Type: mds mitigation: Clear CPU buffers; SMT vulnerable
Type: meltdown mitigation: PTI
Type: mmio_stale_data mitigation: Clear CPU buffers; SMT vulnerable
Type: retbleed mitigation: IBRS
Type: spec_store_bypass mitigation: Speculative Store Bypass disabled via
Type: spectre_v1 mitigation: usercopy/swapgs barriers and __user pointer
Type: spectre_v2 mitigation: IBRS, IBPB: conditional, RSB filling,
PBRSB-eIBRS: Not affected
Type: srbds mitigation: Microcode
Type: tsx_async_abort mitigation: TSX disabled
Device-1: Intel Skylake GT2 [HD Graphics 520] vendor: Microsoft
driver: i915 v: kernel arch: Gen-9 process: Intel 14n built: 2015-16 ports:
active: eDP-1 empty: DP-1, DP-2, HDMI-A-1, HDMI-A-2 bus-ID: 00:02.0
chip-ID: 8086:1916 class-ID: 0300
Display: x11 server: X.Org v: 21.1.4 with: Xwayland v: 22.1.3
compositor: kwin_x11 driver: X: loaded: modesetting
alternate: fbdev,intel,vesa dri: iris gpu: i915 display-ID: :0 screens: 1
Screen-1: 0 s-res: 3000x2000 s-dpi: 96 s-size: 793x529mm (31.22x20.83")
s-diag: 953mm (37.53")
Monitor-1: eDP-1 model: Panasonic TDM13O56 serial: <filter> built: 2016
res: 3000x2000 hz: 60 dpi: 263 gamma: 1.2 size: 290x190mm (11.42x7.48")
diag: 343mm (13.5") ratio: 3:2 modes: 3000x2000
OpenGL: renderer: Mesa Intel HD Graphics 520 (SKL GT2) v: 4.6 Mesa 22.2.1
direct render: Yes
Device-1: Intel Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Imaging
Unit driver: ipu3-imgu alternate: ipu3_imgu bus-ID: 00:05.0
chip-ID: 8086:1919 class-ID: 0480
Device-2: Intel CSI-2 Host driver: ipu3-cio2 alternate: ipu3_cio2
bus-ID: 00:14.3 chip-ID: 8086:9d32 class-ID: 0480
Device-3: Intel Sunrise Point-LP HD Audio driver: snd_hda_intel v: kernel
alternate: snd_soc_skl,snd_soc_avs bus-ID: 00:1f.3 chip-ID: 8086:9d70
class-ID: 0403
Sound API: ALSA v: k6.0.2-zen1-1-zen running: yes
Sound Server-1: PulseAudio v: 16.1 running: no
Sound Server-2: PipeWire v: 0.3.59 running: yes
Device-1: Marvell 88W8897 [AVASTAR] 802.11ac Wireless driver: mwifiex_pcie
v: 1.0 pcie: gen: 1 speed: 2.5 GT/s lanes: 1 bus-ID: 03:00.0
chip-ID: 11ab:2b38 class-ID: 0200
Local Storage: total: 126.74 GiB used: 6.22 GiB (4.9%)
SMART Message: Unable to run smartctl. Root privileges required.
ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Samsung
model: MZFLV128HCGR-000MV size: 119.24 GiB block-size: physical: 512 B
logical: 512 B speed: 31.6 Gb/s lanes: 4 type: SSD serial: <filter>
rev: BXV75M0Q temp: 25.9 C scheme: GPT
ID-2: /dev/sda maj-min: 8:0 type: USB vendor: Generic model: Flash Disk
size: 7.5 GiB block-size: physical: 512 B logical: 512 B type: SSD
serial: <filter> rev: 8.07 scheme: MBR
SMART Message: Unknown USB bridge. Flash drive/Unsupported enclosure?
ID-1: / raw-size: 118.95 GiB size: 118.95 GiB (100.00%) used: 6.22 GiB
(5.2%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
ID-2: /boot/efi raw-size: 300 MiB size: 299.4 MiB (99.80%) used: 608 KiB
(0.2%) fs: vfat dev: /dev/nvme0n1p1 maj-min: 259:1
ID-3: /home raw-size: 118.95 GiB size: 118.95 GiB (100.00%) used: 6.22
GiB (5.2%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
ID-4: /var/log raw-size: 118.95 GiB size: 118.95 GiB (100.00%) used: 6.22
GiB (5.2%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
ID-5: /var/tmp raw-size: 118.95 GiB size: 118.95 GiB (100.00%) used: 6.22
GiB (5.2%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default)
ID-1: swap-1 type: zram size: 7.68 GiB used: 0 KiB (0.0%) priority: 100
dev: /dev/zram0
System Temperatures: cpu: 42.0 C pch: 31.5 C mobo: N/A
Fan Speeds (RPM): N/A
Processes: 192 Uptime: 2m wakeups: 1 Memory: 7.68 GiB used: 2.01 GiB
(26.2%) Init: systemd v: 251 default: graphical tool: systemctl
Compilers: gcc: 12.2.0 Packages: pm: pacman pkgs: 1137 libs: 301
tools: octopi,paru Shell: fish v: 3.5.1 default: Bash v: 5.1.16
running-in: konsole inxi: 3.3.22
warning: database file for 'garuda' does not exist (use '-Sy' to download)
warning: database file for 'core' does not exist (use '-Sy' to download)
warning: database file for 'extra' does not exist (use '-Sy' to download)
warning: database file for 'community' does not exist (use '-Sy' to download)
warning: database file for 'multilib' does not exist (use '-Sy' to download)
warning: database file for 'chaotic-aur' does not exist (use '-Sy' to download)
Garuda (2.6.8-1):
System install date:     2023-01-09
Last full system update: 2023-01-09
Is partially upgraded:   No
Relevant software:       NetworkManager
Windows dual boot:       No/Undetected
Snapshots:               Snapper
Failed units:
McFly: Importing shell history for the first time. This may take a minute or two...done.

╭─[email protected] in ~ took 2s

Possibly useful (or not):

Microsoft Surface Book 2 - ArchWiki (wifi section -- but is this a 2 or 3 or 4?)

linux-firmware package 20220119 update breaks WiFi support on Surfaces with Marvell network devices · Issue #759 · linux-surface/linux-surface · GitHub

and maybe Surface Pro 3 Wifi - Support - Manjaro Linux Forum

In case this is what you googled already, it would help to know what did not work.


The linux-firmware-marvell package should hopefully get things working for you. If it doesn't work after installing that package, then the most likely fix may be to test the linux-lts or the linux-mainline kernels. You may also want to test the linux-firmware-marvell-git package.

If you don't have a spare USB Wifi dongle available to get an internet connection, then use USB cellular phone tethering for a temporary way of downloading the packages you need.

Welcome to the Garuda community.


It's more like I didn't know what to look for when I googled, all I knew was the internet wasn't working. I tried to update the drivers but I don't think I did it right lol. I didn't really know what I was doing so I wouldn't rule anything out as a cause for the issue

I couldn't find anything device specific either though, so these forum replies are promising, I'll try these suggestions out

and I believe it's an original surface book, or a second generation, it used to be my dad's and he got it quite a while ago so it can't be any newer then a second gen.

Thanks for the info! How should I go about testing the kernal and the package?

Install, reboot, and see if it works!

Handy reference chart for kernel testing:

           Is it working?
     |                     |
     No                   Yes
     |                     |
Try something else    Leave it alone

thx for the visualizer

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.