Hi there!
I’m trying to setup the ultimate work from home upgradable laptop. And the Framework is obviously key to that. For some gaming and because I work in 3D, I also use an eGPU: Razer Core X Chroma + NVIDIA 2080 RTX. My goal is to have 1 USB-C/Thunderbolt cable to rule them all: GPU, external SSD, webcam and keyboard (not using Bluetooth because I need it in Grub).
On Windows, things are mostly OK. The one thing is that not all the USB-C expansion slots (cards?) behave the same when it comes to Thunderbolt. Some of them are more reliable than other. Issues might range from the GPU not being detected (rare) to malfunctionning USB hubs (disconnecting multiple times and finally being marked by Windows as “not working properly”). It happens no matter how many USB devices I plug on the eGPU. It also happens with the internal Ethernet card that is also internally connected via USB.
On forums I’ve gathered that the USB hubs are very sensitive to power control issues. Maybe that’s it?
Anyway here is Cyberpunk 2077 running on the Framework:
On Linux, well that’s another issue entirely.
I’ve tested Ubuntu 21.04 but I couldn’t get it to boot: I got “couldn’t allocate usb_device” errors and the boot sequence stopped right there.
I’ve tested Fedora 34 (respin with kernel 5.13.16-200.fc34.x86_64). And the same “couldn’t allocate usb_device” error happens during boot except it continues and manages to boot. Then I had to:
- Install the NVIDIA drivers.
- Force GDM to use X11.
- Configure X11 to use the eGPU using
egpu-switcher
. - Enable DRM support by adding
nvidia-drm.modeset=1
to the kernel parameters.
As a result:
-
The eGPU works. As far as I can tell it works 100% of the time as long as the USB-C/Thunderbolt port being used is always the same one. Presumably because the PCI device ID is hardcoded in the X11 conf generated by
egpu-switcher
. - USB support is unreliable at best. Some devices are recognized (external SSD, webcam), others are not (keyboard, ethernet). And as far as I can tell, it’s not necessarily consistent between boots. Unplugging/plugging devices might make them work. But it breaks at the next boot. The external SSD is always working though. Other devices are kind of random.
Maybe this USB issue root cause is the same as the one on Windows?
Here are some interesting and IMHO related lines in dmesg
:
[ 12.022217] xhci_hcd 0000:5b:00.0: xHCI host not responding to stop endpoint command.
[ 12.022226] xhci_hcd 0000:5b:00.0: USBSTS:
[ 12.022256] xhci_hcd 0000:5b:00.0: xHCI host controller not responding, assume dead
[ 12.022261] xhci_hcd 0000:5b:00.0: HC died; cleaning up
[ 12.022411] usb usb7-port1: couldn't allocate usb_device
[ 12.534318] xhci_hcd 0000:5d:00.0: xHCI host not responding to stop endpoint command.
[ 12.534328] xhci_hcd 0000:5d:00.0: USBSTS:\xff\xff\xff\xff
[ 12.534357] xhci_hcd 0000:5d:00.0: xHCI host controller not responding, assume dead
[ 12.534363] xhci_hcd 0000:5d:00.0: HC died; cleaning up
[ 12.534491] usb usb11-port2: couldn't allocate usb_device
[ 12.534535] usb usb12-port1: couldn't allocate usb_device
How do I know those issues do not come from the eGPU enclosure? I have the exact same setup that works 100% of the time - using both Windows and Linux - with an XPS 13 9310 without a single specific kernel option / driver. The eGPU works and all the USB devices work. 100% of the time.
As I know the Framework team is working on the Thunderbolt certification, I hope this will be resolved. Please let me know how I can help