Site web de jdd

Recent Changes - Search:
Doc /

Tester une prise usb et le câble

ATTENTION. Le contenu de cette page doit être utilisé avec prudence

Contexte

Sur les appareils modernes il y a différents types de prises usb. USB2, USB3, USBC. On peut y brancher différents types de câbles. Ces prises, en particulier USBC peuvent avoir un grand nombre de fonctions... ou pas.

Les câbles qu'on branche dessus peuvent aussi avoir différents objectifs, par exemple transmettre des données ou charger à haute vitesse. Comment savoir qui peut faire quoi??

Je parle ici sous Linux.

Outils

Il existe des outils permettant de mesurer les tensions ou intensités transitant par un câble usb, je conseille même l'acquisition de câbles munis d'origine d'un écran donnant ces valeurs.

Je ne connais pas d'outils permettant de mesurer la vitesse réelle de transfert, en tout cas pas pour un amateur.

Je vais donc utiliser un moyen détourné: brancher sur les prises un accessoire sensé avoir une vitesse supérieure à tout ce que fait l'usb. par exemple un adaptateur nvme<>usb.

Tous les éléments qui se trouvent dans la chaîne de mesure peuvent influencer le résultat, mais ils peuvent le dégrader, pas l'améliorer. Si vous avez une interface qui n'a pas besoin de câble, c'est tant mieux pour tester les disques.

La vitesse de charge (en USB C)

Je conseille vivement les câbles qui ont une mesure intégrée. Même si sa fiabilité est discutable, elle permet de voir immédiatement si le câble est en fonction. Si vous chargez une batterie ou un ordinateur, l'ampérage peut être important, le câble devrait être gros. Ça ne veut pas dire qu'il sera également rapide pour la transmission des données :-(.

Normalement (c'est à dire qu'on en est pas sûr!) un appareil de mesure ne devrait pas modifier la qualité de la transmission.

Je viens de brancher mon téléphone sur mon PC à travers un de ces appareils et le téléphone Samsung m'indique qu'il est en charge rapide. L'appareil me dit 5V, 2.5A, soit (P=VI) 12.5W, ce qui n'est pas si mal (il est chargé à 84%).

Vitesse de transmission des données

La carte mère et ses prises usb

Là, c'est plus délicat, car il y a de nombreux paramètres qui entrent en jeu.

Déjà, on va utiliser des outils d'origine sous Linux, et en mode administrateur, il faut donc ouvrir une console root.

Débranchez tout ce qu'il y a sur le port que vous voulez mesurer ou que vous voulez utiliser pour la mesure, puis faites

lsblk

Vous obtiendrez la liste des "block device" qui existent sur votre PC, en gros les disques présents. Peu importe cette liste, ce qui va nous intéresser ce sont les différences avec la suite.

Avant de brancher quoi que ce soit, testez les capacités de vos ports usb

lsusb -t 

ou mieux, si vous savez faire (c'est plus lisible, | est la barre verticale qu'on a avec alt 6 sur un clavier PC):

# lsusb -t | grep -A 3 xhci

Pour avoir (chez moi):

# lsusb -t | grep -A 3 xhci
/:  Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/2p, 480M
/:  Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/4p, 10000M
/:  Bus 003.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/4p, 480M
    |__ Port 002: Dev 002, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 001: Dev 004, If 0, Class=Hub, Driver=hub/4p, 480M
            |__ Port 001: Dev 006, If 0, Class=Audio, Driver=snd-usb-audio, 12M
--
/:  Bus 004.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/2p, 10000M
/:  Bus 005.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/4p, 480M
    |__ Port 001: Dev 002, If 0, Class=Wireless, Driver=btusb, 12M
    |__ Port 001: Dev 002, If 1, Class=Wireless, Driver=btusb, 12M
    |__ Port 002: Dev 003, If 0, Class=Hub, Driver=hub/3p, 480M
--
/:  Bus 006.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/2p, 10000M
    |__ Port 002: Dev 002, If 0, Class=Hub, Driver=hub/3p, 5000M
        |__ Port 001: Dev 003, If 0, Class=Mass Storage, Driver=uas, 5000M

480M est usb2, 10000M est USB 3.1 GEN 2. On peut aussi avoir 5000 (GEN 1) ou 20000 et même 40000 (thunderbolt)

Les disques

Maintenant, branchez un disque à tester. Refaites lsblk, vous devriez voir un nouveau bloc, chez moi sdc (et sdc1, sdc2, peu importe ici). Ce que nous allons faire est non destructif, donc pas de soucis. Attention, l'attente du résultat peut être très longue!

Pour référence, le disque interne nvme, le plus lent est le disque d'origine (500Go), le plus rapide un disque chinois noname!:

/dev/nvme0n1p1:
 Timing buffered disk reads: 2060 MB in  3.00 seconds = 686.51 MB/sec

/dev/nvme1n1:
 Timing buffered disk reads: 1392 MB in  3.01 seconds = 463.22 MB/sec

Exemple avec un "disque" msata dans un interface usb3 sur prise USB C, câble vendu d'origine avec l'interface:

# hdparm -t /dev/sdc

/dev/sdc:
 Timing buffered disk reads: 108 MB in  3.04 seconds =  35.50 MB/sec

Pas beaucoup plus rapide qu'une mauvaise clé usb...

Avec un câble data de bonne qualité:

/dev/sdc:
 Timing buffered disk reads: 1992 MB in  3.00 seconds = 663.35 MB/sec

[@
/dev/sdc:
 Timing buffered disk reads:  76 MB in  3.09 seconds =  24.57 MB/sec

Les cordons

trois mesures avec le même disque et trois cordons différents, puis avec un câble data de bonne qualité:

# hdparm -t /dev/sdc

/dev/sdc:
 Timing buffered disk reads:   8 MB in  3.14 seconds =   2.55 MB/sec
Asus-Tuf-jdd-tw:~ # hdparm -t /dev/sdc

/dev/sdc:
 Timing buffered disk reads:   2 MB in 30.52 seconds =  67.10 kB/sec
Asus-Tuf-jdd-tw:~ # hdparm -t /dev/sdc

/dev/sdc:
 Timing buffered disk reads: 122 MB in  3.06 seconds =  39.91 MB/sec

Le même disque avec un câble data de bonne qualité:

/dev/sdc:
 Timing buffered disk reads: 1992 MB in  3.00 seconds = 663.35 MB/sec

Noter que certains de mes cordons ne sont pas du tout utilisables pour lire un disque, ils n'ont probablement même pas les fils usb3 (c'est très difficile à voir, la prise USB C étant minuscule.