FTDIGate : Débricker les puces concernés ( et éviter de les rebricker )

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é….

Illustration Aliens FTDI

Après une enquête approfondie, la piste des aliens est écartée

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 :

Restaurer le PID avec FT_Prog

Restaurer le PID avec FT_Prog

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 :

  1. Connecter la puce brickée à l’ordinateur. lsusb l’affiche sous l’identifiant « 0403:0000 »
  2. Télécharger ft232r_prog et l’extraire dans un dossier
  3. Se procurer les dépendances nécessaires : « sudo apt-get install make gcc libftdi-dev"
  4. Se placer dans le dossier ft232r_prog où se trouve ft232r_prog.c
  5. Lancer un « make » pour compiler le programme
  6. Restaurer le PID de la puce avec la commande suivante : « sudo ./ft232r_prog --old-pid 0x0000 --new-pid 0x6001« 
  7. 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…

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.