CP2102 设备未在 macOS 10.13 上的 /dev 中列出
CP2102 device is not listed in /dev on macOS 10.13
我有带有 Silicon Labs CP2102 控制器的 ESP32 开发板。当我将它连接到我的 MacBook 时,我可以使用命令 system_profiler SPUSBDataType
获取有关此设备的详细信息,但它未作为虚拟串行端口列在 /dev
中 - 因此我无法与其通信.
CP2102 USB to UART Bridge Controller:
Product ID: 0xea60
Vendor ID: 0x10c4 (Silicon Laboratories, Inc.)
Version: 1.00
Serial Number: 0001
Speed: Up to 12 Mb/sec
Manufacturer: Silicon Labs
Location ID: 0x14200000 / 5
Current Available (mA): 500
Current Required (mA): 100
Extra Operating Current (mA): 0
我正在使用从 https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers 下载的官方驱动程序。
有什么办法让它在 /dev
中可见吗?我还在同一台计算机上安装了 Windows,它工作正常,因此硬件和 USB 数据线都没有问题。
我发现 macOS High Sierra 屏蔽了 SiLabs 内核扩展。
以下是允许此扩展程序的步骤:
- 前往 "System Preferences" -> "Security & Privacy"
- 在 window 的底部,您会看到一条消息 "System software from developer "SiLabs“已被阻止加载。”
- 单击 "Allow" 按钮
- 重启你的Mac
现在我的设备被列为 /dev/cu.SLAB_USBtoUART
并且一切正常。
允许按钮对我不起作用,所以我不得不完全禁用检查:
- 关闭
- 开机时按住
mac
+ R进入recovery模式
- 打开一个终端
- 输入
spctl kext-consent disable
然后回车
- 重启
- 有效
如果您通过安全设置批准但仍然看不到 /dev/cu.SLAB_USBtoUART
,很可能您需要一根新的 micro-usb 数据线。不是你的网线坏了,而是有些网线只用来供电,不能传输数据。
对我来说,我尝试了四根电缆,但只有最后一根有效,它来自索尼(忘记了我从哪里得到这根电缆)
对我来说,我会安装驱动程序,但我从未在安全和隐私屏幕中收到我应该 "Allow" 的消息。解决方案:
sudo kextload /Library/Extensions/SiLabsUSBDriver.kext/
这实际上会吐出一个错误:
/Library/Extensions/SiLabsUSBDriver.kext failed to load - (libkern/kext) system policy prevents loading; check the system/kernel logs for errors or try kextutil(8).
但是,如果您现在转到“系统偏好设置”->“安全和隐私”,您会找到必要的消息和“接受”按钮以允许加载 kext。单击它,插入您的设备并检查是否检测到设备:
ls /dev/cu.*
...
/dev/cu.SLAB_USBtoUART
...
尝试使用另一根电缆。您可能正在使用一个只有电源连接,没有数据连接的设备。
我有带有 Silicon Labs CP2102 控制器的 ESP32 开发板。当我将它连接到我的 MacBook 时,我可以使用命令 system_profiler SPUSBDataType
获取有关此设备的详细信息,但它未作为虚拟串行端口列在 /dev
中 - 因此我无法与其通信.
CP2102 USB to UART Bridge Controller:
Product ID: 0xea60
Vendor ID: 0x10c4 (Silicon Laboratories, Inc.)
Version: 1.00
Serial Number: 0001
Speed: Up to 12 Mb/sec
Manufacturer: Silicon Labs
Location ID: 0x14200000 / 5
Current Available (mA): 500
Current Required (mA): 100
Extra Operating Current (mA): 0
我正在使用从 https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers 下载的官方驱动程序。
有什么办法让它在 /dev
中可见吗?我还在同一台计算机上安装了 Windows,它工作正常,因此硬件和 USB 数据线都没有问题。
我发现 macOS High Sierra 屏蔽了 SiLabs 内核扩展。
以下是允许此扩展程序的步骤:
- 前往 "System Preferences" -> "Security & Privacy"
- 在 window 的底部,您会看到一条消息 "System software from developer "SiLabs“已被阻止加载。”
- 单击 "Allow" 按钮
- 重启你的Mac
现在我的设备被列为 /dev/cu.SLAB_USBtoUART
并且一切正常。
允许按钮对我不起作用,所以我不得不完全禁用检查:
- 关闭
- 开机时按住
mac
+ R进入recovery模式 - 打开一个终端
- 输入
spctl kext-consent disable
然后回车 - 重启
- 有效
如果您通过安全设置批准但仍然看不到 /dev/cu.SLAB_USBtoUART
,很可能您需要一根新的 micro-usb 数据线。不是你的网线坏了,而是有些网线只用来供电,不能传输数据。
对我来说,我尝试了四根电缆,但只有最后一根有效,它来自索尼(忘记了我从哪里得到这根电缆)
对我来说,我会安装驱动程序,但我从未在安全和隐私屏幕中收到我应该 "Allow" 的消息。解决方案:
sudo kextload /Library/Extensions/SiLabsUSBDriver.kext/
这实际上会吐出一个错误:
/Library/Extensions/SiLabsUSBDriver.kext failed to load - (libkern/kext) system policy prevents loading; check the system/kernel logs for errors or try kextutil(8).
但是,如果您现在转到“系统偏好设置”->“安全和隐私”,您会找到必要的消息和“接受”按钮以允许加载 kext。单击它,插入您的设备并检查是否检测到设备:
ls /dev/cu.*
...
/dev/cu.SLAB_USBtoUART
...
尝试使用另一根电缆。您可能正在使用一个只有电源连接,没有数据连接的设备。