ACR122U – Résoudre l’erreur « Unable to set alternate setting on USB interface »

Cet article fait partie de la série Expériences NFC / RFID (4 articles au total)

(ou comment je vous ai préparé la meilleure clé USB pour travailler sur les puces RFID)

Hello, aujourd’hui je poste un article qui n’intéressera pas tout le monde mais devrait bien aider les concernés. Si vous utilisez un lecteur NFC/RFID modèle ACR122U et que vous essayez de l’utiliser avec la suite LibNFC des NFC Tools, vous avez peut-être rencontré l’erreur suivante : Unable to set alternate setting on USB interface (Connection timed out).

J’ai au début pensé à un problème matériel, mais si vous essayez le lecteur avec d’autres applications, vous remarquerez qu’il fonctionne correctement. Le problème semble donc bien lié à libnfc. En tombant sur cette erreur il y a plusieurs mois, je me suis senti un peu seul et j’ai ouvert un ticket sur le forum de libnfc. Mais Internet étant un endroit rempli de personnes qui vous veulent du bien, voici une synthèse de ce que de brillants esprits ont trouvé, et un petit coup de pouce de ma part pour ceux qui se sentent un peu dépassés par tout ça :)

L’origine du problème

Seuls certains lecteurs RFID ACR122U-A9 semblent provoquer le problème. Cela serait dû à un petit composant électronique qui diffère d’un lot à l’autre. Est-ce que ce sont les plus récents ? Je ne pense pas car j’en ai reçu plusieurs dizaines directement  « sortis de l’usine » de la part du fabricant ACS et aucun n’a le souci. Les unités « à problème » venaient pour ma part d’un revendeur qui ne m’a pas été d’une grande aide quand j’ai été confronté à ce souci. Depuis cette nouvelle collaboration, je n’ai pas eu à déplorer un seul ACR122U affecté par l’erreur « Unable to set alternate setting on USB Interface » et je considérais ce souci comme appartenant au passé. Il y a eu un peu de mouvement sur le sujet ces dernières semaines, alors même si ça ne concerne pas les clients de la Boutique, je me suis dit que ce serait un juste « retour des choses » que d’apporter à mon tour une petite contribution à l’Internet ;)

La version courte

L’erreur Unable to set alternate setting on USB interface (Connection timed out) est provoquée par la librairie libnfc lorsqu’elle essaie d’invoquer une fonctionnalité matérielle du ACR122U qui n’est pas disponible sur toutes les unités. A quoi sert cette fonctionnalité ? Je l’ignore, mais ce que je sais c’est qu’elle n’est pas indispensable pour l’utilisation que j’en ai (l’analyse et la copie de puces RFID et NFC). Un développeur a proposé ces derniers jours une solution qui a l’air de tenir la route. Il est très probable que les responsables de libnfc adoptent ce correctif dans la librairie libnfc à l’avenir. Ce qui signifie qu’à moyen terme, libnfc ne provoquera plus l’erreur Unable to set alternate setting on USB interface (Connection timed out). Donc si tu n’es pas pressé, tu peux juste mettre en pause ton projet NFC/RFID et y revenir dans 6 mois / 1 an pour que cela fonctionne. Si par contre tu n’as pas envie d’attendre, tu devrais continuer la lecture de cet article.

Reconnaître les lecteurs NFC RFID ACR122U « à problème » ?

On commence par la base : tous les lecteurs n’ont pas le problème mais je n’ai pas su trouver de différence ni physique ni logicielle pour les distinguer à part exécuter la commande nfc-list et constater le problème …

En terme de numéro de série, je vois que les lecteurs « sains » sont immatriculés ACR122U-A9 RR171-4* et que ceux à problème sont identifiés ACR122U-A9 RR171-2*. Je ne sais pas si on peut réellement se baser dessus, si vous avez le soucis n’hésitez pas à nous donner vos numéros de série en commentaire !

Si votre lecteur est affecté par la faille que pouvez-vous faire (à part le remplacer évidemment) ? C’est tout le sujet de cet article

Les solutions si votre lecteur ACR122U souffre de l’erreur « Unable to set alternate setting on USB interface ».

