February 20th, 2010
1:33 pm
Imedia Embedded Linux – xorg.conf configuration issues

Posted under Linux
Tags , ,

These issues came about when trying to change the screen resolution/refresh rate on my diskless LinITX Jupiter PC.
This simple exercise became a real nightmare with a really steep learning curve. However, as they say, experience is what you get when you are looking for something else! The full details of this saga are as follows. Motherboard documentation and sample xorg.conf files are just below.

Resources

CVCM2 Motherboard Manual
my xorg.conf for ADI Microscan G910

my xorg.conf for Samsung Syncmaster 2443BW

Hardware Configuration

LinITX Jupiter Fanless Diskless PC
Boot from LAN, USB or internal IDE socket.
Motherboard: CV7CM2
CPU: VIA C7 1Ghz Processor
Chipset: VIA CN700 Northbridge and VT8237R Southbridge
Memory: 1GB DDR2 RAM Installed
LAN: VT 6103 10/100 Fast Ethernet
IDE: One 40pin IDE connector – suitable for use with a 40pin FDM module
USB: Four Rear USB ports and Two Front USB ports
Audio: AC’97 Compliant Audio
BIOS: Award BIOS
Power: Internal DC-DC power supplied from an external AC/DC Adapter (12V 5A DC)
Dimensions: 213mm x 200mm x 45mm

EDC 4000 2GB 40 pin IDE flash drive

Monitor :-
ADI Microscan G910 (original configuration)
Samsung Syncmaster 2443BW (later replacement)

Software Configuration

Imedia embedded Linux 6.0.4
Kiosk build selected
All packages selected (everything installed in addition to Kiosk build)

Configuration Issues

1/ Debugging/usage Tips :-

a/ Details of all the login accounts are posted in the library.

b/ The startup can be interrupted via ctrl/C when the display says “entering run level 3”.
Note that continued pressing of ctrl/C is required to be sure it catches it.
This will then give you an mms prompt.

c/ mms is the autologin user. this is set up in /etc/inittab via the –autologin=mms switch
XFCE is then fired up via the users profile “.profile” in /home/mms.
Note that there are a number of such setup files in the home directory, but the “.xxx” syntax indicates that they are hidden.
You must turn on viewing hidden files to see them.

d/ You can exit from XFCE and restart it without a reboot, using “startx”. Note that you can also just say “X”,
but this does not work – presume it does not use the same script!

e/ You can switch to another login (e.g. root) from any terminal prompt by saying e.g. “su root”.
You can then start XFCE as root (but BE CAREFUL – Linux is easier to trash than windows when fully privileged)

f/ For iMedia Linux with flash, the log files are under a ram disk called /var/log.
The logs are rotating files so that they do not fill the disk.
To read them you must use cat (NOT cp) and/or copy them to another file via cat, e.g.
cat Xorg.0.log > X.log
(followed by a ctrl/d or ctrl/c to terminate as cat also reads from standard input)
Then the resulting file can be copied with cp or viewed with nano/leaf.

g/ For viewing/editing, nano is good in a terminal window as it is modeless and notepad like
leaf is good when in XFCE

2/ After installation, the system would boot to a shell prompt only and would not start XFCE
The solution for this is documented on the iMedia forums here: http://forums.imedialinux.com/index.php?topic=62.0

We had many reports and complaints about graphical mode not working.
Sorry guys for that, we are tying to maintain configuration files for each and every architecture, but it time this proved to a real pain in the ..
Because of hardware differences, many times user could not use at all X graphical mode.
That’s why, in the latest release I created a simple bash script that will force X to auto detect it’s settings and overwriting everything we had in the xorg.conf file.
For those of you who are not so lucky and be prompted with a shell prompt, stopping autologin is pretty easy. As soon as you see “Entering level 3” start pressing CTRL+C key till you get a shell prompt.
Then go to Console 2 or su as root and run xorg-auto-config
NB This causes xorg.conf to be overwritten so save it first!

This auto configure allowed xfce to start but with low refresh rate.

3/ VBEModes was enabled in the “Device” section, to enable the Unichrome Hardware acceleration

Option      “VBEModes” “true”

This improved the resulution but the refresh rate was still low (56Hz or 60Hz)

4/ The correct monitor definition section was then added. The HorizSync and VertRefresh values are important here.
I had to google them for my monitor – the defaults are very low.
(Note that turning off DDC with…

Option  “noddc”

or similar had no effect on increasing the refresh rate.)

Section “Monitor”
Identifier   “Monitor0”
VendorName   “ADI”
ModelName    “ADI Microscan G910”
HorizSync    30-110
VertRefresh  50-160
Option       “DPMS” “true”
EndSection

5/ I added display modes (and a DefaultDepth to set the colour depth that XFCE uses) to the Screen section as follows.
Note that these modes are names which are known internally. I think that it uses a set of VESA modes,
and allows additional ones to be added to here. I’m not quite sure what is going on, but according to the log file,
XFCE needed at least one of these to stop it ‘tripping up’ as it did not find a decent vesa mode/resolution for 1280×1024.
Some forums use e.g. “1280×1024@85” instead of “1280x1024_85” – looks like both syntaxes work but have not confirmed.

Section “Screen”
Identifier “Screen0”
Device     “Card0”
Monitor    “Monitor0”
DefaultDepth 32
SubSection “Display”
Viewport   0 0
Depth     8
Modes     “1280x1024_85” “1152x864_85” “1024x768_100” “800x600_100”
EndSubSection
SubSection “Display”
Viewport   0 0
Depth     16
Modes     “1280x1024_85” “1152x864_85” “1024x768_100” “800x600_100”
EndSubSection
SubSection “Display”
Viewport   0 0
Depth     24
Modes     “1280x1024_85” “1152x864_85” “1024x768_100” “800x600_100”
EndSubSection
SubSection “Display”
Viewport   0 0
Depth     32
Modes     “1280x1024_85” “1152x864_85” “1024x768_100” “800x600_100”
EndSubSection
EndSection

Following this, I had a reasonable choice of resolutions and refresh rates within XFCE.

6/ My final choice (in XFCE) was 1280×1024 @ 86Hz, with a default depth of 32 set in xorg.conf.
I chose 96DPI in the XFCE settings and this gave an excellent display on a 19″ monitor.
75DPI gave more detail on the screen but as I intended to use a CAT5 KVM remote control (i.e. somewhat fuzzy),
I stuck with 96DPI

7/ Keyboard internationalisation was a pain – I first set the correct keyboard settings here :-

Section “ServerLayout”
Identifier     “X.org Configured”
Screen      0  “Screen0” 0 0
InputDevice    “Mouse0” “CorePointer”
InputDevice    “Keyboard0” “CoreKeyboard”
EndSection

… then this later

Section “InputDevice”
Identifier  “Keyboard0”
Driver      “kbd”
Option      “CoreKeyboard”
Option      “XkbRules” “xorg”
Option      “XkbModel” “pc105”
Option      “XkbLayout” “gb”
EndSection

However, this appeared to be ignored and I still had a US keyboard with some keys crossed over etc.
I then discovered that by default, “hotplugging” was enabled, which caused the above settings to be ignored!
Whilst there appeared to be ways of telling hotplugging what the keyboard was, I elected to turn it off as follows :-
(This went right at the top of xorg.conf)

Section “ServerFlags”
Option “AutoAddDevices” “false”
EndSection

As a bonus, I noticed that with hotplugging off, I had less trouble with the mouse after KVM switching to the box.
This was presumably because it tried to reconfigure devices as it thought I had hotplugged something.

8/ Keyboard is still US when in a terminal window either inside or outside XFCE.
It appears that this can be set up here :-
/etc/sysconfig/console
This may also feed into xorg.conf hotplugging automatically should you want to turn this on but not sure.
I have yet to try this out.

9/ Since my original configuration, the monitor has been upgraded, so I have reconfigured xorg.conf. As the CVCM2 motherboard graphics chipset will not do 1920 X 1200, I set the resolution to the maximum I could that looked good, which was 1680 X 1050. For this version, I needed to take the refresh rates out of the Modes option thus :-

Section “Screen”
Identifier “Screen0”
Device     “Card0”
Monitor    “Monitor0”
DefaultDepth 32
SubSection “Display”
Viewport   0 0
Depth     8
Modes     “1680×1050” “1440×900” “1600×1200” “1280×1024” “1152×864” “1024×768” “800×600”
EndSubSection
SubSection “Display”
Viewport   0 0
Depth     16
Modes     “1680×1050” “1440×900” “1600×1200” “1280×1024” “1152×864” “1024×768” “800×600”
EndSubSection
SubSection “Display”
Viewport   0 0
Depth     24
Modes     “1680×1050” “1440×900” “1600×1200” “1280×1024” “1152×864” “1024×768” “800×600”
EndSubSection
SubSection “Display”
Viewport   0 0
Depth     32
Modes     “1680×1050” “1440×900” “1600×1200” “1280×1024” “1152×864” “1024×768” “800×600”
EndSubSection
EndSection

Taking out the refresh rates may have worked better in the original file with the G910, as it may have auto detected the highest refresh rate it could do based on the given horizontal and vertical frequencies. However I have not tried this.
Links to the xorg.conf files (together with the motherboard manual, or at least the best I could find) are at the top of this post. Note that my original xorg.conf for the G910 has an incorrect monitor name in it – this did not appear to cause a problem so I presume the field is just there for documentation purposes.

No Comments »