[Ubuntu][eGPU] Enable eGPU for Asus Flow x13
Here is the step that could be reproduce to set Asus flow x13 to use eGPU ( RTX 3080 16G) with ubuntu installed
Step 0: Check your GPU status
Fisrt, plug your egpu and lock it with the button above.
To avoid all kinds of non sence, I highly suggest you to first enable the eGPU in Windows system with XG mobile first. After the light on the egpu turn red, switch to Ubuntu and start the progress.
In any step following, you can check the status of your GPU by the command
lspci | grep VGA
nvidia-smiIf the lspci | grep VGA is able to get the NVIDIA GPU and nvidia-smi is printing the infos, then you are now done the installation. If not, follow to steps to install.
N
Step 1: Disable Secure Boot:
This step allows you to find your eGPU or else you won’t find the GPU device in the following steps even if you plugin it and shows red light on the plug. To do this, enter the bios (UEFI) of your flow x13.
- Press DEL repeatedly during boot to enter UEFI setup screen (Or use Windows recovery restart to enter UEFI)
- Press F7 for advanced mode
- Security → Secure Boot Control → Disable
- Save and exit
ref: https://asus-linux.org/wiki/fedora-guide/
Step 2: Install supergfxctl
go to this repo: https://gitlab.com/asus-linux/supergfxctl
this is the cli tool from asus to allow user to switch eGPU, use the command below in terminal to install it
sudo apt update && sudo apt install curl git build-essential
git clone https://gitlab.com/asus-linux/supergfxctl.git
cd supergfxctl
make && sudo make installthen start the service and add your user to the user group
sudo systemctl enable supergfxd.service --now
sudo usermod -a -G users $USERnow, try to use the command from supergfxctl, this should run without error.
sudo supergfxctl --mode integratedif you are not able to use the command, install asusctl also.
https://gitlab.com/asus-linux/asusctl
I’m not sure if this is also needed since I tried a lot of solutions to make this works. So there might be some dependency for this tool and the supergfxctl.
To install asusctl, run the following command:
git clone https://gitlab.com/asus-linux/asusctl.git
cd asusctl
sudo apt install libgtk-3-dev libpango1.0-dev libgdk-pixbuf-2.0-dev libglib2.0-dev cmake libclang-dev libudev-dev libayatana-appindicator3-1
sudo curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
sudo source "$HOME/.cargo/env"
make
sudo make installthen enable the daemon asusd
sudo systemctl daemon-reload && systemctl restart asusdreboot if needed
sudo rebootnow the command sudo supergfxctl --mode integrated should work.
sudo systemctl enable supergfxd.service --now
sudo usermod -a -G users $USER
sudo supergfxctl --mode integrateduse the command sudo supergfxctl --mode hybrid to switch back to default.
Step 3: Install Nvidia driver with CLI
run the command
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt upgrade
sudo apt install nvidia-driver-520you shall go throw a process like this
https://youtu.be/FAknvXs4M1w?t=116
Which i found from youtube, here’s the important part that you should do:
- set password for secure boot
just set something, you’ll use this later
2. run this command in terminal
sudo prime-select nvidia
sudo reboot3. select the Enroll MDK
select Enroll MDK -> continue -> type pasword you just set
Step 4: Done
you shall see the same result as I did in the image. use the command to check the result
lspci | grep VGA
nvidia-smiyou are now able to trigger the egpu with the command
sudo systemctl enable supergfxd.service --now
sudo usermod -a -G users $USER
sudo supergfxctl --mode egputhen after logout, you are now using egpu in the system. if you see the black screen here, reboot your PC and make sure you have the step 1 done.
you could also remove the eGPU by the command
sudo systemctl enable supergfxd.service --now
sudo usermod -a -G users $USER
sudo supergfxctl --mode integratedThen after logout and login, you could turn off the lock on the eGPU, it shall show a white light which you can now unplug it.