在 macOS 上讓 Android 手機透過 USB 有線分享網路:一次實際排查紀錄

在 macOS 上讓 Android 手機透過 USB 有線分享網路:一次實際排查紀錄

背景

我想讓一臺 MacBook Pro 透過 Android 手機的 USB 有線網路分享上網。手機已經接上 USB,也已經在手機端打開「USB 網路共用」,但一開始 Mac 看起來並沒有真的走手機網路。

這篇記錄完整排查過程與最後成功的方法。文中已移除序號、MAC 位址、私人 IP、使用者名稱與本機路徑等隱私資訊,只保留可重現的判斷方式。

一開始看到的狀況

先檢查 macOS 的網路硬體介面:

networksetup -listallhardwareports

一開始只看到 Ethernet、Thunderbolt Bridge、Wi-Fi 等既有介面,沒有出現 Android 手機對應的 USB 網卡。

再檢查目前預設路由:

route -n get default

結果顯示預設路由仍然走 Wi-Fi,而不是手機 USB。也就是說,當時即使手機有插線,Mac 實際上仍靠 Wi-Fi 上網。

確認 USB 連線本身正常

接著檢查 USB 裝置:

system_profiler SPUSBDataType

Mac 可以看到 Android 手機,代表 USB 線材與硬體連線本身是成立的。問題不是「手機沒接到 Mac」,而是「Mac 沒有把手機辨識成可用的網路卡」。

這時也可以搭配:

ifconfig
scutil --nwi
networksetup -detectnewhardware

如果重新掃描硬體後仍沒有新增網路介面,就表示 macOS 沒有成功綁定手機提供的 USB 網路協定。

找到真正原因:Android 提供的是 RNDIS

進一步看 USB 介面與系統記錄後,看到 Android 手機在 USB tethering 模式下提供的是 RNDIS 介面,例如:

RNDIS Communications Control
RNDIS Ethernet Data

RNDIS 是許多 Android 手機用來做 USB 網路分享的協定,但 macOS 原生通常不支援 Android 的 RNDIS USB tethering。macOS 內建的是 CDC/ECM/NCM 類型的 USB 網路支援,並不等同於能直接使用 Android RNDIS。

這解釋了為什麼:

  • USB 裝置有被 Mac 看到
  • 手機端 USB 網路共用也有打開
  • 但 macOS 網路設定裡沒有新增可用網卡
  • 預設路由仍走 Wi-Fi

解法:安裝 HoRNDIS 驅動

最後成功的方法是安裝第三方 RNDIS 驅動 HoRNDIS。

專案位置:HoRNDIS GitHub 專案

下載最新版安裝包:

HoRNDIS-9.2.pkg

安裝後重開機,然後重新插上 Android 手機,並在手機端打開「USB 網路共用」。

注意:HoRNDIS 是舊式 macOS kernel extension。新版本 macOS 對第三方核心延伸套件限制較多,是否能成功會受到機型、macOS 版本與安全性設定影響。這次成功的環境是 Intel Mac,且系統允許載入該 kext。

成功後如何確認

重開機後,再執行:

networksetup -listallhardwareports

這次可以看到 Android 手機變成一個新的硬體網路介面,例如:

Hardware Port: Android Phone
Device: enX

其中 enX 會依每臺機器不同而不同,例如 en3en4

接著確認該介面已取得 IP:

ifconfig enX

應該能看到 IPv4 位址,且狀態為 active。

再確認預設路由:

route -n get default

成功時,預設路由會走 Android 手機對應的 enX,而不是 Wi-Fi。

最後測試外網與 DNS:

ping -c 3 1.1.1.1
ping -c 3 google.com

如果兩者都成功,代表不只是 USB 連上,也是真的透過手機有線網路上網。

也可以確認 HoRNDIS 是否已載入:

kmutil showloaded | grep -i horndis

成功時會看到類似:

com.joshuawise.kexts.HoRNDIS

最終成功狀態

最後的成功狀態是:

  • Android 手機透過 USB 連到 Mac
  • macOS 出現一張新的手機 USB 網卡
  • 該網卡狀態為 active
  • 該網卡取得 DHCP 位址
  • 預設路由走手機 USB 網卡
  • Wi-Fi 沒有被用作主要上網路徑
  • 外網 IP 與 DNS 測試成功
  • HoRNDIS 驅動已載入

後續使用注意事項

之後每次使用時,通常流程是:

  1. 用 USB 線連接 Android 手機與 Mac
  2. 在手機端開啟「USB 網路共用」
  3. 等 macOS 出現手機 USB 網卡
  4. 確認預設路由走手機網卡

如果重插後沒有連上,可以先檢查:

networksetup -listallhardwareports
route -n get default
ifconfig

如果手機 USB 網卡沒有出現,通常是手機端 USB tethering 沒有重新啟用,或驅動沒有載入。

小結

這次問題的核心不是線材,也不是手機沒有插好,而是 Android USB tethering 使用 RNDIS,macOS 原生無法直接把它當作網路卡。

成功關鍵是:

  • 確認手機 USB 裝置有被 Mac 偵測
  • 確認手機提供的是 RNDIS 網路介面
  • 安裝 HoRNDIS 讓 macOS 支援 Android RNDIS
  • 重開機後重新啟用 USB 網路共用
  • 確認新網卡、預設路由與外網連線

完成後,Mac 就能透過 Android 手機的 USB 有線網路分享上網。

留言