MSI GS65

From ArchWiki

This article or section does not follow the Laptop page guidelines.

Reason: Needs a function keys table. (Discuss in Talk:MSI GS65)
Hardware PCI/USB ID Working?
Touchpad Partial
Keyboard 1038:1122 Yes
GPU (Intel) 8086:3e9b Yes
GPU (Nvidia) 10de:1ba1 Yes
Webcam 5986:211c Yes
Ethernet 1969:e0b1 Yes
Bluetooth 8087:0aaa Yes
Thunderbolt Yes
Audio 8086:a348 Yes
Wireless 8086:a370 Yes

For a general overview of laptop-related articles and recommendations, see Laptop.

Installation

Secure Boot can be disabled from the Security tab and boot mode can optionally be switched from UEFI to legacy. Advanced BIOS options can be accessed by going to the 'Advanced' tab and holding down l-alt, then pressing r-ctrl, r-shift, then F2.

Firmware

BIOS version E16Q2IMS.110 introduces many ACPI problems (if BIOS is changed from UEFI to legacy), including a flood of "No handler or method for GPE [00->6E]" at boot, which can be solved through kernel parameters:

  • acpi=off allows to boot but most things will not work, including the keyboard and touchpad.
  • pci=nomsi or acpi=off acpi=force allows to boot and have working keyboard and touchpad, but the NVidia card will not work ; neither will the USB3 ports.
  • pcie_aspm=off will allow most things to work: keyboard, touchpad, USB 3 devices, NVidia card.

Video

The HDMI and DP ports are wired to the Nvidia GPU, so some additional actions required to make the multihead to work with monitors connected to this ports. Thunderbolt port is wired to Intel GPU thus allowing for external monitor to be used with Nvidia GPU off. See Bumblebee#Output wired to the NVIDIA chip, though configuration from there possibly would not work as is.

Instructions to get the external monitor working on the HDMI and DP ports on MSI GS65:

1. Install bumblebee and xf86-video-intel.

2. Configure Xorg to use the intel (not the modesetting) video driver for the Intel GPU. Put it to the /etc/X11/xorg.conf.d/20-intel.conf:

Section "Device"
    Identifier  "intel"
    Driver      "intel"
EndSection

3. Set the /etc/bumblebee/xorg.conf.nvidia contents to make Xorg launched by intel-virtual-output to use the Nvidia GPU:

Section "Device"
    Identifier  "nvidia"
    Driver      "nvidia"
EndSection

4. Restart X server

5. Launch the intel-virtual-output -b

6. Use xrandr or other tool to turn on the monitor and adjust its position.

xrandr --output VIRTUAL1 --right-of eDP1 --preferred

External monitor should be under the VIRTUAL1 output in xrandr -q. If not - check that intel-virtual-output -b successfully run the X server on DISPLAY=:8 and the xrandr -d :8 -q shows the connected monitor.

Limitations

It looks like the only one is inability to use VDPAU hardware video decoding, though to be honest it could be used directly on DISPLAY=:8 as an ugly hack (make sure your WM ignores the external screen first). But NVENC/NVDEC does not depend on X and could be used with tools like ffmpeg and gstreamer, and the Intel Quick Sync VAAPI also works, so missing VDPAU is a minor issue.

Power management

An issue when sleeping is that the networking will be disabled when waking and set to airplane mode. This issue does not affect hibernation.

Keyboard backlight

The Steel Series lights on the keyboard cannot be configured with msi-keyboard-gitAUR because this tool only works with region-based RGB lighting. For this laptop model, the tool msi-perkeyrgbAUR provides partial control.

If keyboard lights remain off, be sure you have rebooted after installing msi-perkeyrgb to refresh udev and that the brightness is turned to maximum with Fn+PgUp, then try the command again.

For switching colors with a key, create a script file:

msi-rgb-switch.sh
profs=(aqua chakra default disco drain freeway plain rainbow-split roulette disable)
fn="./.msi-rgb"
touch $fn
prof=$(cat $fn)
if [ -z $prof ]; then
    echo "0" > $fn
    vl=0
else
    nv=$(($((prof+1)) > 9 ? 0 : $((prof+1))))
    echo $nv > $fn
    vl=$nv
fi
if [ ${profs[$vl]} = "disable" ]; then
    msi-perkeyrgb -m GS65 -d
