/usb-to-pcie-re

Notes and utilities for reverse engineering USB-to-PCIe/NVMe controllers.

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

USB to PCIe Reverse Engineering

Introduction

There are several chips on the market that support translating USB to NVMe/PCIe:

  • ASMedia
    • ASM2362: USB 3.x Gen 2×1 to PCIe 3.x ×2
    • ASM2364: USB 3.x Gen 2×2 to PCIe 3.x ×4
    • ASM2464PD: USB4 Gen 3×2 / Thunderbolt 3 to PCIe 4.x ×4
    • ASM2464PDX: USB4 Gen 3×2 / Thunderbolt 3 to PCIe 4.x ×4 + integrated PCIe switch with up to four downstream ports (one ×4 port, two ×2 ports, four ×1 ports, or one ×2 port + two ×1 ports)
  • JMicron
    • JMS581: USB 3.x Gen 2×1 to PCIe 3.x ×2 (NVMe) / SATA 3 / SD Express
    • JMS583: USB 3.x Gen 2×1 to PCIe 3.x ×2 (NVMe)
    • JMS586A: USB 3.x Gen 2×2 to PCIe 3.x ×2 (NVMe) + PCIe 3.x ×2 (AHCI)
    • JMS586U: USB 3.x Gen 2×2 to PCIe 3.x ×2 (NVMe) + PCIe 3.x ×2 (NVMe/AHCI)
  • Realtek
    • RTL9210B-CG: USB 3.x Gen 2×1 to PCIe 3.x ×2 / SATA 3
    • RTL9211DS-CG: USB 3.x Gen 2×1 to PCIe 3.x ×2 / SD Express

This project will focus on the ASMedia controllers, for now.

Sub-projects

License

Except where otherwise stated: