Share Notes

chundev

View the Project on GitHub latteouka/share-notes

macOS Network Location 完整指南 — USB 網卡消失的元兇

日期:2026-03-25 環境:macOS Sequoia (Apple Silicon)


TL;DR

USB 網卡突然全部讀不到,重開機也沒用。排查 USB 控制器、驅動都正常,最後發現是 macOS 的 Network Location 被切到一個不包含 USB 網卡 service 的設定組。切回 Automatic 後立即恢復。Network Location 是一個容易被遺忘但影響範圍很大的功能 — 切錯了等於整組網路設定消失。


背景

macOS 有一個叫 Network Location 的功能,可以儲存多組獨立的網路設定,讓你在不同環境(辦公室、家裡、外出)快速切換。每個 Location 擁有自己獨立的一組 Network Service,各自有不同的 IP、DNS、Proxy、Service Order 設定。

問題是:如果某個 Location 沒有包含你的 USB 網卡對應的 Network Service,切到那個 Location 後,網卡就會「消失」。


問題 / 錯誤現象

兩張 USB 網卡(Realtek 2.5G + ASIX AX88179A)同時消失:

$ ifconfig en11
  media: autoselect (none)
  status: inactive

$ ifconfig en9
  media: autoselect (none)
  status: inactive

$ system_profiler SPUSBDataType
(完全無輸出)

USB 控制器本身存在,但底下沒有任何子裝置:

$ ioreg -p IOUSB -w0 | grep '+-o'
+-o AppleT8132USBXHCI@00000000
+-o AppleT8132USBXHCI@01000000
+-o AppleT8132USBXHCI@02000000

除錯過程

嘗試 做法 結果 原因
❌ 重置 USB daemon sudo killall -STOP -c usbd 無效 問題不在 USB 層
❌ 重新開機 完整關機 → 開機 無效 重開機不會改變 Location 設定
❌ 物理拔插 拔掉所有 USB 裝置再插回 無效 硬體沒問題
✅ 切換 Network Location networksetup -switchtolocation "Automatic" 立即恢復 之前的 Location 沒有 USB 網卡的 service

關鍵洞察: system_profiler SPUSBDataType 無輸出讓人以為是 USB 硬體問題,但實際上 ioreg -p IOUSB 可以看到 USB 控制器正常。問題出在更上層的網路設定。


Network Location 運作原理

架構層級

Location(設定集合)
  └── Network Service(如 "Wi-Fi"、"USB 2.5G LAN")
        └── 綁定到 Hardware Port / Interface(如 en0、en11)
              └── IP / DNS / Proxy 設定

每個 Location 有自己獨立的一組 Network Service。 Location A 裡有 Wi-Fi + USB Ethernet,不代表 Location B 也有。切換 Location 就是切換整組設定。

預設行為


CLI 指令速查

查詢

# 列出所有 Location
networksetup -listlocations

# 查看目前使用的 Location
networksetup -getcurrentlocation

# 列出目前 Location 下的所有 Network Service
networksetup -listallnetworkservices

# 列出所有硬體 port(含 device name 和 MAC)
networksetup -listallhardwareports

Location 管理

# 建立新 Location(⚠️ 空的,沒有任何 service)
sudo networksetup -createlocation "CoffeShop"

# 建立新 Location 並自動填入當前偵測到的硬體(✅ 推薦)
sudo networksetup -createlocation "CoffeeShop" populate

# 切換 Location
sudo networksetup -switchtolocation "Automatic"

# 刪除 Location
sudo networksetup -deletelocation "CoffeeShop"

Network Service 管理

# 偵測新硬體並自動建立 service(插上 USB 網卡後執行)
sudo networksetup -detectnewhardware

# 手動建立 service
sudo networksetup -createnetworkservice "USB Ethernet" "USB 10/100/1000 LAN"

# 設定 service 優先順序(排前面的優先)
sudo networksetup -ordernetworkservices "USB 2.5G LAN" "Wi-Fi" "Thunderbolt Bridge"

# 啟用 / 停用 service
sudo networksetup -setnetworkserviceenabled "USB Ethernet" on

GUI 操作(macOS Ventura 13.1+)

  1. System Settings → Network
  2. 點擊底部的 ⋯ (More) 選單
  3. 選擇 Locations → Edit Locations
  4. + 新增、- 刪除、下拉選單切換

當有 2 個以上的 Location 時,Apple Menu(左上角 ) 會出現 Location 子選單,可直接切換。

⚠️ macOS Ventura 13.0 曾短暫移除 GUI,只能用 CLI。13.1 後已恢復。


常見陷阱

1. 空 Location 導致全部斷網

# ❌ 這會建立一個空的 Location — 切過去等於斷網
sudo networksetup -createlocation "Test"

# ✅ 加 populate 才會包含所有現有硬體
sudo networksetup -createlocation "Test" populate

2. USB 裝置插拔時機

-createlocation ... populate-detectnewhardware 只會偵測當下已連接的硬體。如果建立 Location 時 USB 網卡沒插上,那個 Location 就不會有對應的 service。

解法: 插上所有 USB 裝置後,在目標 Location 下執行:

sudo networksetup -detectnewhardware

3. Location 名稱大小寫敏感

# ❌ 找不到
networksetup -switchtolocation "office"

# ✅ 必須完全匹配
networksetup -switchtolocation "Office"

4. 刪除 Location 的副作用

刪除目前正在使用的 Location 時,macOS 會自動切到另一個(通常是 Automatic)。不會造成問題,但要注意切換後的設定可能不同。

5. macOS 升級後 Location 失效

macOS 大版本升級有時會重設 Location 設定或移除某些 service。升級後建議檢查:

networksetup -getcurrentlocation
networksetup -listallnetworkservices

實用場景

場景 Location 設定
辦公室 固定 IP、公司 DNS、Proxy、USB Ethernet 優先
在家 DHCP、公共 DNS、無 Proxy、Wi-Fi 優先
外出 只啟用 Wi-Fi、手機熱點
除錯用 建一個乾淨的 Location 來排除設定問題

排查 SOP:USB 網卡消失時

# Step 1: 確認硬體有沒有被 macOS 看到
ioreg -p IOUSB -w0 | grep '+-o'
# 有列出 XHCI controller → 硬體 OK

# Step 2: 確認目前 Location
networksetup -getcurrentlocation

# Step 3: 確認該 Location 有沒有 USB 網卡的 service
networksetup -listallnetworkservices
networksetup -listallhardwareports

# Step 4: 如果 service 不在,切回 Automatic
sudo networksetup -switchtolocation "Automatic"

# Step 5: 如果需要在其他 Location 也能用,加入 service
sudo networksetup -switchtolocation "Office"
sudo networksetup -detectnewhardware

學到的事


參考資料