Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Realtek USB to NVMe adapter support (9210B-CG) #109

Open
shanewazabbas opened this issue Mar 31, 2023 · 15 comments
Open

Realtek USB to NVMe adapter support (9210B-CG) #109

shanewazabbas opened this issue Mar 31, 2023 · 15 comments
Assignees

Comments

@shanewazabbas
Copy link

.\command line tools\SeaChest\Win64> .\SeaChest_Firmware_x64_windows.exe -d PD1 -i --usbChildInfo

I have simplified the output below. Using --usbChildInfo seems to display the Firecuda details. But for some reason I don't have the ability to download the firmware file to it. Any ideas how to solve it.

SCSI Translator Reported Information:
        Vendor ID: Realtek
        Model Number: RTL9210B-CG
        Serial Number: 0000000000000000
        Firmware Revision: 1.00
        World Wide Name: 3001237923792379
        Drive Capacity (TB/TiB): 2.00/1.82
        Read Look-Ahead: Enabled
        Write Cache: Enabled
        SMART Status: Unknown or Not Supported
        ATA Security Information: Not Supported
        Firmware Download Support: Full, Segmented
        Specifications Supported:
                SPC-4
                UAS
                SPC-4
                SBC-3
        Features Supported:
                UNMAP
                Power Conditions [Enabled]
                Informational Exceptions [Mode 0]
        Adapter Information:
                Vendor ID: 0BDAh
                Product ID: 9210h
                Revision: 2001h
ATA Reported Information:
        Model Number: Seagate FireCuda 530 ZP2000GM30023
        Serial Number: 7VR01XM1
        Firmware Revision: SU6SM003
        World Wide Name: Not Supported
        Drive Capacity (B/B): 0.00/0.00
        Last DST information:
                Not supported
        Long Drive Self Test Time: Not Supported
        Interface speed:
                Max Speed (MB/s): 3.30 (PIO-0)
                Negotiated Speed (MB/s): Not Reported
        Read Look-Ahead: Not Supported
        Write Cache: Not Supported
        SMART Status: Unknown or Not Supported
        ATA Security Information: Not Supported
        Firmware Download Support: Not Supported
        Specifications Supported:
                None reported by device.
        Features Supported:
                None reported or an error occurred while trying to determine
                the features.
        Adapter Information:
                Vendor ID: 0BDAh
                Product ID: 9210h
                Revision: 2001h
@vonericsen
Copy link
Contributor

vonericsen commented Mar 31, 2023

Hi @shanewazabbas,

USB attachments are always tricky as they add an extra layer of translation to work through.
Not all of them allow all the commands you want through to the target drive. Most adapters only focus on the ability to read/write the device...not all the additional diagnostics or support you may otherwise need such as a situation like this.
This adapter also did something non-standard to make the firecuda drive look like an ATA drive rather than an NVMe drive that it should be. During this odd translation it did not set the support fields for doing a firmware download using the ATA command sequence, which is likely why openSeaChest returned a NOT SUPPORTED message.

We have not been able to get a specification from Realtek on NVMe passthrough commands for their USB to NVMe adapters when I reached out through their support portal in the past.
I have implemented USB to NVMe passthrough for JMicron's chip and ASMedia's chips (only one of theirs allows full passthrough. I believe it is the 2364. Earlier 2362 is limited to a few commands).

The only thing you might be able to do to update the firmware with this adapter is to try forcing it to use a SCSI firmware update sequence instead and see if it translates that. According to the chip listing I found here, this might be able to work since firmware update is part of the SCSI to NVMe translation whitepaper and Realtek is claiming to support all translations.
openSeaChest_Firmware -d <handle> --downloadFW file.bin --forceSCSI
You may need to force the download mode too, so also try
openSeaChest_Firmware -d <handle> --downloadFW file.bin --downloadMode deferred --activateFW --forceSCSI
If this does complete without indicating errors, you may need to power cycle the adapter depending on how it translated the activation event for you.
Please let me know if this ends up working for you or not. I'm curious to know what this adapter will do. I may be able to add at least some "rules" for how to handle this specific USB adapter for other commands as well.

@shanewazabbas
Copy link
Author

shanewazabbas commented Mar 31, 2023

Hi, @vonericsen. Thank you for the quick and detailed reply.
I will try the second command soon. Just wondering when you say "need to power cycle the adapter" is there a specific command I should run, and if so what would that be. Or do I need to just eject the usb drive.

Also the above command that I ran (Seachest -d PD1 -i --usbChildInfo), I noticed that it takes a bit long to run. Is that expected. I could post the verbose level 2 output if needed.

@shanewazabbas
Copy link
Author

shanewazabbas commented Mar 31, 2023

I ran the command to update and unfortunately it didn't work:

Update firmware result

==========================================================================================
 SeaChest_Firmware - Seagate drive utilities - NVMe Enabled
 Copyright (c) 2014-2021 Seagate Technology LLC and/or its Affiliates, All Rights Reserved
 SeaChest_Firmware Version: 3.0.0-2_2_1 X86_64
 Build Date: Apr 27 2021
 Today: Fri Mar 31 16:20:22 2023        User: XXX
==========================================================================================
Sending SCSI Inquiry
Inquiry returning: SUCCESS

Sending SCSI Inquiry, VPD = 00h
Inquiry returning: SUCCESS

Sending SCSI Inquiry, VPD = 80h
Inquiry returning: SUCCESS

Sending SCSI Inquiry, VPD = 83h
Inquiry returning: SUCCESS

Sending SCSI Inquiry, VPD = B1h
Inquiry returning: SUCCESS

Sending SCSI Read Capacity 10 command
Read Capacity 10 returning: SUCCESS

Sending SCSI Read Capacity 16 command
Read Capacity 16 returning: SUCCESS

Sending SCSI Inquiry, VPD = 89h
Inquiry returning: NOT SUPPORTED

Sending ATA Identify command
Identify returning: SUCCESS

        Forcing SCSI Drive

\\.\PhysicalDrive1 - RTL9210B-CG - 0000000000000000 - SCSI
Sending SCSI Inquiry, VPD = 86h
Inquiry returning: NOT SUPPORTED

Requesting SCSI Supported Op Codes
Supported Op Codes returning: NOT SUPPORTED

Sending SCSI Inquiry, CmdDt = 3Bh
Inquiry returning: NOT SUPPORTED

Sending SCSI Read Buffer
Read Buffer returning: NOT SUPPORTED

Sending SCSI Write Buffer
Write Buffer returning: NOT SUPPORTED

.
Firmware Download not supported
Sending SCSI Inquiry, VPD = 86h
Inquiry returning: NOT SUPPORTED

Requesting SCSI Supported Op Codes
Supported Op Codes returning: NOT SUPPORTED

Sending SCSI Inquiry, CmdDt = 3Bh
Inquiry returning: NOT SUPPORTED

Sending SCSI Read Buffer
Read Buffer returning: NOT SUPPORTED

Sending SCSI Write Buffer
Write Buffer returning: NOT SUPPORTED

Firmware activate not supported

And also here is the output of the original command:

childInfo output

==========================================================================================
 SeaChest_Firmware - Seagate drive utilities - NVMe Enabled
 Copyright (c) 2014-2021 Seagate Technology LLC and/or its Affiliates, All Rights Reserved
 SeaChest_Firmware Version: 3.0.0-2_2_1 X86_64
 Build Date: Apr 27 2021
 Today: Fri Mar 31 16:17:20 2023        User: XXX
==========================================================================================
Sending SCSI Inquiry
Inquiry returning: SUCCESS

Sending SCSI Inquiry, VPD = 00h
Inquiry returning: SUCCESS

Sending SCSI Inquiry, VPD = 80h
Inquiry returning: SUCCESS

Sending SCSI Inquiry, VPD = 83h
Inquiry returning: SUCCESS

Sending SCSI Inquiry, VPD = B1h
Inquiry returning: SUCCESS

Sending SCSI Read Capacity 10 command
Read Capacity 10 returning: SUCCESS

Sending SCSI Read Capacity 16 command
Read Capacity 16 returning: SUCCESS

Sending SCSI Inquiry, VPD = 89h
Inquiry returning: NOT SUPPORTED

Sending ATA Identify command
Identify returning: SUCCESS


\\.\PhysicalDrive1 - RTL9210B-CG - 0000000000000000 - ATA
Sending ATA Identify command
Identify returning: SUCCESS

Sending ATA SMART command - Read Data
SMART Read Data returning: FAILURE

Sending SCSI Test Unit Ready
Test Unit Ready returning: SUCCESS

Sending SCSI Inquiry
Inquiry returning: SUCCESS

Sending SCSI Inquiry, VPD = 00h
Inquiry returning: SUCCESS

Sending SCSI Inquiry, VPD = 80h
Inquiry returning: SUCCESS

Sending SCSI Inquiry, VPD = 83h
Inquiry returning: SUCCESS

Sending SCSI Inquiry, VPD = B0h
Inquiry returning: SUCCESS

Sending SCSI Inquiry, VPD = B1h
Inquiry returning: SUCCESS

Sending SCSI Inquiry, VPD = B2h
Inquiry returning: SUCCESS

Sending SCSI Read Capacity 10 command
Read Capacity 10 returning: SUCCESS

Sending SCSI Read Capacity 16 command
Read Capacity 16 returning: SUCCESS

Sending SCSI Security Protocol In
Security Protocol In returning: NOT SUPPORTED

Sending SCSI Log Sense Command, page code: 0x00
Log Sense returning: NOT SUPPORTED

Sending SCSI Log Sense Command, page code: 0x00
Log Sense returning: NOT SUPPORTED

Sending SCSI Log Sense Command, page code: 0x02
Log Sense returning: NOT SUPPORTED

Sending SCSI Log Sense Command, page code: 0x03
Log Sense returning: NOT SUPPORTED

Sending SCSI Log Sense Command, page code: 0x0d
Log Sense returning: NOT SUPPORTED

Sending SCSI Log Sense Command, page code: 0x0f
Log Sense returning: NOT SUPPORTED

Sending SCSI Log Sense Command, page code: 0x10
Log Sense returning: NOT SUPPORTED

Sending SCSI Log Sense Command, page code: 0x11
Log Sense returning: NOT SUPPORTED

Sending SCSI Log Sense Command, page code: 0x15
Log Sense returning: NOT SUPPORTED

Sending SCSI Log Sense Command, page code: 0x19
Log Sense returning: NOT SUPPORTED

Sending SCSI Log Sense Command, page code: 0x2f
Log Sense returning: NOT SUPPORTED

Sending SCSI Mode Sense 10, page 0x01
Mode Sense 10 returning: NOT SUPPORTED

Sending SCSI Mode Sense 6, page 0x01
Mode Sense 6 returning: NOT SUPPORTED

Sending SCSI Mode Sense 10, page 0x01
Mode Sense 10 returning: NOT SUPPORTED

Sending SCSI Mode Sense 6, page 0x01
Mode Sense 6 returning: NOT SUPPORTED

Sending SCSI Mode Sense 10, page 0x08
Mode Sense 10 returning: SUCCESS

Sending SCSI Mode Sense 10, page 0x0a
Mode Sense 10 returning: NOT SUPPORTED

Sending SCSI Mode Sense 6, page 0x0a
Mode Sense 6 returning: NOT SUPPORTED

Sending SCSI Mode Sense 10, page 0x0a
Mode Sense 10 returning: NOT SUPPORTED

Sending SCSI Mode Sense 6, page 0x0a
Mode Sense 6 returning: NOT SUPPORTED

Sending SCSI Mode Sense 10, page 0x0a
Mode Sense 10 returning: NOT SUPPORTED

Sending SCSI Mode Sense 6, page 0x0a
Mode Sense 6 returning: NOT SUPPORTED

Sending SCSI Mode Sense 10, page 0x0a
Mode Sense 10 returning: NOT SUPPORTED

Sending SCSI Mode Sense 10, page 0x0a
Mode Sense 10 returning: NOT SUPPORTED

Sending SCSI Mode Sense 6, page 0x0a
Mode Sense 6 returning: NOT SUPPORTED

Sending SCSI Mode Sense 10, page 0x19
Mode Sense 10 returning: NOT SUPPORTED

Sending SCSI Mode Sense 6, page 0x19
Mode Sense 6 returning: NOT SUPPORTED

Sending SCSI Mode Sense 10, page 0x19
Mode Sense 10 returning: NOT SUPPORTED

Sending SCSI Mode Sense 6, page 0x19
Mode Sense 6 returning: NOT SUPPORTED

Sending SCSI Mode Sense 10, page 0x1a
Mode Sense 10 returning: SUCCESS

Sending SCSI Mode Sense 10, page 0x1a
Mode Sense 10 returning: SUCCESS

Sending SCSI Mode Sense 10, page 0x1a
Mode Sense 10 returning: NOT SUPPORTED

Sending SCSI Mode Sense 6, page 0x1a
Mode Sense 6 returning: NOT SUPPORTED

Sending SCSI Mode Sense 10, page 0x1c
Mode Sense 10 returning: SUCCESS

Sending SCSI Mode Sense 10, page 0x1c
Mode Sense 10 returning: NOT SUPPORTED

Sending SCSI Mode Sense 6, page 0x1c
Mode Sense 6 returning: NOT SUPPORTED

Sending SCSI Mode Sense 10, page 0x1c
Mode Sense 10 returning: NOT SUPPORTED

Sending SCSI Mode Sense 6, page 0x1c
Mode Sense 6 returning: NOT SUPPORTED

Sending SCSI Send Diagnostic Command
Send Diagnostic returning: FAILURE

Requesting SCSI Supported Op Codes
Supported Op Codes returning: NOT SUPPORTED

Requesting SCSI Supported Op Codes
Supported Op Codes returning: NOT SUPPORTED

Requesting SCSI Supported Op Codes
Supported Op Codes returning: NOT SUPPORTED

Requesting SCSI Supported Op Codes
Supported Op Codes returning: NOT SUPPORTED

Requesting SCSI Supported Op Codes
Supported Op Codes returning: NOT SUPPORTED

Requesting SCSI Supported Op Codes
Supported Op Codes returning: NOT SUPPORTED

Requesting SCSI Supported Op Codes
Supported Op Codes returning: NOT SUPPORTED

Sending SCSI Inquiry, VPD = 86h
Inquiry returning: NOT SUPPORTED

