comSysto bei XING

05
.
07
.
2016

Force HiDPI Resolutions for Dell U2515H Monitor

Custom scaled resolutions on macOS

Are you not satisifed with the native resolution of your external monitor hooked up to your mac? We will show you how to easily use HiDPI resolutions instead.

Bernhard

Software Engineer - Java, JVM

Introduction

My company got me a new Dell U2515H which is pretty neat but does not have a 4K resolution. It comes with a 2560x1440 resolution and a miniDisplayPort to DisplayPort cable.

As I am using a MacBook Pro mid 2015 with El Capitan and my first thought was: “Let’s hook it up to the thunderbolt port and it should work!”. Well I was a little disappointed since the font was very blurry and everything was quite small. Changing font smoothing didn’t help either. So what is the reason the picture is that bad?

The reason why it is blurry is, that the Dell Monitor doesn’t run in HiDPI mode as your MacBook’s Retina display does.

2560x1440 native Resolution on Dell U2515H on macOS
2560x1440 native Resolution on Dell U2515H on macOS

When I say HiDPI, I mean the pixel-doubling a Retina display does to get this super awesome smooth and sharp picture. Enabling HiDPI will not lead to optimal results, since the monitor should have a 4k or 5k resolution, but it will improve the picture a litte.

Info

Forcing a HiDPI Resolution on Dell U2515H

So coming from Windows and just recently switched to mac I thought: “I will just have to scale the fonts a little like I do on Windows with 150% or so….”. After some intense clicking around in the monitor settings and some googling the sad reality caught up with me. There is no such thing to easily achieve HiDPI resolutions on an external Monitor.

Ok - I have to admit - there are some tools like SwitchResX or QuickRes - which are great - but they cost money and beeing a Geek it is embarassing to admit not beeing able to teach macOS how to do this on your own. So if you want the easy way out, get SwitchResX or QuickRes and stop reading since it will get very technical from here on.

Challange Accepted!

Alright! So there must be some config file somewhere to tell macOS to do what I want it to do!

Coming across RehabMans post in the awesome tonymacx86.com forum about how to actually write a config file to tell macOS what resolutions you wanna have - which includes converting stuff from integer to hex and then combine stuff and convert it to Base64 to finally write a XML file - I thought: “Isn’t there any easy and free way to do this?”.

There isn’t! Being a senior rockstar frontend developing space cowboy, my mind came up with “I can write some browser tool to do this and it will be awesome!”. Approximately 32 cappuccini later I finished coding a working React application that generates and parses ProperyList Files for Custom Scaled Resolutions. Check it out:

https://comsysto.github.io/Display-Override-PropertyList-File-Parser-and-Generator-with-HiDPI-Support-For-Scaled-Resolutions/

Scaled Resolutions Parser and Generator
Scaled Resolutions Parser and Generator

The tool was written in React, is 100% pure JavaScript and can be checked out on GitHub. If you like it feel free to give the repository a star.

Getting down to business!

First I will explain how the PropertyFile’s scale resolution’s base64-Strings need to be interpreted.

Let’s start by looking at the final file that will enable HiDPI on the Dell U2515H:

github:41e6a007bfd32c06378018fdb758c270

You can open files with *.plist with Xcode which looks like this for the above file:

PropertyList viewed with Xcode
PropertyList viewed with Xcode

Since we don’t speak jibberish let’s pick the first resolution entry and explain it step by step.

The first resolution is represented as base64 String like this:

shell:AAAKAAAABaAAAAABACAAAA==

When you decode the base64 String you get four 8-Bit hex blocks

shell:<00000a00 000005a0 00000001 00200000>

Now you need to know that the two last blocks are fixed values to flag the resolution as HiDPI.

The first two blocks represent the actual resolution which you get when you convert the hex values to decimal values. a00 becomes 2560 and 5a0 becomes 1440. Summarized it means 2560x1440 HiDPI.

The tool PropertyList Parser and Generator will do all that for you. When you scroll down on the tool page you will see detailed instructions you can use if you have a different monitor.

Forcing 1920x1080 HiDPI

I will simplify the procedure from here on, if you want to know the whole process read the step-by-step tutorial on thePropertyList Parser and Generator page.

I want 1920x1080 as HiDPI resolution so I will use the file above (which already contains the right resolutions) and copy it to the right destination which in my case for the Dell U2515H is:

shell:sudo cp ~/Downloads/DisplayProductID-d06e.plist /System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-10ac/DisplayProductID-d06e

After a restart of my MacBook I can use 1920x1080 HiDPI resolution. (If you also have El Capitan you will not be able to copy something to /System. You need to disable System Integrity Protection first.)

Now download and install RDM to actually be able to select the resolution.

Now you can change the resolution to 1920x1080 HiDPI on Display 1 in RDM and it will look like this:

1920x1080 HiDPI Resolution on Dell U2515H on macOS
1920x1080 HiDPI Resolution on Dell U2515H on macOS

Note that the OSD displays 2560x1440 which indicates that the Monitor is running its native resolution and is NOT interpolating but actually using “pixel-doubling” (exactly 1.3 times) to display 1920x1080 in HiDPI mode.

The picture is now more pleasing to my eyes. For some people now everything might be too big - you can try different resolutions and tell me what worked best for you.

Themen:

Kommentare?

comSysto Logo