Comme je vous le disais un peu plus haut, un développeur a proposé un patch pour le code source de libnfc pour ne plus rencontrer cette erreur. La bonne nouvelle, c’est que la solution est disponible pour tout le monde juste ici. La moins bonne nouvelle, c’est que pour en profiter il faut télécharger ce code source modifié, le recompiler et l’installer sur ton système pour pouvoir l’utiliser.

Alors je sais que ça fait beaucoup de mots clés barbares d’un coup, et que ça peut faire peur, mais vraiment, avec ce tuto et une bonne tasse de café, je suis sûr que tu peux le faire :) Afin de maximiser les chances de réussites de tout le monde, je suis parti d’une version récente de Kali sur laquelle il n’y a eu aucune modification préalable faite : la version 2019.3 “large”. Donc si tu pars de cette version et que tu suis le tuto ci-dessous, tout devrait bien se passer. Si tu ne t’en sors pas où que cela te paraît trop compliqué, j’ai une ultime solution pour toi au bas de l’article 🙂

Compiler libnfc avec le patch qui va bien pour se débarrasser de l’erreur Unable to set alternate setting on USB interface.

On part du principe que vous avez créé votre clé USB Kali comme expliqué dans ce tuto précédent.

Edit du 30/03/2020 : Si vous utilisez Kali dans une version 2020 ou supérieure, vous n’êtes plus identifiés automatiquement en super-utilisateur au démarrage de la clé. Avant de pouvoir suivre ce tutoriel, commencez par entrer la commande suivante

kali@kali:~$ sudo su

Etape 1 : Passer le clavier en français et désactiver les modules parasites

root@kali:~# setxkbmap fr
root@kali:~# nano /etc/modprobe.d/blacklist-libnfc.conf

Coller à l’intérieur les 3 lignes suivantes :

blacklist nfc
blacklist pn533
blacklist pn533_usb

Ctrl+O pour valider l’écriture, ctrl + X

Etape 2 : Se connecter à internet mettre à jour le système et installer les paquets nécessaires à la compilation

root@kali:~# apt-get update
root@kali:~# apt-get install git binutils make csh g++ sed gawk autoconf automake autotools-dev libglib2.0-dev libnfc-dev liblzma-dev libnfc-bin libtool 

Un message de confirmation vous demandera de valider l’installation de ces paquets additionnels. Acceptez en tapant Y puis entrée.

Etape 3 : Télécharger le code source de libnfc modifier et lancer la compilation

root@kali:~# git clone https://github.com/jpwidera/libnfc.git
root@kali:~# cd libnfc/
root@kali:~/libnfc# autoreconf -is
root@kali:~/libnfc# ./configure --prefix=/usr --sysconfdir=/etc
root@kali:~/libnfc# make 

Etape 4 : Installer les nouveaux binaires fraîchement compilés

root@kali:~/libnfc# make install
root@kali:~/libnfc# cd /usr/lib
root@kali:/usr/lib# cp -p libnfc.* x86_64-linux-gnu/ 

Voilà, à partir de ce moment, vous ne devriez plus rencontrer l’erreur Unable to set alternate setting on USB interface (Connection timed out) qui vous a amené ici ! Si vous utilisez une clé USB « Live », vous devrez recommencer la procédure à chaque fois, ce qui est plutôt fastidieux je vous l’accorde. Si par contre vous disposez d’une clé USB « avec persistance » (comme celles disponibles sur la Boutique), vous n’avez à faire cette manipulation qu’une fois en mode persistant et vous retrouverez votre version libnfc modifiée au prochain démarrage en mode persistant (et la version libnfc livrée d’origine avec Kali sera toujours disponible si vous démarrez en mode « Live »).

Je n’arrive pas à compiler libNFC, comment m’en sortir ?

J’aurais aussi pu intituler cette partie “comment avoir la meilleure suite d’outils NFC/RFID compatible avec tous les ACR122U du marché”.

Je te l’avais dis, j’ai une ultime solution pour toi ! J’ai profité du fait que les clés USB de la Boutique aient cette fameuse “persistance” pour les modifier et inclure :

  • une version modifiée de libnfc pour éviter l’erreur Unable to set alternate setting on USB interface (Connection timed out)
  • une version récente des NFC-Tools qui rend l’utilitaire nfc-mfclassic compatible avec les puces de génération 2 (celles habituellement réservées à la manipulation sur smartphone)
  • une version modifiée de mfoc pour inclure le mode “hardnested” pour venir à bout des badges les mieux protégés
  • un dictionnaire des clés les plus communes pour chiffrer les badges d’immeubles et autres badges/cartes communément répandu
  • et d’autres petites attentions :)

