A Python CLI for PCIe Debugging at Scale
Pcicrawler is a Python-based command-line tool for displaying, filtering, and exporting information about PCI and PCIe buses, devices, and topology. Built to support diagnosing and debugging PCIe issues at scale, the tool is designed to assist with automation and hardware monitoring in large server fleets.
What Pcicrawler Exposes
The tool reports details for any device that plugs into a PCI slot on a server motherboard — including network adapters, graphics cards, hard disks, and SSDs. For each device, it provides:
- PCIe address, path, and topology position
- Vendor ID, device ID, class ID, and subsystem vendor/device IDs
- VPD and end-point type
- Capable and current PCI width
- Capable, current, and target PCI speed
- PCI vs. PCIe indication
Better Visibility Than Legacy Tools
Unlike older CLI utilities such as lspci, pcicrawler renders the PCI topology as a tree-like diagram, making visual inspection and issue tracking with server hardware components more direct. The tool's output is also available as machine-parsable JSON, which simplifies building health-monitoring scripts and bulk automation.
Because it is lightweight, pcicrawler can be run on production servers without interfering with running workloads. It has proven efficient, reliable, and safe to deploy at scale.
Use Cases in Fleet Management
A common tool for PCIe data exchange makes cross-team issue resolution simpler. Pcicrawler can be used to monitor, diagnose, debug, and repair problems such as PCIe link width mismatches and link speed mismatches. Teams can also compare the expected hardware configuration against what is actually present on each server to surface discrepancies for fixing.
Compatibility and Availability
Written entirely in Python 3, pcicrawler adheres to current PCI standards and runs on nearly all OCP/Linux platforms. It is available freely for use by vendors, ODMs, OEMs, cloud providers, and hyperscale operators.
The project is hosted on GitHub.