Requesting SCSI Supported Op Codes
Supported Op Codes returning: NOT SUPPORTED

Sending SCSI Inquiry, CmdDt = 3Bh
Inquiry returning: NOT SUPPORTED

Sending SCSI Read Buffer
Read Buffer returning: NOT SUPPORTED

Requesting SCSI Supported Op Codes
Supported Op Codes returning: NOT SUPPORTED

Requesting SCSI Supported Op Codes
Supported Op Codes returning: NOT SUPPORTED

Requesting SCSI Supported Op Codes
Supported Op Codes returning: NOT SUPPORTED

SCSI Translator Reported Information:
        Vendor ID: Realtek
        Model Number: RTL9210B-CG
        Serial Number: 0000000000000000
        Firmware Revision: 1.00
        World Wide Name: 3001237923792379
        Drive Capacity (TB/TiB): 2.00/1.82
        Temperature Data:
                Current Temperature (C): Not Reported
                Highest Temperature (C): Not Reported
                Lowest Temperature (C): Not Reported
        Power On Time: Not Reported
        Power On Hours: Not Reported
        MaxLBA: 3907029167
        Native MaxLBA: Not Reported
        Logical Sector Size (B): 512
        Physical Sector Size (B): 512
        Sector Alignment: 0
        Rotation Rate (RPM): SSD
        Form Factor: Not Reported
        Last DST information:
                Not supported
        Long Drive Self Test Time: Not Supported
        Interface speed:
                Not Reported
        Annualized Workload Rate (TB/yr): Not Reported
        Total Bytes Read (B): Not Reported
        Total Bytes Written (B): Not Reported
        Encryption Support: Not Supported
        Cache Size (MiB): Not Reported
        Percentage Used Endurance Indicator (%): Not Reported
        Read Look-Ahead: Enabled
        Write Cache: Enabled
        SMART Status: Unknown or Not Supported
        ATA Security Information: Not Supported
        Firmware Download Support: Full, Segmented
        Specifications Supported:
                SPC-4
                UAS
                SPC-4
                SBC-3
        Features Supported:
                UNMAP
                Power Conditions [Enabled]
                Informational Exceptions [Mode 0]
        Adapter Information:
                Vendor ID: 0BDAh
                Product ID: 9210h
                Revision: 2001h
ATA Reported Information:
        Model Number: Seagate FireCuda 530 ZP2000GM30023
        Serial Number: 7VR01XM1
        Firmware Revision: SU6SM003
        World Wide Name: Not Supported
        Drive Capacity (B/B): 0.00/0.00
        Temperature Data:
                Current Temperature (C): Not Reported
                Highest Temperature (C): Not Reported
                Lowest Temperature (C): Not Reported
        Power On Time: Not Reported
        Power On Hours: Not Reported
        MaxLBA: 0
        Native MaxLBA: Not Reported
        Logical Sector Size (B): 512
        Physical Sector Size (B): 512
        Sector Alignment: 0
        Rotation Rate (RPM): Not Reported
        Form Factor: Not Reported
        Last DST information:
                Not supported
        Long Drive Self Test Time: Not Supported
        Interface speed:
                Max Speed (MB/s): 3.30 (PIO-0)
                Negotiated Speed (MB/s): Not Reported
        Annualized Workload Rate (TB/yr): Not Reported
        Total Bytes Read (B): Not Reported
        Total Bytes Written (B): Not Reported
        Encryption Support: Not Supported
        Cache Size (MiB): Not Reported
        Read Look-Ahead: Not Supported
        Write Cache: Not Supported
        SMART Status: Unknown or Not Supported
        ATA Security Information: Not Supported
        Firmware Download Support: Not Supported
        Specifications Supported:
                None reported by device.
        Features Supported:
                None reported or an error occurred while trying to determine
                the features.
        Adapter Information:
                Vendor ID: 0BDAh
                Product ID: 9210h
                Revision: 2001h

@vonericsen
Copy link
Contributor

@shanewazabbas,

Just wondering when you say "need to power cycle the adapter" is there a specific command I should run, and if so what would that be. Or do I need to just eject the usb drive.

Just eject it and plug it back in. If you do this through the operating system's eject it will tell the drive it is being powered off. I think it will be similar to openSeaChest_PowerControl -d <handle> --transitionPower sleep or possibly only standby mode. This just sends the device into a low-power condition that flushes any write cache safely before you eject it to prevent any data loss.

I noticed that it takes a bit long to run. Is that expected. I could post the verbose level 4 output if needed.

Yes and no. The device discovery that is done by openSeaChest is very thorough and looks for more things than most USB adapters know how to reply to...and many USB adapters I've tested have issues recovering from commands that they do not know how to service.
While the -i -v4 could be useful to learn more about this device, we have openSeaChest_PassthroughTest which will give a more detailed report and list of workarounds that we can implement that will likely speed it up again by telling the software which commands not to send to it.
If you are willing to run the passthrough test tool, can you run it each of these ways and share the output it gives you?

  1. openSeaChest_PassthroughTest -d <handle> --runPTTest --disablePassthroughTesting
  2. openSeaChest_PassthroughTest -d <handle> --runPTTest

I'm a little unsure if the output results will tell everything I need to know, but I think it will help start some changes.
I'm not sure I will need the verbose output from this yet, I will have to see what it gives as a response to this first.

Do you happen to have a link to where you purchased this adapter? Seagate can look into buying it for me to test it myself since the testing could get complicated depending on what you get as a result....and that the product page says it supports SATA and NVMe, so one set of rules for NVMe might not work well for SATA or visa-versa.

@vonericsen vonericsen self-assigned this Mar 31, 2023
@vonericsen
Copy link
Contributor

One more thing you can try is a full buffer download in a single command. It is not used often since the transfers can be so large a bus like USB may not allow them and some OS's (cough cough Windows) does not like large transfers (anything above 64KiB is usually not allowed).
openSeaChest_Firmware -d <handle> --downloadFW full --forceSCSI

@shanewazabbas
Copy link
Author

shanewazabbas commented Mar 31, 2023

First passthrough command output:

Details

==========================================================================================
 openSeaChest_PassthroughTest - openSeaChest drive utilities - NVMe Enabled
 Copyright (c) 2014-2023 Seagate Technology LLC and/or its Affiliates, All Rights Reserved
 openSeaChest_PassthroughTest Version: 1.3.1-4_1_1 X86_64
 Build Date: Mar 27 2023
 Today: Fri Mar 31 16:57:53 2023        User: XXX
==========================================================================================

\\.\PhysicalDrive1 -  -  -  - SCSI
        Vendor ID: Realtek
        Model Number: RTL9210B-CG
        Serial Number: 0000000000000000
        Firmware Revision: 1.00
        World Wide Name: 3001237923792379
        Drive Capacity (TB/TiB): 2.00/1.82
        Temperature Data:
                Current Temperature (C): Not Reported
                Highest Temperature (C): Not Reported
                Lowest Temperature (C): Not Reported
        Power On Time: Not Reported
        Power On Hours: Not Reported
        MaxLBA: 3907029167
        Native MaxLBA: Not Reported
        Logical Sector Size (B): 512
        Physical Sector Size (B): 512
        Sector Alignment: 0
        Rotation Rate (RPM): SSD
        Form Factor: Not Reported
        Last DST information:
                Not supported
        Long Drive Self Test Time: Not Supported
        Interface speed:
                Not Reported
        Annualized Workload Rate (TB/yr): Not Reported
        Total Bytes Read (B): Not Reported
        Total Bytes Written (B): Not Reported
        Encryption Support: Not Supported
        Cache Size (MiB): Not Reported
        Percentage Used Endurance Indicator (%): Not Reported
        Read Look-Ahead: Enabled
        Write Cache: Enabled
        SMART Status: Unknown or Not Supported
        ATA Security Information: Not Supported
        Firmware Download Support: Full, Segmented
        Specifications Supported:
                SPC-4
                UAS
                SPC-4
                SBC-3
        Features Supported:
                UNMAP
                Power Conditions [Enabled]
                Informational Exceptions [Mode 0]
        Adapter Information:
                Adapter Type: USB
                Vendor ID: 0BDAh
                Product ID: 9210h
                Revision: 2001h
Performing Pass-through test.
If at any point during the test, a crash, a hang, or the device
seems to stop responding to any normal request, save all previously
reported hacks, stop the tool, reset the device, then restart
the test, skipping to another part of the test to avoid the same issue.
All discovered hacks will be necessary in order to fully communicate
with the end target device to the highest capabilities of the adapter or
bridge performing the translations.

Checking standard SCSI inquiry data, VPD pages, and some mode pages
to understand device capabilities. Only commands specified in translator
specifications will be tested.

====================
Reading Inquiry Data
====================
                Peripheral Device Type: Direct Access Block Device (SBC)
                SCSI Version: SPC4 (2015) - (6h)
Got Vendor ID as Realtek
Got Product ID as RTL9210B-CG
Got Product Revision as 1.00
Checking Version Descriptors:
        1747 - UAS
        0460 - SPC-4
        04C0 - SBC-3

=========================
Checking VPD page support
=========================
        Found page 0h
Supported VPD Pages
        Found page 80h
Unit Serial Number VPD Page
        Got Unit Serial Number as 0000000000000000
        Found page 83h
Device Identification VPD Page
        Reported Designators:
                Designator 0
                        Associated with the addressed logical unit
                        T10 Vendor ID Based Designator:
                            T10 Vendor ID: Realtek
                            Vendor Specific ID: RTL9210B-CG     1.000000000000000000
                Designator 1
                        Associated with the addressed logical unit
                        Network Address Authority Designator:
                            NAA Type 3 - Locally Assigned
                                Locally Administered Value: 0
        Found page B0h
Block Limits VPD Page
        Optimal Transfer Length Granularity: 1 Logical Blocks
        Maximum Transfer Length: 65535 Logical Blocks
        Optimal Transfer Length: 65535 Logical Blocks
        Maximum Prefetch Length: Not Reported or prefetch not supported
        Maximum Unmap LBA Count: 20971520
        Maximum Unmap Block Descriptor Count: 1
        Optimal Unmap Granularity: 1 Logical Blocks
        Maximum Write Same Length: Not Reported or write same not supported
        Maximum Atomic Transfer Length: Not Reported or write atomic not supported
        Atomic Alignment: Not Reported or write atomic not supported
        Atomic Transfer Length Granularity: Not Reported or write atomic not supported
        Maximum Atomic Transfer Length With Atomic Boundary: Not Reported or write atomic not supported
        Maximum Atomic Boundary Size: 595141497 Logical Blocks
        Found page B1h
Block Device Characteristics VPD Page
        Medium Rotation Rate: Non-rotating medium
        Product Type: Not indicated
        Nominal Form Factor: Not Reported
Zoned Capabilities: Not Reported
        Found page B2h
Logical Block Provisioning VPD Page
        Unmap Command: Supported
        Unmap Support in Write Same 16: Not Supported
        Unmap Support in Write Same 10: Not Supported
        Unmapped LBA Data: Vendor Specific
        Anchor Support: Not Supported
        Provisioning Type: Not reported or fully provisioned

========================================
Getting Read Capacity data. 10 & 16 byte
========================================
        Read Capacity 10 data:
                MaxLBA: 3907029167
                Block Size : 512
        Read Capacity 16 data:
                MaxLBA: 3907029167
                Logical Block Size: 512
                Physical Block Size: 512

========================================
Checking SCSI Read/Write Command Support
========================================
HACK FOUND: RW6
HACK FOUND: RW10
HACK FOUND: RW12
HACK FOUND: RW16
NOTE: Skipping testing for zero length transfers. This test should be done for highest compatibilty testing!

==========================
Checking Mode Page Support
==========================
Caching Mode Page
        Write Cache: Enabled
Informational Exceptions Control Mode Page
        PERF: 0
        EWASC: 0
        DEXCPT: 0
        Method Of Reporting Informational Exceptions (MRIE): 0h
Power Condition Control Mode Page
        StandbyZ Timer: 2000

==========================
Testing for SCSI Log Pages
==========================
NOTE: Skipping SCSI Log test since device reported invalid operation code.
HACK FOUND: NLP

===========================
Testing Other SCSI Commands
===========================
WARNING: Security protocol in failed. Access to device security subsystems may be inaccessible or limited!
WARNING: Reporting supported operation codes failed! This command does not appear to be known by the device.
HACK FOUND: NRSUPOP
Testing SCSI default self-test.
Device is capable of performing default self-test

==============================================
Testing Error Handling Of Unsupported Commands
==============================================
Average response time from 3 commands: 668719366 nanoseconds
Testing complete.
        Total Commands Tried: 12
        Average return time from bad commands: 0 nanoseconds
        Command time ratio (bad compared to good): 0.00
Likely HACK FOUND: TURF34

==================================
Testing SCSI Maximum Transfer Size
==================================
NOTE: This is currently limited to 4096 sectors for now
SCSI Max Transfer Size: 524288B
SCSI reported max size: 33553920B
SCSI reported optimal size: 33553920B
NOTE: Attempting passthrough CDBs for SAT or a vendor unique methods has been disabled and is being skipped.


==================
Final Test Results
==================
SEND THIS INFO BELOW TO seaboard@seagate.com:
Adapter Information:
        Information Type: USB
        Vendor ID: 0BDAh
        Product ID: 9210h
        Revision: 2001h
        Vendor ID: Realtek
        Product ID: RTL9210B-CG
        Product Rev: 1.00
        Unit Serial Number: 0000000000000000
        Device IDs:
                5265616C74656B2052544C3932313042
                3001237923792379
        Command Processing (bad relative to good): 0.00
        SCSI Max Transfer Size: 524288

Hacks For This Device:
                TURF:34
        SCSI Hacks: RW6, RW10, RW12, RW16, NLP, NRSUPOP, MXFER:524288
        ATA Hacks:  SAT, A1, NDMA,
Recommendations For Device Makers:
1       Test this device with this tool in multiple OS's. Linux and Windows testing should be done to find highest compatibility.
2       Improve error handling for unknown commands. This device takes longer
            and longer to respond with each unknown command.
3       Rerun this test to test for commands that are known to hang some devices to ensure
        all hacks are known for this device to perform properly...if the firmware can be
        fixed to prevent these hangs, that is the best solution!
