Hi all,
Sharing a solution for a Wi-Fi issue encountered on a recent Garuda Hyprland install on a Surface Pro device using the Marvell 88W8897 Wi-Fi chip and the linux-surface
kernel. After searching forums and trying standard troubleshooting, the fix involved manually adding a firmware file. wifi was not working using the provided kernel neither the
The Issue:
- After installing Garuda and the
linux-surface
kernel (from surface-linux), Wi-Fi device was not detected (nmcli device
only showedlo
). - Running
dmesg | grep -i mwifiex
showed the following error, indicating missing firmware:mwifiex_pcie 0000:01:00.0: Direct firmware load for mrvl/pcie8897_uapsta.bin failed with error -2 mwifiex_pcie 0000:01:00.0: Failed to get firmware mrvl/pcie8897_uapsta.bin
Troubleshooting Attempted (Standard Fixes):
- Ensured the correct
linux-surface
kernel was booted (uname -a
confirmedsurface
kernel). - Verified no
rfkill
blocks. - Installed and reinstalled
linux-firmware
package usingsudo pacman -Syu linux-firmware
while connected via USB tethering. The package installed/reinstalled successfully according to pacman (versionlinux-firmware-20250311.b69d4b74-3
). - Crucially, even after reinstalling
linux-firmware
, the required file was missing:ls -l /usr/lib/firmware/mrvl/pcie8897_uapsta.bin
reported “No such file or directory”.pacman -Ql linux-firmware | grep pcie8897_uapsta.bin
returned no output, confirming the file wasn’t registered as part of the package by pacman on my system.
The Workaround (Manual Firmware Placement):
Since the standard package didn’t provide the file, I manually downloaded pcie8897_uapsta.bin
from the official upstream linux-firmware repository:
https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/mrvl/pcie8897_uapsta.bin
And placed it correctly using the terminal (while connected via tethering):
# Create the directory if it doesn't exist
sudo mkdir -p /usr/lib/firmware/mrvl/
# Download directly into the correct location
sudo wget -O /usr/lib/firmware/mrvl/pcie8897_uapsta.bin https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/mrvl/pcie8897_uapsta.bin
# Verify file exists
ls -l /usr/lib/firmware/mrvl/pcie8897_uapsta.bin
Result:
After rebooting (sudo reboot
), the Wi-Fi interface appeared in nmcli device
and connected successfully.
System Information (garuda-inxi
):
System:
Kernel: 6.13.8-zen1-1-zen arch: x86_64 bits: 64 compiler: gcc v: 14.2.1 clocksource: tsc
avail: acpi_pm parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
root=UUID=9a8bc8c8-5849-422b-8616-3c06d2caf217 rw rootflags=subvol=@ quiet
resume=UUID=06daf29c-9494-4810-aa2a-e8e09476cb86 loglevel=3 ibt=off
Console: pty pts/2 DM: SDDM Distro: Garuda base: Arch Linux
Machine:
Type: Laptop System: Microsoft product: Surface Pro
v: 124000000000000000000000D:0B:09F:5C:09P:38S:01E:0 serial: <filter> Chassis: type: 9
serial: <filter>
Mobo: Microsoft model: Surface Pro serial: <filter> part-nu: Surface_Pro_1796
uuid: 7f669287-b043-e7bb-ddf3-9a9fefbc5575 UEFI: Microsoft v: 239.871.768 date: 11/07/2015
Battery:
ID-1: BAT1 charge: 24.4 Wh (64.0%) condition: 38.1/45.0 Wh (84.8%) power: 59.3 W volts: 7.9
min: 7.6 model: SMP M1009169 type: Li-ion serial: <filter> status: discharging cycles: 489
CPU:
Info: model: Intel Core i5-7300U socket: BGA1356 (U3E1) note: check bits: 64 type: MT MCP
arch: Amber/Kaby Lake note: check gen: core 7 level: v3 note: check built: 2017
process: Intel 14nm family: 6 model-id: 0x8E (142) stepping: 9 microcode: 0xF6
Topology: cpus: 1x dies: 1 clusters: 2 cores: 2 threads: 4 tpc: 2 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: 900 min/max: 400/3500 scaling: driver: intel_pstate governor: powersave
volts: 0.8 V ext-clock: 100 MHz cores: 1: 900 2: 900 3: 900 4: 900 bogomips: 21599
Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
Vulnerabilities: <filter>
Graphics:
Device-1: Intel HD Graphics 620 vendor: Microsoft driver: i915 v: kernel arch: Gen-9.5
process: Intel 14nm built: 2016-20 ports: active: none off: eDP-1 empty: DP-1, DP-2, HDMI-A-1,
HDMI-A-2 bus-ID: 00:02.0 chip-ID: 8086:5916 class-ID: 0300
Display: unspecified server: X.org v: 1.21.1.16 with: Xwayland v: 24.1.6 compositor: Hyprland
driver: X: loaded: modesetting alternate: fbdev,intel,vesa dri: iris gpu: i915 tty: 120x30
Monitor-1: eDP-1 model: LG Display 0x0555 serial: <filter> built: 2016 res: 2736x1824 dpi: 267
gamma: 1.2 size: 260x173mm (10.24x6.81") diag: 312mm (12.3") ratio: 3:2 modes: 2736x1824
API: Vulkan v: 1.4.309 layers: 5 device: 0 type: integrated-gpu name: Intel HD Graphics 620
(KBL GT2) driver: N/A device-ID: 8086:5916 surfaces: N/A device: 1 type: cpu name: llvmpipe
(LLVM 19.1.7 256 bits) driver: N/A device-ID: 10005:0000 surfaces: N/A
API: OpenGL Message: GL data unavailable in console, glxinfo missing.
Info: Tools: api: vulkaninfo wl: kanshi, wdisplays, wlr-randr x11: xprop
Audio:
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_avs bus-ID: 00:1f.3 chip-ID: 8086:9d71 class-ID: 0403
API: ALSA v: k6.13.8-zen1-1-zen status: kernel-api tools: alsactl,alsamixer,amixer
Server-1: sndiod v: N/A status: off tools: aucat,midicat,sndioctl
Server-2: PipeWire v: 1.4.1 status: n/a (root, process) with: 1: pipewire-pulse status: active
2: wireplumber status: active 3: pipewire-alsa type: plugin 4: pw-jack type: plugin
tools: pactl,pw-cat,pw-cli,wpctl
Network:
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: 01:00.0 chip-ID: 11ab:2b38 class-ID: 0200
IF: wlp1s0 state: up mac: <filter>
IF-ID-1: tailscale0 state: unknown speed: -1 duplex: full mac: N/A
Info: services: NetworkManager, sshd, systemd-timesyncd, wpa_supplicant
Bluetooth:
Device-1: Marvell Bluetooth and Wireless LAN Composite driver: btusb v: 0.8 type: USB rev: 2.0
speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 1-5:3 chip-ID: 1286:204c class-ID: e001
serial: <filter>
Report: btmgmt ID: hci0 rfk-id: 0 state: up address: <filter> bt-v: 4.2 lmp-v: 8 status:
discoverable: no pairing: no class-ID: 6c010c
Drives:
Local Storage: total: 239.24 GiB used: 6.21 GiB (2.6%)
SMART Message: Required tool smartctl not installed. Check --recommends
ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Samsung model: KUS020203M-B000 size: 119.24 GiB
block-size: physical: 512 B logical: 512 B speed: 15.8 Gb/s lanes: 2 tech: SSD serial: <filter>
fw-rev: DXB8AM1Q temp: 30.9 C scheme: GPT
ID-2: /dev/sda maj-min: 8:0 vendor: Generic model: SD MMC size: 120 GiB block-size:
physical: 512 B logical: 512 B type: USB rev: 3.0 spd: 5 Gb/s lanes: 1 mode: 3.2 gen-1x1
tech: SSD serial: <filter> fw-rev: 1.00 scheme: MBR
Partition:
ID-1: / raw-size: 110.15 GiB size: 110.15 GiB (100.00%) used: 6.21 GiB (5.6%) fs: btrfs
block-size: 4096 B 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
block-size: 512 B dev: /dev/nvme0n1p1 maj-min: 259:1
ID-3: /home raw-size: 110.15 GiB size: 110.15 GiB (100.00%) used: 6.21 GiB (5.6%) fs: btrfs
block-size: 4096 B dev: /dev/nvme0n1p2 maj-min: 259:2
ID-4: /var/log raw-size: 110.15 GiB size: 110.15 GiB (100.00%) used: 6.21 GiB (5.6%) fs: btrfs
block-size: 4096 B dev: /dev/nvme0n1p2 maj-min: 259:2
ID-5: /var/tmp raw-size: 110.15 GiB size: 110.15 GiB (100.00%) used: 6.21 GiB (5.6%) fs: btrfs
block-size: 4096 B dev: /dev/nvme0n1p2 maj-min: 259:2
Swap:
Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default) zswap: no
ID-1: swap-1 type: zram size: 7.67 GiB used: 0 KiB (0.0%) priority: 100 comp: zstd
avail: lzo-rle,lzo,lz4,lz4hc,deflate,842 max-streams: 4 dev: /dev/zram0
ID-2: swap-2 type: partition size: 8.8 GiB used: 0 KiB (0.0%) priority: -2 dev: /dev/nvme0n1p3
maj-min: 259:3
Sensors:
System Temperatures: cpu: 30.0 C pch: 27.0 C mobo: N/A
Fan Speeds (rpm): N/A
Info:
Memory: total: 8 GiB available: 7.67 GiB used: 1.64 GiB (21.5%) igpu: 32 MiB
Processes: 206 Power: uptime: 33m states: freeze,mem,disk suspend: s2idle wakeups: 0
hibernate: platform avail: shutdown, reboot, suspend, test_resume image: 3.06 GiB Init: systemd
v: 257 default: graphical tool: systemctl
Packages: pm: pacman pkgs: 1217 libs: 362 tools: pacseek,paru Compilers: gcc: 14.2.1
Shell: garuda-inxi (sudo) default: Bash v: 5.2.37 running-in: pty pts/2 (SSH) inxi: 3.3.37
Garuda (2.7.2-1):
System install date: 2025-04-06
Last full system update: 2025-04-06
Is partially upgraded: No
Relevant software: snapper NetworkManager dracut
Windows dual boot: No/Undetected
Failed units: