egpu-switcher icon indicating copy to clipboard operation
egpu-switcher copied to clipboard

Support selection of eGPUs

Open BryceBeagle opened this issue 3 years ago • 5 comments

I currently switch between 3 different eGPU scenarios:

  1. Undocked (i.e. no eGPU)
  2. Docked with AMD eGPU
  3. Docked with Nvidia eGPU

Currently, it doesn't seem possible to have 3 different Xorg .confs that the startup script selects from. This means that whenever I switch from AMD to Nvidia, or vice-versa, I need to recreate the configuration for egpu-switcher.

BryceBeagle avatar May 26 '21 14:05 BryceBeagle

Thanks for your feedback. Did you come up with a workaround?

This issue is something I'm aware of, but wasn't able to address in the current egpu-switcher script. It would require some bigger changes due to how the script works.

I am actually working on a rewrite of the script where I try to address the current limitations. You can find some more information about that on the Discussions tab. See the bullet point Multiple environments including non-eGPU docks, which covers your issue.

I'll leave that issue open for now, but would happily accept PRs if someone has a solid workaround. Sorry for the inconvenience.

hertg avatar May 30 '21 17:05 hertg

My "workaround" has been to just manually switch to a TTY and rerun the script whenever I switch setups, which is luckily only ~once/week.

Very excited for the rewrite :+1:. Is there a branch that I can monitor progress/test out during your development?

BryceBeagle avatar May 30 '21 22:05 BryceBeagle

Very excited for the rewrite +1. Is there a branch that I can monitor progress/test out during your development?

Not yet. The code I have is quite messy and rapidly changes, because I'm still figuring stuff out. There are some questions I need to be able to answer before I am confident enough to make it public I guess.

Two larger question that I don't have the answer to right now:

  1. A reliable and vendor agnostic way to identify eGPUs (like with a serial number). I could match them based on Vendor-ID/Device-ID, but that may be problematic if anyone has two eGPUs with the exact same GPU model. There is no straight forward way to differentiate those (at least solely based on PCI, because there seems to be no standardized way to get serial numbers of PCI devices). That's why I wanted to integrate with bolt, because I can identify different Thunderbolt devices from each other, as they have UUIDs. But that leads to the next question.
  2. How to find out whether a PCI device is connected through Thunderbolt, and if so, through WHICH thunderbolt device they are connected. If I could solve this, I could potentially resolve the previous problem and differentiate eGPUs – because I can differentiate the Thunderbolt Bridges they are connected on.

Solving these two problems would be a pretty big step in order to figure out the final structure of the the overwrite. And would make it possible to break out of my current prototyping phase. Although some questions would still be left open; For example how I can make the project useful for people with "eGPUs" which are not connected through thunderbolt (I was made aware recently that there are people using egpu-switcher with express-cards :smile: https://github.com/hertg/egpu-switcher/issues/62#issuecomment-830819429)

hertg avatar Jun 05 '21 21:06 hertg

@BryceBeagle It's been a while. Are you still using egpu-switcher? Or did you find another solution? With the rewrite that I've recently undertaken and am planning on releasing as stable soon, implementing this should be fairly easy.

hertg avatar Sep 14 '22 20:09 hertg

I'm still using egpu-switcher but I'm only using one eGPU now so I don't encounter this problem anymore.

BryceBeagle avatar Sep 14 '22 20:09 BryceBeagle