Skip to content

Instantly share code, notes, and snippets.

@Brainiarc7
Last active December 1, 2022 21:02
Show Gist options
  • Star 14 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save Brainiarc7/6a1652d4da6a30ae3c525c7d063d1277 to your computer and use it in GitHub Desktop.
Save Brainiarc7/6a1652d4da6a30ae3c525c7d063d1277 to your computer and use it in GitHub Desktop.
How to set up Ubuntu 18.04LTS on the Clevo P751/2DM2-G DTRs and workarounds to issues you may face.

Running Linux on the Clevo P750/1DM2-G DTR

Hello, brethren.

This post will detail how to successfully run Linux on the aforementioned notebook, with common traps and exceptions explained.

An overview:

This is an Intel Skylake-based laptop (upgradeable to a Kabylake-grade Desktop processor) with a desktop-class Pascal GPU, the GTX 1070. Switchable graphics (Optimus) is absent, which eliminates a significant burden of running Linux on this machine.

Common SKU brandings for this machine exist as:

Eurocom Sky X4E2

Origin Eon 15-X (2016 model)

Schenker XMG U507

AVADirect Avant P750DM2-G

Obsidian's Clevo P751DM2-G

Sager NP9152

Among others.

For storage, you get dual M.2 slots and dual 2.5' SATA III storage bays on the motherboard that accept drives of up to 9mm height. The M.2 slots are also NVMe compliant, and should work with any NVMe drive in the market with an M-key slot and 2280 -spec board, such as the 960 Evo and Pro.

Installation notes:

  1. For dual boot use, disable secure boot, and ensure that you're booting with pure UEFI mode enabled. Avoid CSM and legacy boot modes as much as possible, especially if you rely on TPM.

  2. Install Windows first. Stick to Windows 10.

  3. With Linux, ensure that on boot, the nouveau module is blacklisted. You can do so by tapping the "e" button on the boot menu entry and appending blacklist=nouveau to the linux boot arguments, then tap F10 to resume booting. This prevents lockups.

  4. Proceed with the installation as usual. Depending on your installation media, and the distribution of choice, ensure that:

(a). You install the Nvidia proprietary drivers. On Ubuntu, add the NVIDIA CUDA repository and Oibaf's PPAs. On Fedora and CentOS, stick to Negativo's driver repositories and do not add RPMFusion. The two repos aren't compatible and negativo packages the most important packages from RPMFusion anyways.

(b). Partition your drives with the GPT-style partition table. All current Linux distributions support this.

(c). The wireless and LAN modules work out of the box, even for the Killer wireless card. Refer to this document on upgrading firmware and tweaking the wireless card if you have any concerns about reliability.

Things that are known to be broken (and workarounds provided where applicable) with Linux:

  1. The fingerprint sensor does not work. This may be the case for a while. The device in question is made by Synaptics, identified as Synaptics WBDI platform (usb 79) on Windows 10. On Linux, its' undetected.

  2. You may get lockups on boot with Intel's SGX and VT-d IOMMU enabled. The following workaround fixes it:

Add acpi_osi=! "acpi_osi=Windows 2009" to the kernel boot parameters and regenerate the grub configuration file. For Ubuntu, you can run update-grub.

  1. Where possible, use PowerTop to handle power management. With the --auto-tune option, it can significantly enhance power usage, making your Linux laptop usable on battery life. Also, remember to run powertop --calibrate often to get better approximations on power draw and savings. The Arch Wiki has an excellent resource on using PowerTop. The first Google search will take you there.

  2. Most of the WMI-driven keyboard keys work, such as sleep (suspend), backlight control, volume up and down, etc. For the Airplane mode and other special keys, you'll need the tuxedo-wmi driver, installed as shown:

Add tuxedo's package repositories to your Linux distribution. Note that unlike System76, whose drivers will only work on their systems, Tuxedo's repos contain the package mentioned above. After adding the repositories, proceed to install tuxedo-wmi when done and reboot.

Ubuntu / Lubuntu / Kubuntu / Xubuntu / Gnome / Cinnamon and Mate:

From the main menu / dashboard, select Software & Updates and go to the Other Software tab . Select Add ... and enter as APT line:

deb http://deb.tuxedocomputers.com/ubuntu <UBUNTU_CODENAME> main
deb http://graphics.tuxedocomputers.com/ubuntu <UBUNTU_CODENAME> main
deb http://intel.tuxedocomputers.com/ubuntu <UBUNTU_CODENAME> main
deb http://kernel.tuxedocomputers.com/ubuntu <UBUNTU_CODENAME> main

Please replace <UBUNTU_CODENAME> with the version alias of your system.

Codename for Ubuntu 14.04: trusty 
Codename for Ubuntu 16.04: xenial 
Codename for Ubuntu 16.10: yakkety 
Codename for Ubuntu 17.04: zesty
Codename for Ubuntu 18.04: Bionic

Check the key data (see below) and confirm with `i (always trust)`.

Handling Key installations for package signing verification:

GnuPG Keys:

Packages (and metadata) of the repositories are signed with a GnuPG (GPG) key to verify their authenticity. In particular, when importing the public key, check the respective fingerprint / fingerprint for compliance with the data given below before importing the key.

Ubuntu / Lubuntu / Kubuntu / Xubuntu / Gnome / Cinnamon and Mate:

Import the public key by running:

wget -O - http://deb.tuxedocomputers.com/0x54840598.pub.asc | sudo apt-key add -
sudo apt-key adv - fingerprint 54840598

Verify the key with:

pub 4096R / 54840598 2016-05-12
Key fingerprint = E5D0 C320 BBCE 8D21 CDF6 0DD5 120E D28D 5484 0598
uid TUXEDO Computers GmbH (www.tuxedocomputers.com) <tux@tuxedocomputers.com>
sub 4096R / A5842AD4 2016-05-12
  1. Audio through the headphone jack will not work out of the box. I was not able to get it working even through the hdajackretask package. As a workaround, ensure you're using a USB-driven headset. You can also set up external surround sound setup with external 3-way 3.5mm jack output(s) as shown here. That setup, in my case, works fine with the Logitech Z506 5.1 surround sound system.

  2. Media capabilities: For the Nvidia GPU, you're able to use NVENC on FFmpeg, libav and other applications that support it. For the Pascal-based GPU, VDPAU does not expose support for VP8 and HEVC 10-bit decoding. For that, you will need CUVID, built as a decoder on FFmpeg or libav. Some applications, such as mpv can be configured to take advantage of nvdec.

  3. RAID 0/1/5 will NOT work under Linux.

  4. Both Thunderbolt ports work out of the box. However, if you intend to connect a docked display to them, you'll have to set the DDI Control option in the BIOS as shown: Navigate to BIOS > Advanced > Advanced Chipset Control > DDI Control , and modify the “DDI to DP” option to “DDI to TB”, and restart. It's recommended to run at least Linux 4.15 to gain access to advanced features such as Thunderbolt networking, security levels administration and improved daisy-chaining compatibility. User-space tools such as bolt are being worked on to enable a smooth transition into userland-based Thunderbolt device management.

On hardware upgrades:

  1. I was able to install two 1 TB Samsung 960 Evo NVMe SSDs, and I can use either as a boot device. No performance regression(s) or thermal throttling is observed, even under high load. This large notebook has more than adequate space for ambient cooling on both SSDs. Upgrading the two 2.5mm HDDs is also very easy, as both caddies are present. Only the bottom panel is needed to access storage and two of the RAM slots on the system. The other pair of RAM modules are under the keyboard, accompanied by the optional M.2 3042 LTE module and the WLAN adapter.

  2. I was able to install an M.2 3042 module based on the Qualcomm Snapdragon X5, branded as a HP LTE module. The system is already pre-wired for LTE, and as such, antennae and connectors are already provided. To get it working properly, take note of the udev rules here and install the latest libqmi package(s) on your system. Connecting to the LTE network from here on can be done with the network manager package. You can also use the modem-manager package to send and receive SMSes, and to monitor traffic and bandwidth usage. USSD codes are not (yet) functional (as at the moment), and neither is the location platform sensor (GNSS).

  3. A warning on RAM: Ensure that all sticks, when populating all four DIMM slots, are running at 2400MHz and above. If you stick to cheaper 2133MHz modules, you';ll then be required to populate all RAM slots with identical SODIMMs. And even then you'll run into DRAM timing issues.

  4. On overclocking: If needed, follow this guide. Best results are guaranteed only with a delidded processor and proper thermal compound use (liquid metal strongly recommended).

  5. The stock BIOS issued by Clevo is often trash. I'd strongly recommend upgrading to the Prema Mod BIOS which addresses security updates, performance and firmware bugs very well. If possible, invest in getting your hardware through a Clevo reseller that has a partnership with Prema Mod. Prema also provides firmware updates for the Infineon TPM (on affected models) and Intel's ME.

On assembly:

  1. The build quality is doable. However, the lid's hinges may feel flimsy for a DTR. The rear exhausts' fins also feel cheaply made.

  2. It takes several screws for the dual rear panel, one panel dedicated to storage and the other covering the fused heatsink assembly and RAM slots. No special tooling is needed to disassemble the notebook.

  3. Every component, apart from the WLAN, dual RAM slots and the LTE module are easily accessible from the top side.

Helpful tips:

