存在一个问题,即使用相同的硬件端口名称列出两次设备,这会导致很多麻烦,因为 OS X 配置实用程序(都是 GUI系统偏好设置和命令行工具networksetup
)依赖于一种SCNetworkInterfaceRef _SCNetworkInterfaceCreateWithEntity
尝试通过名称获取接口的方法,但如果数组matching_interfaces
包含多个设备,则该方法会失败。
发出networksetup -listallhardwareports
返回以下输出:
Hardware Port: H5321 gw
Device: usbmodem
Ethernet Address: N/A
Hardware Port: H5321 gw
Device: usbmodem
Ethernet Address: N/A
Hardware Port: PCI Serial Adapter (22)
Device: pci-serial22
Ethernet Address: N/A
Hardware Port: H5321 gw
Device: wwan
Ethernet Address: N/A
Hardware Port: Ethernet
Device: en0
Ethernet Address: 28:d2:44:05:79:1c
Hardware Port: H5321 gw
Device: en1
Ethernet Address: 02:15:e0:ec:01:00
Hardware Port: 802.11n WLAN Adapter
Device: en2
Ethernet Address: 00:87:23:7a:44:9d
Hardware Port: Bluetooth PAN
Device: en3
Ethernet Address: f4:b7:e2:e8:4f:78
这种情况的罪魁祸首是接口usbmodem
。尽管
ls /dev | grep usbmodem
按不同名称列出两个实体(第二个实体的编号在重新启动时会发生变化)
cu.usbmodem
cu.usbmodem5
tty.usbmodem
tty.usbmodem5
网络设置实用程序指出了问题 - 相同的硬件端口名称被使用了两次。
所有依赖的方法configd
的实施附加消息失败
more than one interface matches usbmodem
到系统日志,这就是我无法使用 WWAN 调制解调器的原因。
我认为有办法重命名/删除第二个硬件端口名称可能会解决问题,但我对底层实现了解不够 - 我不知道哪个文件或服务负责在第一个中创建硬件端口列表但考虑到 OS X 与 BSD 共享其部分代码库,*NIX 大师可能对此有所了解。
答案1
networksetup -renamenetworkservice "usbmodem" "new-name"
做这个工作。它重命名了两个服务中的第一个。如果这是错误的,您可以重新命名。