A Linux userspace tool that assembles AMD RaidXpert2 / RAIDCore fakeRAID arrays using device-mapper. No proprietary AMD drivers required.
Disclaimer: This tool is provided as-is with no warranty of any kind. It interacts directly with raw block devices and reverse-engineered metadata formats. By using this tool, you accept full responsibility for any consequences, including but not limited to data loss, data corruption, or hardware issues. The author(s) shall not be held liable for any damages resulting from the use of this software. Always back up your data before using this tool.
AMD RaidXpert2 is a fakeRAID controller built into AMD chipsets. It uses a proprietary on-disk metadata format (RAIDCore) that has no official Linux support. Drives configured with RaidXpert2 in Windows are invisible to Linux — dmraid, mdadm, and standard filesystem tools cannot read the metadata or assemble the arrays.
This tool reverse-engineers the RAIDCore metadata format, parses the array configuration directly from disk, and assembles the virtual volume using Linux's native device-mapper subsystem.
| RAID Type | Status |
|---|---|
| JBOD / Span (concatenation) | Fully supported |
| RAID 0 (stripe) | Detected, experimental (needs testing with more hardware) |
| RAID 1 (mirror) | Detected, not yet implemented |
| Other levels | Detected and reported |
Tested with:
- AMD 600-series chipset (PCI
1022:8590) - NVMe SSDs in JBOD / Span configuration
- NTFS-formatted volumes created in Windows
Other AMD chipsets with RaidXpert2 likely use the same RAIDCore metadata format and should work.
- Python 3.6+
dmsetup(device-mapper userspace tools)kpartx(partition mapper for device-mapper devices)ntfs-3g(optional, for mounting NTFS volumes)- Root privileges
Debian / Ubuntu / Pop!_OS:
sudo apt install dmraid kpartx ntfs-3gFedora / RHEL:
sudo dnf install device-mapper kpartx ntfs-3gArch Linux:
sudo pacman -S device-mapper multipath-tools ntfs-3g# Download the script
sudo curl -Lo /usr/local/bin/raidcore-assemble https://raw.githubusercontent.com/<OWNER>/<REPO>/main/raidcore-assemble
sudo chmod +x /usr/local/bin/raidcore-assembleOr clone and symlink:
git clone https://github.com/<OWNER>/<REPO>.git
sudo ln -s "$(pwd)/<REPO>/raidcore-assemble" /usr/local/bin/raidcore-assemble# 1. Scan for drives with RAIDCore metadata
sudo raidcore-assemble scan
# 2. View array details and verify configuration
sudo raidcore-assemble info
# 3. Assemble the array
sudo raidcore-assemble assemble
# 4. Mount the volume (read-only by default)
sudo raidcore-assemble mount /mnt/raidcore
# Or mount read-write
sudo raidcore-assemble mount --rw /mnt/raidcore
# 5. (Optional) Enable auto-mount on boot
sudo raidcore-assemble install --rw /mnt/raidcoreraidcore-assemble <command> [options]
Commands:
scan Find drives with RAIDCore metadata
info Show parsed array configuration and device-mapper table
assemble Create the device-mapper virtual device
disassemble Remove the device-mapper device and partitions
mount Mount the largest NTFS partition from the array
unmount Unmount and tear down everything
install Install a systemd service for auto-mount on boot
uninstall Remove the systemd service
dump Export raw metadata as JSON for troubleshooting
Options:
--rw Mount read-write (default is read-only)
--dry-run Show what would be done without executing (assemble only)
--name NAME Custom device-mapper name (default: raidcore_jbod)
path Mount point path (mount/install) or output file (dump)
# View the device-mapper table without assembling
sudo raidcore-assemble assemble --dry-run
# Mount with a custom device-mapper name
sudo raidcore-assemble assemble --name my_array
sudo raidcore-assemble mount --name my_array /mnt/my_array
# Save diagnostic dump for troubleshooting
sudo raidcore-assemble dump diagnostics.json
# Full teardown
sudo raidcore-assemble unmount
# Remove boot service
sudo raidcore-assemble uninstallAMD RaidXpert2 stores RAIDCore metadata at fixed offsets on each member disk:
| Offset | Content |
|---|---|
| 10 MiB | Superblock — 64 bytes. Contains the RAIDCore magic signature, per-disk identifier, and metadata region size. |
| 11 MiB | Config block — ~3 KiB. Contains controller info (PCI IDs), disk member records, volume configuration (RAID type, total size, member count), and per-disk data mapping (physical sector offsets and sizes). A backup copy follows immediately after. |
Each disk in the array carries its own superblock with a unique disk identifier, plus a shared copy of the full array configuration.
- Scan — Read sector at 10 MiB on every NVMe/SATA block device, check for
RAIDCoremagic - Parse — Read the config block at 11 MiB, extract disk member records and volume mapping
- Match — Correlate disk identifiers from the config with detected physical devices
- Map — For JBOD/span: create a linear device-mapper table concatenating each member's data region in order
# Example device-mapper table for a 2-disk JBOD span:
0 <disk0_sectors> linear /dev/<disk0> <data_offset>
<disk0_sectors> <disk1_sectors> linear /dev/<disk1> <data_offset>
- Partition scan —
kpartxreads the GPT/MBR inside the virtual device and creates partition nodes - Mount — The largest NTFS (or other) partition is mounted at the specified path
If you dual-boot with Windows:
- Windows Fast Startup leaves the NTFS volume in a hibernated state, which prevents clean read-write mounting on Linux. Disable it in Windows: Settings > Power Options > "Turn on fast startup" (uncheck).
- Read-only mode (the default) is always safe regardless of Fast Startup state.
- If
ntfs-3grefuses to mount read-write after a Windows session, either runchkdskin Windows first or boot Windows and perform a clean shutdown (not hibernate/sleep).
- Verify AMD RAID mode is enabled in BIOS/UEFI (not AHCI)
- Check that drives are detected by the kernel:
lsblk - Ensure you are running as root:
sudo raidcore-assemble scan
- Check
dmesg | tail -20for errors - The volume may use a partition scheme other than GPT/MBR
- Run
sudo blkid /dev/mapper/raidcore_jbodto check for direct filesystem (no partition table)
- Disable Windows Fast Startup (see Dual-Boot section above)
- Or mount read-only:
sudo raidcore-assemble mount /mnt/raidcore(without--rw)
If the tool detects your array but cannot assemble it (unsupported RAID type, garbled data, etc.):
# Generate a diagnostic dump
sudo raidcore-assemble dump diagnostics.jsonThis creates a JSON file containing:
- System info (kernel version, block device layout, PCI devices)
- Raw metadata hex from each detected drive (superblock + config block + MBR)
- Parsed configuration fields
The dump contains no file contents or personal data — only disk geometry and RAID metadata. It is safe to share publicly.
Open an issue and attach the dump file. This provides everything needed to diagnose the problem and extend support for your hardware.
For developers and contributors, here is the known RAIDCore on-disk structure:
Offset Size Field
0x00 8 Per-disk checksum / nonce
0x08 8 Magic: "RAIDCore" (ASCII)
0x10 8 Per-disk identifier (referenced by config records)
0x18 2 Version / flags
0x20 8 Metadata region size (bytes)
0x28 4 Block size
0x2C 4 Entry count
0x30 8 Additional metadata field
0x38 8 Per-disk UUID
Header (offset 0x000):
- PCI vendor/device IDs at +0x1C/+0x20 (e.g.,
1022:8590for AMD) - Config sequence number at +0x14
Disk Member Records (offset 0x280, 0x80 bytes each):
- Record type marker:
0x25BC - 8-byte disk ID at +0x04 (matches superblock +0x10)
- Member index at +0x0C
- Registered for all drives seen by the controller (including non-RAID drives)
Volume Record (offset 0x400):
- Record type marker:
0x25BD - Total virtual volume size (sectors) at +0x50
- RAID type code at +0x60 (observed:
5= JBOD/span) - Volume member count at +0x68
Disk Mapping Records (offset 0x600, 0x40 bytes each):
- 8-byte disk ID at +0x00
- Member index at +0x08
- Physical data start sector at +0x20 (64-bit LE)
- Data size in sectors at +0x28 (64-bit LE)
| Code | Type |
|---|---|
| 0 | RAID 0 (stripe) |
| 1 | RAID 1 (mirror) |
| 5 | JBOD / Span |
Other codes may exist — please share a dump if you encounter one.
Contributions are welcome, especially:
- RAID 0/1/10 testing — If you have a RaidXpert2 RAID 0, 1, or 10 array, please run
sudo raidcore-assemble dumpand open an issue with the output. This will allow extending support. - Other AMD chipsets — The metadata format may vary slightly across chipset generations. Dumps from different hardware help verify compatibility.
- SATA support — The tool scans SATA devices but has only been tested with NVMe. SATA confirmation welcome.
MIT