Skip to content

Instantly share code, notes, and snippets.

@AustinSaintAubin
Forked from r15ch13/iommu.sh
Last active May 17, 2025 21:55
Show Gist options
  • Select an option

  • Save AustinSaintAubin/16f930da0abd7cf1c6e1536e5eebb898 to your computer and use it in GitHub Desktop.

Select an option

Save AustinSaintAubin/16f930da0abd7cf1c6e1536e5eebb898 to your computer and use it in GitHub Desktop.
List IOMMU Groups and the connected USB Devices
#!/usr/bin/env bash
shopt -s nullglob
lastgroup=""
for g in `find /sys/kernel/iommu_groups/* -maxdepth 0 -type d | sort -V`; do
for d in $g/devices/*; do
if [ "${g##*/}" != "$lastgroup" ]; then
echo -en "Group ${g##*/}:\t"
else
echo -en "\t\t"
fi
lastgroup=${g##*/}
lspci -nms ${d##*/} | awk -F'"' '{printf "[%s:%s]", $4, $6}'
if [[ -e "$d"/reset ]]; then echo -en " [R] "; else echo -en " "; fi
lspci -mms ${d##*/} | awk -F'"' '{printf "%s %-40s %s\n", $1, $2, $6}'
for u in ${d}/usb*/; do
bus=$(cat "${u}/busnum")
lsusb -s $bus: | \
awk '{gsub(/:/,"",$4); printf "%s|%s %s %s %s|", $6, $1, $2, $3, $4; for(i=7;i<=NF;i++){printf "%s ", $i}; printf "\n"}' | \
awk -F'|' '{printf "USB:\t\t[%s]\t\t %-40s %s\n", $1, $2, $3}'
done
done
done
@AustinSaintAubin
Copy link
Author

Tested and working on Proxmox 8.4

Example Output

IOMMU     Device ID    Flags  Address   Type                           Description                                                               
--------  -----------  -----  -------   ------------                   --------------------------------------------                              
Group 0   [8086:0c04]         00:00.0   Host bridge                    Xeon E3-1200 v3/4th Gen Core Processor DRAM Controller                    
Group 1   [8086:0c01]         00:01.0   PCI bridge                     Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller         
    L 1   [10de:13d7]  [R]    01:00.0   VGA compatible controller      GM204M [GeForce GTX 980M]                                                 
    L 1   [10de:0fbb]         01:00.1   Audio device                   GM204 High Definition Audio Controller                                    
Group 2   [8086:8c31]         00:14.0   USB controller                 8 Series/C220 Series Chipset Family USB xHCI                              
    L 2   [1d6b:0002]  USB    3:1       Linux Foundation 2.0 root hub                                                                            
    L 2   [1d6b:0003]  USB    4:1       Linux Foundation 3.0 root hub                                                                            
Group 3   [8086:8c3a]         00:16.0   Communication controller       8 Series/C220 Series Chipset Family MEI Controller #1                     
Group 4   [8086:8c2d]  [R]    00:1a.0   USB controller                 8 Series/C220 Series Chipset Family USB EHCI #2                           
    L 4   [1d6b:0002]  USB    1:1       Linux Foundation 2.0 root hub                                                                            
Group 5   [8086:8c20]  [R]    00:1b.0   Audio device                   8 Series/C220 Series Chipset High Definition Audio Controller             
Group 6   [8086:8c10]  [R]    00:1c.0   PCI bridge                     8 Series/C220 Series Chipset Family PCI Express Root Port #1              
Group 7   [8086:8c14]  [R]    00:1c.2   PCI bridge                     8 Series/C220 Series Chipset Family PCI Express Root Port #3              
Group 8   [8086:8c16]  [R]    00:1c.3   PCI bridge                     8 Series/C220 Series Chipset Family PCI Express Root Port #4              
Group 9   [8086:8c26]  [R]    00:1d.0   USB controller                 8 Series/C220 Series Chipset Family USB EHCI #1                           
    L 9   [1d6b:0002]  USB    2:1       Linux Foundation 2.0 root hub                                                                            
Group 10  [8086:8c4b]         00:1f.0   ISA bridge                     HM87 Express LPC Controller                                               
    L 10  [8086:8c03]         00:1f.2   SATA controller                8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode]  
    L 10  [8086:8c22]         00:1f.3   SMBus                          8 Series/C220 Series Chipset Family SMBus Controller                      
Group 11  [8086:08b1]  [R]    3b:00.0   Network controller             Wireless 7260                                                             
Group 12  [10ec:8168]  [R]    3c:00.0   Ethernet controller            RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller 

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment