Is there a way to test the data transfer speed of USB cables? - eviltoast

If you’re like me, you have dozens of USB-A and USB-C cables. There are all of various quality, but I have no idea the history of each one. A lot of them came with other products and are total unknown quantity anyway.

Is there a tool to quickly test how good each cable is? Either a software or a hardware tool. Ideally it’d be nice to see something that can measure the power as well. Some charging cables are capable of fast charging, and some are not.

  • tal@lemmy.today
    link
    fedilink
    English
    arrow-up
    17
    arrow-down
    1
    ·
    edit-2
    4 months ago

    Linux lets you see your USB tree with lsusb -t. That includes negotiated data transfer speeds.

    This doesn’t, strictly-speaking, give you the cable speed, but it does give you the link speed to another USB device, so if you have a computer with a fast USB controller and a fast USB device (probably a new hub would work well here), such that any limiting factor is the cable, you can see what speed they have negotiated over the cable, which I suppose effectively tells you what speed the cable can support.

    A snippet of mine:

    /:  Bus 004.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/5p, 20000M/x2
        |__ Port 005: Dev 005, If 0, Class=Hub, Driver=hub/4p, 5000M
            |__ Port 003: Dev 006, If 0, Class=Hub, Driver=hub/4p, 5000M
            |__ Port 004: Dev 007, If 0, Class=Hub, Driver=hub/4p, 5000M
                |__ Port 001: Dev 008, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
    /:  Bus 005.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/2p, 480M
        |__ Port 002: Dev 002, If 0, Class=Hub, Driver=hub/4p, 480M
            |__ Port 004: Dev 003, If 0, Class=Hub, Driver=hub/4p, 480M
                |__ Port 001: Dev 004, If 0, Class=Human Interface Device, Driver=usbhid, 12M
                |__ Port 001: Dev 004, If 1, Class=Human Interface Device, Driver=usbhid, 12M
                |__ Port 002: Dev 005, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
                |__ Port 003: Dev 006, If 0, Class=Audio, Driver=snd-usb-audio, 12M
                |__ Port 003: Dev 006, If 1, Class=Audio, Driver=snd-usb-audio, 12M
                |__ Port 003: Dev 006, If 2, Class=Human Interface Device, Driver=usbhid, 12M
    

    Those numbers there (20000M, 5000M, 480M, 12M, 1.5M) are the data transfer rates supported to the device.

    • tal@lemmy.today
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      3 months ago

      @gedaliyah@lemmy.world The cables do have an “emarker”, which does let them indicate identifying information, but it apparently at least as of eight months back, that information wasn’t exposed by the Linux kernel:

      https://old.reddit.com/r/UsbCHardware/comments/qm34dj/how_to_check_usb_version_of_a_usbc_cable/

      Not yet. Some low-level changes need to be made to the Linux kernel and the underlying UCSI interface, so there’s not anything you can build at the moment to make it happen.

      If you happen to be a skilled linux kernel engineer with experience in USB specifications and more specifically the UCSI specification, and want to help, then contribute on this mailing list: linux-usb@vger.kernel.org

      Dunno about other OSes. There’s also dedicated diagnostic hardware, but unless you want that, the above approach I gave may be your best bet currently.

  • Admiral Patrick@dubvee.org
    link
    fedilink
    English
    arrow-up
    10
    ·
    edit-2
    4 months ago

    There’s some hardware tools on amazon that will test the power capacity, but I’m not sure about speed. Some check the characteristics of the cable, so it would stand to reason that if those characteristics are within spec, then it should perform as expected.

    Something like this does A and C: https://www.amazon.com/Eversame-Multimeter-Voltmeter-Indicator-DC3-6-30V/dp/B07JYVPLLJ

    Not sure how good / reliable / accurate they are. I’ve seen some homemade projects which aim to do similar, but if you’re like me and not great with a soldering iron, you might need to make due with something from Amazon lol.

    The sad fact is USB-C cables are just a confusing mess of optional features. I tend to just buy ones that are rated for 100W power delivery and have video support. Those tend to cover all my bases.

    • fubarx@lemmy.ml
      link
      fedilink
      arrow-up
      4
      ·
      4 months ago

      Wondering about the cost. Hardcore USB test/analysis devices can hit 4-5-digit $$$. If this hits $50, it’ll clean up. But I have a feeling it’ll be on the high end.

  • intensely_human@lemm.ee
    link
    fedilink
    arrow-up
    2
    ·
    4 months ago

    Get a USB hard drive and test how long it takes to transfer a file onto that hard drive using each cable.

  • Today@lemmy.world
    link
    fedilink
    arrow-up
    3
    arrow-down
    2
    ·
    4 months ago

    You could plug each one in and see what you’re phone says for ‘time to full.’