bingshui.org

the Life of Zim

7th February
2013
written by dzimney

THE ISSUE:
Last night I was messing around with SSH and X. Essentially attempting to use a Raspberry Pi as a client workstation to my Xubuntu 12.04 desktop. I played around a bit, shutdown my desktop remotely and went to bed. When I woke in the morning and attempted to log into desktop’s GUI. The screen would got blank, flash the following message and then go back to the login screen.

could not write bytes: Broken pipe
* Starting NFS kernel daemon
* Starting crash report submission daemon
speech-dispachter disabled: edit /etc/default/speach-dispatcher
* Stopping restore sound card(s') mixer state(s)
* Starting VirtualBox kernel modules
* Starting the Winbind daemon winbind
saned disabled: edit /etc/default/saned
* Starting NetBIOS name server

* Starting Mount network filesystems

* Stopping Mount network filesystems

* Checking battery state...

At some point last night, I believe that I also ran an update on Xubuntu. However, I can’t remember if I rebooted the system and had a successful login prior to messing around with SSH and X. That said, it’s possible that either could be the root of this problem.

THE TESTS:
In either case, in an attempt to figure out what was going wrong, I first switched to a terminal over the GUI login. To do this at the login screen press Crtl+Alt+F2. To switch back to the GUI from the terminal press Crtl+Alt+F7. From here I logged in with my normal user and password. I did not log in as root. Once logged in I attempted to start x from the terminal by issuing the following command: sudo startx

This produced the following output:

xauth: error in locking authority file ~/.Xauthority
xauth: error in locking authority file ~/.Xauthority

Fatal server error:
Server is already active for display 0
    If this server is no longer running, remove /tmp/.X0-lock and start again.

Please consult the The X.Org Foundation support at http://wiki.x.org for help.

ddxSigGiveUp: Closing log
No protocol specified
No protocol specified
xinit: giving up
xinit: unable to connect to X server: Resource temporarily unavailable
xinit: server error
xauth: error in locking authority file ~/.Xauthority

With this information my first action was to do what was suggested and “remove /tmp/.X0-lock and start again.” After doing so the problem persisted. I then attempted to start X from the terminal again to see what the output was. This time I got the following:

Fatal server error:
Server is already active for display 0
    If this sever is no longer running, remove /tmp/.X0-lock and start again.

Please consult the The X.Org Foundation support at http://wiki.x.org for help.

ddxSigGiveUp: Closing log
Invalid MIT-MAGIC-COOKIE-1 keyInvalid MIT-MAGIC-COOKIE-1 keyxinit: giving up
xinit: unable to connect to X server: Resource temporarily unavailable
xinit: server error

THE FIX:
Looking back at the orignal output from startx and spending a little time Googling the issue. I decided to try and remove the ~/.Xauthority file. And PRESTO! After a reboot, I was able to log in with no issue.

THOUGHTS:
Looking at the errors, it seems to me that I somehow locked up my display in X while doing so. It likely happened when I shutdown the system from SSH — the system shutdown will the SSH connection was active, resulting in the display remaining locked to the SSH session that would have been terminated by the shutdown. Admittedly, this could just be my failed interpretation of things.

I’m also not sure if I only needed to remove ~/.Xauthory or if it was also necessary that I removed /tmp/X0-lock. However, it seemed odd that the message to remove /tmp/X0-lock remained in the output from my second attempt at running startx, while the first and final errors regarding the .Xauthority file were missing. Curious… but not that curious.

NOTES:
Throughout this post, I’ve replaced terminal outputs containing the full path to my user directory with “~”.

2nd October
2012
written by dzimney

So I think this is my third post on setting display resolutions under Ubuntu. I’ve got this Dell P2311H 23″ monitor, which has really been great for what it cost me (around $200, I believe). However, the monitor resolutions don’t get picked up by Ubuntu and after a few restarts of my computer, I end up with 640×480 display, which is really a pain in the ass. The odd part is, that usually during installation and for a few restarts, everything runs fine. Eventually it always gets jacked. It has something to do with the monitor not putting out a EDID. I write a little about it here. Anyhow, I recently updated to Xubunut 12.04 (not a fan of Unity at all). And so of course, here I am dealing with the same issue. Things have changed since 10.10 however.

In Xubuntu 12.04 (which for the record is simply Ubuntu running Xfce rather than Unity), the xorg.conf files are handled a bit differently. Firstly, they’ve moved out of the /etc/X11 directory and into the /usr/share/X11 directory. Additionally, they have become they. In 12.04, and I believe since 11.04, the xorg.conf is now a directory called xorg.conf.d and contains various *.conf files. This is a very welcome change as it allows for the config files to be more organized. In the /usr/share/X11/xorg.conf.d directory, there should already be a number of files. One thing to not here is the that naming convention is to start with a two digit number then dash then the config file name, such as 10-monitor.conf, which is what we will be using. From what I understand the number at the beginning is used to sort which file gets loaded first. I believe there are also some conventions for the number ranges, such as numbers in the 40s are all for some type of config. I really don’t know, but in case you care, there is a rhyme or reason to it, which you can of course choose to ignore if you wish.


Step 1

Before we begin, there are a few pieces of information we need. Firstly, we need to know how to write our modeline. What’s a modeline? I don’t really know, but we’ll be generating one with the gtf command which takes three parameters, Horizontal Resolution, Vertical Resolution and Refresh Rate. In my case, I will be entering the command like this:

gtf 1920 1080 60.

This will provide a modeline for a screen resolution of 1920px width 1080px high and a refresh rate of 60hz. If you don’t know your refresh rate, you probably want to go with 60, especially if you’re using an LCD screen. Entering the command should output something like this:

# 1920×1080 @ 60.00 Hz (GTF) hsync: 67.08 kHz; pclk: 172.80 MHz
Modeline "1920x1080_60.00" 172.80 1920 2040 2248 2576 1080 1081 1084 1118 -HSync +Vsync

We want the “Modeline” which is including and everything after the word “Modeline”.

Modeline "1920x1080_60.00" 172.80 1920 2040 2248 2576 1080 1081 1084 1118 -HSync +Vsync

We also need the Mode Name. This is the first part in quotes: "1920x1080_60.00", including quotes.


Step 2

Next, we need to know the name of our display device. To retrieve this, enter xrandr into the terminal. This should output something similar to the following:

Screen 0: minimum 320 x 240, current 1920 x 1080, maximum 1920 x 1080
default connected 1020x1080+0+0 0mm x 0mm

What we’re looking for here is the name of the device. This should be whatever appears before the word “connected”. In my case the device name is “default”.


Step 3

Now it’s time to write the configuration file. As I mentioned earlier, we are going to create a 10-monitor.conf file. To do so sudo an editor of your choosing such as pico or leafpad. If you don’t like the terminal try the command sudo leafpad /usr/share/X11/xorg.conf.d/10-monitor.conf. Personally, I enjoy myself a little pico and will be entering sudo pico /usr/share/X11/xorg.conf.d/10-monitor.conf. Either will do.

Type up your config file to look like the following, where <MODELINE> and <MODENAME> are replaced with the modeline and modename you found in the Step 1 and <DEVICENAME> with the device name found in Step 2.

Section "Monitor"
Identifier "Monitor0"
<MODELINE>
EndSection
Section "Screen"
Identifier "Screen0"
Device "<DEVICENAME>"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes <MODENAME>
EndSubSection
EndSection

In my case, the final file looks like this:

Section "Monitor"
Identifier "Monitor0"
Modeline "1920x1080_60.00" 172.80 1920 2040 2248 2576 1080 1081 1084 1118 -HSync +Vsync
EndSection
Section "Screen"
Identifier "Screen0"
Device "default"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "1920x1080_60.00"
EndSubSection
EndSection

IMPORTANT! READ THE FULL NEXT PARAGRAPH
For the changes to take you’ll need to save the file and restart your computer. If everything was done correctly, your resolution should be set at 1920×1080 (or whatever resolution you’re using) and you shouldn’t need to touch this stuff again. HOWEVER, if you have a typo or anything wrong with the config file you’ve just created, it is possible for you to lose your display entirely. If this happens, wait for the computer to fully boot and press Ctrl+Alt+F1. This should bring up a terminal and allow you to remove the config file you’ve just created. Do so by running the following:

sudo rm /usr/share/X11/xorg.conf.d/10-monitor.conf

Once you’ve removed the file, restart the computer (this can also be done in the terminal by running sudo reboot). You can also edit the file the same as we did before, although leafpad won’t be an option any more, and attempt to decipher what is causing the problem. It is entirely possible that this solution simply won’t work for your configuration and monitor.

Good luck. And thanks to Samuel Martin for the original post on this.