Como liberar / redefinir dispositivos FTDI da porta serial - Mac OSX

17

Estou tentando trabalhar com uma PCB personalizada que usa um FTDI FT232RL para conversar com meu computador (MacBookPro executando o OSX 10.11 El Capitan) para um projeto de hardware. Estou usando o Matlab para enviar comandos seriais, encontrando alguns problemas com o pino do ClearToSend (CTS) aparentemente "alto" (desativado), mas isso é outra história.

No entanto, o meu problema agora é que o meu Mac não "libera" (não sabe mais o que chamar) o dispositivo depois que eu o desconectar. Posso desconectar o dispositivo e colocá-lo em outro barramento USB, mas na verdade só posso fazer isso uma vez, porque a mesma coisa acontece novamente se eu desconectar - isso dificulta meu desenvolvimento, porque a única maneira que encontrei para corrigir isso é reiniciar o computador inteiro. Como posso liberar / redefinir / limpar esses dispositivos?

Se eu abrir Informações do sistema> Hardware> USB , basicamente vejo o mesmo dispositivo listado duas vezes na árvore de dispositivos.

insira a descrição da imagem aqui

Isso faz com que, quando eu tento ls /dev/tty.*(no Matlab ou no Terminal), o dispositivo não esteja listado, ele esteja essencialmente bloqueado, mesmo que esteja conectado e apareça duas vezes na árvore do dispositivo. O que devo fazer?

Eu instalei o driver FTDI da versão 2.3 e parece funcionar de outra maneira. Informe-me que outras informações posso fornecer para chegar ao fundo disso. obrigado

thkemp
fonte

Respostas:

9

Eu tive o mesmo problema, embora na Sierra, conversando com um clone do Arduino Nano (que também usa uma ponte FTDI FT232RL).

O que parece ter funcionado para mim é remover o driver FTDI ( /Library/Extensions/FTDIUSBSerialDriver.kext), depois de descobrir que a Apple envia um driver FTDI com o próprio sistema operacional ( /System/Library/Extensions/AppleUSBFTDI.kext).

Eu acho que ter os dois drivers ativos ao mesmo tempo causa um conflito, que amarra a porta USB.

robertklep
fonte
Obrigado @robertklep, que funcionou para mim! Eu acho que foi apenas um conflito entre esses dois pilotos. Embora interessante que renomear o arquivo (por exemplo, FTDIUSBSerialDriver.kext.bakou ~FTDIUSBSerialDriver.kext) não tenha funcionado, tive que remover o arquivo do /Library/Extensions/diretório.
Thkemp #
Mesmo problema para mim, mas eu não tenho FTDIUSBSerialDriverinstalado, de modo que este não corrigi-lo ...
Pwdr
1
@Pwdr tentar isso de Terminal: kextstat | grep -v apple. Isso deve retornar quaisquer extensões de kernel que não sejam da Apple que estão ativas. Talvez haja outro causando problemas.
robertklep
Eu o encontrei em
/System/Library/Extensions/FTDIUSBSerialDriver.kext
Depois de fazer a alteração sugerida, o driver não funcionou mais. Eu tive que instalá-lo novamente.
Ahmet Yildirim
11

Correção do driver do MacOS High Sierra 10.13.3 FTDI - 31 de janeiro de 2018

Por: Garrett Johnson Cansado de seu dev. placas não são reconhecidas no seu brilhante e novo macbook? Você está culpando aquelas malditas portas C?

PROBLEMA: dispositivos FTDI não utilizáveis ​​no MacOS High Sierra. No meu caso, estava com problemas para conectar dispositivos de chip FT232R ao meu Macbook Pro de 2016 com portas C. Os dispositivos apareceram na minha árvore de dispositivos USB (Informações do sistema -> Hardware -> USB), mas não apareceram como um dispositivo serial usando Arduino ou Coolterm. - NOTA: eles não apareceram no Terminal com o comando (ls / dev / cu *) ou (ls / dev / tty *)

SOLUÇÃO:

3) Faça o download dos drivers 2.4.2 no site da FTDI http://www.ftdichip.com/Drivers/VCP.htm e instale. A instalação será bem-sucedida, MAS, devido aos drivers FTDI internos da Apple, eles não funcionarão.

2) Reinicialize o computador e entre no modo de recuperação Via desligando e mantendo pressionado o CMD + R na reinicialização.

3) No modo de recuperação, abra o terminal dos utilitários na parte superior da tela e digite o seguinte para desativar automaticamente a proteção de integridade do sistema:

csrutil disable

O computador solicitará que você reinicie para que as alterações entrem em vigor.

