Ditching the USB NIC: Migrating to the Built-in Ethernet on CachyOS

The r8152 driver had been causing random drops for weeks. Here's how I migrated the entire stack from a USB NIC to the built-in interface without losing the home lab.

linuxnetworkinghomelabdocker

If you run a home server on a laptop, you’ve probably done the USB NIC dance at some point. For months, my ELITEBOOK was running its entire self-hosted stack — Home Assistant, Frigate, Nextcloud, Immich — through an Anker USB ethernet adapter. It worked. Until it didn’t.

The Problem: r8152 Instability

The Anker adapter uses a Realtek RTL8153 chip, exposed to Linux via the r8152 driver. On paper, totally fine. In practice, the driver would silently drop the link under sustained load — usually right when Frigate was mid-recording or Immich was indexing a big batch.

# This was showing up in dmesg way too often
r8152 5-1.1:1.0 enp5s0f3u1u1: Tx status -71
r8152 5-1.1:1.0 enp5s0f3u1u1: link down

The fix wasn’t a driver patch or a quirk flag. The fix was to stop using the USB NIC entirely.

The Built-in NIC

The ELITEBOOK has a built-in NIC (enp1s0f1, Realtek PCIe) that I’d been ignoring because the USB adapter was there from day one. Time to flip that around.

ip link show enp1s0f1
# 2c:58:b9:f2:29:8e

Reserve the MAC in your router so the IP is stable. I pinned it to 192.168.4.66.

Rebuilding the macvtap Bridge

The tricky part: my Home Assistant VM was attached via macvtap to the old USB interface. macvtap creates a virtual NIC that bridges directly onto a physical interface — great for giving a VM its own layer-2 presence on your LAN, but it’s tied to a specific parent interface by name.

virsh detach-interface haos --type direct --mac 52:54:00:3b:44:e6 --persistent
virsh edit haos
# Change: <source dev='enp5s0f3u1u1' mode='bridge'/>
# To:     <source dev='enp1s0f1' mode='bridge'/>
virsh attach-interface haos --type direct --source enp1s0f1 \
  --mac 52:54:00:3b:44:e6 --model virtio --persistent

One Gotcha: macvtap Isolation

Worth noting if you’re new to macvtap: the host cannot directly reach a macvtap-attached VM. This is a kernel-level isolation property. The workaround is virbr0 — from ELITEBOOK, reach the HA VM at 192.168.122.18 instead of its LAN IP.

Result

Zero link drops since the migration. The USB adapter is now in the drawer where it belongs.