Fixing Storage Adapters for Raspberry Pi via Firmware Updates

StarTech USB312SAT3CB
StarTech USB312SAT3CB*

I’ve covered how to get the right type of storage adapter for your Raspberry Pi for years on this site and cataloged storage adapters that both work and don’t work with the Raspberry Pi. Over the years we’ve learned that many of these adapters can be “fixed” with a firmware update to work with the Raspberry Pi.

In this article I’ll put together an evolving list of firmware adapters that can be fixed with these updates from my own experience as well as comments people have left over the years!

Overview

The preferred and safest way to identify your device is by brand name. This will work if you have a “popular” or “name brand” storage adapter.

If you have a generic / unbranded adapter then the next best way is by chipset. We can identify your chipset by using the following command:

sudo lsusb

This yields the following result:

pi@pi:~ $ lsusb
Bus 002 Device 002: ID 174c:55aa ASMedia Technology Inc. Name: ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge, ASM1153E SATA 6Gb/s bridge
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 04d9:0007 Holtek Semiconductor, Inc.
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Yours will look similar to mine. I’ve bolded the important line which is our storage adapter. The above result is for the StarTech 2.5″ SATA to USB 3.1 (USB312SAT3CB) adapter. This example is a name brand adapter that will be on the list but if it wasn’t the generic chipset would be the ASMedia ASM1153E chipset for this adapter. Other common chipsets include JMS-578, etc.

If you’re confused about which is which use this version of the command to get a lot more detail (including device properties that often make it much easier to identify):

sudo lsusb -v

This will yield something like this:

Bus 002 Device 002: ID 174c:55aa ASMedia Technology Inc. Name: ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge, ASM1153E SATA 6Gb/s bridge
 Device Descriptor:
   bLength                18
   bDescriptorType         1
   bcdUSB               3.10
   bDeviceClass            0
   bDeviceSubClass         0
   bDeviceProtocol         0
   bMaxPacketSize0         9
   idVendor           0x174c ASMedia Technology Inc.
   idProduct          0x55aa Name: ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge, ASM1153E SATA 6Gb/s bridge
   bcdDevice            1.00
   iManufacturer           2 asmedia
   iProduct                3 ASMT1051
   iSerial                 1 123456799FA6
   bNumConfigurations      1
   Configuration Descriptor:
     bLength                 9
     bDescriptorType         2
     wTotalLength       0x0079
     bNumInterfaces          1
     bConfigurationValue     1
     iConfiguration          0
     bmAttributes         0xc0
       Self Powered
     MaxPower                0mA
     Interface Descriptor:
       bLength                 9
       bDescriptorType         4
       bInterfaceNumber        0
       bAlternateSetting       0
       bNumEndpoints           2
       bInterfaceClass         8 Mass Storage
       bInterfaceSubClass      6 SCSI
       bInterfaceProtocol     80 Bulk-Only
       iInterface              0

The above example didn’t give us the name “StarTech” anywhere but it did give us some clues. This is identified as a “Mass Storage” interface class device which definitely narrows things down. Your other peripherals will show as the category they are from like mouse, keyboard, etc. You should be able to narrow things down by unplugging everything else from your Pi if you are still having trouble identifying which is which.

Many of these updates need to be applied using a Windows machine as that will be the only platform these updates will be offered on from their web site. Some manufacturers have update utilities for multiple platforms available but from what I’ve found if you’re lucky enough they offer them at all it will usually be for Windows.

Warning / Disclaimer

This is not an entirely risk free procedure. If something goes wrong during a firmware update it is possible to brick it. This doesn’t happen very often but understand it’s possible. If you lose power at the moment you are updating the firmware for example that could definitely do it.

There is less risk for the “branded” adapters as these are the manufacturer’s tools intended for the manufacturer’s devices. It’s as safe as it gets but even in these cases things can go wrong (like the examples I mentioned above). There is also some risk that even chipsets identifying as the same chip may have slight variations in how they are actually implemented or which revision they are.

Make sure you understand this is not a completely risk free procedure (and carries the same risk as firmware updates on any other device, and a little bit extra risk even for the generics since they may not have been intended for that exact device) before proceeding!

