0 votes

Impossible d'ouvrir un port série en utilisant simplement Python script sur MacOS Catalina : [Errno 16] La ressource est occupée

Sur un tout nouveau MacBook16 exécutant Catalina (10.15.1), j'obtiens l'erreur suivante en essayant de me connecter à un périphérique FTDI FT232R USB UART.

Python 2.7.17 (v2.7.17:c2f86d86e6, Oct 19 2019, 16:07:15) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import serial
>>> ser = serial.Serial('/dev/tty.usbserial-A106NU2I', 38400, timeout=1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/cbagwell/.virtualenvs/toolbelt/lib/python2.7/site-packages/serial/serialutil.py", line 240, in __init__
    self.open()
  File "/Users/cbagwell/.virtualenvs/toolbelt/lib/python2.7/site-packages/serial/serialposix.py", line 268, in open
    raise SerialException(msg.errno, "could not open port {}: {}".format(self._port, msg))
serial.serialutil.SerialException: [Errno 16] could not open port /dev/tty.usbserial-A106NU2I: [Errno 16] Resource busy: '/dev/tty.usbserial-A106NU2I'

Je vois les événements suivants sous l'application Console :

006002.877344 python@(null): AppleUSBHostUserClient::openGated: could not open provider USB3.0 Hub             . provider already opened for exclusive access by a kernel client
006002.878136 python@(null): AppleUSBHostUserClient::openGated: could not open provider USB2.0 Hub             . provider already opened for exclusive access by a kernel client

Il semble donc qu'un client du noyau ait déjà ouvert le fichier "/dev/tty.usbserial-A106NU2I" avec un accès exclusif.

Ma question est la suivante : comment puis-je déterminer quel client du noyau (ou quelle extension du noyau ?) a ouvert ce fichier ?

J'ai essayé d'utiliser "sudo lsof | grep tty" et je ne vois rien.

Le périphérique est visible et reconnu sous About this Mac -> System Report -> USB.

Merci !

2voto

Rhyous Points 2163

Ça ne marche pas avec Catalina. L'erreur suivante s'est produite lors de l'installation.

/Library/Extensions/FTDIUSBSerialDriver.kext failed to load - (libkern/kext) not loadable (reason unspecified); check the system/kernel logs for errors or try kextutil(8)

sudo dmesg

Notice - new kext com.apple.driver.usb.AppleUSBHostPlatformProperties, v1.2 matches prelinked kext but can't determine if executables are the same (no UUIDs).

Mise à jour de FTDI

Apple passe de ce que l'on appelle les extensions de noyau (.kexts) à ce que l'on appelle les extensions de pilote (.dexts) pour l'implémentation des pilotes à partir de MacOS Catalina (10.15). Actuellement, les .kexts sont toujours pris en charge par MacOS Catalina, mais après la version bêta, une mise à jour a empêché le chargement de notre pilote. Cette mise à jour a exigé que notre pilote (FTDIUSBSerialDriver.kext) soit re-signé et notarié, nous avons complété ce processus avec un Apple Developer ID mis à jour (comme ils expirent tous les deux ans). Malheureusement, lorsqu'Apple a émis notre nouvel identifiant de développeur pour resigner et authentifier le paquet de pilotes, il l'a fait sans que l'option de support .kext soit activée (comme les .kexts sont dépréciés, ils ne sont plus automatiquement inclus). C'est la raison pour laquelle il y a un problème de signature de code avec notre pilote. Nous attendons actuellement qu'Apple nous délivre le bon ID de développeur pour pouvoir signer les .kexts pour MacOS Catalina.

Ainsi, notre pilote VCP actuel, disponible sur le site web, a un problème de signature et ne se charge pas. Cependant, si le périphérique que vous utilisez implémente une combinaison FTDI VID/PID par défaut, il devrait être récupéré par le pilote AppleUSBFTDI.dext intégré et présent dans le dossier '/dev' de votre système sous la forme suivante :

/dev/cu.usbserial-xxxxxxxx

/dev/tty.usbserial-xxxxxxxx

Mon module FTDI a un PID VID par défaut mais ne fonctionne toujours pas. Apple doit vérifier. enter image description here

UPDATE# FTDI 2.4.4 devrait fonctionner correctement avec Catalina maintenant.

0 votes

Cela devrait être la réponse acceptée ! Je n'ai pu trouver cette information nulle part ailleurs ! Merci beaucoup Shivam Chauhan !

0 votes

Cette réponse m'a conduit à la solution. Le fil de discussion référencé est ici : ftdicommunity.com/index.php?topic=409.0 et il renvoie finalement à un autre fil de discussion avec un lien vers le pilote : u45902898-ide:Ftd1$erv@ftp.ftdichip.com/CES/Driver_beta/ Après la mise à jour, autorisez l'extension dans Préférences système, Sécurité et confidentialité, Général.

1voto

Spooks Points 2667

J'ai eu le même problème, la ressource du port série était occupée et je ne pouvais pas voir quel processus l'utilisait.

J'ai trouvé ce fil ici : https://forums.developer.apple.com/thread/124414

Ils recommandent d'installer la dernière version du pilote FTDI, 2.4.2, disponible ici : https://www.ftdichip.com/Drivers/VCP.htm

Cela a fait l'affaire.

Cheers

1 votes

Génial ! J'ai donc téléchargé et installé le pilote 2.4.2. Cependant, le kext n'a pas été chargé en raison de problèmes de sécurité. Donc une fois que j'ai mis le logiciel en liste blanche sous Sécurité, j'ai exécuté "sudo kextload FTDIUSBSerialDriver.kext". J'ai confirmé que le kext était chargé en exécutant "kextstat | grep FTDI". Je n'ai pas confirmé après un redémarrage, mais au moins j'ai une solution qui fonctionne ! Merci !

0 votes

J'ai dû faire une réinstallation des pilotes FTDI après que les mises à jour bêta de Catalina semblent avoir gâché la configuration précédente, les ports étaient toujours affichés mais je ne pouvais pas me connecter ou flasher via eux, après avoir fait l'installation à nouveau, j'ai pu flasher.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X