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 内核扩展。

以下是允许此扩展程序的步骤:

  1. 前往 "System Preferences" -> "Security & Privacy"
  2. 在 window 的底部,您会看到一条消息 "System software from developer "SiLabs“已被阻止加载。”
  3. 单击 "Allow" 按钮
  4. 重启你的Mac

现在我的设备被列为 /dev/cu.SLAB_USBtoUART 并且一切正常。

允许按钮对我不起作用,所以我不得不完全禁用检查:

  1. 关闭
  2. 开机时按住mac+ R进入recovery模式
  3. 打开一个终端
  4. 输入spctl kext-consent disable然后回车
  5. 重启
  6. 有效

如果您通过安全设置批准但仍然看不到 /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
...

尝试使用另一根电缆。您可能正在使用一个只有电源连接,没有数据连接的设备。