2013 15" Lenovo Thinkpad T540P [4th,4C,Q] + RX 570 @ 4Gbps-EC2 (EXP GDC 8.5d) + ...
Clear all

2013 15" Lenovo Thinkpad T540P [4th,4C,Q] + RX 570 @ 4Gbps-EC2 (EXP GDC 8.5d) + Linux Arch [Jakub_Mach]  


New Member
Joined: 6 months ago

System specs

Laptop: ThinkPad T540p (20BFS0W505) (no dGPU version)

Internal Display: LCD 15" 1920x1080

CPU: Intel Core i7-4900MQ (iGPU: Intel HD 4600)


BIOS Version: GMET74WW (2.22 ) Release Date: 01/21/2016


Kernel: Linux T540 5.3.7-arch1-1-ARCH #1 SMP PREEMPT Fri Oct 18 00:17:03 UTC 2019 x86_64 GNU/Linux

Distro: Arch Linux (rolling release)


eGPU hardware


Hardware pictures

Installation steps

0. iGPU VRAM = 512 MB (don't know if required, needs at the BIOS version mentioned above in order to have the option)

0. BIOS -> Power -> PCI Express Power Management: [Disable]

0. BIOS -> Power -> ExpressCard Speed: [Automatic] (Gen2 link)

1. Boot up Linux with pci=nocrs on command prompt (e.g. BOOT_IMAGE=/boot/vmlinuz-linux root=UUID=bbd53113-cb00-47de-a0c9-59b235014316 rw pci=nocrs)

2. (I don't use a login manager so at this stage I login into TTY, kill session manager appropriately)

Make sure you are up-to-date: pacman -Syu (this stressed me for a while, not having all the libs on the corresponding versions can happen and X won't start (e.g. I had llvm-libs older than everything else))

3. Create/generate (I used https://github.com/hertg/egpu-switcher and edited appropriately) /etc/X11/xorg.conf:

Section "Module"
Load "modesetting"

Section "Device"
Identifier "Device0"
Driver "amdgpu"
BusID "PCI:5:0:0"
Option "AllowEmptyInitialConfiguration"
Option "DRI" "3"
Option "AllowExternalGpus" "True"

4.0 Remove any nvidia packages left (xf86-video-nouveau, nvidia, etc.) (had to do this because I was testing with GTX 560 Ti before that) and blacklist the nouveau driver if its present!

4.1 Install required packages (some of these might not be needed, I forgot during the grind to get X to start which ones are optional): (see https://wiki.archlinux.org/index.php/AMDGPU )

  • xf86-video-amdgpu
  • mesa
  • libglvnd
  • glu
  • libva-mesa-driver (for video decoding)
  • mesa-vdpau (for video decoding)
  • llvm-libs
  • mesa-demos (for testing GLX for 64bit apps)
  • vulkan-radeon (for Vulkan apps)


For 32bit support:

  • lib32-libglvnd
  • lib32-mesa
  • lib32-llvm-libs
  • lib32-glu
  • lib32-mesa-vdpau (for video decoding)
  • lib32-libva-mesa-driver (for video decoding(?))
  • lib32-mesa-demos (for testing GLX for 32bit apps)
  • lib32-vulkan-radeon (for 32bit Vulkan apps)


4.2 Reboot so that the amdgpu kernel module gets loaded.

5. Rebooted into tty (don't forget pci=nocrs, add as seperate menu item to GRUB for example), login on tty, "startx"

6. Pseudotest for GLX:

┌──[[email protected]]─[~]
└──$ glxinfo32 | grep "OpenGL renderer string"
OpenGL renderer string: Radeon RX 570 Series (POLARIS10, DRM 3.33.0, 5.3.7-arch1-1-ARCH, LLVM 9.0.0)
┌──[[email protected]]─[~]
└──$ glxinfo | grep "OpenGL renderer string"
OpenGL renderer string: Radeon RX 570 Series (POLARIS10, DRM 3.33.0, 5.3.7-arch1-1-ARCH, LLVM 9.0.0)


  • Rebooting without powering off works. Dock and PSU both start accordingly when laptop is powered on.
  • Powering off, disconnecting eGPU and booting works flawlessly (egpu-switcher switches to intel xorg.conf for me)
  • I am not sure how to benchmark this properly on Linux or how to find out the bandwith speeds. Any clues welcome.
  • So far it's been pretty good, only been testing it for several hours now (got the used RX570 today).
  • Gen 2 didn't crash yet, nor any artifacts (it didn't even start when I tested with an old GTX 560).
  • Tried Half-Life 2560x1080 - stable 500 FPS. CS:GO not so much, 1280x720, 150 FPS all Low, had to do r_dynamic 0 otherwise the game would stutter to 40 FPS everytime someone was shooting a gun (probably something with the muzzleflash effect, dunno).
  • YouTube in Firefox works and is accelerated (only tested on H264&AVC1) (about:support)
  • mpv works as well (vaapi)
  • I don't use internal screen, I use this laptop as a desktop only. So far I only have 1 of my 3 displays hooked up (2560x1080), as I need to buy an HDMI<>HDMI and DVI-D<>DisplayPort cables first to populate the remaining HDMI and DVI ports on the GPU.
  • Pretty happy with the setup, probably will do some DIY enclosure so it doesn't just sit next to my keyboard waiting for me to knock it over. Also helped me with the CPU thermals as the iGPU is now not used. Sometimes the difference is as big as -20°C as opposed to when I was using the iGPU for video decoding/games/etc.
  • (over/under)clocking works (after adding amdgpu.ppfeaturemask=0xffffffff) as per https://wiki.archlinux.org/index.php/AMDGPU#Overclocking
This topic was modified 6 months ago

Lenovo ThinkPad T540p - EXP GDC Beast 8.5d (Dell DA-2) w/ Sapphire RX 570 ITX

itsage and nando4 liked
Illustrious Member Admin
Joined: 3 years ago

@jakub_mach Welcome aboard! This is a great build. I'm amazed how much nicer the AMDGPU overclocking utility looks compared to AMD official Wattman in Windows.


external graphics card builds
best laptops for external GPU
eGPU enclosure buyer's guide

New Member
Joined: 6 months ago

Thanks. Glad I got it all workin, though so far I couldn't get the DVI-D port working with either a DVI-D (GPU) -> DisplayPort (monitor) cable or a DVI-D<>DVI-D cable. :/ Didn't try the HDMI out yet, as I still haven't bought a cable for that. (My main monitor has DP, MiniDP, VGA, DVI-D, HDMI, but my other two only have VGA, DP & HDMI, so I really need to get that DVI to work. :/)

And yeah, that GTK Wattman really shows the power of open-source. 🙂

Lenovo ThinkPad T540p - EXP GDC Beast 8.5d (Dell DA-2) w/ Sapphire RX 570 ITX