My Arc B580 Reported PCIe 1.0 x1 — It Was Not Broken | Intel Arc B580 Local LLM Part 2

This page contains advertising (affiliate links). See our Privacy Policy for details.

I put an Intel Arc B580 into a desktop and the speed was clearly off. So I checked lspci, and it reported PCIe 1.0 x1. The card is rated PCIe 4.0 x8. My first thought was that it was faulty, or that I had seated it wrong.

This article records what I found. The short version: the reading was a red herring, and I misdiagnosed it.

As of July 2026.

The previous article is here

The machine

CPU Ryzen 9 3950X
Motherboard X570
Memory 64GB
GPU NVIDIA GeForce RTX 3090, Intel Arc B580 (added for this test)
OS Ubuntu

The card: Intel Arc B580 12GB (GDDR6)

Intel Arc B580 12GB graphics card with two fans
Intel Arc B580 12GBCheck price on Amazon ›

As an Amazon Associate we earn from qualifying purchases.

Sponsored

Why I am writing up a wrong diagnosis

In Part 1 I wrote that the B580’s terrible speed came down to the Mesa driver version. Getting there took several wrong turns, and the first one was “the PCIe link has degraded."

I read the sysfs tree (how Linux exposes hardware information) node by node. Along the way I saw the lspci output and concluded the link was bad. That conclusion was wrong. Here is the procedure that would have caught it, with the actual values.

What I did: read the link speed at every level

A PCIe link speed is not a single property of the GPU. Every node along the path has its own. Between the CPU root port and the card there are several bridges.

Linux exposes each node’s link speed in sysfs, so I walked from the GPU endpoint down to the root, one step at a time.

for d in $(PCI addresses along the path); do
  cat /sys/bus/pci/devices/$d/current_link_speed
  cat /sys/bus/pci/devices/$d/current_link_width
done
Sponsored

The result: the top two levels lie, the third tells the truth

Six links between the B580 and the CPU root port, as measured on this machine.

B580 → CPU root port, measured link speeds
05:00.0 GPU endpoint (Intel Arc B580) 2.5GT/s ×1 ← misreported
04:01.0 on-card bridge (upper) 2.5GT/s ×1 ← misreported
03:00.0 on-card bridge (lowest) 16.0GT/s ×4 ← the real value
02:01.0 motherboard bridge 16.0GT/s ×4
01:00.0 motherboard bridge 16.0GT/s ×4
00:01.2 CPU root port 16.0GT/s ×4

What lspci surfaces is the topmost node — the GPU endpoint at 05:00.0. That reads “2.5GT/s x1", which is PCIe 1.0 x1. One level down, 03:00.0 reads 16.0GT/s x4, which is PCIe 4.0 x4 (16.0GT/s being the per-lane rate for PCIe 4.0).

The real link was PCIe 4.0 x4 the whole way. Every node down to the root port agrees, so nothing along the path had degraded.

Intel documents this as expected behaviour

This turns out to be written down in Intel’s own support article.

Intel Arc graphics cards contain a hierarchy of PCIe nodes inside the card. The upper nodes in that hierarchy unfortunately report link attributes incorrectly, but Intel guarantees that the lowest bridge reports the correct values. The upper nodes will always display Gen1 and x1 lanes rather than the product’s actual values.
— Intel support article 000094587

“Will always display Gen1 and x1." So seeing Gen1 x1 from lspci on a B580 is normal, and treating it as a fault — which is exactly what I did — is the mistake.

The lesson: never decide from a single reading

Do not draw a conclusion from one displayed value. With new hardware in particular, tools may not know a product’s quirks and will show you the number at face value.

Keeping an independent way to disprove yourself avoids this class of error. Separately from the reported link speed, I checked with an actual transfer.

Moving 2.61GB of model data onto the B580 took 4.87 seconds — roughly 0.54GB/s in practice. If the link really were PCIe 1.0 x1 (about 0.25GB/s in practice), that transfer alone would need more than 10.4 seconds. 4.87 seconds is physically impossible at Gen1 x1. That settled it without ever needing an accurate link-speed reading.

This kind of “disproof from a lower bound" works even when you cannot measure the value precisely. When you doubt a reading, look for one event that could never happen if the reading were true.

Sponsored

How to check PCIe on an Arc card

Do not take the lspci figure (the GPU endpoint) at face value. Look at the bridge one level below. On Linux you can walk the path in sysfs.

# find the card's PCI address (e.g. 05:00.0)
lspci | grep -i arc

# read the link speed of each node along that path
cat /sys/bus/pci/devices/0000:03:00.0/current_link_speed
cat /sys/bus/pci/devices/0000:03:00.0/current_link_width

If the endpoint says Gen1 x1 but the lower bridge reads what you expect (16.0GT/s x4, for instance), the card is fine. Only if the lower levels are slow too is there something to investigate.

Other Arc owners have reported the same scare — a brand-new card showing Gen1 x1. It seems to be a common stumble for anyone using Arc for the first time. Values here are from this machine (B580 on an X570 board) as of July 2026.

References

Products in this article

The card used here.

Intel Arc B580 12GBCheck price on Amazon ›
Sponsored