Skip to main content

macOS 有线连接指南

RNDIS 网络驱动是安卓手机常见的默认有线共享网络方式,UPort也采用了这一方案。 但macOS 没有内置 RNDIS 网络驱动,因此默认无法通过 USB 直接连接 UPort。

如果只是临时连接一次,例如重置密码,建议改用其他设备访问 UPort,例如 Windows/Linux 电脑或安卓手机。iPhone 通常也无法完成这类连接。

如果没有其他设备,或者希望长期在 macOS 上通过 USB 连接,就需要安装第三方 RNDIS 驱动。请注意,安装该驱动需要关闭一部分系统安全策略,可能降低设备安全性。卸载和恢复 SIP 的方法见文末。

本文使用的驱动来自社区项目 HoRNDIS。原项目由 jwise 开发,但已经长期未维护;macOS 11 及以上版本通常需要使用后续适配版本。

相关项目链接:

完成驱动安装后,macOS 就能识别 RNDIS 网络设备了,如下图所示。 图片:系统设置中的 RNDIS 网络设备

安装方式

无论采用哪种方式安装,都需要先完成“第一步:允许第三方内核扩展”。

方式一:安装 GitHub 的预编译安装包

可以直接在项目页面下载 .pkg 安装包。完成第一步后运行安装包,然后到“系统设置 → 隐私与安全性”中允许该内核扩展。重启后,macOS 应该就能识别 RNDIS 网络设备。

方式二:自行编译或安装我们提供的版本

如果要自行编译,需要先安装 Xcode 编译环境。也可以使用我们提供的、面向 Apple M 系列芯片预编译好的内核扩展文件。晚于 2020 年生产的 Mac 电脑通常都可以使用该版本。

第一步:允许第三方内核扩展

先将 Mac 关机,然后进入恢复模式:

  • Apple Silicon 芯片:长按电源键。
  • Intel 芯片:开机时长按 Command + R。

进入恢复模式后,打开菜单栏“实用工具 → 终端”,输入以下命令。该操作会重新启用 SIP,但保留第三方内核扩展权限:

csrutil disable
(请输入你的密码)

csrutil enable --without kext
(请输入你的密码)

接下来进入菜单栏“实用工具 → 启动安全性实用工具”,勾选允许来自被认可的开发者的内核扩展。

第二步:安装预编译文件

如果打算自行编译,可以跳过这一步。

首先下载预编译文件: 下载 HoRNDIS.kext.zip

打开终端,运行以下命令,进入内核扩展目录:

cd /Library/Extensions
open .

将下载好的 HoRNDIS.kext 放到打开的“访达(Finder)”窗口。

回到原来的终端,运行以下命令加载内核扩展:

sudo kextload -t HoRNDIS.kext

重启电脑后,重新插上 UPort 或 安卓手机(打开有线网络共享)。此时应该可以在系统设置中看到新的网络设备。

第二步:自行编译安装

如果选择自行编译,可以使用 TomHeaven 适配版本:

git clone https://github.com/TomHeaven/HoRNDIS.git
cd HoRNDIS
make
sudo cp -R build/Release/HoRNDIS.kext /Library/Extensions/
sudo kextload /Library/Extensions/HoRNDIS.kext

卸载

打开终端,执行以下命令卸载 HoRNDIS。完成后需要重启电脑,并按下方命令恢复 SIP。

BUNDLE_ID=$(/usr/libexec/PlistBuddy -c 'Print :CFBundleIdentifier' /Library/Extensions/HoRNDIS.kext/Contents/Info.plist)

echo "Bundle ID: $BUNDLE_ID"

sudo kmutil unload -b "$BUNDLE_ID" 2>/dev/null || sudo kextunload -b "$BUNDLE_ID"

sudo rm -rf /Library/Extensions/HoRNDIS.kext
sudo rm -rf /tmp/HoRNDIS

sudo kextcache -i /

echo "Done. Please reboot macOS."

恢复 SIP 的命令如下:

csrutil disable
(请输入你的密码)

csrutil enable
(请输入你的密码)