【问题标题】:CP2102 device is not listed in /dev on macOS 10.13CP2102 设备未在 macOS 10.13 上的 /dev 中列出
【发布时间】:2018-04-16 23:14:51
【问题描述】:

我有带有 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 driver hardware iot virtual-serial-port


    【解决方案1】:

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

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

    1. 转到“系统偏好设置”->“安全和隐私”
    2. 在窗口底部,您将看到一条消息“来自开发商“SiLabs”的系统软件被阻止加载。”
    3. 点击“允许”按钮
    4. 重新启动您的 Mac

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

    【讨论】:

    • Apple 有一个名为“技术说明 TN2459:用户批准的内核扩展加载”的官方技术说明,其中描述了 Apple 在 MacOS X High Sierra 中添加的这个新过程。它适用于任何第三方内核扩展。 MacOS X 的所有内核扩展都必须使用来自 Apple 的特殊密钥进行签名,然后必须得到用户的批准。目前没有额外的认证级别可供第三方使用,以允许内核扩展绕过此步骤进行加载。这不是此驱动程序或 Silicon Labs 特有的问题。它不是“错误”。
    【解决方案2】:

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

    1. 关机
    2. 在启动过程中按住mac+ R 进入恢复模式
    3. 打开终端
    4. 输入spctl kext-consent disable并回车
    5. 重启
    6. 成功了

    【讨论】:

    • 使用 10.13.6 并按照适用于 Mac 的 SiLabs CP210x 驱动程序的安装说明进行操作后,安装程序说它是成功的,但我根本没有收到系统安全性弹出窗口,所以没有什么可以“接受” ”。这是唯一对我有用的解决方案。
    • @RobertWalters 2 年了,但我遇到了和你完全相同的问题 - 没有消息。诀窍是手动加载扩展以使消息弹出:sudo kextload /Library/Extensions/SiLabsUSBDriver.kext/
    【解决方案3】:

    如果您通过安全设置批准但仍然看不到/dev/cu.SLAB_USBtoUART,很可能您需要一条新的微型 USB 电缆。不是你的数据线坏了,而是有些数据线只是用来供电的,不能传输数据。

    对我来说,我尝试了四根电缆,但只有最后一根有效,它来自索尼(不过忘记了我从哪里得到的)

    【讨论】:

    • 我 100% 确定这不可能。然后,实际上是四根电缆之后,我找到了一根有效的。
    【解决方案4】:

    对我来说,我会安装驱动程序,但我从未在安全和隐私屏幕中收到我应该“允许”的消息。解决办法:

    sudo kextload /Library/Extensions/SiLabsUSBDriver.kext/

    这实际上会吐出一个错误:

    /Library/Extensions/SiLabsUSBDriver.kext 加载失败 - (libkern/kext) 系统策略阻止加载;检查系统/内核日志是否有错误或尝试 kextutil(8)。

    但是,如果您现在转到系统偏好设置-> 安全和隐私,您将找到必要的消息和接受按钮以允许加载 kext。单击它,插入您的设备并检查是否有检测到的设备:

    ls /dev/cu.*
    
    ...
    /dev/cu.SLAB_USBtoUART
    ...
    

    【讨论】:

      【解决方案5】:

      尝试另一根电缆。您可能使用的是只有电源连接而不是数据连接的设备。

      【讨论】:

      猜你喜欢
      • 2018-09-24
      • 2013-06-16
      • 2018-03-14
      • 2022-11-18
      • 2018-03-17
      • 2017-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多