4       The maximum transfer length is less than was reported by the block limits VPD page!
        This page should report the maximum transfer length supported by the SCSI device or SCSI translator
        This should be a true maximum. If this seems low, retest on another OS to ensure it is not a
        limitation on a specific OS. For example, it is fairly common to be limited to 64k in Windows.

WIthout passthrough:

Details

==========================================================================================
 openSeaChest_PassthroughTest - openSeaChest drive utilities - NVMe Enabled
 Copyright (c) 2014-2023 Seagate Technology LLC and/or its Affiliates, All Rights Reserved
 openSeaChest_PassthroughTest Version: 1.3.1-4_1_1 X86_64
 Build Date: Mar 27 2023
 Today: Fri Mar 31 17:12:43 2023        User: XXX
==========================================================================================

\\.\PhysicalDrive1 -  -  -  - SCSI
        Vendor ID: Realtek
        Model Number: RTL9210B-CG
        Serial Number: 0000000000000000
        Firmware Revision: 1.00
        World Wide Name: 3001237923792379
        Drive Capacity (TB/TiB): 2.00/1.82
        Temperature Data:
                Current Temperature (C): Not Reported
                Highest Temperature (C): Not Reported
                Lowest Temperature (C): Not Reported
        Power On Time: Not Reported
        Power On Hours: Not Reported
        MaxLBA: 3907029167
        Native MaxLBA: Not Reported
        Logical Sector Size (B): 512
        Physical Sector Size (B): 512
        Sector Alignment: 0
        Rotation Rate (RPM): SSD
        Form Factor: Not Reported
        Last DST information:
                Not supported
        Long Drive Self Test Time: Not Supported
        Interface speed:
                Not Reported
        Annualized Workload Rate (TB/yr): Not Reported
        Total Bytes Read (B): Not Reported
        Total Bytes Written (B): Not Reported
        Encryption Support: Not Supported
        Cache Size (MiB): Not Reported
        Percentage Used Endurance Indicator (%): Not Reported
        Read Look-Ahead: Enabled
        Write Cache: Enabled
        SMART Status: Unknown or Not Supported
        ATA Security Information: Not Supported
        Firmware Download Support: Full, Segmented
        Specifications Supported:
                SPC-4
                UAS
                SPC-4
                SBC-3
        Features Supported:
                UNMAP
                Power Conditions [Enabled]
                Informational Exceptions [Mode 0]
        Adapter Information:
                Adapter Type: USB
                Vendor ID: 0BDAh
                Product ID: 9210h
                Revision: 2001h
Performing Pass-through test.
If at any point during the test, a crash, a hang, or the device
seems to stop responding to any normal request, save all previously
reported hacks, stop the tool, reset the device, then restart
the test, skipping to another part of the test to avoid the same issue.
All discovered hacks will be necessary in order to fully communicate
with the end target device to the highest capabilities of the adapter or
bridge performing the translations.

Checking standard SCSI inquiry data, VPD pages, and some mode pages
to understand device capabilities. Only commands specified in translator
specifications will be tested.

====================
Reading Inquiry Data
====================
                Peripheral Device Type: Direct Access Block Device (SBC)
                SCSI Version: SPC4 (2015) - (6h)
Got Vendor ID as Realtek
Got Product ID as RTL9210B-CG
Got Product Revision as 1.00
Checking Version Descriptors:
        1747 - UAS
        0460 - SPC-4
        04C0 - SBC-3

=========================
Checking VPD page support
=========================
        Found page 0h
Supported VPD Pages
        Found page 80h
Unit Serial Number VPD Page
        Got Unit Serial Number as 0000000000000000
        Found page 83h
Device Identification VPD Page
        Reported Designators:
                Designator 0
                        Associated with the addressed logical unit
                        T10 Vendor ID Based Designator:
                            T10 Vendor ID: Realtek
                            Vendor Specific ID: RTL9210B-CG     1.000000000000000000
                Designator 1
                        Associated with the addressed logical unit
                        Network Address Authority Designator:
                            NAA Type 3 - Locally Assigned
                                Locally Administered Value: 0
        Found page B0h
Block Limits VPD Page
        Optimal Transfer Length Granularity: 1 Logical Blocks
        Maximum Transfer Length: 65535 Logical Blocks
        Optimal Transfer Length: 65535 Logical Blocks
        Maximum Prefetch Length: Not Reported or prefetch not supported
        Maximum Unmap LBA Count: 20971520
        Maximum Unmap Block Descriptor Count: 1
        Optimal Unmap Granularity: 1 Logical Blocks
        Maximum Write Same Length: Not Reported or write same not supported
        Maximum Atomic Transfer Length: Not Reported or write atomic not supported
        Atomic Alignment: Not Reported or write atomic not supported
        Atomic Transfer Length Granularity: Not Reported or write atomic not supported
        Maximum Atomic Transfer Length With Atomic Boundary: Not Reported or write atomic not supported
        Maximum Atomic Boundary Size: 595141497 Logical Blocks
        Found page B1h
Block Device Characteristics VPD Page
        Medium Rotation Rate: Non-rotating medium
        Product Type: Not indicated
        Nominal Form Factor: Not Reported
Zoned Capabilities: Not Reported
        Found page B2h
Logical Block Provisioning VPD Page
        Unmap Command: Supported
        Unmap Support in Write Same 16: Not Supported
        Unmap Support in Write Same 10: Not Supported
        Unmapped LBA Data: Vendor Specific
        Anchor Support: Not Supported
        Provisioning Type: Not reported or fully provisioned

========================================
Getting Read Capacity data. 10 & 16 byte
========================================
        Read Capacity 10 data:
                MaxLBA: 3907029167
                Block Size : 512
        Read Capacity 16 data:
                MaxLBA: 3907029167
                Logical Block Size: 512
                Physical Block Size: 512

========================================
Checking SCSI Read/Write Command Support
========================================
HACK FOUND: RW6
HACK FOUND: RW10
HACK FOUND: RW12
HACK FOUND: RW16
NOTE: Skipping testing for zero length transfers. This test should be done for highest compatibilty testing!

==========================
Checking Mode Page Support
==========================
Caching Mode Page
        Write Cache: Enabled
Informational Exceptions Control Mode Page
        PERF: 0
        EWASC: 0
        DEXCPT: 0
        Method Of Reporting Informational Exceptions (MRIE): 0h
Power Condition Control Mode Page
        StandbyZ Timer: 2000

==========================
Testing for SCSI Log Pages
==========================
NOTE: Skipping SCSI Log test since device reported invalid operation code.
HACK FOUND: NLP

===========================
Testing Other SCSI Commands
===========================
WARNING: Security protocol in failed. Access to device security subsystems may be inaccessible or limited!
WARNING: Reporting supported operation codes failed! This command does not appear to be known by the device.
HACK FOUND: NRSUPOP
Testing SCSI default self-test.
Device is capable of performing default self-test

==============================================
Testing Error Handling Of Unsupported Commands
==============================================
Average response time from 3 commands: 669704600 nanoseconds
Testing complete.
        Total Commands Tried: 12
        Average return time from bad commands: 0 nanoseconds
        Command time ratio (bad compared to good): 0.00
Likely HACK FOUND: TURF34

==================================
Testing SCSI Maximum Transfer Size
==================================
NOTE: This is currently limited to 4096 sectors for now
SCSI Max Transfer Size: 344064B
SCSI reported max size: 33553920B
SCSI reported optimal size: 33553920B


