MSI P15

From ArchWiki
Jump to navigation Jump to search

Introduction

Also known as Prestige 15 or A10SC, this laptop is part of the MSI Prestige series for creators. Depending on the configuration, it can offer up to 64GB DDR4, a UHD IPS display (or FHD IPS 60hz matte display), 2 slots Nvme (one PCIe 2x, the oter can run both PCIe 2x/M2 Sata drives) and up to 16h on battery. Other notable features are the Intel Core i7 10710U, for which the TDP has been increased from 15W (as described on ARK to 44W. Regarding the graphics, the Nvidia 1650 Max-Q does not have any active output, instead this is off-loaded to the iGPU.

In general, the laptop works out of the box with Linux, but the fingerprint reader does not. Due to this, there is the Validity90 project on GitHub to port the Synaptics 06cb:009b device to Linux. Please also note that by manufacturing this laptop tends to overheat under high load, and the installation helps to mitigate this.

Note: Many of the info present here have been taken from [1]

Configuration

BIOS

It can be accessed by pressing Del button at boot. In particular, SecureBoot needs to be disabled at first startup, but it can be configured later. This laptop supports SecureBoot keys reset to factory and custom keys install. To access advanced options in bios, press R_alt+L_ctrl+L_shift+F2 after entering bios.

Nvidia

The graphics card work well with Bumblebee and the NVIDIA proprietary driver.

Wi-Fi

The Wi-Fi card works out of the box. Sometimes it gets stuck on startup and needs reset, which can also be accomplished by reloading all the iwlwifi, iwlmvm and restarting wpa_supplicant.

Also, the wifi card is recognised by lspci as an Intel Corporation Wireless-AC 9462 instead of an AX201. Nevertheless, the firmware loaded seems to be the right one as proved by dmesg:

$ dmesg | grep iwlwifi
[    3.997732] iwlwifi 0000:00:14.3: enabling device (0000 -> 0002)
[    4.002800] iwlwifi 0000:00:14.3: Direct firmware load for iwlwifi-QuZ-a0-hr-b0-52.ucode failed with error -2
[    4.002817] iwlwifi 0000:00:14.3: Direct firmware load for iwlwifi-QuZ-a0-hr-b0-51.ucode failed with error -2
[    4.002831] iwlwifi 0000:00:14.3: Direct firmware load for iwlwifi-QuZ-a0-hr-b0-50.ucode failed with error -2
[    4.002846] iwlwifi 0000:00:14.3: Direct firmware load for iwlwifi-QuZ-a0-hr-b0-49.ucode failed with error -2
[    4.005724] iwlwifi 0000:00:14.3: TLV_FW_FSEQ_VERSION: FSEQ Version: 43.2.23.17
[    4.005727] iwlwifi 0000:00:14.3: Found debug destination: EXTERNAL_DRAM
[    4.005728] iwlwifi 0000:00:14.3: Found debug configuration: 0
[    4.005889] iwlwifi 0000:00:14.3: loaded firmware version 48.4fa0041f.0 QuZ-a0-hr-b0-48.ucode op_mode iwlmvm
[    4.155813] iwlwifi 0000:00:14.3: Detected Intel(R) Wi-Fi 6 AX201 160MHz, REV=0x354
[    4.163604] iwlwifi 0000:00:14.3: Applying debug destination EXTERNAL_DRAM
[    4.164048] iwlwifi 0000:00:14.3: Allocated 0x00400000 bytes for firmware monitor.
[    4.308333] iwlwifi 0000:00:14.3: base HW address: 0c:dd:24:09:e7:0f
[    4.531870] iwlwifi 0000:00:14.3 wlo1: renamed from wlan0
[    7.166796] iwlwifi 0000:00:14.3: Applying debug destination EXTERNAL_DRAM
[    7.311487] iwlwifi 0000:00:14.3: FW already configured (0) - re-configuring
[    7.340051] iwlwifi 0000:00:14.3: Applying debug destination EXTERNAL_DRAM
[    7.483555] iwlwifi 0000:00:14.3: FW already configured (0) - re-configuring
[ 2523.030392] iwlwifi 0000:00:14.3: Applying debug destination EXTERNAL_DRAM
[ 2523.181385] iwlwifi 0000:00:14.3: FW already configured (0) - re-configuring
[ 9593.758412] iwlwifi 0000:00:14.3: Applying debug destination EXTERNAL_DRAM
[ 9593.910136] iwlwifi 0000:00:14.3: FW already configured (0) - re-configuring
[12141.011392] iwlwifi 0000:00:14.3: Applying debug destination EXTERNAL_DRAM
[12141.164290] iwlwifi 0000:00:14.3: FW already configured (0) - re-configuring
[12182.700616] iwlwifi 0000:00:14.3: Applying debug destination EXTERNAL_DRAM
[12182.853009] iwlwifi 0000:00:14.3: FW already configured (0) - re-configuring

Webcam

The laptop has a keyboard switch that dis/connect the webcam from the laptop. This can be triggered by the Fn key F5.

Power Management

The battery indicator works, as well as the charge. It is suggested to limit the charging power using iswAUR and setting ec_sys.write_support=1 as kernel parameter to write onto the EC.

Power Saving

For power saving options, please refer to TLP. Also, analysing powersave options as given by powertop can be useful, but the Nvidia powersave option must not be enabled together with bumblebee and bbswitch. So, avoid doing this.

Undervolting

Undervolting is quite recommended on this laptop, and it needs to use the intel-undervolt package. Depending on the processor, it can reach up to -150mV, but -100mV should work on any configuration. Note that the laptop tends to go unstable on battery when undervolted, so enabling the undervolt only on AC can be a good solution.

Turbo Boost

Turbo boost can be enabled and disabled by the intel PS state system class /sys/devices/system/cpu/intel_pstate/no_turbo. This can be achieved editing the configuration of TLP in /etc/tlp.conf by setting CPU_BOOST_ON_BAT=0.

Please bear in mind that by doing this the CPU speed will be capped at 1100MHz, possibly getting an unresponsive device.

Fan

As written in #Power Management, use the iswAUR package to manage this. Please refer to the GitHub Page and to the configuration file in /etc/isw.conf to manage the fan profile. This should correspond to the 16S3EMS1 profile. First you need to add your profile (16S3EMS1) to the /etc/isw.conf file from the github one (at this time it wasn't there). After that you need to add RUB_CMDLINE_LINUX_DEFAULT="quiet ec_sys.write_support=1" to the /etc/default/grub. Then a service can be enabled and started to automatically apply the edited fan profile using systemctl enable --now isw@16S3EMS1.service. Please bear in mind that reducing the fan speed can cause overheating, as well as using a too high speed for a given temperature. Also, when using bbswitch and dGPU switching methods, the dGPU fan is set to the minimum by the profile, yet this also dissipate heat from the CPU. It is then necessary not to use a too low speed for the minimum temperature profile. Also, the Cooler boost can be enabled via # isw -b on, which cause both the fans to ramp up to 100% speed.

Keyboard

Fn Keys

All the Fn keys should work out of the box, but Fn12, Fn4, Fn5 and Fn7. The latter does not send an Fn input, but rather the proper F7 key, so this can be easily assigned. About the other Fn keys, Fn+F4 maps as the keycode 93, so it can be assigned to its original function (touchpad toggle) with xmodmap:

 ~./Xmodmap
keycode  93 = XF86TouchpadToggle NoSymbol XF86TouchpadToggle

About Fn5 and Fn12, these send a keycode, and needs to be configured asd described in Map scancodes to keycodes using udev instead of setkeycodes, as the latter does not seem to work properly. This is achieved modifying the file /lib/udev/hwdb.d/60-keyboard.hwdb or otherwise, adding at the end of the # Micro-Star section the followings:

evdev:atkbd:dmi:bvn*:bvr*:bd*:svnMicro-Star*:pn*A10SC*:pvr*
 KEYBOARD_KEY_f1=f20
 KEYBOARD_KEY_f2=f21

The microphone mute button should now work out of the box, but the rotate screen one does need a script that toggles the rotation. This can be accomplished by this script

toggle_rotation.sh
#!/bin/sh
# This shell script is PUBLIC DOMAIN. You may do whatever you want with it.

TOGGLE=/tmp/.toggle

if [ ! -e $TOGGLE ]; then
    touch $TOGGLE
    xrandr -o inverted
else
    rm $TOGGLE
    xrandr -o normal
fi

which will need to be saved somewhere with execution permissions, then added to the shortcut menu in the currently used Desktop Environment and lastly enabled to be triggered by Fn12. Afterwards, please update the hardware database by running systemd-hwdb update && udevadm trigger as root.

Home and End buttons

These buttons are mapped to AltGr+PgUp and AltGr+PgDown respectively. A helpful solution is to modify the current layout in /usr/share/X11/xkb/symbols/$LAYOUT, where LAYOUT is the current keyboard layout. This is accomplished by writing the following two lines in the default section of the file:

   key <PGUP>  { [     Prior,      Prior,         Home,    Home      ] };
   key <PGDN>  { [      Next,       Next,          End,    End       ] };

Zsh

The buttons home, end, page up and page down are acquired via a non-standard characters sequence. If the keyboard layout has been modified as described above, it is possible to add these lines to .zshrc:

bindkey  "^[[5~"    history-beginning-search-backward #PgUp
bindkey  "^[[6~"  history-beginning-search-forward #PgDown
bindkey  "^[[1;1H"   beginning-of-line #Home
bindkey  "^[[1;1F"   end-of-line #End

Otherwise the last two lines (Home and End) have to be replaced by these:

bindkey  "^[[5;1~"  beginning-of-line #Home
bindkey  "^[[6;1~"   end-of-line #End

Issues

Hibernation

If after hibernation the laptop does not power off but reboots, it is necessary to modify /etc/systemd/sleep.conf to the following:

/etc/systemd/sleep.conf
HibernateMode=shutdown