Firmware and tools for RTL9210 and RTL9210B USB to NVMe/SATA bridge controller. They are provided by station-drivers, Realtek, etc.
All procedures described in this Git repository are at your own risk. In case of software issues, you can find some solutions in the Unbrick section.
The table below lists all known firmware versions available in this git repository's firmware folder.
Firmware ver. | Build date | RTL9210 | RTL9210B | Links |
---|---|---|---|---|
1.20.12 | ? | ✅ | ❌ | Download |
1.23.5 | 2020.09.03 | ❓ | ❓ | Not found yet |
1.23.9 | 2020.10.05 | ✅ | ❌ | Download |
1.23.15 | ? | ✅ | ❌ | Download |
1.25.7 | ? | ✅ | ❌ | Download |
1.25.14 | ? | ✅ | ❌ | Download |
1.25.18 | ? | ✅ | ❌ | Download |
1.27.24 | ? | ✅ | ❌ | Download |
1.27.25 | ? | ✅ | ❌ | Download |
1.28.17 | ? | ✅ | ❌ | Download |
1.29.8 | ? | ✅ | ❌ | Download |
1.29.12 | ? | ✅ | ❌ | Download |
1.29.12.011122 | ? | ✅ | ✅ | Download |
1.29.391 | ? | ✅ | ❌ | Download |
1.30.17 | ? | ❓ | ✅ | Download |
1.30.21.070622 | ? | ✅ | ✅ | Download |
1.30.24.030822 | ? | ❓ | ✅ | Download |
1.30.28.081022 | ? | ❓ | ✅ | Download |
1.31.17.102022 | ? | ❓ | ✅ | Download |
1.31.17.102022 (2) | ? | ❓ | ✅ | Download.zip) |
1.32.16.010923 | ? | ❓ | ✅ | Download |
1.32.45.041323 | ? | ❓ | ✅ | Download |
1.32.49.140423 | ? | ❓ | ✅ | Download |
1.32.49.140423 (Lcd) | ? | ❓ | ✅ | Download.zip) |
1.32.68.062623 | 28.06.23 | ❓ | ✅ | Download |
1.32.87.082923 | 29.08.23 | ❓ | ✅ | Download |
1.32.901.120722 | ? | ❓ | ✅ | Download |
1.33.7.191023 | 19.10.2023 | ❌ | ✅ | Download |
1.33.44.011824 | 18-01-2024 | ❓ | ✅ | Download |
There are dozens of devices with the RTL9210B, I have gathered in this git repository some firmware configs found on the www.station-drivers.com forums.
You can check in the configure folder or use values from the dump folder to create your own configuration.
Brand | Model | Controller | config file | dump | Notes |
---|---|---|---|---|---|
Inateck | FE2025 | RTL9210B | config | dump | |
Sabrent | EC-SNVE | RTL9210B | config | ||
Mokin | MOUD0501 | RTL9210B | |||
Ugreen | ? | RTL9210B | config | dump | |
SmallRig | SD-01 | RTL9210B | dump | ||
MKUO | SD-01 | RTL9210(B ?) | |||
Orico | M2PJM-C3 | RTL9210(B ?) | dump | ||
Unionsime | MD202 | RTL9210B | config | dump | |
UniAccessories | ? | RTL9210B | config | dump |
Warning: Flashing the firmware can brick or permanently damage your device. Do it at your own risk. The author of this Git repository is not responsible for any damage to your device. If you brick your device, you can try to unbrick it with the Unbrick section.
Info: The firmware update tool is only available for Windows and does not work well on Linux with Wine or in a virtual machine.
firmware
folder..cfg
) of your device from the configure folder to the configure folder where the firmware update tool is located.SERIAL
in the configuration file to match your dump file if it is defined. (Optional but recommended)DISK_IPS_THRES
with a ;
in the configuration file. (Optional but recommended).cfg
) of your device.This section describes how to configure (in cfg files) the firmware for your device, all configurations are in the configure
folder or use values from the dump
folder to create your own configuration.
Each configuration are unique to the device, your enclosure may not work properly if you have not the right configuration.
Variable name | Value example | Description |
---|---|---|
U2PHY | 02 f4 9b e0 e1 | USB 2.0 Physical Layer settings |
U3PHY | 02 d4 09 00 d5 00 80 | USB 3.0 Physical Layer settings |
VID | 0x0bda | Vendor ID |
PID | 0x9210 | Product ID |
MANUFACTURE | "Unionsine" | Manufacturer name |
PRODUCT | "MD202" | Product name |
SERIAL | "012345679545" | Serial number, 12 characters and unique per device |
SCSI_PRODUCT | "Unionsine MD202 " | SCSI Product name |
SCSI_VENDOR | "n/a" | SCSI Vendor name |
CFEXPRESS | 0x0 | Enable CFExpress card reader (Always 0x0) |
USB_SELF_PWR | 0x0 | If the device is self-powered ? |
LED | 0x1 | Set to 0x1 if the device has a LED |
DISK_HOTPLUG | 0x0 | Anable device supports hot-plugging (Very often 0x0) |
PINMUX1 | 0x0 | Pin multiplexing settings (first set) |
PINMUX2 | 0x0 | Pin multiplexing settings (second set) |
U2_MAXPWR | 0xfa | USB 2.0 mode maximum power |
U3_MAXPWR | 0x70 | USB 3.0 mode maximum power |
ASPMDIS | 0x0 | Enable or disable active power management |
PCIE_REFCLK | 0x0 | PCIe reference clock |
PCIE_PWRCUT_THRES | 0x5 | Suspends the PCIe power after 5 minutes of idle time (1 unit = 1 minute),, it recommended to comment this line |
DISK_IPS_THRES | 0x1 | Responsible for powering down the PCI bus after a timeout to conserve energy |
SWR_1_2V | 0x0 | ? |
EN_U1U2 | 0x1 | Set to 0x1 to enable USB 3.0 Link Power Management |
EN_UPS | 0x1 | Enable USB Power Saving ? |
PD | 0x1 | Power Down |
CUSTOMIZED_LED | 02 01 07 | To customize the LED behavior |
SUSPEND_LED_OFF | 0x1 | ? |
FORCE_USB_SPEED | 0x0 | ? |
FORCE_PCIE_SPEED | 0x0 | ? |
FORCE_USB_QUIRK | 0x0 | ? |
FORCE_PCIE_QUIRK | 0x0 | ? |
FAN | 0x0 | Set to 0x1 if the device has a fan |
DIS_SHOW_EMPTY_DISK | 0x1 | Set to 0x1 to show the enclosure when no NVMe/SATA drive is connected |
FORCE_SATA_NORMAL_DMA | 0x0 | Force SATA to use normal DMA |
RM_INTERNAL_RD | 0x0 | ? |
HS_AUTO_SWITCH | 0x0 | ? |
UART_DBG_PIN | 0x0 | UART Debug pin |
UART_BAUD_RATE | 0x0 | UART Baud rate |
FINGER_PRINT_EN | 0x0 | Enable fingerprint authentication |
CUSTOMIZED_DISK_IDENTIFY | 0x0 | ? |
HW_LED_CFG | 0x0 | ? |
CDROM_CFG | 0x0 | ? |
SUPPORT_HID | 0x0 | ? |
LATE_INIT_DISK | 0x0 | ? |
SCSI_WP_PIN | 0x0 | Write Protect SCSI pin ? |
SD_MMC_TYPE | 0x0 | ? |
FORCE_PORT_TYPE | 0x0 | ? |
BCDDEVICE | 0x0 | ? |
SUSPEND_DISK_OFF | 0x7 | ? |
SCSI_WB_PIN | 0x0 | ? |
CUSTOMIZED_FEATURE | 0x0 | ? |
PERIPH_API | 0x0 | ? |
RAID_CFG | 0x0 | ? |
To create your own configuration, you can use the dump
folder to get the values of your device.
dump
folder or on the internet.configure
folder with the name of your device and the extension .cfg
.*
, contain the device name on the second line, and have another line of *
on the third line.n/a
. (Optional):
with =
for variable definitions.DISK_IPS_THRES
by changing it to ;DISK_IPS_THRES = 0x1
if you want. (Optional)When you have bricked your device, you can try to unbrick it with the following steps:
Don't hesitate to contribute to this git repository by creating a pull request or by contacting me.