Raspberry pi not powering 1 ssd via usb?

Via usb to sata adaptor

Even if the SSD works fine on PC, and doesn’t on the RPi, the USB-to-SATA adapter can still be a problem.

Some adapters do not fully support UAS (USB Attached SCSI), causing random disconnects.

According to Raspberry Pi here

UAS is wonderful, until you come across UAS devices that don’t fully implement the UAS specification. Typically, these devices will just stop responding when issued UAS commands that they don’t like, or may in rare cases throw write data away which can cause filesystem corruption.


Before buying a better SATA-to-USB adapter, I would disable UAS for the SSD drive in the OS and see if that solves the problem.

So you’re suggesting this to be done in pi os right?

Yes.

AI Instructions

:white_check_mark: Steps to Disable UAS for Your USB SSD

1. Identify your USB device’s VID:PID

Run:

lsusb

Find the line corresponding to your SSD enclosure, e.g.:

Bus 002 Device 002: ID 174c:55aa ASMedia Technology Inc. ASM1051E SATA Bridge

From this example:

  • VID = 174c
  • PID = 55aa

2. Edit cmdline.txt

Open the file:

sudo nano /boot/cmdline.txt

:warning: Important: This file must stay one single line of text.

At the end of that single line, add:

usb-storage.quirks=VID:PID:u

Example for VID:PID = 174c:55aa:

usb-storage.quirks=174c:55aa:u

Save and exit:

  • Ctrl + O, Enter
  • Ctrl + X

3. Reboot

sudo reboot

4. Verify UAS is disabled

After reboot:

dmesg | grep -i usb

You should NOT see the SSD using the uas driver.

You should instead see it using usb-storage.

Or check loaded drivers:

lsmod | grep uas

If UAS is disabled for your device, it will not show your SSD under UAS.


Man I can’t even see the ssd under lsblk or lsusb. Logs showing i/o error.

RPi4 has compatibility problems with various USB to SATA adapters. You have to try your luck with different ones.

You’ll need official adapter,

I had similar issue with pi5, it couldnt power an external usb hdd without official adapter.
pi needs higher amps, tht most of the regular usb c adapters dont provide

He has the official adapter.

We thought power requirement is the issue here, but it’s much more than that.

2 Likes

Dang. Get USB VID PID and force a storage quirk to force BOT mode ie Bulk Only Transport.

Share the IO logs whatever you are getting. Will help.

  1. Ok so i shut down the pi, disconnected the SSD from the USB and turned it on again
    Then I connected the SSD and this is what appears.

  1. i could get the USB VID PID and edited the config file to force Bulk Only Transport

a. Specific USB details

device specific lsusb command output

arnab@ArnabsRPi:~ $ lsusb -v -d 152d:0583

Bus 002 Device 002: ID 152d:0583 JMicron Technology Corp. / JMicron USA Technology Corp. JMS583Gen 2 to PCIe Gen3x2 Bridge
Couldn’t open device, some information will be missing
Negotiated speed: SuperSpeed (5Gbps)
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 3.00
bDeviceClass 0 [unknown]
bDeviceSubClass 0 [unknown]
bDeviceProtocol 0
bMaxPacketSize0 9
idVendor 0x152d JMicron Technology Corp. / JMicron USA Technology Corp.
idProduct 0x0583 JMS583Gen 2 to PCIe Gen3x2 Bridge
bcdDevice 4.14
iManufacturer 1 jack88888
iProduct 2 YzWy Disk Device
iSerial 3 DD564198338A1
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0079
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 896mA
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
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0400 1x 1024 bytes
bInterval 0
bMaxBurst 15
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0400 1x 1024 bytes
bInterval 0
bMaxBurst 15
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 1
bNumEndpoints 4
bInterfaceClass 8 Mass Storage
bInterfaceSubClass 6 SCSI
bInterfaceProtocol 98
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0400 1x 1024 bytes
bInterval 0
bMaxBurst 0
Command pipe (0x01)
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0400 1x 1024 bytes
bInterval 0
bMaxBurst 0
MaxStreams 32
Status pipe (0x02)
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0400 1x 1024 bytes
bInterval 0
bMaxBurst 14
MaxStreams 32
Data-in pipe (0x03)
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x04 EP 4 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0400 1x 1024 bytes
bInterval 0
bMaxBurst 7
MaxStreams 32
Data-out pipe (0x04)

  1. rebooted the pi but after it restarts, the usb is again lost (the config file has retained the new edited part)

on reboot, could not find any specific i/o error (or maybe i am not reading it properly?)

journal command output (output was too big to be pasted here)

so.. guys.. any ideas?
or should i just randomly check adapters?
any one got any suggestions? cant keep buying and testing… :sob:

In this case it seems this is the only option. :melting_face: