在 macOS 10.13 上,CP2102 设备未列在 /dev 中。

12

我有一个带有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线都没有问题。

5个回答

16

我发现 macOS High Sierra 阻止了 SiLabs 内核扩展。

以下是允许该扩展的步骤:

  1. 进入 "系统偏好设置" -> "安全性与隐私"
  2. 在窗口底部,您会看到一条消息:"开发者为“SiLabs”的系统软件被阻止加载。"
  3. 点击 "允许" 按钮
  4. 重新启动您的 Mac

现在我的设备显示为 /dev/cu.SLAB_USBtoUART,一切都按预期工作。


1
苹果公司有一份官方技术说明书,名为“技术说明书TN2459:用户批准的内核扩展加载”,其中描述了苹果在MacOS X High Sierra中添加的这个新过程。它适用于任何第三方内核扩展。所有MacOS X的内核扩展必须使用来自苹果的特殊密钥进行签名,然后必须经过用户批准。目前没有额外的认证级别可供第三方使用,以允许内核扩展绕过此步骤加载。这不是针对此驱动程序或Silicon Labs特定的问题。这不是“错误”。 - brant

11

Allow按钮对我没有起作用,所以我不得不完全禁用检查:

  1. 关闭计算机
  2. 启动时按住mac+ R进入恢复模式
  3. 打开终端
  4. 输入spctl kext-consent disable并按回车键
  5. 重新启动
  6. 它就可以用了

1
在使用10.13.6版本的Mac操作系统时,按照SiLabs CP210x驱动程序的安装说明进行安装后,安装程序显示安装成功,但我从未收到任何系统安全弹窗,因此无法“接受”。这是我找到的唯一有效的解决方案。 - Robert Walters
2
@RobertWalters 两年过去了,但我遇到了和你完全相同的问题——没有消息。诀窍是手动加载扩展程序以使消息弹出:sudo kextload /Library/Extensions/SiLabsUSBDriver.kext/ - gremwell

2
如果你在安全设置中已经授权,但仍然看不到/dev/cu.SLAB_USBtoUART,那么很可能是你需要一根新的micro-usb电缆。并不是你的电缆坏了,而是有些电缆只能用于传输电力,无法传输数据。
对我来说,我试过四个电缆,只有最后一个来自Sony的电缆可以使用(但我忘记从哪里得到的这个电缆)。

我百分之百确定这不可能是它。然后,真的只过了四根电缆,我找到了一个可用的。 - alexose

1
对我来说,我会安装驱动程序,但我从未在“安全性与隐私”屏幕中收到应该“允许”的消息。解决方案是:sudo kextload /Library/Extensions/SiLabsUSBDriver.kext/。这实际上会输出一个错误:
/Library/Extensions/SiLabsUSBDriver.kext无法加载 - (libkern/kext)系统策略阻止加载;检查系统/内核日志以获取错误或尝试kextutil(8)。
但是,如果您现在转到“系统偏好设置”->“安全性与隐私”,您将找到必要的消息和接受按钮以允许kext加载。点击那个按钮,插入您的设备并检查是否检测到设备。
ls /dev/cu.*

...
/dev/cu.SLAB_USBtoUART
...

0

尝试另一根电缆。您可能正在使用仅带有电源连接而没有数据连接的电缆。


欢迎来到stackoverflow,在提出任何问题之前,请阅读https://stackoverflow.com/help/how-to-ask。 - Ali Bigdeli
其实这是一个好建议。我也认为这不可能是电缆问题,因为我在我的盒子里试了3-4个电缆。但是另一个电缆起作用了。问题出在电缆上。谢谢! - acidernt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接