Installing Manjaro Linux on ASUS Zenbook 14 (UX433FN-A5104T)

As I have been labeled as an impulsive, irrational individual, here comes another irrational and impulsive thing I have managed over the course of the last days. I came to a conclusion, that I need a new computer (understand laptop) that should be capable of some pretty advanced stuff, be portable and MUST be good looking – we all know that is the most important one. Also, it cannot be an apple…

On a normal day, I would research the compatibility of such a device with Linux, which is the OS that I prefer to use. On this day, however, I just jumped into a purchase of the first reasonably looking notebook / laptop which came into my eye. Actually, was suggested by a colleague as “looking god damn great”. I just bought it.

The size is just under a foot

I wanted it to be close to a foot, so…

Enough with the chat, let’s get onto the roller coaster of despair and frustration, seemingly with a happy end.

The specs:

  • Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz
  • 16GB RAM
  • Intel Corporation UHD Graphics 620 (Whiskey Lake)
  • NVIDIA Corporation GP108M [GeForce MX150]
  • 512 GB NvME SSD
  • FHD IPS screen 1920×180 14″
  • 4200mAh battery
  • supposed ~6hrs of on-the-battery-time
  • Price paid: 31990 CZK (~1200 EUR)

Part 1: The build and overall impression

Took it out of the box and what do you know – it was a piece of crap – I thought to myself. The keyboard is spongy, the whole thing flexes, opening and closing felles like jerking of in a frozen Jacuzzi with 32 electric eels stuck to your balls… (numbers picked randomly).

Single row enter – no comment, this is just bad.

A questionable on/off button, that is placed in the exact spot, where most of the other keybaords have their DELETE key. If you delete a letter, you might end up deleting the whole thing by switching it off.

a mixed bag of HOME, END, PGUP, PGDN as FN+F* mappings. WHY? Honestly, Why?! would you have non-dedicated buttons for these and dedicated buttons for – say – PRINSTCREEN? (INS and DEL are dedicated as well, but that is definitely fine, especially for copy and paste on linux)

The whole thing just feels like a piece of plastic, but hey, it will only set you back some $1300 or so. 🙂

Durable? Maybe.

It’s got ports on all sides, you can imagine. No THUNDERBOLT charging support. Not a biggie for me.

2 and a half USB, HDMI, charger, microSD slot, headphone / mic jack and a couple leds.

Ports, yes..

A pleasant surprise were the speakers. Actually quite good, if you can say that about a piece of garbage small crap with big name.

Speakers on the front, facing under

The whole surface is a fingerprint magnet. If you want to keep it clean, don’t touch it.

Fingers off

Part 2: Windows 10 setup – really?

Now this is what convinced me to not even attempt to upgrade win10 to PRO (yes it only came with HOME edition) to then try to install the Linux subsystem, a.k.a Ubuntu

This setup tries to talk you through the process, yes TALK you through. It is not a matter of clicking next, you hear alexa, siri or whatever other shit win is running right now, saying what you need to do. The screen reads “Set up user account” and that absolutely irritating voice is telling you in all the possible flowery and intricate way to “set up your user account”. The voice keeps blabbering for good minute and yes, you guessed it, you CANNOT TURN THE VOICE OFF.

I don’t have any examples of that, as I was busy shouting at the damn thing to finally shut up.

Part 3: Linux install, at least it shuts up

To be honest, getting a few thing out of the way first: You won’t get all the functionality on Linux. Some things just won’t be working.

Not working on linux:

  • IR cams to scan your beautiful neck decoration (head) to log in. I don’t need them, so I did not even check. The windows hello login features are obviously not working here
  • Touchpad numpad. Just forget it.
  • automatic dual-graphics, but we’ll get to that. It can work in a semi-auto mode 🙂

Working out of the box:

  • CPU with all the tweaks / all PCI stuff
  • Sound
  • Screen diming
  • power control / apm
  • Keyboard backlight
  • All FN related keys and bindings
  • WiFi
  • BT and USB

Needs tweaking but works afterwards

  • Intel Graphics (low power)
  • NVIDIA graphics (MX150 – the turbo charged GPU)
  • even better apm / i7z features
  • OpenCL
  • Hybrid graphics setup

milestone A: preparation)

Download Manjaro Linux, as that is the one I used. Version 18.0.2, the XFCE4 edition: https://osdn.net/dl/manjaro/manjaro-xfce-18.0.2-stable-x86_64.iso

Burn, or better said DD this onto a USB drive as this ISO is a hybrid version so you can directly put it to the USB drive by (assuming sdb is your USB device):

dd if=./manjaro18.0.2.iso of=/dev/sdb status=progress

milestone B: boot and install)

  1. <F2> – > disable Secure Boot
  2. Plug in the USB
  3. reboot
  4. <F2> or <ESC> and select the proper booting option
  5. In the grub menu, navigate to line saying Manjaro… press ‘e’ for edit and replace the line saying driver=free with driver=non-free. Also, delete all the parts which say i915, radeon, nuveau.modeset=1.
  6. <F10> to boot the edited shit
  7. Wipe the whole damn thing clean, no dual-boots, this Lilliput gets confused then
  8. Enjoy the install. If it stops and freezes at 93%, you were not paying attention at point 5.

milestone C: Init 3, please)

After removing the USB and booting from the freshly installed top notch Linux open source shit, we need to get it to be less free.

Hit <ESC> as fuck to ge to the grub menu. The safest way is to hit it repeatedly right after booting. This key is also tied to boot device selection, so select the proper hdd partition and continue juicing the <ESC> key.

GRUB menu shoud appear. Navigate to “Manjaro” entry, ‘e’ for edit and on the line saying “linux…” add a “3” at the end of the line. That should get you to the command line, instead of the graphics mode.

milestone d: getting the damn graphics card to work, at least one of them two)

This, fortunately is even simpler than it seems, as Manjaro has a nifty little thing called the Manjaro HardWare (D)utility :-). Now…

[ventil@radon Desktop]$ mhwd
0000:02:00.0 (0302:10de:1d12) Display controller nVidia Corporation:
NAME VERSION FREEDRIVER TYPE
video-hybrid-intel-nvidia-bumblebee 2018.08.09 false PCI
video-hybrid-intel-nvidia-390xx-bumblebee 2018.08.09 false PCI
video-nvidia 2018.08.09 false PCI
video-nvidia-390xx 2018.08.09 false PCI
video-linux 2018.05.04 true PCI
0000:00:02.0 (0300:8086:3ea0) Display controller Intel Corporation:
NAME VERSION FREEDRIVER TYPE
video-hybrid-intel-nvidia-bumblebee 2018.08.09 false PCI
video-hybrid-intel-nvidia-390xx-bumblebee 2018.08.09 false PCI
video-linux 2018.05.04 true PCI
video-vesa 2017.03.12 true PCI

At least all the hardware is detected, right? Now all we need to do is select the proper drivers. This was a little bit of hit and miss, but after some time, I reckoned, you need the “video-hybrid-intel-nvidia-390xx-bumblebee”. So you do it!

sudo mhwd -i pci video-hybrid-intel-nvidia-390xx-bumblebee

Oh, your network is not connected, let’s fix that…

nmcli d wifi connect 'wifiSSID' password 'password'

Now, where were we…

sudo mhwd -i pci video-hybrid-intel-nvidia-390xx-bumblebee
pacman -Ss opencl # check what opencl stuff is available
sudo pacman -S opencl-nvidia-390xx
sudo pacman -S mesa
sudo pacman -S clinfo
sudo usermod -aG bumblebee <user>
reboot

Congratulations, you should be the proud owner of a Manjaro distribution. May the power of pacman be with you.

milestone e: OPENCL – the final one?

This is a little tricky here. The bumblebee drivers let you choose (so semi-auto) the card you want to use. Simply by typing optirun <command>, it will run the application with the dedicated GPU. Try it out:

[ventil@radon Desktop]$ clinfo
Number of platforms 0
[ventil@radon Desktop]$ optirun clinfo
Number of platforms 1
Platform Name NVIDIA CUDA
Platform Vendor NVIDIA Corporation
Platform Version OpenCL 1.2 CUDA 9.1.84
Platform Profile FULL_PROFILE
Platform Extensions cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_fp64 cl_khr_byte_addressable_store cl_khr_icd cl_khr_gl_sharing cl_nv_compiler_options cl_nv_device_attribute_query cl_nv_pragma_unroll cl_nv_copy_opts cl_nv_create_buffer
Platform Extensions function suffix NV
Platform Name NVIDIA CUDA
Number of devices 1
Device Name GeForce MX150
Device Vendor NVIDIA Corporation
Device Vendor ID 0x10de
Device Version OpenCL 1.2 CUDA
Driver Version 390.87
Device OpenCL C Version OpenCL C 1.2
Device Type GPU
Device Topology (NV) PCI-E, 02:00.0
Device Profile FULL_PROFILE
Device Available Yes
Compiler Available Yes
Linker Available Yes
Max compute units 3
Max clock frequency 1037MHz
Compute Capability (NV) 6.1
Device Partition (core)
Max number of sub-devices 1
Supported partition types None
Supported affinity domains (n/a)
Max work item dimensions 3
Max work item sizes 1024x1024x64
Max work group size 1024
Preferred work group size multiple 32
Warp size (NV) 32
Preferred / native vector sizes
char 1 / 1
short 1 / 1
int 1 / 1
long 1 / 1
half 0 / 0 (n/a)
float 1 / 1
double 1 / 1 (cl_khr_fp64)
Half-precision Floating-point support (n/a)
Single-precision Floating-point support (core)
Denormals Yes
Infinity and NANs Yes
Round to nearest Yes
Round to zero Yes
Round to infinity Yes
IEEE754-2008 fused multiply-add Yes
Support is emulated in software No
Correctly-rounded divide and sqrt operations Yes
Double-precision Floating-point support (cl_khr_fp64)
Denormals Yes
Infinity and NANs Yes
Round to nearest Yes
Round to zero Yes
Round to infinity Yes
IEEE754-2008 fused multiply-add Yes
Support is emulated in software No
Address bits 64, Little-Endian
Global memory size 2099904512 (1.956GiB)
Error Correction support No
Max memory allocation 524976128 (500.7MiB)
Unified memory for Host and Device No
Integrated memory (NV) No
Minimum alignment for any data type 128 bytes
Alignment of base address 4096 bits (512 bytes)
Global Memory cache type Read/Write
Global Memory cache size 49152 (48KiB)
Global Memory cache line size 128 bytes
Image support Yes
Max number of samplers per kernel 32
Max size for 1D images from buffer 134217728 pixels
Max 1D or 2D image array size 2048 images
Max 2D image size 16384x32768 pixels
Max 3D image size 16384x16384x16384 pixels
Max number of read image args 256
Max number of write image args 16
Local memory type Local
Local memory size 49152 (48KiB)
Registers per block (NV) 65536
Max number of constant args 9
Max constant buffer size 65536 (64KiB)
Max size of kernel argument 4352 (4.25KiB)
Queue properties
Out-of-order execution Yes
Profiling Yes
Prefer user sync for interop No
Profiling timer resolution 1000ns
Execution capabilities
Run OpenCL kernels Yes
Run native kernels No
Kernel execution timeout (NV) Yes
Concurrent copy and kernel execution (NV) Yes
Number of async copy engines 2
printf() buffer size 1048576 (1024KiB)
Built-in kernels (n/a)
Device Extensions cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_fp64 cl_khr_byte_addressable_store cl_khr_icd cl_khr_gl_sharing cl_nv_compiler_options cl_nv_device_attribute_query cl_nv_pragma_unroll cl_nv_copy_opts cl_nv_create_buffer
NULL platform behavior
clGetPlatformInfo(NULL, CL_PLATFORM_NAME, …) NVIDIA CUDA
clGetDeviceIDs(NULL, CL_DEVICE_TYPE_ALL, …) Success [NV]
clCreateContext(NULL, …) [default] Success [NV]
clCreateContextFromType(NULL, CL_DEVICE_TYPE_DEFAULT) No platform
clCreateContextFromType(NULL, CL_DEVICE_TYPE_CPU) No devices found in platform
clCreateContextFromType(NULL, CL_DEVICE_TYPE_GPU) No platform
clCreateContextFromType(NULL, CL_DEVICE_TYPE_ACCELERATOR) No devices found in platform
clCreateContextFromType(NULL, CL_DEVICE_TYPE_CUSTOM) Invalid device type for platform
clCreateContextFromType(NULL, CL_DEVICE_TYPE_ALL) No platform
ICD loader properties
ICD loader Name OpenCL ICD Loader
ICD loader Vendor OCL Icd free software
ICD loader Version 2.2.12
ICD loader Profile OpenCL 2.2

So for example, for darktable to utilize the power of the GPU, you should run it as

optirun darktable

The problematic suspend

As one can only assume, there are some quirks and problems. Most of them lurk in the dark and jump out the moment you expect them the very least.

This is the case with the suspend state. Manjaro linux handles it as it only can, giving you the impression that everything is OK and the computer is going down to suspend state. I think these were normally labeled as C3 state.

Somehow, the darn thing just goes into blinking sleeping doing mode as it should, BUT consumes the same amount of power as under normal operation. This way, your battery is gone before you’re able to return from the toilet – provided your toilet time was around 10 hours.

This problem is one of those which I have currently no answer to and irritates me beyond possible. For now, the workaround is to enable hibernate at lid close. The hibernate procedure takes around 1-2 minutes, as it needs to write the whole 16G dump of RAM. Well, the startup is not the fastest either, but you can always switch it off, right? Wrong! But for now, this is how it is.

Cheers,

… maybe to be continued.

Leave a Reply

Your email address will not be published. Required fields are marked *