To flash the controller with the correct firmware, you must have access to a Windows machine.
⚠️ Do NOT use version241224-0000-00!With this version, starting the VM in Proxmox will hang indefinitely. The VM start command never completes, and you're forced to hard reset the Proxmox host. This is also the version reporting 32 SATA Devices instead of 6.
Download and flash this firmware version:
211108-0000-00 (archived version). Other might work as well, but this is the one I'm using.
- AMD Ryzen Pro 5655G
- GIGABYTE B550I AORUS PRO AX
Edit /etc/kernel/cmdline and append the following parameter:
iommu=ptEdit /etc/default/grub and add it inside the GRUB_CMDLINE_LINUX line:
GRUB_CMDLINE_LINUX="... iommu=pt"Run the following to list your IOMMU groups:
shopt -s nullglob
for g in $(find /sys/kernel/iommu_groups/* -maxdepth 0 -type d | sort -V); do
echo "IOMMU Group ${g##*/}:"
for d in $g/devices/*; do
echo -e "\t$(lspci -nns ${d##*/})"
done
doneIf your ASMedia 1166 controller shares an IOMMU group with other devices, add this parameter as well:
pcie_acs_override=downstream,multifunctionAdd it to /etc/kernel/cmdline or /etc/default/grub, depending on your setup.
Edit /etc/modules and add the following lines:
vfio
vfio_iommu_type1
vfio_pciCreate /etc/modprobe.d/ahci-blacklist.conf with the following content:
options vfio-pci ids=1b21:1166
softdep ahci pre: vfio-pciRun:
update-initramfs -u -k allThen reboot your system.
After reboot, run:
lspci -nnk | grep -A 3 ASM1166You should see something like:
03:00.0 SATA controller [0106]: ASMedia Technology Inc. ASM1166 Serial ATA Controller [1b21:1166] (rev 02)
Subsystem: ZyDAS Technology Corp. ASM1166 Serial ATA Controller [2116:2116]
Kernel driver in use: vfio-pci
Kernel modules: ahci
The line Kernel driver in use: vfio-pci confirms that the controller is bound correctly.
Now, you can add the ASM1166 controller to your VM under Hardware -> Add -> PCI Device in the Proxmox UI.

I've been debugging the vm/host hanging issue too before I've found this gist, and by booting the VM with a debug build of OVMF I've realised that the issue is due to rombar.
This happened with stock firmware that came preinstalled, and also happened with some random firmware I've found online.
Last lines printed before OVMF hangs:
so I tried disabling rombar on this device (
rombar=0in qemu terms) and that fixed the issue: everything seems to work correctly.I'll leave a comment if I have any issues, but so far it seems to be working with firmware
241224000000:TL;DR: instead of refreshing the ASM1166 to an older firmware you can disable rombar for this pci passthrough device.
another workaround is booting the vm in legacy mode with SeaBIOS instead of UEFI+OVMF.