在 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 會依每臺機器不同而不同,例如 en3、en4。
接著確認該介面已取得 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 驅動已載入
後續使用注意事項
之後每次使用時,通常流程是:
- 用 USB 線連接 Android 手機與 Mac
- 在手機端開啟「USB 網路共用」
- 等 macOS 出現手機 USB 網卡
- 確認預設路由走手機網卡
如果重插後沒有連上,可以先檢查:
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 有線網路分享上網。
留言
張貼留言
歡迎留下您的心靈足跡👍