else
    msi-perkeyrgb -m GS65 -p ${profs[$vl]}
fi

and map the script to a shortcut key. This will rotate to the next rgb color automatically

Function keys

The airplane mode key combination (FN + F10) is disabled by default. Adding the following kernel parameters activates airplane mode key combination:

acpi_osi=! acpi_osi="Windows 2009"

The following buttons do not have any function or keycodes.

  • FN + F7
  • FN + Home

Touchpad

Multi gestures do not work out the box, but are detected with libinput-gesturesAUR.

Thermals

Fan control by "Fancontrol (lm-sensors)" or "NoteBook Fan Control (NBFC)" is not supported, but by the use of the tool iswAUR you can control the fans in the same way as Dragon Center on Windows.

Microphone

GS65 has the twin microphone, which is very cool to have for noise reduction and echo cancellation, as well as background sounds suppression via beamforming technique. To get the best of it add this line to /etc/pulse/default.pa:

load-module module-echo-cancel use_master_format=1 aec_method=webrtc aec_args="beamforming=1 mic_geometry=-0.025,0,0,0.025,0,0"
set-default-source alsa_input.pci-0000_00_1f.3.analog-stereo.echo-cancel

Also, it could be useful to add analog_gain_control=0 to aec_args to disable automatic gain control.

Known Issues

Lockup Issue (lspci and poweroff hang)

Symptoms:

  • lspci hangs
  • poweroff hangs

Applies to: Arch boot ISO and systems with nouveau or without nvidia driver installed. See NVIDIA Optimus#Lockup issue (lspci hangs).

Solutions:

  • Arch ISO: Add modprobe.blacklist=nouveau to the kernel parameters (https://superuser.com/a/1301487).
  • System using nvidia: Should not run into this issue. bbswitch may not work and cause this, however.
  • System using nouveau: Add nouveau.runpm=0 to the kernel parameters. This disables runtime power-management, which causes this issue to begin with.

Cheese Hangs While Opening Camera

The issue can be fixed by installing vlc and running:

$ vlc v4l:// :v4l-vdev="/dev/video0"

Following this, cheese should work correctly.

Wifi is hardblocked (airplane mode) after waking up from suspend

Waking from suspend will have wifi in airplane mode. [1]

# rfkill list
1: phy0: Wireless LAN
	Soft blocked: no
	Hard blocked: yes

Wifi can be reactivated by either using the airplane mode key combination twice or by hibernating and rebooting.

A way to mitigate this is by setting systemd to hibernate instead of suspending.

/etc/systemd/logind.conf
HandleSuspendKey=hibernate
HandleLidSwitch=hibernate

System freeze

From time to time the graphical interface will freeze and the keyboard will be unresponsive, though audio keeps running. It tends to happen when CPU temperature is high and CPUs are throttling.

There is no known solution for this.

It is not clear what causes this issue:

# journalctl -r --boot -1 
Jul 22 20:27:40 almsi kernel: nvidia-modeset: ERROR: GPU:0: Failed to allocate memory for the display color lookup table.

Issue caused by the Intel E2500 Wifi card.

# journalctl -f 
iwlwifi 0000:00:14.3: BIOS contains WGDS but no WRDS

Wifi card ask for a hardware reset. (System will freeze for +/- 10s)

Fixed by replacing the Wifi card.

Display outputs do not work after suspend

If the laptop is suspended with another monitor connected, then on wake all display outputs do not recognise when an external display is connected to any port. This persists across reboots. Worryingly it also persists if you reboot into Windows.

One workaround is to boot into Windows, suspend the laptop, then wake it. Connected displays will then be recognised when rebooting into Windows or Arch. Another workaround is to suspend and wake until the connected display is recognized. Sometimes this takes several tries but it avoids having to boot into Windows.

Another workaround is to disable audio devices.

blacklist-intel_snd_suspend.conf
#for kernel 4.x                                                                                                                        
blacklist snd_hda_intel                                                                                                                
                                                                                                                                       
#for kernel 5.x - additional modules, if not disable it - suspend not working                                                          
blacklist snd_sof_intel_hda                                                                                                            
blacklist snd_sof_intel_hda_common                                                                                                     
blacklist sof_pci_dev                                                                                                                  
blacklist snd_sof_intel_byt                                                                                                            
blacklist snd_sof_intel_ipc