Προσθήκη νέας ανάλυσης οθόνης στους clients

Ξεκίνησε από geochatz, 09 Ιαν 2012, 01:33:16 ΜΜ

« προηγούμενο - επόμενο »

geochatz

Όλοι οι clients (και ο server) έχουν οθόνη LCD ACER V223HQV, αναλογίας 16:9, όμως οι διαθέσιμες αναλύσεις είχαν λάθος aspect ratio, εκτός από μια, την 1360x768, η οποία όμως είναι πολύ χαμηλή.
Έτσι πειραματίστηκα με την εντολή xrandr και πρσθέτοντας στο etc/gdm/Init/Default του server τις εντολές:
xrandr --newmode "1920x1080"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsyncc
xrandr --addmode VGA1 1920x1080
xrandr --output VGA1 --mode 1920x1080

τις οποίες τιμές βρήκα εκτελώντας:
cvt 1920 1080

πέτυχα όταν κάνω login να έχω την επιθυμητή ανάλυση 1920x1080.

Το πρόβλημά μου είναι πως θα προσθέσω το σωστό mode και στους clients (όλοι fat);

Δοκίμασα με τις ρυθμίσεις του lts.conf
XRANDR_MODE_0=1920x1080
XRANDR_RATE_0=60
X_HORZSYNC=30.0-80.0 
X_VERTREFRESH=55.0-75.0

τις οποίες τιμές βρήκα στο manual της οθόνης, αλλά τίποτα... Πάλι με λάθος ανάλυση λειτουργούν.

Παραθέτω κι ένα μέρος του /var/log/Xorg.7.log http://pastebin.com/s0hYAy4k.

alkisg

Παράθεση από: geochatz στις 09 Ιαν 2012, 01:33:16 ΜΜ
Δοκίμασα με τις ρυθμίσεις του lts.conf
X_HORZSYNC=30.0-80.0


Το συγκεκριμένο X_HORZSYNC είναι υπερβολικά χαμηλό και είναι ένας από τους λόγους (δεν ξέρω αν είναι ο μόνος λόγος ή όχι) που χάνεις τις ψηλές αναλύσεις.

Δοκίμασε να το αυξήσεις, π.χ.
XRANDR_MODE_0=1920x1080
X_HORZSYNC=30-150
X_VERTREFRESH=55-75


Επίσης, το xorg.0.log που πόσταρες, σε ποιο lts.conf αντιστοιχεί; Αν μπορείς ξαναπόσταρέ το με τις παραπάνω 3 γραμμές στο lts.conf.

geochatz

Δοκίμασα να μεγαλώσω το εύρος του HORZSYNC με αποτέλεσμα η login screen να έχει μετατοπιστεί προς τα δεξιά και να υπάρχει ένα μαύρο κενό στο 1/4 της οθόνης αριστερά. Επίσης κάνοντας login, αυξήθηκαν οι διαθέσιμες αναλύσεις, αλλά όλες οι καινούριες διαθέσιμες έχουν λάθος aspect ratio (4:3 και μια 16:10), οπότε το πρόβλημα δεν λύθηκε.
Ξαναποστάρω ολόκληρο το Xorg log ενός client: http://pastebin.com/5pFqXiv6
το οποίο αντιστοιχεί σε αυτό το lts.conf:
XRANDR_MODE_0=1920x1080
XRANDR_RATE_0=60
X_HORZSYNC=30.0-150.0 
X_VERTREFRESH=55.0-75.0


ΥΓ: Όταν κάνουμε αλλαγές στο lts.conf με ποια εντολή ξαναφορτώνεται στο sch-scripts το νέο lts.conf;

alkisg

