Adding USB 3.1 to Linux

📅 January 10, 2017
coverLinux supports USB 3.1 in the kernel. Why not show Linux some love and give it the hardware to use?

‘Tis a pity, but USB 3.0 is slow. Well, slow compared to SATA 6Gbps and the blazing fast M.2 NVMe. USB 3.0 tops out at ~440 MBps for external SSDs while SATA maxes out at ~540 MBps…depending upon the quality of the SSD.

Let’s go faster!

That is what USB 3.1 is for. The best part is that the prices have fallen, and you do not have to wait for future USB 3.1 motherboards. If you are running Linux, then you can add USB 3.1 to your existing system now. Even if your motherboard is an older model that only supports USB 3.0 and PCI Express 2.0, you can install inexpensive PCIe USB 3.1 cards to provide the faster ports and reap the benefits.

This article looks at the QICENT Dual-port USB 3.1 PCIe card and tests its performance on two different motherboards with PCIe 3.0 and PCIe 2.0.

Gen 1. Gen 2. USB 3.0. USB 3.1. I’m Confused!

Whenever a new technology is released, it is often accompanied by esoteric terms. USB 3.1 is no exception. In fact, USB 3.1 goes the extra distance by switching the names around a bit in order to confuse the public. Can’t make this too easy to understand, right?

Due to early adoption of specifications before an official naming convention (or whatever excuse, depending upon who you ask), USB 3.0 is no longer USB 3.0. It’s USB 3.1 Gen 1. Confused yet? Here is a breakdown:

  • USB 2.0 Hi-Speed. 480 Mbps. The ubiquitous black port that requires at least three cable connection alignment attempts.
  • USB 3.0 —> Now called USB 3.1 Gen 1. Also called SuperSpeed. 5Gbps (The lowercase “b” mean bits, not bytes.)
  • USB 3.1 Gen 1. SuperSpeed. 5Gbps. A fancy way of saying USB 3.0 as mentioned above.
  • USB 3.1 Gen 2. SuperSpeed+. 10Gbps. This is what comes to mind when we think USB 3.1.

To make terms easier to follow for this article, let’s refer to their traditional meanings. “USB 3.0” is the SuperSpeed 5Gbps most people are already familiar with. It is the blue USB 3.0 found on most modern motherboards. USB 3.0 is easier to say than USB 3.1 Gen 1.

“USB 3.1” in this article mostly refers to 10Gbps USB 3.1 and whatever backwards compatible speed it supports.

The Hardware

USB 3.1 Card

This part is simple. USB 3.1 is added to an existing system by plugging a USB 3.1 card into a free PCI-Express (PCIe) slot on the motherboard. I chose the QICENT Dual Port USB 3.1 PCIe card since it seemed like a reasonable cost/performance. There are many others available to choose from, but I wanted a definite USB 3.1 Gen 2 (10Gbps) capable card. Reviews seemed happy about this card’s performance, and the box proudly proclaims “10Gbps.”

a

QICENT USB 3.1 packaging includes the PCIe card, a mini-CD for Windows driver installation, two black screws, and two small manuals written in Chinese and English.

USB 3.1 to SATA Adapter

What good is a USB 3.1 card without a means of connecting external SSDs to it? Riding on the wave of SuperSpeed+ is a new line of USB 3.1 products. I tried the StarTech USB 3.1 SSD cable. Just plug an external 2.5″ drive (mechanical or SSD) to it, and then connect the cable to the USB 3.1 card. Actually, it is backwards compatible with the older USB 2.0 and USB 3.0 ports, so this cable can be used with any 2.5″ drive and USB port. I chose it because its advertising proudly proclaimed “10Gbps.” I do not want the hardware to be the limiting factor, but we shall see. Box claims and reality usually differ.

a

This USB 3.1 (10Gbps) to SATA cable connects external SATA drives to the system via a USB 3.1 link. It ships in a plastic bag. This cable works with USB 2.0 and USB 3.0, so it sees many uses.

a

Shown here is the StarTech USB3.1/SATA cable connected to a Samsung 840 SSD. We will be testing this SSD with the new USB 3.1 card to see if there is any speed increase over existing USB 3.0. The drive receives power from the cable, so there is no need for an external power source. The cable is truly plug-and-play. No drivers are required in either Linux or Windows.

a

QICENT USB 3.1 card. It will fit in a PCIe x16, x8, or x4 slot, not x1. Also, it is compatible with both PCIe 2.0 and PCIe 3.0, so it will function with whichever motherboard type you might have. Do you see the SATA power contacts on the upper right corner of the card? This card requires that a SATA power connector be connected in order to provide enough power for the USB 3.1 ports.

a

Have a free SATA power connector available. The card needs one, and it plugs into the card as shown here.

 

a

The card features a black bracket and two USB 3.1 Gen 2 (10Gbps) Type-A ports. A version with a Type-C port is also available for those who need the new port. For now, I find more use with Type-A ports, so I skipped Type-C.

a

We know that this card is 10Gbps because it says so on the back of the box. We will see if it lives up to its claims. Despite no mention of Linux here, this card works perfectly with Linux. I experienced no issues or problems in Linux Mint 18.1.

Does This Work With Linux?

Yes!

This card is 100% Linux compatible. I tried this card in two different systems containing different motherboards running Linux Mint 18.1 with kernel 4.8.16-generic, and it installed and ran perfectly. No separate driver installation was required in Linux. With the power turned off and disconnected, I installed the card, powered up the system, and Linux automatically detected the card. It was ready for use. The mini-CD was not necessary for Linux.

Windows 7 required drivers. I tested the card in a Windows 7 system, and, sure enough, Windows refused to recognized the foreign object. I downloaded and installed the latest Windows 7 drivers from the QICENT web site, rebooted (little has changed in the Windows world), and then Windows recognized the card.

Between the two operating systems, installation was much easier in Linux.

Benchmarks

“Okay, the card installs and runs. Is it faster than existing USB 3.0? If so, how by much?”

I performed a number of tests in both Linux and Windows 7 using these hardware devices:

I used the same StarTech USB3.1/SATA cable for all external connections.

Short answer: Yes, the USB 3.1 card is faster than USB 3.0, but real-world speed mostly depends upon the speed of the devices.

Windows 7, CrystalDiskMark 5.1.2

Let’s start with Windows 7 and the free CrystalDiskMark benchmarking program. I compared the Samsung 840 with the MX-ES with four tests: SATA motherboard, USB 3.1, USB 3.0 (mboard), and USB 2.0.

a

Comparison between the Samsung 840 and MX-ES to test two different types of devices. Is USB 3.1 faster than a direct connection to the motherboard’s SATA port? Not here.

This test made me wonder if the box claims were exaggerated. No matter how many times I ran this test, the results were the same in that the USB 3.1/adapter combination was lower than a direct SATA connection. Not good. SATA is 6Gbps, and USB 3.1 Gen 2 hardware I purchased is 10Gbps. So, why was USB 3.1 lower than SATA?

I expected the USB 3.1 speed to match the SATA speed with the Samsung 840 SSD, but it was always lower. Sure, USB 3.1 is faster than USB 3.0 and USB 2.0, but this is not what I expected.

It turns out that the Samsung 840 SSD was the culprit, not the USB 3.1 hardware. More on this later.

In the case of the MX-ES, its read/write speeds were the same for both USB 3.1 and USB 3.0 because 167/185 is its limit, which is very good for a USB stick.

Linux Disks Benchmark

In Linux Mint 18.1, I used the built-in Disks program and its benchmarking feature for all read/write tests. Here, I tested two additional SSDs: the PNY CS13121 and the Samsung 840 EVO, which is an improved version of the Samsung 840.

a

Here are detailed Linux results by running 100x100M tests on each SSD. (This links to a larger 1.1MB PNG image for readability.)

Expect some variation in the numbers. For all tests, the numbers recorded here remained reasonably consistent.

A few points become apparent:

  1. Samsung 840 is slower when connected to USB 3.1. No idea why, but this behavior was consistent for this SSD and this SSD alone. When testing the PNY and Samsung 840 EVO, their speeds were every bit just as fast as the motherboard’s SATA connection. Yes, the QICENT USB 3.1 card can match SATA speeds. Only the SSD is the limiting factor. Apparently, my 10Gbps hardware was good and meeting its advertised claims. But, for some reason, the Samsung 840 performed better with SATA.
  2. USB 3.1 Gen 2 is as fast as SATA. This point is worth repeating. The PNY CS1311 and Samsung 840 EVO performance was similar for both SATA and USB 3.1. The USB 3.1 speed was just as fast as a direct SATA 6Gbps connection, so USB 3.1 can match SATA. Using an external SSD connected to a USB 3.1 port felt like a true SATA SSD. operation was just as fast and snappy as SATA. Since the only fast hardware I had on hand consisted of a few SSDs, I was limited to their speeds.
  3. USB 3.1 Gen 2 (10 Gbps) is faster than USB 3.0/USB 3.1 Gen 1 (5 Gbps). Yes, this is obvious, but it is good to see actual results from firsthand experience instead of reading hardware reviews. Even with the Samsung 840’s lackluster USB 3.1 performance, it was still faster than the existing USB 3.0.
  4. PCIe 3.0 and PCIe 2.0 offer the same USB 3.1 speed. The slower PCI Express 2.0 slot had no effect on USB 3.1 speed. Of course, I only tested one SSD at a time because that is all Disks allows for. From these tests, PCIe 3.0 and PCIe 2.0 make full use of USB 3.1. The PNY and 840 EVO matched SATA speeds for both PCIe 3.0 and PCIe 2.0. Do not be dismayed if you are limited to PCIe 2.0. USB 3.1 will work.

Conclusion

I am impressed. Speeds were every bit as advertised. I was unable to test if the QICENT card and the StarTech cable were truly capable of 10 Gbps throughput because I do not have any USB hardware that runs that fast. Right now, the SSDs were the limiting factors, not the USB 3.1 card or cable. The USB 3.1 hardware used in this article allowed the SSDs to reach their maximum speeds.

Linux works beautifully with USB 3.1. No problems. No lockups. No system resets. The QICENT USB 3.1 card works out of the box with Linux Mint 18.1.

One useful point to note is the the USB 3.1 ports are backwards compatible. You are not limited to USB 3.1 devices only. Do you have an SD card reader that requires USB? How about an external USB 2.0 backup drive? Maybe a USB 2.0 stick? They will work with the USB 3.1 card. The ports are the same as existing USB 3.0 ports found on motherboards, so you do not need to purchase new cables, backup drives, or other hardware. However, I would recommend thicker, better-shielded, quality cables for USB 3.1 to help protect against EMI and ensure a more reliable connection.

Right now, USB 3.1 Gen 2 throughput exceeds what most USB devices are capable of delivering. External NVMe, which is already available, would see a definite performance boost…assuming you have a spare Samsung 950 Pro around somewhere.

From these results, USB 3.1 is certainly a worthwhile upgrade for Linux systems that do not already have it.

Advertisements

, ,

  1. Leave a comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: