Removing one silly "feature" from an otherwise great ultra widescreen OLED monitor

Why do manufacturers hide settings behind byzantine and secret menus?

A few months ago I got one of these Samsung G85SB monitors off Woot! for a good deal to use on my gaming PC. It seemed to have all the features I could want:

  • Ultra Widescreen and curved
  • HDMI and DP inputs
  • Freesync AND Nvidia G-Sync supported
  • 175Hz refresh @ 3440x1440
  • Quality OLED display

It is, in fact a great monitor and if you can get one for a decent price (retail is a bit high for me, look for a refurb you can easily return if it's in bad shape, like burned-in or damaged)

It has one flaw, however. It's actually a TV. It has the same/similar OS as other Samsung smart TVs which means it tries really hard to Not Be A Monitor. Most of the big issues can be resolved by just telling it to start back up on the last used input, and disabling its network connection but its "game mode" is silly.

For those who may not know, most TVs and displays do quite a bit of processing of the image before displaying it. My personal opinions on frame doubling aside, it introduces latency. When playing games, especially action-type games or classic platformers, latency is a pain at best and makes things unplayable at worst. To solve this, most displays have a "game mode" that disables most or all of those features to provide the lowest latency. When enabled on this monitor, the latency is excellent, I don't notice it at all. But then the popups happen.

When you start the monitor in game mode, an annoying set of popups called the "game bar" appears at the bottom of the display for several seconds. These obscure the desktop and require you to sit there while it tells you all the same things that it always tells you which is infuriating. Add to that you cannot turn it off. Except you can, if you have a remote with the Service Mode button on it. Of course the remote it comes with does NOT have that. But, the monitor does support remote keypresses via the network so there is a way around this.

What is going to happen

What we need to do is to get the monitor into service mode. There's an option in there to disable the game bar on startup. There's a bunch of ways to do it, but, with a tiny bit of python thanks to Pfych's blog and the Samsung TV WS API git repo from xschwarze we can make this happen. I will repeat the instructions here from Pfych as I used them.

  1. Set up networking on the monitor. Once configured, keep track of the IP address it receives, you'll need it.
# Create somewhere to store the setup, put this where you want.
mkdir monitor-settings ; cd monitor-settings
# Create a virtual environment for the python libraries the script will need
python -m venv env
# Install the two python libraries needed in the virtual environment
./env/bin/pip3 install "git+https://github.com/xchwarze/samsung-tv-ws-api.git#egg=samsungtvws[async,encrypted]"

Python setup for script

  1. Next, I made a slightly different script than Pfych but it does the same thing: Send the info and service mode keys. I called it samsung-service-mode.py:
#!/usr/bin/env python3
import argparse
import os
import time
from samsungtvws import SamsungTVWS

# Create an ArgumentParser object
parser = argparse.ArgumentParser(description="Control a Samsung TV using its web socket API.")

# Add the IP address argument
parser.add_argument('ip_address', type=str, help='IP address of the Samsung TV')

# Parse the command-line arguments
args = parser.parse_args()

token_file = os.path.dirname(os.path.realpath(__file__)) + '/tv-token.txt'
try:

    tv = SamsungTVWS(host=args.ip_address, port=8002, token_file=token_file)
    info = tv.rest_device_info()
    print(info)
    tv.send_key("KEY_INFO")
    time.sleep(0.3)
    tv.send_key("KEY_FACTORY")
except Exception as e:
    print(f"ERROR Enabling Service Mode: {e}")

samsung-service-mode.py

# Replace the IP address with the one your monitor got
env/bin/python samsung-service-mode.py 192.168.1.200
  1. Accept the connection with the monitor remote
  2. You'll get a menu popup on your monitor and can use the remote to navigate it:
    1. FMS
    2. FMS
    3. Factory Menu App
    4. Option
    5. MRT Option
    6. com.samsung/featureconf/game_bar.auto_launch_support_type
    7. FMS_AUTO_LAUNCH_NOT_SUPPORT
  3. Turn the monitor off and back on (notice no game bar!)
  4. Now you can go back into the menu and turn off networking again. This also keeps it from doing updates that will revert this change and make you do it all over again.

This is such a simple, stupid configuration option that should be in the menus (maybe under advanced or something, but it's not like it keeps you from using the monitor when it's off)

NOTE

You will likely have to turn "Game Mode" back on in the regular menu after this, but it will stay on afterwards.

Containers.

After doing this, I realized some folks may not want to go through all that. I've rolled it all into a container. This lets you run a single command to get into service mode without playing with pip and scripts. Check it out at https://hub.docker.com/r/moosemouse/samsung-service-mode

Again, thanks to Pfych and xschwarze for making this about as simple as possible without buying the special service mode remote or programming a universal remote! I have a MONITOR now, and it's great.