Les modules chinois c’est pas cher, mais parfois… ça marche pas !

Un module USB/série avec une fausse puce FTDIPetite mésaventure de la matinée et un sacré bout de temps perdu pour rien : utiliser un module série/USB pour connecter une Raspberry Pi à un PC.

C’est une manipulation récurrente ici et cela nous évite d’utiliser écran+clavier à chaque expérimentation. Utiliser la console série est un réflexe avec toutes les cartes. Ici, sans savoir pourquoi, le PC affiche bien les messages de démarrage, mais impossible d’envoyer des données à la carte et donc d’entrer le nom d’utilisateur et le mot de passe.

On regarde les connexions, pareil. On change le module, pareil. On teste l’alimentation, rien d’anormal. Et finalement on prend un module déjà utilisé sur une autre Pi : miracle, ça marche ! Gni ?!

Deux modules qui ne marchent pas sur trois ? C’est étrange. Un petit coup d’œil à la puce FTDI FT232RL des deux modules… même marquage : CN480661, même date de fabrication 1402 (14ème semaine de 2002). Les deux modules sont pourtant différents : un PCB rouge l’autre bleu, une série de connecteurs en plus sur l’un et pas sur l’autre, un switch 3,3V/5V sur l’un, un cavalier sur l’autre, un PCB marqué FTDI232 sur l’un Deek-Robot sur l’autre.

Petite recherche sur le net et… catastrophe ! Le Web grouille de distributeurs utilisant des puces FTDI FT232RL qui ne viennent pas de chez FTDI. Ce sont des contrefaçons fabriquées sans licence.  La qualité de fabrication est différente et surtout, il manque des fonctionnalités. Le pilote FTDI (Ver 2.10.0.0 27-Jan-14) détecte ces fausses puces et les forcent à n’envoyer que des « 0 ». Elles sont donc majoritairement du temps parfaitement inutilisables pour des projets sérieux. Le système de détection n’est pas clair et nous n’avons pas fouillé outre mesure dans les sources de Linux pour comprendre ce qui se passe réellement, mais les faits sont là. Nous avons perdu une bonne heure avec des modules à puce contrefaits alors que tout fonctionne à merveille avec une vraie puce FTDI.

Nous ne sommes pas les premiers à qui cette aventure est arrivée et certainement pas les derniers. La seule différence visible entre une vraie et une fausse puce est le marquage. Les fausses puces sont imprimées et les vraies sont gravées au laser. Mais attention, rien ne dit que l’usine qui fabrique les contrefaçons utilise toujours cette technique.

Moralité, on peut faire des affaires en achetant sur Ebay des modules chinois très peu chers mais cela reste une vraie loterie. Une nouvelle technique sera mise en place : acheté un module sur eBay, et s’il utilise une puce originale, seulement là opter pour 5 ou 10 exemplaires. Autre astuce, si le marquage n’est pas clairement visible sur la photo de l’annonce, on passe son chemin car c’est signe que le vendeur cherche à brouiller les pistes.

Pourquoi fabriquer des fausses puces après un gros travail d’étude et d’analyse de l’original alors que les coûts de fabrications sont assez similaires ? C’est simple : les licences. Vendre des clones est synonyme d’économie : pas d’achat de VID/PID,  pas de développement et de signature de pilotes sous Windows puisqu’on utilise le pilote FTDI, pas de certifications à passer… et une grosse masse de clients qui va finalement rejeter la faute sur le fabricant original !

Enfin, FTDI n’est pas le seul fabricant cloné, Prolific et son PL2303HX a eu le même problème il n’y a pas si longtemps… Méfiance donc !

Un peu de lecture :

Update : Il semblerait qu’on puisse comprendre dans ce billet que chinois=contrefaçon, ce n’est pas le cas. Les vendeurs chinois sur eBay sont une source très économique de fourniture de composants et de modules. C’est la première fois que je tombe sur ce type de problème depuis des années que j’achète en ligne. Et je continuerai à acheter des modules coûtant 5 fois moins cher depuis Shenzhen, mais en étant simplement plus prudent. Ce ne sont pas deux vendeurs malhonnêtes (si tant est qu’ils étaient au courant) qui remettront en cause des années de transactions sans le moindre problème et avec souvent des petites attentions sympa (comme ajouter un exemplaire dans le colis ou simplement mettre un mot pour dire merci).

Update 2 : Difficile de lâcher l’affaire aussi facilement. Le nouveau pilote FTDI est capable de détecter les contrefaçons et force le module à n’envoyer que des zéros. Mais ceci est en principe valable pour le pilote propriétaire sous Windows non le pilote open source de Linux. Mais alors, pourquoi la liaison avec la Pi ne fonctionne que dans un sens ?

La piste du FTDIChip-ID (numéro unique non réinscriptible) n’est pas la bonne. Non seulement la bibliothèque open source d’Intra2net remonte bien un ID pour la fausse puce mais les exemples d’utilisation de la bibliothèque propriétaire FTDI aussi :

% sudo ./ChipID
Dll Version = 0.1.0
Number of 232R devices = 1
Device 0
       Serial Number: A9UH977J
       Description: FT232R USB UART
       Chip ID: 0xEF14D8F9
Number of devices is 1
       Chip ID: 0xEF14D8F9
Press return to exit

Les questions restent donc ouvertes si c’est bien le pilote qui provoque l’envoi de zéro, comment la détection des contrefaçons fonctionne et pourquoi le pilote Linux (auquel FTDI a participé indirectement) semble agir de la même manière ?

3 commentaires sur “Les modules chinois c’est pas cher, mais parfois… ça marche pas !

  1. Bonjour Denis,
    Merci du tuyau. Je m’apprêtais à commander une dizaine d’arduino nano V3 pour une asso. Je vais donc me méfier.
    Cordialement,
    Xavier

    • Oui, Hector Martin (@marcan42 sur Twitter) semble avoir fait un reverse sur le pilote FTDI. La technique est très intéressante puisqu’il s’agit de s’assurer qu’une erreur est bien provoquer lors d’une tentative d’écriture en EEPROM à une mauvaise adresse. Si ça marche, c’est une fausse puce, si ça ne fonctionne pas, la puce est originale.

      L’inclusion discrète dans le code est quelque choses de très discutable. Ce à quoi s’ajoute également une proposition de modification du code dans le noyau Linux (https://lkml.org/lkml/2014/10/23/129) de la part d’une développeur nommé Russ Dill. On notera la réponse du responsable du sous-système USB du noyau, Greg Kroah-Hartman (le même qui avait dit que le contrôleur USB de la Raspberry Pi était tellement bogué que personne ne voulait toucher au pilote et lui le premier), qui est également très amusante :

      « Funny patch, you should have saved it for April 1, otherwise people might have actually taken this seriously :) »

      Update : une communication de FTDI : http://www.ftdichipblog.com/?p=1053&gtlang=fr

Les commentaires sont fermés.