==================
Final Test Results
==================
SEND THIS INFO BELOW TO seaboard@seagate.com:
Adapter Information:
        Information Type: USB
        Vendor ID: 0BDAh
        Product ID: 9210h
        Revision: 2001h
        Vendor ID: Realtek
        Product ID: RTL9210B-CG
        Product Rev: 1.00
        Unit Serial Number: 0000000000000000
        Device IDs:
                5265616C74656B2052544C3932313042
                3001237923792379
        Command Processing (bad relative to good): 0.00
        SCSI Max Transfer Size: 344064

Hacks For This Device:
                TURF:34
        SCSI Hacks: RW6, RW10, RW12, RW16, NLP, NRSUPOP, MXFER:344064
        ATA Hacks:  SAT, A1, NDMA,
Recommendations For Device Makers:
1       Test this device with this tool in multiple OS's. Linux and Windows testing should be done to find highest compatibility.
2       Improve error handling for unknown commands. This device takes longer
            and longer to respond with each unknown command.
3       Rerun this test to test for commands that are known to hang some devices to ensure
        all hacks are known for this device to perform properly...if the firmware can be
        fixed to prevent these hangs, that is the best solution!
4       The maximum transfer length is less than was reported by the block limits VPD page!
        This page should report the maximum transfer length supported by the SCSI device or SCSI translator
        This should be a true maximum. If this seems low, retest on another OS to ensure it is not a
        limitation on a specific OS. For example, it is fairly common to be limited to 64k in Windows.

I bought the ssd enclosure from a pc repair store. Can't find the exact link. The box legit calls it: M.2 SSD Enclosure. But design of it matches up with these:

Image of model

image

@shanewazabbas
Copy link
Author

Tried the full download command and this failed as well (verbose level 3 this time):

Details

==========================================================================================
 openSeaChest_Firmware - openSeaChest drive utilities - NVMe Enabled
 Copyright (c) 2014-2023 Seagate Technology LLC and/or its Affiliates, All Rights Reserved
 openSeaChest_Firmware Version: 3.4.0-4_1_1 X86_64
 Build Date: Mar 27 2023
 Today: Fri Mar 31 17:33:34 2023        User: XXX
==========================================================================================

====Sending SCSI Miniport Firmware Request====
Windows Error: 1117 - The request could not be performed because of an I/O device error.

Firmware Miniport Status: Success
Sending SCSI Test Unit Ready

  CDB:

        0  1  2  3  4  5
  0x00 00 00 00 00 00 00


  Sense Data Buffer:

        0  1  2  3  4  5  6  7
  0x00 00 00 00 00 00 00 00 00


Sense Key: 0h = No Error
ASC & ASCQ: 0h - 0h = No Additional Sense Information
FRU: 0h = No Additional Information
Information: 0000000000000000h
Command Specific Information: 0000000000000000h
Command Time (us): 783.10

Test Unit Ready returning: SUCCESS

Sending SCSI Inquiry

  CDB:

        0  1  2  3  4  5
  0x00 12 00 00 00 60 00


  Sense Data Buffer:

        0  1  2  3  4  5  6  7
  0x00 00 00 00 00 00 00 00 00


Sense Key: 0h = No Error
ASC & ASCQ: 0h - 0h = No Additional Sense Information
FRU: 0h = No Additional Information
Information: 0000000000000000h
Command Specific Information: 0000000000000000h
Command Time (ms): 1.31

Inquiry returning: SUCCESS

Sending SCSI Inquiry, VPD = 00h

  CDB:

        0  1  2  3  4  5
  0x00 12 01 00 00 60 00


  Sense Data Buffer:

        0  1  2  3  4  5  6  7
  0x00 00 00 00 00 00 00 00 00


Sense Key: 0h = No Error
ASC & ASCQ: 0h - 0h = No Additional Sense Information
FRU: 0h = No Additional Information
Information: 0000000000000000h
Command Specific Information: 0000000000000000h
Command Time (ms): 1.06

Inquiry returning: SUCCESS

Sending SCSI Inquiry, VPD = 80h

  CDB:

        0  1  2  3  4  5
  0x00 12 01 80 00 18 00


  Sense Data Buffer:

        0  1  2  3  4  5  6  7
  0x00 00 00 00 00 00 00 00 00


Sense Key: 0h = No Error
ASC & ASCQ: 0h - 0h = No Additional Sense Information
FRU: 0h = No Additional Information
Information: 0000000000000000h
Command Specific Information: 0000000000000000h
Command Time (ms): 1.06

Inquiry returning: SUCCESS

Sending SCSI Inquiry, VPD = 83h

  CDB:

        0  1  2  3  4  5
  0x00 12 01 83 00 60 00


  Sense Data Buffer:

        0  1  2  3  4  5  6  7
  0x00 00 00 00 00 00 00 00 00


Sense Key: 0h = No Error
ASC & ASCQ: 0h - 0h = No Additional Sense Information
FRU: 0h = No Additional Information
Information: 0000000000000000h
Command Specific Information: 0000000000000000h
Command Time (ms): 1.14

Inquiry returning: SUCCESS

Sending SCSI Inquiry, VPD = B1h

  CDB:

        0  1  2  3  4  5
  0x00 12 01 B1 00 40 00


  Sense Data Buffer:

        0  1  2  3  4  5  6  7
  0x00 00 00 00 00 00 00 00 00


Sense Key: 0h = No Error
ASC & ASCQ: 0h - 0h = No Additional Sense Information
FRU: 0h = No Additional Information
Information: 0000000000000000h
Command Specific Information: 0000000000000000h
Command Time (ms): 1.83

Inquiry returning: SUCCESS

Sending SCSI Read Capacity 10 command

  CDB:

        0  1  2  3  4  5  6  7  8  9
  0x00 25 00 00 00 00 00 00 00 00 00


  Sense Data Buffer:

        0  1  2  3  4  5  6  7
  0x00 00 00 00 00 00 00 00 00


Sense Key: 0h = No Error
ASC & ASCQ: 0h - 0h = No Additional Sense Information
FRU: 0h = No Additional Information
Information: 0000000000000000h
Command Specific Information: 0000000000000000h
Command Time (ms): 1.73

Read Capacity 10 returning: SUCCESS

Sending SCSI Read Capacity 16 command

  CDB:

        0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
  0x00 9E 10 00 00 00 00 00 00 00 00 00 00 00 20 00 00


  Sense Data Buffer:

        0  1  2  3  4  5  6  7
  0x00 00 00 00 00 00 00 00 00


Sense Key: 0h = No Error
ASC & ASCQ: 0h - 0h = No Additional Sense Information
FRU: 0h = No Additional Information
Information: 0000000000000000h
Command Specific Information: 0000000000000000h
Command Time (ms): 1.44

Read Capacity 16 returning: SUCCESS

Sending SCSI Inquiry, VPD = 89h

  CDB:

        0  1  2  3  4  5
  0x00 12 01 89 02 3C 00


  Sense Data Buffer:

        0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
  0x00 70 00 05 00 00 00 00 0A 00 00 00 00 24 00 00 00
  0x10 00 00


