@@ -81,10 +81,13 @@ def detect_gles():
8181
8282def get_default_gpu_id ():
8383 drm_path = Path ("/sys/class/drm" )
84- cards = sorted (drm_path .glob ("card[0-9]*" ))
84+ # Only match card0, card1, etc. - not connector entries like card0-DP-1, card1-HDMI-A-1
85+ cards = sorted (c for c in drm_path .iterdir () if re .match (r'^card\d+$' , c .name ))
8586 for card_dir in cards :
8687 dev_dir = card_dir / "device"
87- if not dev_dir .exists ():
88+ vendor_file = dev_dir / "vendor"
89+ device_file = dev_dir / "device"
90+ if not (vendor_file .exists () and device_file .exists ()):
8891 continue
8992
9093 # Detect display connection (for default GPU)
@@ -94,8 +97,8 @@ def get_default_gpu_id():
9497 for conn in card_dir .iterdir () if conn .is_dir ()
9598 )
9699
97- vendor = ( dev_dir / "vendor" ) .read_text ().strip ()
98- device = ( dev_dir / "device" ) .read_text ().strip ()
100+ vendor = vendor_file .read_text ().strip ()
101+ device = device_file .read_text ().strip ()
99102 pci_id = f"{ vendor } :{ device } " .replace ("0x" , "" )
100103
101104 if has_display :
@@ -104,9 +107,11 @@ def get_default_gpu_id():
104107 # Fallback: return the first card's PCI ID
105108 if cards :
106109 dev_dir = cards [0 ] / "device"
107- if (dev_dir / "vendor" ).exists () and (dev_dir / "device" ).exists ():
108- vendor = (dev_dir / "vendor" ).read_text ().strip ()
109- device = (dev_dir / "device" ).read_text ().strip ()
110+ vendor_file = dev_dir / "vendor"
111+ device_file = dev_dir / "device"
112+ if vendor_file .exists () and device_file .exists ():
113+ vendor = vendor_file .read_text ().strip ()
114+ device = device_file .read_text ().strip ()
110115 return f"{ vendor } :{ device } " .replace ("0x" , "" )
111116
112117 return None
0 commit comments