Το πρόβλημα είναι αυτή η γραμμή στο xorg.log σου:
Παράθεση
(II) intel(0): Not using default mode "1920x1080" (monitor doesn't support reduced blanking)

Ίσως το σχετικό bug report να είναι αυτό:
https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/524299

Αυτός που ανέφερε το bug, λέει ότι του λύθηκε στη Maverick.
Οπότε προτείνω να σβήσεις όλες τις X* καταχωρήσεις από το lts.conf, να βάλεις νέο kernel στον εικονικό δίσκο όπως περιγράφεται εδώ, και στη συνέχεια να επανεκκινήσεις τους clients.

Γενικά κάθε φορά που κάνεις αλλαγές στο lts.conf θα πρέπει να επανεκκινείς τους clients για να εφαρμοστούν οι αλλαγές. Τα sch-scripts δεν θέλουν κάποια "ενημέρωση", παρά μόνο αν αλλάζεις τα HOSTNAMEs των clients, οπότε και θέλουν κλείσιμο και ξαναάνοιγμα.

alkisg

Αν και θεωρητικά το lts.conf υποστηρίζει την προσθήκη νέων αναλύσεων με την οδηγία XRANDR_NEWMODE_0, δυστυχώς έχει bugs που αποτρέπουν τη σωστή λειτουργία της.
Έτσι προτείνω να δημιουργήσεις το αρχείο /opt/ltsp/i386/usr/share/ltsp/xinitrc.d/I10-xrandr-mode-1920 και να βάλεις μέσα του τις εντολές που θες:
Κώδικας: shell
if [ -n "$MODE_1920" ]; then
    xrandr --newmode 1920x1080 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
    xrandr --addmode VGA1 1920x1080
    xrandr --output VGA1 --mode 1920x1080
fi


Η εντολή if θα το κάνει να ενεργεί μόνο στα τερματικά για τα οποία βάζεις MODE_1920=True στο lts.conf, ή, σε όλα αν το βάλεις κάτω από το [Default].

Συμπιέζεις τον εικονικό δίσκο, επανεκκινείς τους clients κι αν όλα πάνε καλά θα είσαι έτοιμος.

geochatz

Με την αλλαγή kernel δεν λύθηκε το πρόβλημα.
Λύθυκε όμως με αυτό που πρότεινε από πάνω ο Άλκης. Αρχικά όμως, ενώ στη login screen η ανάλυση ήταν 1920x1080, όταν έμπαινε κάποιος χρήστης, η ανάλυση χαμήλωνε. Βέβαια η 1920x1080 ήταν διαθέσιμη, αλλά δεν έμπαινε από μόνη της.
Με την προσθήκη του:
XRANDR_MODE_0=1920x1080
XRANDR_RATE_0=60
X_HORZSYNC=30.0-100.0
X_VERTREFRESH=55.0-75.0
όλα λειτουργούν ΟΚ πλέον.

Ευχαριστώ πολύ!

alkisg

Παράθεση από: geochatz στις 11 Ιαν 2012, 12:25:48 ΜΜ
Αρχικά όμως, ενώ στη login screen η ανάλυση ήταν 1920x1080, όταν έμπαινε κάποιος χρήστης, η ανάλυση χαμήλωνε.

Όταν κάποιος χρήστης διαλέγει μια ανάλυση από το διάλογο επιλογής αναλύσεων, αυτή αποθηκεύεται στο αρχείο ~/.config/monitors.xml.
Κατά πάσα πιθανότητα λοιπόν αυτοί οι χρήστες είχαν αποθηκευμένες προτιμήσεις ανάλυσης, τις οποίες μπορείς να διαγράψεις με τις παρακάτω εντολές στο server:
Κώδικας: shell
sudo -i
rm /home/*/.config/monitors.xml
exit

geochatz

OK, όλα είναι εντάξει τώρα. Ευχαριστώ και πάλι...

odysseas

Έχοντας εγκαταστήσει το Precise, πήγα να εφαρμόσω τη λύση που περιγράφεται παραπάνω.  Αναφέρω λοιπόν τι (νέο) έκανα, σε περίπτωση που χρειάζεται και κάποιος άλλος να ακολουθήσει τα ίδια βήματα.

  • Ο κατάλογος  /opt/ltsp/i386/usr/share/ltsp/xinitrc.d/ δεν υπάρχει πια, αφού ο εικονικός δίσκος δημιουργείται από τους καταλόγους του server. Οπότε τυχόν αλλαγές θα γίνονταν απευθείας στον κατάλογο /usr/share/ltsp/xinitrc.d/. Ωστόσο, δε χρειάζεται πια καμία αλλαγή εκεί, ούτε προσθήκη κάποιου script.
  • Στον κατάλογο usr/share/ltsp/xinitrc.d/ υπάρχει το script I10-xrandr το οποίο χειρίζεται ό,τι υπάρχει στο lts.conf που σχετίζεται με το xrandr. Σε αυτό έχει προστεθεί (από τον Άλκη!) μια νέα επιλογή η XRANDR_COMMAND, η οποία εκτελεί απευθείας εντολές του xrandr. Οπότε, η προσθήκη μιας νέας ανάλυσης για τους clients γίνεται πλέον (ή τουλάχιστον έτσι το έκανα εγώ) προσθέτοντας στο lts.conf τα εξής:
XRANDR_NEWMODE_0=1920x1080 148.5 1920 2008 2052 2200 1080 1084 1089 1125 +HSync +VSync
XRANDR_COMMAND_0="xrandr --addmode VGA1 1920x1080"
XRANDR_COMMAND_1="xrandr --output VGA1 --mode 1920x1080"