RTX 4060 Ti detected by nvidia-smi on Ubuntu 24.04, but NOT utilized

Issue

In nvidia-smi’s output, I do see the GPU externally connected via Thunderbolt in an eGPU. But never see the GPU ID of it in it’s processes section. Based on this output I conclude the eGPU is not utilized, unless I’m mistaken.

Env

  • Lenovo Thinkpad p16s
  • RTX 4060 Ti dual 16GB vram
  • Sonnet eGPU Breakaway Box 650W, Thunderbolt 4 (not 3) cable.
  • Ubuntu 24.04, nvidia-driver-580-open

Note

On the same computer and the same GPU and the eGPU, GPU was utilized, before the OS Ubuntu 22.04 (w/nvidia-driver-535) crashed (for a cause likely unrelated to GPU). Since then, I freshly installed Ubuntu 22.04/24.04/25.04, tried various different versions of nvidia-driver pkgs,- but have never been able to utilize the GPU again.

More data

nvidia’s bug-report tool output attached:

nvidia-bug-report_20251105-1010_Ubuntu-24.04.log (4.7 MB)

$ prime-select query
on-demand

$ __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia glxgears &
Running synchronized to the vertical refresh.  The framerate should be approximately the same as the monitor refresh rate.
320 frames in 5.0 seconds = 63.968 FPS
300 frames in 5.0 seconds = 59.999 FPS

$ echo "While running glxgears above" && nvidia-smi

Wed Nov  5 14:48:09 2025
±----------------------------------------------------------------------------+
| NVIDIA-SMI 580.95.05              Driver Version: 580.95.05      CUDA Version: 13.0     |
±----------------------------------------±-----------------------±-----------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+=========|
|   0  NVIDIA T550 Laptop GPU         Off |   00000000:03:00.0 Off |                  N/A |
| N/A   54C    P8              7W /   30W |      14MiB /   4096MiB |      4%      Default |
|                                         |                        |                  N/A |
±----------------------------------------±-----------------------±-----------+
|   1  NVIDIA GeForce RTX 4060 Ti     Off |   00000000:52:00.0 Off |                  N/A |
|  0%   31C    P8              7W /  165W |       2MiB /  16380MiB |      0%      Default |
|                                         |                        |                  N/A |
±----------------------------------------±-----------------------±-----------+

±----------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
|        ID   ID                                                               Usage      |
|============================================================================|
|    0   N/A  N/A            3354      G   /usr/lib/xorg/Xorg                        6MiB |
|    0   N/A  N/A           36822      G   glxgears                                  6MiB |
±----------------------------------------------------------------------------+

$ lspci | grep -i "nvidia"
03:00.0 3D controller: NVIDIA Corporation TU117GLM [T550 Laptop GPU] (rev a1)
52:00.0 VGA compatible controller: NVIDIA Corporation AD106 [GeForce RTX 4060 Ti 16GB] (rev a1)
52:00.1 Audio device: NVIDIA Corporation Device 22bd (rev a1)

$ boltctl list
 ● Sonnet Technologies, Inc. eGFX Breakaway Box 650 OC
   ├─ type:          peripheral
   ├─ name:          eGFX Breakaway Box 650 OC
   ├─ vendor:        Sonnet Technologies, Inc.
   ├─ uuid:          c1010000-0070-6518-2314-a01660b01022
   ├─ generation:    Thunderbolt 3
   ├─ status:        authorized
   │  ├─ domain:     15338780-b10c-5ab1-ffff-ffffffffffff
   │  ├─ rx speed:   40 Gb/s = 2 lanes * 20 Gb/s
   │  ├─ tx speed:   40 Gb/s = 2 lanes * 20 Gb/s
   │  └─ authflags:  none
   ├─ authorized:    Wed 05 Nov 2025 06:38:06 AM UTC
   ├─ connected:     Wed 05 Nov 2025 06:36:37 AM UTC
   └─ stored:        Thu 30 Oct 2025 04:54:17 PM UTC
      ├─ policy:     auto
      └─ key:        no



As you have multiple (2) Nvidia GPUs, if you don’t specify which one to use, one will picked randomly and it just happens that after your OS re-installation the built-in one is picked. Try specifying manually: for example run vkcube with --gpu_number option and see what happens then.

Thanks.

After many many more attempts, I’m finally having the external GPU utilized by the following:

Create a custom udev rule to disable the internal nvidia GPU (Create /etc/udev/rules.d/99-disable-internal-gpu.rules with the content (0000:03:00.0 is the internal one lspci returns)), then reboot the OS:

# Remove internal Nvidia GPU from the system on boot
ACTION==“add”, KERNEL==“0000:03:00.0”, SUBSYSTEM==“pci”, ATTR{remove}=“1”

This certainly disables the internal GPU (T550 in my case) but I’m desperately in need of the higher end model card that can only be connected externally (RTX 4060 Ti) to my laptop so this is fine to me (hence, making this post as a solution).

Confirming that the eGPU is utilized:

$ vkcube --gpu_number 1 &
Selected GPU 1: NVIDIA GeForce RTX 4060 Ti, type: DiscreteGpu

Tue Nov 18 16:30:13 2025
±----------------------------------------------------------------------------------------+
| NVIDIA-SMI 580.95.05 Driver Version: 580.95.05 CUDA Version: 13.0 |
±----------------------------------------±-----------------------±---------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============+========================+======================|
| 0 NVIDIA GeForce RTX 4060 Ti Off | 00000000:52:00.0 Off | N/A |
| 0% 29C P8 11W / 165W | 31MiB / 16380MiB | 11% Default |
| | | N/A |
±----------------------------------------±-----------------------±---------------------+

±----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|==============================================================|
| 0 N/A N/A 8655 C+G vkcube 8MiB |
±----------------------------------------------------------------------------------------+

I’m a bit confused: didn’t --gpu_number do the trick for some reason? Disabling the bult-in GPU totally in udev seems like an overkill comparing to just configuring individual apps to use the one you want… Not mentioning that if you boot your laptop without the eGPU things may break (unless you also have an Intel iGPU)

That’s an option for vkcube executable, isn’t it? And no, choosing the eGPU with that option ends up with the same error discussed in e.g. Vulkan under Wayland does not seem to work on dual GPU Laptop RTX 3050

Ah, I definitely overlooked that usecase.

In my laptop’s case there is indeed an Intel’s iGPU so I’m hoping things wouldn’t go super bad even if the OS reboots while eGPU is disconnected (the following is taken while nvidia T550, on board discrete GPU is disabled by the aforementioned customization), but that’s a good point.

$ lspci | grep -i 'vga\|3d\|2d'
00:02.0 VGA compatible controller: Intel Corporation Alder Lake-P GT2 [Iris Xe Graphics] (rev 0c)
52:00.0 VGA compatible controller: NVIDIA Corporation AD106 [GeForce RTX 4060 Ti 16GB] (rev a1)

Yes, but most modern programs have similar options.

you mean Could not find both graphics and present queues and crash? Could you please paste the exact output of vkcube --gpu_number ${vulkan-eGPU-device-number} (substitute the number) as well as the output of vulkaninfo --summary? Perhaps there’s some misconfiguration with this (usually wrong permission / group membership of some device files).

Also do you use X or Wayland?

UPDATE:
try running vkcube as root: sudo vkcube --gpu_number ${vulkan-eGPU-device-number}, if it helps, then it’s almost certainly a permission issue.

Thanks for digging!

Without mentioned customization that disables T550, the vkcube command above with RTX 4060 Ti

$ vkcube --gpu_number 1 &
Selected GPU 1: NVIDIA GeForce RTX 4060 Ti, type: DiscreteGpu
Could not find both graphics and present queues

vkcube command right now (T550 is disabled, OS recognizes only 1 nvidia card):

$  vkcube --gpu_number 0 &
Selected GPU 0: Intel(R) Iris(R) Xe Graphics (ADL GT2), type: IntegratedGpu

$ vkcube --gpu_number 1 &
Selected GPU 1: NVIDIA GeForce RTX 4060 Ti, type: DiscreteGpu

$ vkcube --gpu_number 2 &
Selected GPU 2: llvmpipe (LLVM 20.1.2, 256 bits), type: Cpu

$ vkcube --gpu_number 3 &
GPU 3 specified is not present, GPU count = 3
Specified GPU number is not present

Sure, I’ll get to it when I can.

vulkaninfo --summary output while T550 is disabled.

==========
VULKANINFO
==========

Vulkan Instance Version: 1.3.275


Instance Extensions: count = 24
-------------------------------
VK_EXT_acquire_drm_display             : extension revision 1
VK_EXT_acquire_xlib_display            : extension revision 1
VK_EXT_debug_report                    : extension revision 10
VK_EXT_debug_utils                     : extension revision 2
VK_EXT_direct_mode_display             : extension revision 1
VK_EXT_display_surface_counter         : extension revision 1
VK_EXT_headless_surface                : extension revision 1
VK_EXT_surface_maintenance1            : extension revision 1
VK_EXT_swapchain_colorspace            : extension revision 5
VK_KHR_device_group_creation           : extension revision 1
VK_KHR_display                         : extension revision 23
VK_KHR_external_fence_capabilities     : extension revision 1
VK_KHR_external_memory_capabilities    : extension revision 1
VK_KHR_external_semaphore_capabilities : extension revision 1
VK_KHR_get_display_properties2         : extension revision 1
VK_KHR_get_physical_device_properties2 : extension revision 2
VK_KHR_get_surface_capabilities2       : extension revision 1
VK_KHR_portability_enumeration         : extension revision 1
VK_KHR_surface                         : extension revision 25
VK_KHR_surface_protected_capabilities  : extension revision 1
VK_KHR_wayland_surface                 : extension revision 6
VK_KHR_xcb_surface                     : extension revision 6
VK_KHR_xlib_surface                    : extension revision 6
VK_LUNARG_direct_driver_loading        : extension revision 1

Instance Layers: count = 5
--------------------------
VK_LAYER_INTEL_nullhw       INTEL NULL HW                1.1.73   version 1
VK_LAYER_MESA_device_select Linux device selection layer 1.4.303  version 1
VK_LAYER_MESA_overlay       Mesa Overlay layer           1.4.303  version 1
VK_LAYER_NV_optimus         NVIDIA Optimus layer         1.4.312  version 1
VK_LAYER_NV_present         NVIDIA GR2608 layer          1.4.312  version 1

Devices:
========
GPU0:
	apiVersion         = 1.4.305
	driverVersion      = 25.0.7
	vendorID           = 0x8086
	deviceID           = 0x46a6
	deviceType         = PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
	deviceName         = Intel(R) Iris(R) Xe Graphics (ADL GT2)
	driverID           = DRIVER_ID_INTEL_OPEN_SOURCE_MESA
	driverName         = Intel open-source Mesa driver
	driverInfo         = Mesa 25.0.7-0ubuntu0.24.04.2
	conformanceVersion = 1.4.0.0
	deviceUUID         = 8680a646-0c00-0000-0002-000000000000
	driverUUID         = 802b0057-40c2-aed9-e538-d78b797f04f4
GPU1:
	apiVersion         = 1.4.312
	driverVersion      = 580.95.5.0
	vendorID           = 0x10de
	deviceID           = 0x2805
	deviceType         = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
	deviceName         = NVIDIA GeForce RTX 4060 Ti
	driverID           = DRIVER_ID_NVIDIA_PROPRIETARY
	driverName         = NVIDIA
	driverInfo         = 580.95.05
	conformanceVersion = 1.4.1.3
	deviceUUID         = d0eb8f73-07f4-d19f-fa4c-7728059b355e
	driverUUID         = b92269a1-b525-5615-ab8a-e2095ee37192
GPU2:
	apiVersion         = 1.4.305
	driverVersion      = 0.0.1
	vendorID           = 0x10005
	deviceID           = 0x0000
	deviceType         = PHYSICAL_DEVICE_TYPE_CPU
	deviceName         = llvmpipe (LLVM 20.1.2, 256 bits)
	driverID           = DRIVER_ID_MESA_LLVMPIPE
	driverName         = llvmpipe
	driverInfo         = Mesa 25.0.7-0ubuntu0.24.04.2 (LLVM 20.1.2)
	conformanceVersion = 1.3.1.1
	deviceUUID         = 6d657361-3235-2e30-2e37-2d3075627500
	driverUUID         = 6c6c766d-7069-7065-5555-494400000000

I meant with everything enabled, of course…

Now I disabled udev customization, so I see both nvidia GPU connected.

$ lspci | grep -i "nvidia"
03:00.0 3D controller: NVIDIA Corporation TU117GLM [T550 Laptop GPU] (rev a1)
52:00.0 VGA compatible controller: NVIDIA Corporation AD106 [GeForce RTX 4060 Ti 16GB] (rev a1)
52:00.1 Audio device: NVIDIA Corporation Device 22bd (rev a1)

$ vkcube --gpu_number 0 &
Selected GPU 0: Intel(R) Iris(R) Xe Graphics (ADL GT2), type: IntegratedGpu

$ vkcube --gpu_number 1 &
Selected GPU 1: NVIDIA T550 Laptop GPU, type: DiscreteGpu

$ vkcube --gpu_number 2 &
Selected GPU 2: NVIDIA GeForce RTX 4060 Ti, type: DiscreteGpu
Could not find both graphics and present queues

$ vkcube --gpu_number 3 &
Selected GPU 3: llvmpipe (LLVM 20.1.2, 256 bits), type: Cpu
==========
VULKANINFO
==========

Vulkan Instance Version: 1.3.275


Instance Extensions: count = 24
-------------------------------
VK_EXT_acquire_drm_display             : extension revision 1
VK_EXT_acquire_xlib_display            : extension revision 1
VK_EXT_debug_report                    : extension revision 10
VK_EXT_debug_utils                     : extension revision 2
VK_EXT_direct_mode_display             : extension revision 1
VK_EXT_display_surface_counter         : extension revision 1
VK_EXT_headless_surface                : extension revision 1
VK_EXT_surface_maintenance1            : extension revision 1
VK_EXT_swapchain_colorspace            : extension revision 5
VK_KHR_device_group_creation           : extension revision 1
VK_KHR_display                         : extension revision 23
VK_KHR_external_fence_capabilities     : extension revision 1
VK_KHR_external_memory_capabilities    : extension revision 1
VK_KHR_external_semaphore_capabilities : extension revision 1
VK_KHR_get_display_properties2         : extension revision 1
VK_KHR_get_physical_device_properties2 : extension revision 2
VK_KHR_get_surface_capabilities2       : extension revision 1
VK_KHR_portability_enumeration         : extension revision 1
VK_KHR_surface                         : extension revision 25
VK_KHR_surface_protected_capabilities  : extension revision 1
VK_KHR_wayland_surface                 : extension revision 6
VK_KHR_xcb_surface                     : extension revision 6
VK_KHR_xlib_surface                    : extension revision 6
VK_LUNARG_direct_driver_loading        : extension revision 1

Instance Layers: count = 5
--------------------------
VK_LAYER_INTEL_nullhw       INTEL NULL HW                1.1.73   version 1
VK_LAYER_MESA_device_select Linux device selection layer 1.4.303  version 1
VK_LAYER_MESA_overlay       Mesa Overlay layer           1.4.303  version 1
VK_LAYER_NV_optimus         NVIDIA Optimus layer         1.4.312  version 1
VK_LAYER_NV_present         NVIDIA GR2608 layer          1.4.312  version 1

Devices:
========
GPU0:
	apiVersion         = 1.4.305
	driverVersion      = 25.0.7
	vendorID           = 0x8086
	deviceID           = 0x46a6
	deviceType         = PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
	deviceName         = Intel(R) Iris(R) Xe Graphics (ADL GT2)
	driverID           = DRIVER_ID_INTEL_OPEN_SOURCE_MESA
	driverName         = Intel open-source Mesa driver
	driverInfo         = Mesa 25.0.7-0ubuntu0.24.04.2
	conformanceVersion = 1.4.0.0
	deviceUUID         = 8680a646-0c00-0000-0002-000000000000
	driverUUID         = 802b0057-40c2-aed9-e538-d78b797f04f4
GPU1:
	apiVersion         = 1.4.312
	driverVersion      = 580.95.5.0
	vendorID           = 0x10de
	deviceID           = 0x1fb7
	deviceType         = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
	deviceName         = NVIDIA T550 Laptop GPU
	driverID           = DRIVER_ID_NVIDIA_PROPRIETARY
	driverName         = NVIDIA
	driverInfo         = 580.95.05
	conformanceVersion = 1.4.1.3
	deviceUUID         = bafd9e33-10da-dff0-cd1d-3dd31c1e52f1
	driverUUID         = b92269a1-b525-5615-ab8a-e2095ee37192
GPU2:
	apiVersion         = 1.4.312
	driverVersion      = 580.95.5.0
	vendorID           = 0x10de
	deviceID           = 0x2805
	deviceType         = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
	deviceName         = NVIDIA GeForce RTX 4060 Ti
	driverID           = DRIVER_ID_NVIDIA_PROPRIETARY
	driverName         = NVIDIA
	driverInfo         = 580.95.05
	conformanceVersion = 1.4.1.3
	deviceUUID         = d0eb8f73-07f4-d19f-fa4c-7728059b355e
	driverUUID         = b92269a1-b525-5615-ab8a-e2095ee37192
GPU3:
	apiVersion         = 1.4.305
	driverVersion      = 0.0.1
	vendorID           = 0x10005
	deviceID           = 0x0000
	deviceType         = PHYSICAL_DEVICE_TYPE_CPU
	deviceName         = llvmpipe (LLVM 20.1.2, 256 bits)
	driverID           = DRIVER_ID_MESA_LLVMPIPE
	driverName         = llvmpipe
	driverInfo         = Mesa 25.0.7-0ubuntu0.24.04.2 (LLVM 20.1.2)
	conformanceVersion = 1.3.1.1
	deviceUUID         = 6d657361-3235-2e30-2e37-2d3075627500
	driverUUID         = 6c6c766d-7069-7065-5555-494400000000

how about running vkcube on the 4060 as root? (sudo vkcube --gpu_number 2) Since vulkaninfo running as a normal user is able to report all GPUs correctly, it will probably not help, but still worth trying.

Honestly I was expecting that vulkaninfo would not be able to see the 4060, which would explain a lot. Now I’m a bit out of ideas :/ Hopefully some other users who have better understanding of Vulkan internals will be able to advise more…

Sorry, time has run out for now so enabling a udev customization again to have eGPU working, so haven’t tried sudo vkcube yet.

I agree if someone argues udev customization I proposed above is a hack, particularly because it disables one of the hardware i.e. iGPU (one should be able to utilize all the hardware plugged in). So unmarking this thread.

I asked w/Gemini Pro supplying syslog. At the begining of the conversation it also suspected permission, so I felt confident in relying on Gemini for its assistance now that an expert on this forum and GenAI might have shared a common suspicion. After several interactions, unfortunately the situation didn’t improve. If anyone is curious you can see the detail of the series of the suggestions Gemini made and the result of each attempt at hut_10sqft#1317.