Sense Key: 5h = Illegal Request
ASC & ASCQ: 24h - 0h = Invalid Field In CDB
FRU: 0h = No Additional Information
Information: 00000000h
Command Specific Information: 00000000h
Command Time (ms): 1.94

Inquiry returning: NOT SUPPORTED

Sending ATA Identify command
Sending SAT ATA Pass-Through Command:
        Protocol: PIO
        Data Direction: Data In
        Task File Registers:
        [Feature] = 00h
        [Count] = 01h
        [LBA Lo] = 00h
        [LBA Mid] = 00h
        [LBA Hi] = 00h
        [DeviceHead] = A0h
        [Command] = ECh


  CDB:

        0  1  2  3  4  5  6  7  8  9  A  B
  0x00 A1 08 0E 00 01 00 00 00 A0 EC 00 00


  Sense Data Buffer:

        0  1  2  3  4  5  6  7
  0x00 00 00 00 00 00 00 00 00


Sense Key: 0h = No Error
ASC & ASCQ: 0h - 0h = No Additional Sense Information
FRU: 0h = No Additional Information
        Return Task File Registers:
        [Error] = 00h
        [Count] = 00h
        [LBA Lo] = 00h
        [LBA Mid] = 00h
        [LBA Hi] = 00h
        [Device] = 00h
        [Status] = 00h

Command Time (ms): 4.03

Identify returning: SUCCESS

        Forcing SCSI Drive

\\.\PhysicalDrive1 - RTL9210B-CG - 0000000000000000 - 1.00 - SCSI
Sending SCSI Inquiry, VPD = 86h

  CDB:

        0  1  2  3  4  5
  0x00 12 01 86 00 40 00


  Sense Data Buffer:

        0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
  0x00 70 00 05 00 00 00 00 0A 00 00 00 00 24 00 00 00
  0x10 00 00


Sense Key: 5h = Illegal Request
ASC & ASCQ: 24h - 0h = Invalid Field In CDB
FRU: 0h = No Additional Information
Information: 00000000h
Command Specific Information: 00000000h
Command Time (ms): 2.01

Inquiry returning: NOT SUPPORTED

Requesting SCSI Supported Op Codes

  CDB:

        0  1  2  3  4  5  6  7  8  9  A  B
  0x00 A3 0C 02 3B 00 05 00 00 00 0E 00 00


  Sense Data Buffer:

        0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
  0x00 70 00 05 00 00 00 00 0A 00 00 00 00 20 00 00 00
  0x10 00 00


Sense Key: 5h = Illegal Request
ASC & ASCQ: 20h - 0h = Invalid Command Operation Code
FRU: 0h = No Additional Information
Information: 00000000h
Command Specific Information: 00000000h
Command Time (s): 2.01

Supported Op Codes returning: NOT SUPPORTED

Sending SCSI Inquiry, CmdDt = 3Bh

  CDB:

        0  1  2  3  4  5
  0x00 12 02 3B 00 10 00


  Sense Data Buffer:

        0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
  0x00 70 00 05 00 00 00 00 0A 00 00 00 00 24 00 00 00
  0x10 00 00


Sense Key: 5h = Illegal Request
ASC & ASCQ: 24h - 0h = Invalid Field In CDB
FRU: 0h = No Additional Information
Information: 00000000h
Command Specific Information: 00000000h
Command Time (s): 2.00

Inquiry returning: NOT SUPPORTED

Sending SCSI Read Buffer

  CDB:

        0  1  2  3  4  5  6  7  8  9
  0x00 3C 03 00 00 00 00 00 00 04 00


  Sense Data Buffer:

        0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
  0x00 70 00 05 00 00 00 00 0A 00 00 00 00 20 00 00 00
  0x10 00 00


Sense Key: 5h = Illegal Request
ASC & ASCQ: 20h - 0h = Invalid Command Operation Code
FRU: 0h = No Additional Information
Information: 00000000h
Command Specific Information: 00000000h
Command Time (s): 2.00

Read Buffer returning: NOT SUPPORTED

Sending SCSI Synchronize Cache 10

  CDB:

        0  1  2  3  4  5  6  7  8  9
  0x00 35 00 00 00 00 00 00 00 00 00


  Sense Data Buffer:

        0  1  2  3  4  5  6  7
  0x00 00 00 00 00 00 00 00 00


Sense Key: 0h = No Error
ASC & ASCQ: 0h - 0h = No Additional Sense Information
FRU: 0h = No Additional Information
Information: 0000000000000000h
Command Specific Information: 0000000000000000h
Command Time (ms): 14.84

Synchronize Cache 10 returning: SUCCESS

Sending SCSI Write Buffer

  CDB:

        0  1  2  3  4  5  6  7  8  9
  0x00 3B 05 00 00 00 00 20 20 00 00

Windows Error: 87 - The parameter is incorrect.


  Sense Data Buffer:

        0  1  2  3  4  5  6  7
  0x00 00 00 00 00 00 00 00 00


Sense Key: 0h = No Error
ASC & ASCQ: 0h - 0h = No Additional Sense Information
FRU: 0h = No Additional Information
Information: 0000000000000000h
Command Specific Information: 0000000000000000h
Command Time (us): 15.10

Write Buffer returning: OS PASSTHROUGH FAILURE

Firmware Download failed

@vonericsen
Copy link
Contributor

Windows Error: 87 - The parameter is incorrect. -> This is Microsoft's way of reporting "Transfer size too large" so the update did not even make it past the OS. There is no way around this in Windows.

I submitted a purchase request for one of those adapters and I also reached out to Seagate's USB engineering team to see if they have a Realtek support contact so I can try and get some documentation or at least ask them some questions to figure out what we can do.

@shanewazabbas
Copy link
Author

Thank you so much. Really appreciate it. Seagate support suggested I update the firmware for my firecuda to resolve crashing issues with my PS5. Hence why I bought the enclosure as I don't have a computer that supports m2 natively.

@vonericsen
Copy link
Contributor

@shanewazabbas,
No problem. I'll do the best I can.
I'm not sure how long this will take me to figure out or get an answer on though.

I know you may not want to buy another adapter, but this one claims to use one of the USB to NVMe chips I know openSeaChest and SeaChest can support for a firmware update: https://www.amazon.ca/s?k=jms583&crid=2H35Q1NUEVYFK&sprefix=jms583%2Caps%2C158&ref=nb_sb_noss_1
This one also lists it, but might cost a little more: https://www.amazon.ca/JEYI-Enclosure-External-Support-JMS583A3/dp/B0BCZ9JZ7F/ref=sr_1_1?crid=2H35Q1NUEVYFK&keywords=jms583&qid=1680304964&refinements=p_72%3A11192170011&rnid=11192166011&sprefix=jms583%2Caps%2C158&sr=8-1
I think I bought this one a few years ago when I was first testing my code to see which USB-NVMe adapters I could find on Amazon would work.

I was just searching JMS583 to find it and making sure it mentioned this same chip somewhere on the product page.

I just don't want to keep you waiting too long while I work to get an answer and figure this out.

@shanewazabbas
Copy link
Author

shanewazabbas commented Apr 1, 2023

Hey, no worries. Its not a rush. I'm also in communication with support to try to see if I can get mine replaced since I am under warranty. I personally don't want to spend on anymore on adapters as I only really need them for this one thing. If anything I'll try to see if I can find a pc repair place thats willing to put the firecuda ssd directly in the computer.

