RGB Ausgabe bei externen Monitoren mit macOS und Apple M1 erzwingen

· 3 Minuten zu lesen
RGB Ausgabe bei externen Monitoren mit macOS und Apple M1 erzwingen
Photo by Kevin Bhagat / Unsplash

Ich hatte hier vor einiger Zeit beschrieben, wie man macOS dazu bringen kann, die Videoausgabe auf einem externen Monitor RGB zu verwenden.

Mit den M1 Chips hat sich das Vorgehen geändert, daher dieser neue Post.

Die Anleitung funktioniert mit M1 und M1 Pro. Getestet wurde unter macOS Monterey 11.3 und 11.4. Auf meinem Schreibtisch steht ein DELL U2415.
Ich hafte nicht für Fehler - macht immer ein Backup, wenn ihr Datein von macOS anfasst.

  1. Terminal öffnen und open /Library/Preferences eingeben und mit Enter bestätigen.
  2. Dort sollte eine Datei mit dem Namen com.apple.windowserver.displays.plist vorhanden sein. Kopiert diese auf den Desktop. Fehlt euch diese, scrollt runter zum Punkt Debugging.
  3. Da es sich bei der Datei um ein Binary handelt, müssen wir diese erst konvertieren um sie bearbeiten zu können.
    Gebt im Terminal plutil -convert xml1, gefolgt vom Pfad in dem sich die Datei befindet, in meinem Fall /Users/tim/Desktop/com.apple.windowserver.displays.plist ein. Der gesamte Befehl sollte also plutil -convert xml1 /Users/tim/Desktop/com.apple.windowserver.displays.plist lauten. Bestätigt mit Enter. Anschließend könnt ihr diese mit einem beliebigen Text-Editor öffnen, ich nutze dafür VS Code.
  4. Diese sollte nun in etwa so aussehen:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>DisplayAnyUserSets</key>
	<dict>
		<key>Configs</key>
		<array>
			<array>
				<dict>
					<key>CurrentInfo</key>
					<dict>
						<key>Depth</key>
						<integer>8</integer>
						<key>High</key>
						<real>1117</real>
						<key>Hz</key>
						<real>120</real>
						<key>IsLink</key>
						<false/>
						<key>OriginX</key>
						<real>-1728</real>
						<key>OriginY</key>
						<real>0.0</real>
						<key>Rotation</key>
						<integer>0</integer>
						<key>Scale</key>
						<real>2</real>
						<key>Wide</key>
						<real>1728</real>
					</dict>

Direkt dort drunter fügt ihr nun folgenden Part an:

					<key>LinkDescription</key>
					<dict>
						<key>BitDepth</key>
						<integer>8</integer>
						<key>EOTF</key>
						<integer>0</integer>
						<key>PixelEncoding</key>
						<integer>0</integer>
						<key>Range</key>
						<integer>1</integer>
					</dict>

Bei mehreren Monitoren, sollte der Punkt CurrentInfo ebenfalls mehrfach vorhanden sein. Dann muss auch mehrfach der oben genannte Part hinzugefügt werden.

5. Datei speichern. Und wieder in ein Binary konvertieren. Dies geschieht mittels plutil -convert binary1 /Users/tim/Desktop/com.apple.windowserver.displays.plist -  hier müsst ihr den Pfad entsprechend anpassen. Ein plutil -lint /Users/tim/Desktop/com.apple.windowserver.displays.plist sollte nun ein /Users/tim/Desktop/com.apple.windowserver.displays.plist: OK zurück geben.

6. Die Datei kann wieder zurück nach /Library/Preferences kopiert werden. Achtet darauf, dass ihr die vorhandene Datei auch überschreibt.

7. Nach einem Reboot sollte euer Mac euren Monitor per RGB ansprechen.

Debugging

Für den Fall, dass nach einem Neustart der Monitor immer noch mittels YPbPr angesprochen wird, zwei Tipps:

  1. Wie unter Punkt 4 geschrieben, kann der Punkt CurrentInfo mehrfach vorkommen. Ggf. müsst ihr hier ein wenig experimentieren, an welche Stelle genau der Code-Block hinzugefügt werden muss.
  2. Die Datei  com.apple.windowserver.displays.plist fehlt bei euch komplett? Ihr könnt diese super simpel generieren lassen. Geht dazu einfach in die System Einstellungen von macOS und dort in die Display Settings. Wählt bei einem beliebigen Monitor eine andere Rotation aus (z.B. 90°). Ihr müsst die Änderungen nicht speichern, macOS hat dann bereits eine neue Datei angelegt.
  3. Die Änderungen greifen nicht? Prüft ob es ähnliche Dateien namens  com.apple.windowserver.displays.plist unter /Users/<User>/Library/Preferences/ und /Users/<User>/Library/Preferences/ByHost/ gibt. Falls ja, löscht diese.

Quelle: Github