4) Na reinicialização, agora precisamos desativar os drivers Apple FTDI (NOTA: isso pode ser revertido a qualquer momento, não se preocupe). - abra o Terminal e digite o seguinte.

cd /system/library/extensions

sudo mv AppleUSBFTDI.kext AppleUSBFTDI.disabled

sudo touch /System/Library/Extensions

chgrp -R wheel FTDIUSBSerialDriver.kext

sudo mv D2zzHelper.kext D2xxHelper.disabled

Agora você terá desativado com êxito os drivers FTDI integrados da Apple e os substituídos pelo FTDI v2.4.

5) Reinicie o seu computador no modo de recuperação. Desligamento, mantenha pressionada a tecla Command + R e abra o terminal na guia Utilitários. Digite o seguinte para reativar o System Integrity Protection da Apple

csrutil enable

FINALMENTE! Uma reinicialização final e, em seguida, todos os seus dispositivos seriais USB devem estar carregando corretamente!

** NOTA: Eu testei isso em um Macbook Pro 2016 com MacOS 10.13.3 nos seguintes dispositivos / aplicativos: 1) Tela a partir do terminal, CoolTerm, Bus Pirate V3.6, JTAGulator, Arduino Uno, Adafruit Mega AT, Arduino Mega clone.

Garrett Johnson
fonte
2
Correção legal. Também funciona em um iMac para Jewelbots. Problemas menores: 1. Os KEXTs da Apple estão em / Sistema / Biblioteca / Extensões / (HFS + e APFS preservam maiúsculas e minúsculas e o Terminal é exigente). 2. chgrp não é necessário. O grupo já está rodando após a instalação. 3. FTDIUSBSerialDriver.kext está em / Libray / Extensions / e / Library / StagedExtensions / Library / Extensions / não em / System / Library / Extensions /. 4. D2zzHelper.kext não existe
Alain O'Dea
2

Eu gostaria de fornecer uma resposta adicional que resolva mais uma peça do quebra-cabeça que eu tinha. Mesmo seguindo a excelente resposta de Garrett Johnson acima, meu driver FTDI ainda não estava funcionando. Aconteceu que - e eu sei que isso parece insano - que minha guia "Segurança e privacidade" das Preferências do sistema não estava aceitando o clique do meu trackpad no botão "Permitir" que permitiria o carregamento do driver. Eu segui esse caminho depois de ver esta mensagem no log de instalação:

2018-09-15 16:21:04-04 host installd[1160]: kextcache: Kext rejected due to system policy: <OSKext 0x7f869ab80530 [0x7fff87e7aaf0]> { URL = "file:///Library/StagedExtensions/Library/Extensions/FTDIUSBSerialDriver.kext/", ID = "com.FTDI.driver.FTDIUSBSerialDriver" }

Claro, cliquei em "Permitir", mas nada parecia acontecer. O botão registrou o clique, mas não apareceu nenhuma janela ou qualquer outra coisa para alguma forma de confirmação. Pesquisando nas Internets, descobri este tópico longo na página do github do Karabiner, discutindo várias soluções para forçar as Preferências do Sistema a permitir o clique do mouse:

https://github.com/tekezo/Karabiner-Elements/issues/1017

Aparentemente, eu tinha algum software em execução que interceptava a atividade do trackpad. Não era cromado no meu caso, ao contrário de várias pessoas nessa lista. Eu não tenho idéia do que era, o que é um pouco preocupante. A solução que funcionou para mim foi ativar as teclas do mouse e pressionar "I" para clicar com o mouse sobre o botão "Permitir". Nesse ponto, uma janela apareceu e eu pude permitir o carregamento do driver FTDI.

Eu ainda estou balançando a cabeça!

Mike Andrews
fonte
1
Estou executando o MagicPrefs e o driver Wacom Intuos e decidi verificar se o clique em Allow deveria fazer alguma coisa depois de ler esta postagem. Acontece que depois que você pressiona permitir (e na verdade se propaga) - o sistema solicita uma nova janela com uma lista dos drivers / bibliotecas concernentes que haviam registrado anteriormente!
Supernovah
0

Eu tive o mesmo problema. Eu instalei os drivers FTDI por meio de um link das notas de instalação do Creality Ender 3 e o link instalou a versão 2.2.18, que é para o OS X 10.8 e abaixo. (Estou executando o Sierra, 10,12). O motorista funcionou, mas não liberou. Eu apaguei o driver usando sudo rm /System/Library/Extensions/FTDIUSBSerialDriver.kext/e, em seguida, baixei e instalei a versão 2.4.2. Todos trabalhando agora.

Steve Johnson
fonte