If you work with external high refresh monitors, such as the Acer Predator Z35, it might be useful to be able to quickly load up panel settings when needed, as is the case with settings that you'd prefer not stored persistently in an xorg.conf file.

You can combine bash aliases and nvidia-settings package to get up and started as shown:

Query the CurrentMetaMode after setting up the Z35P as the only active Display in the Nvidia settings control panel by running:

nvidia-settings -q CurrentMetaMode

Output:

 Attribute 'CurrentMetaMode' (phantom:1.0): id=50, switchable=no, source=nv-control :: DPY-4: 2560x1080_200 @2560x1080 +0+0 {ViewPortIn=2560x1080, ViewPortOut=2560x1080+0+0}

With no other display panel connected, this would have been the output:

Attribute 'CurrentMetaMode' (phantom:1.0): id=50, switchable=yes, source=xconfig :: DPY-1: 1920x1080_120 @1920x1080 +0+0 {ViewPortIn=1920x1080, ViewPortOut=1920x1080+0+0}

Save everything after the :: to the end of the attribute (in this case: DPY-4: 2560x1080_200 @2560x1080 +0+0 {ViewPortIn=2560x1080, ViewPortOut=2560x1080+0+0}) and use to reconfigure your displays with nvidia-settings --assign "CurrentMetaMode=_your_meta_mode_".

For the bash aliases, write new entries under ~/.bash_aliases for both settings:

Sample from my setup:

 alias nvGamingMode='nvidia-settings --assign "CurrentMetaMode=DPY-4: 2560x1080_200 @2560x1080 +0+0 {ViewPortIn=2560x1080, ViewPortOut=2560x1080+0+0}"'
alias nvDefaultDisplay='nvidia-settings --assign "CurrentMetaMode=DPY-1: 1920x1080_120 @1920x1080 +0+0 {ViewPortIn=1920x1080, ViewPortOut=1920x1080+0+0}"'

So that when I connect this panel and set it as the only display, I can quickly engage its' highest refresh rate and desired resolution (2560x1080@200Hz) by simply running:

nvGamingMode

And with the inbuilt display only:

nvDefaultDisplay

And can confirm that the settings apply via:

xrandr

Output:

Screen 0: minimum 8 x 8, current 2560 x 1080, maximum 32767 x 32767
HDMI-0 disconnected (normal left inverted right x axis y axis)
DP-0 connected (normal left inverted right x axis y axis)
   1920x1080    120.11 +  60.06  
DP-1 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
DP-3 connected primary 2560x1080+0+0 (normal left inverted right x axis y axis) 814mm x 346mm
   2560x1080     59.98 + 200.00*  143.94   119.95    99.94    84.96  
   1024x768      60.00  
   800x600       60.32  
   640x480       59.94  
DP-4 disconnected (normal left inverted right x axis y axis)

And that is with the laptop's display disabled in gnome-settings.

With the inbuilt panel only:

Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 32767 x 32767
HDMI-0 disconnected (normal left inverted right x axis y axis)
DP-0 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 344mm x 193mm
   1920x1080    120.11*+  60.06  
DP-1 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
DP-3 disconnected (normal left inverted right x axis y axis)
DP-4 disconnected (normal left inverted right x axis y axis)

You can use any alias names you want.

Personal notes: The notebook is on the heavy side of things. A considerable load if you commute frequently. Thanks and regards,

Brainiarc7

@masaeedu
Copy link

Have you encountered issues with screen backlight control? I have an acpi_video0 entry in /sys/class/backlight, and the device files in there do seem to change when I use the backlight keys, but it doesn't seem to have any actual effect on the screen brightness.

@hsm2k3
Copy link

hsm2k3 commented Sep 30, 2018

are these workarounds all necessary as of today? I tried installing ubuntu with all the default settings and it seems to be running smoothly compared to before. I'm operating on the P7xxTM1 model. I used their newer installer not the one they first released. A lot of bugs seem to be fixed. Only problem I have encountered so far is with suspend/sleep not working properly. I have to disable them entirely.

@Brainiarc7
Copy link
Author

Hey @hsm2k3,

The workaround for 5.1 audio may be necessary. The rest, not so much. When this guide was prepared, it was initially on the basis of Ubuntu 16.04LTS.

@masaeedu: What are your boot arguments? Show me the output of:

cat /proc/cmdline

@SiddharthPant
Copy link

I have a P7XXTM1 model and most of the things work out of the box. Only minor issues are keyboard backlight and fingerprint. I was able to fix the backlight with kernel module from clevo-xsm-wmi. There README is outdated so if anyone needs they can follow my comments and links that I shared on this issue: Issue #38.
Fingerprint scanner is still not working and if anyone knows how to make it work that will help.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment