Forum: PC-Programmierung Wie PCIe-Bus-Scan nach Grafikkarten?


von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Hi!

Vielleicht weiß jemand wie das geht...

Ich brauche ein Programm was erkennt, auf welchen PCIe-Anschlüssen eines 
Mainboards oder Lanes eine Grafikkarte dranhängt und wo nicht. Evtl. 
würde auch "belegt" oder "nicht belegt" reichen. Eine nähere 
Identifizierung nach Geräte-Typ wäre klasse, aber es müßte auch ohne 
gehen.

Hat hier jemand schon mal sowas in diese Richtung programmiert oder 
kennt eine Möglichkeit, wie man das hinbekommt?

Danke!

von Frank K. (fchk)


Lesenswert?

Für das, was DU willst, gibt es keine API.

Ein PCI-Device (das schließt PCIe ein) wird vom Betriebssystem 
identifiziert durch:
- Busnummer
- Vendor ID
- Device ID
- Funktionsnummer

Mehr bekommst Du nicht. Alles andere ist in höchstem Maße 
gerätespezifisch, und normalerweise interessiert das auch nicht.

fchk

von thomil (Gast)


Lesenswert?

lspci?

von Georg A. (georga)


Lesenswert?

Da gibts doch noch den Classcode im Configspace. Ethernet controller, 
bridge, VGA compatible controller, ...

http://wiki.osdev.org/PCI#Class_Codes

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

> Ein PCI-Device (das schließt PCIe ein) wird vom
> Betriebssystem identifiziert durch:
> - Busnummer
> - Vendor ID
> - Device ID
> - Funktionsnummer
Das reicht doch völlig.
Wie komme ich an diese Liste dran?

von Clemens L. (c_l)


Lesenswert?

Welches Betriebssystem?

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Am liebsten Windows, aber von mir aus auch was beliebiges per USB-Boot.

von Ich (Gast)


Lesenswert?


von Ich (Gast)


Lesenswert?

und dann so:
devcon find pci\*

von Gerd E. (robberknight)


Lesenswert?

Bei moderneren Boards und besseren BIOSsen, sind die physischen 
Steckplätze und ihre Belegung in den DMI-Daten aufgeschlüsselt.

Unter Linux also einfach mal dmidecode aufrufen und schauen was da 
rauskommt. Wie das unter Windows geht musst Du selbst schauen.

von georg (Gast)


Lesenswert?

Ben B. schrieb:
> Ich brauche ein Programm was erkennt, auf welchen PCIe-Anschlüssen eines
> Mainboards oder Lanes eine Grafikkarte dranhängt

Soweit kein Problem, aber woher weisst du, welche Nr. ein bestimmter 
Steckplatz auf dem Motherboard hat? Oder interessiert das garnicht?

Georg

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Das könnte man experimentell feststellen.

Es geht um die Diagnose von Mining-Rigs. 8 oder 13 Karten an einem Board 
und manchmal wird eine oder mehrere Grafikkarten nicht gefunden. Dann 
sucht man sich einen Wolf, welche Karte fehlt.

von Timmo H. (masterfx)


Lesenswert?

Willst du einfach nur ein Programm haben um zu gucken? Dann reicht ggf. 
schon HWinfo64.

Ansonsten kann man sich da recht einfach via SetupDiEnumDeviceInfo, 
SetupDiGetDeviceRegistryProperty etc. recht gut durchhangeln

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Danke, ich schaue mir HWinfo mal an.

Schön wäre, wenn man mit einfachen Mitteln ein Programm erstellen 
könnte, das beim Start ausgibt auf welchen PCI-Steckplätzen bzw. Bus-IDs 
eine Grafikkarte (oder einfach: ein Gerät) gefunden wurde (und auf 
welchen nicht). Das würde die Fehlersuche in diesen Geräten sehr 
vereinfachen. Ich hab sowas leider noch nie gemacht, mir war die 
Zuordnung immer egal und eine Grafikkarte wird schon da sein. Ich hab 
auch noch keine große Grafikprogrammierung gemacht, deswegen fällt mir 
diese Problemlösung schwer.

von Christian R. (supachris)


Lesenswert?

Für Windows gäbe es da noch http://www.pcitree.de/

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.