Depuis la fin du mois d’octobre, de nombreux périphériques USB, ont soudainement cessés d’être reconnus par Windows, laissant présager l’imminence de l’annexion de la terre par une race d’Aliens très certainement dotés une technologie très avancé….
Même si les aliens sont définitivement hors de cause, l’explication derrière ce phénomène n’est guère plus glorieuse : la société FTDI, qui possède un monopole sur les circuits intégrés d’interface USB / série, a décidé de mettre à jour leurs pilotes, aussi bien sur leur site, que sur Windows Update. Jusque là, quoi de plus normal ? L’horreur, c’est que le nouveau pilote intègre une fonctionnalité cachée (il y a bien une toute petite ligne dans le contrat d’utilisation qui mentionne cette fonction, mais le journal des modifications n’en porte pas trace) qui « brique » systématiquement toute puce FTDI contrefaite, sans autre jugement ni avertissement. Et c’est là l’ennui, énormément de chip contrefait sont en circulation, souvent même à l’insu de leur propriétaire. Résultat, une fois connecté à un ordinateur possédant la nouvelle version du driver, le chip devient inutilisable, son PID ayant été changé à 0, ce qui empêche son identification par tout système d’exploitation. De plus, l’effet est à retardement, car, ces identifiants n’étant utilisés que lors de l’établissement de la liaison USB, le chip continuera son fonctionnement tant qu’il restera connecté. C’est seulement la prochaine fois qu’il sera branché que le problème apparaitra !
Depuis, le driver incriminé a été retiré de Windows Update ( pas sur que Microsoft ait attendu l’aval de FTDI pour le faire … ), cependant le mal est fait. De plus ce driver étant proposé par défaut sur le site de FTDI, il y a fort à parier que d’autres chips vont continuer à subir le même sort. Heureusement, la modification du chip est réversible. Ayant été confronté au problème, voilà en quelques étapes la solution que j’ai trouvé :
Toutes ces étapes doivent s’effectuer avec le périphérique USB connecté.
Restaurer l’ancien driver
Récupérer sur le site de FTDI leur outils de suppression de pilotes : CDM Uninstaller
Extraire l’archive CDMUninstaller et exécuter CDMuninstallerGUI.exe
Clicker sur « Add », puis « Remove Devices ».
Se procurer également sur le site de FTDI la version la 2.10.00 du pilote sur la page des pilotes VCP, ou directement sur ce lien :
http://www.ftdichip.com/Drivers/CDM/CDM%20v2.10.00%20WHQL%20Certified.exe
Lancer l’exécutable télécharger, et toujours répondre « Suivant ».
Forcer l’utilisation du driver pour le périphérique inconnu
Dans le gestionnaire de périphérique, sur le périphérique « FT232R USB UART » (indiqué avec un point d’exclamation), faire un clic droit, « Mettre à jour le pilote ».
Choisir « Rechercher un pilote sur mon ordinateur », puis « Choisir parmi une liste de pilotes […] »
Sélectionner « Contrôleurs de bus USB », puis choisir « FTDI » comme fabricant.
Enfin, choisir « USB Serial Converter » pour le modèle, et cliquer sur « Suivant ».
Une fenêtre de confirmation s’affiche, choisir « Oui ».
Dans le gestionnaire de périphérique, sur le périphérique « USB Serial Port » (indiqué avec un point d’exclamation), faire un clic droit, « Mettre à jour le pilote ».
Choisir « Rechercher un pilote sur mon ordinateur », puis « Choisir parmi une liste de pilotes […] »
Sélectionner « Ports (COM et LPT) », puis choisir « FTDI » comme fabricant.
Enfin, choisir « USB Serial Port » pour le modèle, et cliquer sur « Suivant ».
Une fenêtre de confirmation s’affiche, choisir « Oui ».
Reprogrammer le bon PID
Récupérer l’outil de programmation FTDI : FT_Prog
Extraire l’archive obtenue, et lancer l’installateur.
Lancer ensuite le programme FT_Prog qui vient de s’installer.
Appuyer sur F5 pour détecter les périphériques.
Cliquer ensuite sur « USB Device Descriptor », et régler la propriété « Custom VID/PID » à « FTDI Default » comme sur l’illustration suivante :
Appuyer ensuite sur Ctrl + P pour appliquer les changements.
Une fenêtre s’ouvre : cliquer sur « Program ».
Lorsque « Finished programming » s’affiche en bas à gauche, vous pouvez quitter Ft_Prog, votre périphérique est à nouveau fonctionnel : il suffit de le rebrancher pour s’en assurer !
Débricker le chip sous Linux
La procédure est décrite ici dans la langue de Shakespeare : http://www.minipwner.com/index.php/unbrickftdi000
En voici une version traduite :
- Connecter la puce brickée à l’ordinateur. lsusb l’affiche sous l’identifiant « 0403:0000 »
- Télécharger ft232r_prog et l’extraire dans un dossier
- Se procurer les dépendances nécessaires : « sudo apt-get install make gcc libftdi-dev"
- Se placer dans le dossier ft232r_prog où se trouve ft232r_prog.c
- Lancer un « make » pour compiler le programme
- Restaurer le PID de la puce avec la commande suivante : « sudo ./ft232r_prog --old-pid 0x0000 --new-pid 0x6001«
- C’est bon ! Débrancher et rebrancher le périphérique USB. run « lsusb » again. lsusb l’affiche maintenant sous l’identifiant « 0403:6001 »
Voilà, c’est quand même plus simple sous Linux ^^
Bien évidemment, il faudra aussi remplacer les nouveaux drivers sur tous les ordinateurs les possédants, sans quoi tout sera à recommencer.
Au final, c’est beaucoup de galère à cause du choix stupide de FTDI de pénaliser autant les utilisateurs finaux, qui sont totalement innocent dans cette affaire de contrefaçons. Une simple fenêtre d’avertissement aurait surement beaucoup mieux sensibilisé les utilisateurs à ce problème, sans compromettre le fonctionnement d’autant de systèmes…
Commentaires récents