StarTech Adapters

StarTech 2.5″ SATA to USB 3.0/3.1 Adapter

StarTech 2.5" SATA to USB 3.0/3.1 Adapter
StarTech 2.5″ SATA to USB 3.0/3.1 Adapter

Both the USB 3.0 and USB 3.1 variants of the StarTech 2.5″ SATA adapter work well with the Pi 4. I’ve used the 3.0 variant with my Pi 4 since launch and it has always worked well. I later bought the 3.1 variant and had the same positive experience. These two adapter variants are my go to adapters for all my Pi related projects that need a fast and easy 2.5″ SATA SSD!

Links: Amazon.com*, Amazon.ca*, Amazon.com.au*, Amazon.co.jp*, Amazon.co.uk*, Amazon.de*, Amazon.es*, Amazon.fr*, Amazon.it*, Amazon.nl*, Amazon.pl*, Amazon.se*, Amazon.sg*

There are a few different variants. Check the tag on your cable to see which exact model you have.

usb312sat3cb – USB 3.1 Gen2 Version

usb31csat3cb – USB 3.1 Gen1 Version

usb3s2sat3cb – USB 3.0 Version

Click the “downloads” tab and choose “firmware.zip”. This must be ran on a Windows machine. It will update the firmware almost instantly when you launch the program with the adapter plugged in and say “SUCCESS – UNPLUG AND REPLUG THE DEVICE”.

Sabrent Adapters

Sabrent and Orico both have the worst track records for working storage adapters for the Pi. I don’t recommend them at all but they can sometimes be fixed.

The following Sabrent JMicron adapters can be updated with their official tool:

Important Note: After the update the Sabrent adapters often work but usually only with quirks mode enabled (see bottom Quirks section of article).

For Sabrent’s version of the JMicron firmware update tool: Sabrent JMicron Update Tool

EC-SNVE*

PSiler has reported that you can fix UAS support on the EC-SNVE* with a firmware update available at: Sabrent EC-SNVE Download Page

For the general Sabrent adapters firmware update list (check if your adapter is listed): Sabrent Firmware Update Download Page

Generic Adapters

Note with generic adapters there is some risk. These may not necessarily be by the same manufacturer of your device. It usually doesn’t matter as these all have the same storage controller but due to slight variations in the way some manufacturers implement this technology it’s possible it could cause an issue / brick it. Make sure you understand that there is some risk before proceeding!

JMicron JMS578 Firmware

This is a copy of the JMS578 firmware that has fixed this issue for many people (but not everyone) on the Raspberry Pi. You may still need to enable “quirks mode” (see quirks mode section) even with the updated firmware in some cases.

It’s a little bit trickier to use than some of the other ones but not too extraordinarily difficult. You will need the updater utility and the .bin file.

Here is the updater utility: ODroid – jms578fwupdater.tgz

Here is the JMS578 firmware update: ODroid – jms578_fw_update

And finally the how to use the updater utility / instructions here: ODroid Wiki – How to use jms578_fw_update

This thread is worth a read as well to see the different types of adapters/chipsets people tried with this and their different results: Raspberry Pi Forums – Topic 245931

Watch Out For Power Issues

If you are using a drive that has high power demands a common solution I’ve been recommending for years is to use a Sabrent powered USB hub to power the drive. This eliminates your Pi from having to use it’s own power to power the drive at all. This is often required for higher performance NVMe drives.

Sabrent Powered USB Hub
Sabrent Powered USB 3.0 Hub

The Sabrent powered USB hub delivers a whopping 2.5A of dedicated power for your USB attached devices. This is almost as much as the Pi adapter itself is rated for (3.0A). It will easily power the most thirsty of setups such as NVMe enclosures.

Links: Amazon.com*, Amazon.ca*, Amazon.com.au*, Amazon.co.uk*, Amazon.es*, Amazon.it*, Amazon.nl*, Amazon.pl*, Amazon.se*

Note: Make sure Amazon doesn’t try to take you to the non-powered version and that it’s the one with the AC adapter that plugs in to provide extra power

Verify Drive Performance

You can make sure everything is running correctly (and as fast as it should be) by running my quick storage benchmark. You can run the benchmark with the following one-liner:

sudo curl https://raw.githubusercontent.com/TheRemote/PiBenchmarks/master/Storage.sh | sudo bash

This will give you a score you can compare to the other Raspberry Pi Storage Benchmark results and make sure that you are getting an equivalent speed to your peers with the same device!

Benchmarking / Testing Storage

If you want to verify your drive’s performance you may want to run my storage benchmark with:

sudo curl https://raw.githubusercontent.com/TheRemote/PiBenchmarks/master/Storage.sh | sudo bash

If you search for the model of your drive on Pi Benchmarks you can compare your score with others and make sure the drive is performing correctly!

Fix (some) USB Adapter Problems Using Quirks

Some adapters can be made to work by using USB quirks to disable UAS mode on the drive. This lowers performance, but it’s still much faster than a SD card and your adapter won’t go to waste. Some adapters also require it even with the updated firmware!

To find out the quirks we need to find the device ID string for your adapter and then add an entry to cmdline.txt telling the kernel to apply them on boot.

Find Your Adapter

To apply the quirks we first need to get the adapter id. We will use the sudo lsusb command:

$ sudo lsusb
 Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
 Bus 002 Device 002: ID 174c:55aa ASMedia Technology Inc. Name: ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge, ASM1153E SATA 6Gb/s bridge
 Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
 Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

On line 2 we can see my ASM1051E SATA 6Gb/s bridge adapter (it’s the known working StarTech.com 2.5″ SATA to USB 3.0* adapter). You will see something very similar to mine when you run the command and it shouldn’t be too hard to figure out which device it is. If you need more information add a -v switch to make the command sudo lsusb -v. This can sometimes add some additional details to make it easier to figure out which one is your adapter.

If you’re still not sure, we have another command that between the two that can narrow things down. Type / paste the following:

sudo dmesg | grep usb

 [0.828535] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.19
 [0.828568] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
 [0.828597] usb usb3: Product: DWC OTG Controller
 [0.828620] usb usb3: Manufacturer: Linux 4.19.75-v7l+ dwc_otg_hcd
 [0.828644] usb usb3: SerialNumber: fe980000.usb
 [0.830051] usbcore: registered new interface driver uas
 [0.830182] usbcore: registered new interface driver usb-storage
 [0.836488] usbcore: registered new interface driver usbhid
 [0.836511] usbhid: USB HID core driver
 [0.971598] usb 1-1: new high-speed USB device number 2 using xhci_hcd
 [1.154217] usb 1-1: New USB device found, idVendor=2109, idProduct=3431, bcdDevice= 4.20
 [1.154254] usb 1-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
 [1.154281] usb 1-1: Product: USB2.0 Hub
 [1.301989] usb 2-1: new SuperSpeed Gen 1 USB device number 2 using xhci_hcd
 [1.332965] usb 2-1: New USB device found, idVendor=174c, idProduct=55aa, bcdDevice= 1.00
 [1.332999] usb 2-1: New USB device strings: Mfr=2, Product=3, SerialNumber=1
 [1.333026] usb 2-1: Product: ASM105x
 [1.333048] usb 2-1: Manufacturer: ASMT
 [1.333071] usb 2-1: SerialNumber: 123456789B79F

This is the dmesg log showing the hardware detection as hardware is activated on the Pi. If your log is really long you can generate fresh entries by just unplugging a device and plugging it back in and running the command again. Here we can clearly see that the ASM105x is what our StarTech adapter is being detected as.

Now we can go back to our first lsusb command and we want the 8 characters from the ID field that comes right after the Device:

Bus 002 Device 002: ID 174c:55aa ASMedia Technology Inc. Name: ASM1051E SATA 6Gb/s bridge

Our adapter’s ID is: 174c:55aa

Applying Quirks

To apply the quirks to our USB adapter we are going to edit /boot/cmdline.txt. Type:

sudo nano /boot/cmdline.txt

We are going to add the following entry into the very front of cmdline.txt:

usb-storage.quirks=XXXX:XXXX:u

In place of the X’s above you will put in your adapter’s ID that we got before. With the example commands I gave above mine would look like this: usb-storage.quirks=174c:55aa:u. After this my cmdline.txt looks like this (everything should be one continuous line, no line breaks!):

usb-storage.quirks=174c:55aa:u console=serial0,115200 console=tty1 root=PARTUUID=d34db33f-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

Now reboot the Pi. If the Pi fails to boot you can plug the SD card into the computer and go to /boot/cmdline.txt and undo the change we did so you can boot back in with your SD card.

Verifying Quirks

Once you have rebooted after changing cmdline.txt we can verify the quirks have been applied by doing another dmesg | grep usb command:

sudo dmesg | grep usb
 [1.332924] usb 2-1: New USB device found, idVendor=174c, idProduct=55aa, bcdDevice= 1.00
 [1.332957] usb 2-1: New USB device strings: Mfr=2, Product=3, SerialNumber=1
 [1.332983] usb 2-1: Product: ASM105x
 [1.333006] usb 2-1: Manufacturer: ASMT
 [1.333028] usb 2-1: SerialNumber: 123456789B79F
 [1.335967] usb 2-1: UAS is blacklisted for this device, using usb-storage instead
 [1.336071] usb 2-1: UAS is blacklisted for this device, using usb-storage instead
 [1.336103] usb-storage 2-1:1.0: USB Mass Storage device detected
 [1.336479] usb-storage 2-1:1.0: Quirks match for vid 174c pid 55aa: c00000
 [1.336611] scsi host0: usb-storage 2-1:1.0

This time we can see in dmesg that UAS was blacklisted for the device and it has loaded with the usb-storage driver instead. This driver tends to be more compatible with the “problematic adapters” but the performance is usually significantly lower. It’s definitely worth a try though as some adapters do better with the quirks performance-wise. The only way to know for sure is to run a benchmark (see “Verify Drive Performance” section).

Other Resources

For the CM4 (Compute Module 4) check out Raspberry Pi Compute Module 4 and using real PCI-Express/NVMe on the Pi

To find out where to get the 64 bit Raspberry Pi OS beta check out my Where to get 64 bit Raspberry Pi OS article here

If you are looking for storage adapters or the best SSDs to use for Raspberry Pi my Best Storage Adapters / SSDs for the Pi 4 / 400 guide should be able to be of some assistance

guest

61 Comments
Inline Feedbacks
View all comments

Jim
Jim
1 month ago

Hi there i managed to destroy my case with asm235cm
by updating with the wrong firmware
And windows dows not recognize it/see it anymore noe any asmedia flasher tool
Is there a way to recover it???

Jim
Jim
1 month ago
Reply to  jamesachambers

I can see the hdd case from linux/raspberry pi
Do you know how to install the asm firmware from there???

Jim
Jim
1 month ago
Reply to  jamesachambers

Its pointless it sees the asm controller but thats alll i cannot tlash it,qnyway i will try to return it its still on waranty

Irrelevant now

This is my zero1 as a hotspot

https://ibb.co/bsTQ2X1

Jim
Jim
1 month ago
Reply to  jamesachambers

Have you been experimenting with zero2??
People is buying them like crazy they are sold out everywhere,

Jim
Jim
1 month ago
Reply to  jamesachambers

They put 2.4ghz wifi probably to lower the cost,or its just the miniature of the Rpi3B and not the 3B+, i never use wifi anyway the lan cable is faster for slow connections,the biggest thing in my opinion is the 512ram only.
It saves space thought compared to the Rpi3.
Odroid mania n2 is the king it can play easily gamecube games,you must have a room full of sbc”s 🙂

I have orange pi one,cubieboard 2,mk802,mk808 pro,Rpi0,Rpi0-2,Rpi1,2,3,4 Odroid c4. Thats all

Jim
Jim
1 month ago
Reply to  Jim

You need to put a review of windows 10 and 11 on the raspberry pi4

https://github.com/Botspot/wor-flasher

And also a review of box86,wine i managed to run a bunch of old window games in full speed like age of empires 2,sudden strike etc

What work are you doing?

Im it technician

Jim
Jim
1 month ago
Reply to  jamesachambers

You doing the best thing if i could i would do the same,last computer i fix was 3 years ago,there is no future in greece for computer technicians,.im using berryboot in general if you know it,but last update was over a year ago looks like the project its abandoned the creator is not responding etc.,and i cant compile/build a new version on my own since my laptop broke down months ago.cant build it on raspi thought
You can review berryboot for a change maybe is going to wake up the creator you never know

Jim
Jim
1 month ago
Reply to  jamesachambers

Yeah the creator is doing pi-imager now i dont blame him probably is taking a lot of money from raspberry foundation for it.so not time for non profit projects maybe.
Berryboot has a lot of potential.

Jim
Jim
1 month ago
Reply to  jamesachambers

Is the price so high now,i took it when it first came out 17euro, scalpers season:p

Jim
Jim
1 month ago
Reply to  jamesachambers

Do you happen to know any of the specs of the upcoming Raspberry pi 5??

Jim
Jim
1 month ago
Reply to  jamesachambers

Can you use your influence so it can have at least a sata 3 port and an sdr104 memory card controller or faster??

That two is a must have if you agree!! 🙂

Thanks

Jim
Jim
1 month ago
Reply to  Jim

I saw your review of xu4q nice
The only downside for me is the emmc,its expensive,slow,hard to find and wears out faster than an ssd, let’s hope Rpi5 wont have it,a normal ssd can go 3-4 times this speed cost less and last longer. literally i don’t understand why emmc’s are still been used on some sbc’s.
M2/Sata slots are way better.

Cubieboard had native sata 2 back in 2012
But didn’t have software support at all.

Jim
Jim
1 month ago
Reply to  jamesachambers

I think the pettboot exist in xu4,they remove it in xu4q?

There is a little piece of software that helps a lot with sd card/emmc/ssd/flash drive wear check it out

I use it always even with hdds

https://github.com/azlux/log2ram

M2 yes they are cheap and fast although with sata you are limited to 600mb/sec but is it possible for an arm board to get this speeds anyway?

I got max 350mb/sec with my patriot p210 on the raspi.

If they are pros they will put m2/sata and no more search for the best usb case/controller and buying and testing all the time,etc.

Jim
Jim
1 month ago
Reply to  jamesachambers

I will test this days my 7200rpm 2.5″ hdd,i still believe they go fast enough to challenge ssd’s at least on arm platforms,and by saying fast i dont mean the max speed but the access time,in laptops you cannot see it since they have installed the OS on them that slowdown their perfomance significant,in arm the os is very light compared to x86-x64 cpu’s

To see the real difference you need a non uasp controller,uasp might work better with ssds but there is delay that you cannot really see it due to the type of memory chips they use with hdds you can see it coz they go slow,or im just wrong.

Do you have any retro consoles?

Goodnight james

Jim
Jim
1 month ago
Reply to  Jim

Anyone who uses mechanical hdd in the Raspberry Pi should know that the drive/s perform at full speed with a non uasp controller/case by using an uasp case and disabling uasp with quirks it has no effect,as the drive will go terrible slow,you need an old usb 3.0 case with no uasp support, hard to find this days thought,the drive perfoms similar to ssd believe it or not,you just have to try and see for your self.

Arthur Gribensk
Arthur Gribensk
7 months ago

I’m not sure if it’s because I’m using the new Raspberry Pi OS but I just started using the Sabrent EC-SSHD again and am getting great performance. I have it automatically mount under /mnt and using hdparm with a Crucial SSD, I’m getting 998.76 mb/sec cached reads and 267.36 mb/sec buffered disc reads.

rbhr
rbhr
7 months ago

Thanks for all your efforts. I can confirm:

Works great:
* Samsung SSD 980 PRO 250G NVMe in UGREEN CM238 Realtek RTL9210
* Kingston KC3000 2TB NVMe in UGREEN CM238 Realtek RTL9210

Does not work even with Quirks:
* Simplecom SE509 NVMe M.2 SSD to USB 3.2 Gen 2 Type C Enclosure JMicron

rbhr
rbhr
7 months ago
Reply to  jamesachambers

The Kingston happened when I did a “sort by price high to low” – a quick way to get to the Samsung but then I checked the specs and wow nice piece of kit. Durability of 1.6TBW.