@vonericsen
Copy link
Contributor

Well I finally got the USB adapter in and have been playing with it to see if I can find a way to get it working.
So far I'm having the exact same results that are reported in this issue and I have not found a workaround yet.
I did send an email to a contact I was given today to see if they can help me out with finding a way to support this better.

I tried a few things like forcing the download command to use SCSI commands, ATA commands, and I tried forcing 4k transfer sizes, and so far nothing has made a difference with getting a firmware to the drive.

While I wait for a response from Realtek, I will play around with this and see if I can at least setup some rules to make this perform a little better with the -i output for now.

@shanewazabbas
Copy link
Author

Hey, thanks for the update. From my end, I'm supposed to received the replaced ssd today. So will wait to see how that one goes. If its the same firmware version and the same issues, this will be worth it for sure to have a way to update it with that adapter. I also went to a few places and they said they wouldn't update it for me through motherboard. So here's hoping the new one works.

vonericsen added a commit to Seagate/opensea-transport that referenced this issue Apr 18, 2023
Checking in initial changes that make supporting the realtek 9210 possible.
This device is pretty different in behavior from previous USB to NVMe chips since it can also support SATA M.2 devices.
Because of this, it required a bit more testing and tweaking to figure out the initial capabilities.
The most peculiar quirk is that when an NVMe drive is attached, it will respond to an ATA identify command, however this seems to be the only command to respond and the only information filled in is the MN, SN, and FWRev.

There is still more work to do for this since it may be possible to further extend capabilities, but this first set of changes helps a lot with compatibility and performance (at least getting drive info).

[Seagate/openSeaChest#109]

Signed-off-by: Tyler Erickson <tyler.erickson@seagate.com>
vonericsen added a commit to Seagate/opensea-transport that referenced this issue May 15, 2023
More work for supporting the realtek 9210 usb->nvme/sata adapter
There are multiple paths for detecting this and a possible warning will be emitted if a user has something that MIGHT be one of these, but was not otherwise detected due to differing MN and vendor ID.
This may require more tweaks going forward, but this is the best way I can figure we should support it for now.
Summary is if we see this adapter by USB vid/pid or known inquiry data we check the ATA identify response to see if DMA mode is supported (This should always be true on SATA drives) and if maxLBA is zero to determine if it is attached to an NVMe device and only issue it SCSI commands.

Unfortunately this adapter does not seem to support firmware updates like the original issue requested and realtek has been completely unresponsive to my emails for help on the capabilities of this adapter.

[Seagate/openSeaChest#109]

Signed-off-by: Tyler Erickson <tyler.erickson@seagate.com>
@vonericsen
Copy link
Contributor

Well I have tried everything I can think of to get this working and have reviewed the SCSI to NVMe translation white paper from original 1.0 to 1.5 versions for any differences that would affect the ability to update firmware and nothing has worked.
The adapter is responding with "Invalid operation code" indicating it does not support this command translation for an NVMe device.

I have also failed to hear anything from Realtek about how to do this as well.

So the changes I have pushed will make some things work a little better, but cannot fix the ability to update firmware on this adapter. I need a spec from Realtek to do this, the SCSI translation is not complete.

Here is a list of what I have tried with this adapter (from NVMe to SCSI translation whitepaper 1.5):

Command subcommand Result Notes
Inquiry Success Vendor ID, Product ID, FWRev do not match translation whitepaper. Did not validate all fields, but otherwise looked ok
supported pages Success
unit serial number Success Does not match SCSI translation whitepaper. Set to all zeroes rather than useful value.
device identification Success Does not match SCSI translation whitepaper. Locally administered value rather than translated.
extended inquiry data missing, but optional whitepaper lists this as optional. Not a major issue.
block limits Success Not all fields validated
block device characteristics Success not all fields validated, but seems correct
logical block provisioning Success not all fields validated, but appears to match translation requirements
Log Sense all pages Fail Command is rejected with Invalid operation code". Without this cannot read endurance used or temperature
Mode Sense partial success Only seems to respond properly with "current" data. Saved, default, changable all seem to cause trouble and slow response
read-write error recovery Fail Page not supported. Slow response
caching Success
control Fail
power condition control Success
return all pages/subpages Success Return all pages and subpages worked, as did the all pages (3f-ff & 3f-00)
informational exceptions control Success Matches whitepaper, but is missing the matching log page (see above)
Mode select Not tested
Test unit ready Success
report luns Success
Security Protocol In/Out Not tested Not really tested, but appears to respond as expected for attached device.
Write Buffer All modes Fail Responds with "Invalid operation code". This is the command required to perform firmware updates on NVMe attached devices, but since this is not being implemented for translation, it is impossible to update firmware at this time.
Persistent reserve in/out Not tested Not tested since likely only to be found on enterprise drives and unlikely to be used over USB interface anyways
Send Diagnostic Not tested Not tested, but is a no-op in translation, so probably works fine
Read Capacity 10B Success
16B Success
Compare and Write Not tested Not expected to work since requires fusing NVMe commands. As verify for compare is not supported, I suspect this isn't implemented either.
Format Unit Fail Command rejected with "Invalid operation code", so cannot use this to format/reformat nvm and cannot be used to change sector size if target drive supports multiple sector sizes.
Read 6 Success
10 Success
12 Success
16 Success
Write 6 Success
10 Success
12 Success
16 Success
Unmap (TRIM) Success Not fully tested, but appears to work properly and match limits mentioned in VPD pages
Synchronize cache 10 Success
Synchronize cache 16 Fail Not surprising. Microsoft only uses 10B, but both translate exactly the same to NVMe's flush command. No reason this couldn't work
Verify 10 ??? Translation spec uses this for translation to NVMe compare command. NVMe verify added after translation. The compare translation is missing since you get "Invalid operation code".
12 ??? Translation spec uses this for translation to NVMe compare command. NVMe verify added after translation. The compare translation is missing since you get "Invalid operation code".
16 ??? Translation spec uses this for translation to NVMe compare command. NVMe verify added after translation. The compare translation is missing since you get "Invalid operation code".
Write long Not tested Translation to NVMe write uncorrectable using the "flagged" method. Not tested, but this is more for testing drive error recovery. Not really something that would be useful on USB anyways

I also tested this adapter with a SATA M.2 drive and the SAT CDBs seem to work fine in that case to get internal drive information and do other things. There are some odd things there, but it seems to mostly work. I did not do as in-depth of a command verification as I did with NVMe since the SAT passthrough CDBs worked well enough it was not necessary.

Unfortunately, there is not currently a way that I can figure out to update firmware using this adapter. I will need a specification from Realtek on how to do this, but since I cannot seem to get a response from them, there is nothing else I can currently do about this.

@shanewazabbas
Copy link
Author

Hey, thanks for putting so much of your time into this. Really appreciate it. Thus far, the replaced ssd has been working smoothly. Luckily it already had an updated firmware version, so I don't have to rely on this usb adaptor fix yet. I would say its up to you if you want to carry on or not for your researching findings. But I'm totally cool if you want to close the ticket as well as I have no issues yet.

@vonericsen vonericsen changed the title How to update Firecuda firmware if I use a SSD enclosure? Realtek USB to NVMe adapter support (9210B-CG) Jul 21, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants