Fixing an external display refresh rate problem

I use a Dell 1226H External display with my PowerBook G4. Apparently the negotiation between the video card and the monitor didn’t go very well. The monitor offered a weird refresh rate, but could not actually support that rate when I selected it. I solved this problem, but only after a few unintuitive steps.

As you can see in the image (click to make it bigger), the monitor is offering a 74.8 MHz refresh rate. I thought “gee, I wonder what happens if I click on that.” Well, the answer is that my Dell monitor goes blank. I couldn’t use it. If I press the F7 key on the keyboard, I could turn on mirroring of displays, so I could at least use the monitor that way, but that’s not what I wanted. I wanted to reset Mac OS X’s notion of refresh rate and resolution for my montior. I wanted to just delete the preference file and restore default settings.

Here’s how I fixed it:

  1. Stop the window manager. This can be done in one of two ways.
  2. I logged out of the desktop and logged in via SSH from another workstation. This is probably the easiest thing to do, but it may not be easy for everyone. I don’t know if the other steps will work if you don’t login by ssh.
  3. Alternatively, you can edit /etc/ttys to disable the window manager.
  4. Run sudo vi /etc/ttys or use some other equivalent means of editing the file.
  5. Comment out the line that looks like this:
    console “/System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow…

Commenting it out means putting a # as the first character on the line.

  • Uncomment (i.e. remove the # from the beginning of the line) the line that looks like:

    console “/usr/libexec/getty std.57600” vt100 on secure

  • Restart init by running sudo kill -HUP 1.

  • Log out. You should find yourself staring at a command line.

  • Remove two files:

  • /Library/Preferences/com.apple.windowserver.plist

  • ~/Library/Preferences/ByHost/com.apple.windowserver.abcdef.plist

Note that the abcdef will be some random series of letters and numbers.

  • Restart the Window Server. This means reversing what you did before. If you edited /etc/ttys, then reverse the edits and do sudo kill -HUP 1 again. If you logged in by ssh, you can either reboot (sudo shutdown -r now) or you can kill two processes:
  • /System/Library/CoreServices/loginwindow.app
  • the other process with CoreServices in its name. I forget its exact name now.

That should do it. The system will forget any resolution or refresh settings you had for the external monitor. It’s a bit of a heavyweight solution, but it works.