macos 10.13 FT232 拔出后仍然显示有设备,并且无法连接

一、现象

使用ft232 usb转串口芯片,经常出现设备拔出后仍然显示设备连接:

macos 10.13 FT232 拔出后仍然显示有设备,并且无法连接_第1张图片

而实际串口设备根本不存在,重新插入ft232也无法使用。

换个usb口能解决问题,重启mac也可以解决。

 

二、解决方法

每次重启mac很麻烦,所以查找了原因,这里和我的问题是一样的:https://superuser.com/questions/1135730/how-to-release-reset-serial-port-ftdi-devices-mac-osx,里面提到了两个解决办法:

方法1

删掉FT232驱动:/System/Library/Extensions/FTDIUSBSerialDriver.kext

因为系统本身已经带有apple自带的FT232驱动了:/System/Library/Extensions/AppleUSBFTDI.kext

两个在一起可能有问题,所以删掉一个,保留apple自带的。

方法2

上面删掉的是外部的,留下apple自带的。方法2则是删掉自带的,保留外部的。

  1. 官网下载驱动并安装:
    1. ft232官网下载最新版驱动:https://www.ftdichip.com/Drivers/VCP.htm,适用于macos 10.13的最新版驱动版本是 2.4.2。
    2. 安装,安装完后问题可能还会存在。
      通过查看日期发现,驱动不在/System/Library/Extensions/FTDIUSBSerialDriver.kext,这是一个2012年的很老的文件。
      新文件在 /Library/Extensions/FTDIUSBSerialDriver.kext,这才是2017年驱动发布的日期。
  2. 关闭csrutil:(我的电脑早就关闭了,没必要执行)
    1. 重启电脑,按住 CMD+R 进入recovery模式
    2. 打开terminal,输入:csrutil disable,电脑会提示你重启已生效。
  3. 重启进入正常模式,关掉apple自带的驱动:
    cd /System/Library/Extensions/
    sudo mv AppleUSBFTDI.kext AppleUSBFTDI.disabled
    sudo touch /System/Library/Extensions
    chgrp -R wheel FTDIUSBSerialDriver.kext         (可省略,安装完后默认已经是wheel了)
    sudo mv D2zzHelper.kext D2xxHelper.disabled  (找不到这个文件,省略)
  4. 打开csrutil:
    1. 重启电脑,按住 CMD+R 进入recovery模式
    2. 打开terminal,输入:csrutil enable,重启

我的实际操作

把 /System/Library/Extensions/ 里的两个驱动全部删掉,保留 /Library/Extensions/ 里的驱动,具体过程如下:

  1. 官网下载驱动并安装:
    1. ft232官网下载最新版驱动:https://www.ftdichip.com/Drivers/VCP.htm,适用于macos 10.13的最新版驱动版本是 2.4.2。
    2. 安装,安装完后驱动文件在 /Library/Extensions/FTDIUSBSerialDriver.kext,这个文件日期2017年,是驱动发布的日期。
  2. 删掉 /System/Library/Extensions/ 里的两个驱动文件:
    cd /System/Library/Extensions/
    sudo mv FTDIUSBSerialDriver.kext FTDIUSBSerialDriver.disabled    # 日期2012年
    sudo mv AppleUSBFTDI.kext AppleUSBFTDI.disabled                       # 苹果自带,日期2017年
  3. 重启

再用一段时间看下效果,今天是2019年12月24日。

2020年03月04日:用了两个多月了,没有再出现过问题,不用再被迫重启mac了。

 

2020年04月10日补充

之前相当于有三个选择:

  1. /System/Library/Extensions/FTDIUSBSerialDriver.kext,系统自带,日期2012年,会导致USB崩掉,重启才能恢复。
  2. /System/Library/Extensions/AppleUSBFTDI.kext,系统自带,日期2017.12.11
  3. /Library/Extensions/FTDIUSBSerialDriver.kext,从官网下载驱动后安装的位置,日期2017.5.9

之前使用的是3号驱动,想着是官网最新应该最好吧。

使用时也一直没发现问题,直到最近测试串口,发现FT232会有高达几百ms的延时。于是想着是不是驱动问题,换成2号驱动,延时降低到10ms以内。

所以,还是使用apple自带的FT232驱动吧(/System/Library/Extensions/AppleUSBFTDI.kext)!日期更新,估计是针对apple设备单独做的改动。

你可能感兴趣的:(mac)