J’ai finalisé l’installation d’une petite série de clés USB qui est vente sur la boutique depuis quelques temps.

La clé Kali « custom » de l Atelier du Geek

Pour conclure cet article

Voilà, bien que je ne maîtrise pas encore 100% des détails liés à ce problème, j’espère que ce résumé t’aura éclairé et tiré du pétrin si tu rencontres cette fichue erreur Unable to set alternate setting on USB interface (Connection timed out). Pour ma part cela aura été l’occasion de peaufiner ma suite d’outils en matière de RFID/NFC pour gagner un temps de dingue ! Si j’ai du nouveau, je mettrai à jour cet article ! D’ici là n’hésitez pas à me dire en commentaire si cela a marché pour vous, et je vous dis à bientôt,  probablement pour vous parler d’un nouvel appareil avec lequel je m’amuse bien en ce moment !

Tous les articles de la série Expériences NFC / RFID

ACR122U – Résoudre l’erreur « Unable to set alternate setting on USB interface »

31 réflexions au sujet de « ACR122U – Résoudre l’erreur « Unable to set alternate setting on USB interface » »

  1. Bonjour,
    je me retrouve malgré tout avec l’erreur « Unable to claim USB interface (device or resource busy) »
    Je suis sous Kali 2019.3 avec un lecteur ACR122U-A9 RR171-43****.

  2. Bonjour Lip,

    L’erreur « Unable to claim USB interface (device or resource busy) » vient du fait que le lecteur ACR122U est utilisé par un autre programme, ce qui barre l’accès à Libnfc.
    C’est notamment le cas sous Kali Linux des modules pn533* qui se lancent automatiquement au démarrage.

    Pour les désactiver, et se débarrasser de l’erreur, il suffit de taper dans un terminal les commandes suivantes :
    modprobe -r pn533_usb
    modprobe -r pn533

    Cela devrait éliminer cette erreur !

    Alexandre

  3. bonjour je voudrais savoir comment peux ton effacer des Badge RFID programmable MCT Android – UID modifiable avec mct

  4. HEllo,

    aurais-tu la possibilité d’expliquer pour MacOS ?
    J’ai essayé de suivre la démarche mais ça ne fonctionne pas malheureusement…

    Merci bien

  5. Hello Dzkman,
    Pouvez-vous nous donner l’erreur que vous rencontrez ? Il n’y a pas de raison que cela ne fonctionne pas chez vous :)
    Bien à vous,
    Alexandre

  6. Hello Eoras,
    Sur Mac il est possible d’utiliser Kali auquel cas rien ne change dans le tuto. Si tu veux réaliser la même manipulation sous MacOS, difficile pour moi de t’aider car je n’en ai pas à disposition…
    Bien à toi,
    Alexandre

  7. nfc-mfclassic ne fonctionne pas pour cloner un fichier dont la ‘Key B’ a été decodée via une clé B identifiée ‘mfoc -O carte_origine.mfd -k 415a54454b4d’
    j’ai essayé plusieurs options
    nfc-mfclassic W a u
    nfc-mfclassic W b u
    nfc-mfclassic W A B
    je n’arrive pas à faire copier les block qui sont codés avec la key B..; quand le clonage des 64 block est terminé, il n’y a que les valeurs codées avecf la Key A….
    Comment faire pour indiquer l’utilisation de la KEY B [415a54454b4d] ?
    Merci

  8. bonjour, j’ai suivi à la lettre les commandes et j’ai une erreur au niveau
    ./configure –prefix=/usr –sysconfdir=/etc
    en retour j’ai cette erreur apparemment il n’y a pas de répertoire ou fichier???
    bash: ./configure–prefix=/usr–sysconfdir=/etc: No such file or directory
    merci pour votre aide

  9. Bonjour
    Merci pour ce tuto qui m’a bien débloqué
    Juste au cas ou d’autre sont comme moi en 32 bit, pour la dernière ligne du tuto, il ne faut pas indiquer :
    – cp -p libnfc.* x86_64-linux-gnu/
    mais
    – cp -p libnfc.* i386-linux-gnu/

  10. bonjour j’ai suivi la procédure et à la derniere étape « cp -p libnfc.* x86-64linux-gnu/ »
    j’ai le message : cannot stat ‘libnfc.*’ : No such file or directory ..
    Une solution ?

    j’utilise Kali sur clé live

  11. Bonjour,
    Le tuto fonctionne bien par lui même. Il semble qu’il faille brancher le lecteur des le début.
    Par contre dès que l’on tape sudo nfc-list, il apparait :
    nfc-list uses libnfc libnfc-1.7.1-226-g07f9182
    NFC device: ACS / ACR122U PICC Interface opened
    error libnfc.driver.acr122_usb Invalid RDR_to_PC_DataBlock frame
    error libnfc.driver.acr122_usb Command Code verification failed
    error libnfc.driver.acr122_usb Command Code verification failed
    error libnfc.driver.acr122_usb Command Code verification failed
    error libnfc.driver.acr122_usb Command Code verification failed
    error libnfc.driver.acr122_usb Command Code verification failed
    Ceci même en réentrant les deux commandes modprobe.
    Kali clé live.
    Cordialement.

  12. Bonjour,
    Reçue ce matin, la mémoire USB spéciale Atelierdugeek fonctionne très bien. Merci.
    J’ai un tag rfid (ouverture de portillon) que je voudrais dupliquer,mais qu’il ne peut pas lire, car ce ne serait pas du mifare classic. Il comprend un numéro à 9 chiffres gravé dans son boitier (partie métallique entre le tag lui même et sla partie pour l’accrocher)
    Que faire si c’était un mifare ultralight, ou autre ?
    Merci
    Cordialement.

  13. Bonjour, je rencontre une erreur lors de la saisie de cette ligne de commande:
    root@kali:~/libnfc# ./configure –prefix=/usr –sysconfdir=/etc
    configure: error: invalid variable name: `–prefix’

  14. Hello Miamigui,
    Ce sont des doubles tirets devant prefix et sysconfdir : root@kali:~/libnfc# ./configure –prefix=/usr –sysconfdir=/etc
    Pour une raison que j’ignore, le moteur du blog modifie cette commande :/
    Avec cela cela devrait mieux marcher

  15. Bonjour,

    Tout se déroulait bien jusque à ce que je lance : root@kali:/usr/lib# sudo nfc-list

    Et la, le drame :
    nfc-list uses libnfc libnfc-1.7.1-226-g07f9182
    NFC device: ACS / ACR122U PICC Interface opened
    1 ISO14443A passive target(s) found:
    ISO/IEC 14443A (106 kbps) target:
    ATQA (SENS_RES): 00 04
    UID (NFCID1): 02 2b e1 9e
    SAK (SEL_RES): 08

    error libnfc.driver.acr122_usb Command Code verification failed
    error libnfc.driver.acr122_usb Command Code verification failed
    error libnfc.driver.acr122_usb Command Code verification failed
    error libnfc.driver.acr122_usb Command Code verification failed
    error libnfc.driver.acr122_usb Command Code verification failed
    error libnfc.driver.acr122_usb Command Code verification failed
    error libnfc.driver.acr122_usb Command Code verification failed
    error libnfc.driver.acr122_usb Command Code verification failed
    error libnfc.driver.acr122_usb Command Code verification failed
    error libnfc.driver.acr122_usb Command Code verification failed

    J’ai tout refait de A a Z, j’en arrive toujours la.. une idée Chef ?

  16. Bonjour, j’ai ce message d’erreur dès l’étape 2?

    apt-get install git binutils make csh g++ sed gawk autoconf automake autotools-dev libglib2.0-dev libnfc-dev liblzma-dev libnfc-bin libtool
    E: Impossible d’ouvrir le fichier verrou /var/lib/dpkg/lock-frontend – open (13: Permission non accordée)
    E: Impossible d’obtenir le verrou de dpkg (/var/lib/dpkg/lock-frontend). Avez-vous les droits du superutilisateur ?

  17. Hello Gilles,
    Est-ce que tu utilises une version de Kali postérieure à 2019 ?
    Depuis 2020, l’utilisateur par défaut de Kali n’est plus un utilisateur « roo », cela signifie qu’il faut précéder chaque commande du mot clé « sudo » (enfin les commandes qui nécessitent des privilèges avancées ». Dans ton cas, la commande serait la suivante :

    sudo apt-get install git binutils make csh g++ sed gawk autoconf automake autotools-dev libglib2.0-dev libnfc-dev liblzma-dev libnfc-bin libtool

    Voilà, je profite du confinement pour répondre aux commentaires et faire une petite mise à jour des articles, j’espère remettre tout ça au propre d’ici les prochains jours.

    Alexandre

  18. ET voilà l’article mis à jour, si vous utilisez une version de Kali 2020 ou supérieur, n’oubliez pas de démarrer avec la commande « sudo su » avant de suivre le tuto.

    Alexandre

  19. Bonjour. J’ai un soucis avec mon badge. Quand je fais mfoc -P 500 -O, l’ordi me renvoie « card is not vulnerable to nested attack ». Bon j’ai compris que c’est la mouise. Un petit peu d’aide svp ? Pourtant je programmais autrefois certes en c++ et autres mais bon, là je suis largué et je voulais m’y remettre.

  20. Bonjour alex super ta clé linux bootable jvien de la recevoir
    Maintenant j »aimerai copier du badge 125kh type HID j’ai le matos mais tres dur de trouver du badge 125kh compatible HID..
    AURAIT TU un tuyau ?

  21. Bonjour
    J’ai acheter la clé usb kali linux qui fonctionnait tres bien jusqu’a aujourd’hui j’obtiens une ligne de commande disant:
    Cannot open keyfile: extended-std.keys, exiting »
    Quand je tape la commande :
    Mfoc -P 500 – f extended-std.keys -0 badge.dmp

  22. Bonjour a vous tous,
    En ce qui me concerne j’ai testé plusieurs config linux Lali, Ubuntu Lubuntu etc…
    J’ai à chaque fois le même problème j’ai testé cette dernière version pour rendre le lecteur visible mais rien n’y fait, voici le message d’erreur :
    root@didier-bureau:/home/didier# nfc-list
    nfc-list uses libnfc 1.7.1
    error libnfc.driver.acr122_usb Unable to claim USB interface (Device or resource busy)
    nfc-list: ERROR: Unable to open NFC device: acr122_usb:004:003
    root@didier-bureau:/home/didier#
    Mon ecteur est un AXR122U-A9,
    que puis-je faire?
    Cordialement

  23. Bonjour
    Merci pour ces informations précieuses, j’ai la fameuse erreur .
    Je voudrais juste savoir au début de l’article tu dis que visiblement les lecteurs immatriculés ACR122U-A9 RR171-4* ne donnent plus l’erreur . Très bien mais comment fait on pour acheter ce type de lecteurs ? Dans les sites marchands seul ACR122U Est précisé ?
    Cordialement

  24. Bonjour,

    Je suis en boot USB sur PC et j’ai aussi l’erreur : error libnfc.driver.acr122_usb Command Code verification failed
    J’ai passé trois jours sur le net à chercher un fix mais je trouve pas.
    Et en regardant les réponses précédentes, je ne trouve pas ou ne comprends pas le fix.
    Quelqu’un peut m’aider?

  25. Bonjour malgré que nous sommes en 2023 j’ai moi aussi le même problème d’erreur
    nfc-list
    View
    Help
    nfc-list uses libnfc 1.8.0
    NFC device: ACS / ACR122U PICC Interface opened
    error libnfc.driver.acr122_usb
    Command Code verification failed 3
    error libnfc.driver.acr122_usb
    Wrong reply
    error libnfc.driver.acr122_usb
    Wrong reply ove and 1 not uperaded
    error libnfc.driver.acr122_usb
    Wrong reply
    error libnfc.driver.acr122.
    _usb
    Command Code verification failed
    error libnfc.driver.acr122_usb
    error
    Command Code verification failed
    libnfc.driver.acr122_usb
    error
    Command Code verification failed
    libnfc.driver.acr122_usb
    error
    Command Code verification failed
    libnfc.driver.acr122_usb
    error
    Wrong reply
    libnfc.driver.acr122_usb
    Wrong reply
    J’ai suivis toute les étapes de votre tuto tous ses bien déroulé mais j’ai toujours les erreurs.
    Avez-vous trouvé un autre patch ou une autre solution ?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *