Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[TIP] uvesafb et les cartes intel
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
Mickael
Advocate
Advocate


Joined: 05 Sep 2005
Posts: 2383
Location: ~Belfort! - France - EU

PostPosted: Thu Apr 24, 2008 1:19 pm    Post subject: [TIP] uvesafb et les cartes intel Reply with quote

Il est connu que les chipsets des cartes vidéos intel pour des écrans larges de type widescreen ont un BIOS boggé, qui ne reconnait pas la résolution native de votre écran. C'est mon cas avec une résolution de 1280x800. Uvesafb lit les résolutions qui sont décrites dans le bios, et par conséquent si la résolution de votre écran ne s'y trouve pas, uvesa ne fournira pas l'affichage que vous souhaitez.

Heureusement, vous avez à votre disposition deux outils : 855resolution et 915resolution, qui vont vous permettre de patcher votre bios afin d'y inclure la bonne résolution. C'est donc le couple XXXresolution/uvesafb qui vont faire le travail d'Intel. Ne vous en faite pas, lorsque vous serez sous X 915resolution n'alternera pas votre affichage, puisque depuis la version 2.0.0 des pilotes intel, ces derniers ne sont plus basés sur les informations contenues dans le BIOS de votre carte graphique. Comment faire :

Il vous faut suivre dans un premier temps les indications de Spock :
mais attention, le point numéro 2 varie un tout petit peu, le pilote Graphics support ---> Userspace VESA VGA graphics support doit être compilé en tant que module (M) et non pas en dur (* ou y).
le site : http://dev.gentoo.org/~spock/projects/uvesafb/

Maintenant installer XXXresolution. Ceci fait, vous devez configurez correctement /etc/conf.d/915resolution suivant vos besoins. Exemple qui concerne mon portable DELL inspiron 6400 :
Code:
 915resolution -l
Intel 800/900 Series VBIOS Hack : version 0.5.3

Chipset: 945GM
BIOS: TYPE 1
Mode Table Offset: $C0000 + $269
Mode Table Entries: 36

Mode 30 : 640x480, 8 bits/pixel
Mode 32 : 800x600, 8 bits/pixel
Mode 34 : 1024x768, 8 bits/pixel
Mode 38 : 1280x1024, 8 bits/pixel
Mode 3a : 1600x1200, 8 bits/pixel
Mode 3c : 1920x1440, 8 bits/pixel
Mode 41 : 640x480, 16 bits/pixel
Mode 43 : 800x600, 16 bits/pixel
Mode 45 : 1024x768, 16 bits/pixel
Mode 49 : 1280x1024, 16 bits/pixel
Mode 4b : 1600x1200, 16 bits/pixel
Mode 4d : 1920x1440, 16 bits/pixel
Mode 50 : 640x480, 32 bits/pixel
Mode 52 : 800x600, 32 bits/pixel
Mode 54 : 1024x768, 32 bits/pixel
Mode 58 : 1280x1024, 32 bits/pixel
Mode 5a : 1600x1200, 32 bits/pixel
Mode 5c : 1920x1440, 32 bits/pixel

Dans cette liste, on choisie un mode qui ne nous sert à rien, et je choisis le Mode50 : 640x480, 32 bits/pixel. Maintenant on se dirige dans le fichier de configuration de 915resolution, /etc/conf.d/915resolution :
Quote:
# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sys-apps/915resolution/files/confd,v 1.3 2007/04/17 16:52:24 genstef Exp $

# Config file for /etc/init.d/915resolution
# based on the config file included with sys-apps/855resolution

# this example will replace mode "4d" with 1280x768x24
replace="'4d 1280 768 24'"

# to replace more than one mode do something like this
#replace="'4d 1280 768 24' '5c 1400 1050 16'"

# if you want to log the output add the file here.
# this will be overwritten at every boot
log="/var/log/915resolution"

Comme vous pouvez le voir c'est assez explicite, dans mon cas je fais un :
Code:
replace="'50 1280 800 24'"
c'est pas la peine de tenter le diable avec une profondeur en 32 bits, pour le framebuffer, le mode 24 bits suffira.

Pour que l'ensemble fonctionne, il faut que 915resolution patch votre BIOS au démarrage et avant que le module uvesafb ne soit lancé. On place le service 915resolution au boot:
Code:
eselect rc add 915resolution boot
Adding 915resolution to following runlevels
  boot                      [done]


Passons à uvesafb. Il vous faut créer le fichier /etc/modules.d/uvesafb et y spécifier ces options :
Code:
options uvesafb mode=1280x800-24 mtrr=3 scroll=ywrap vbemode=348
Comment optenir l'option vbemode. C'est très simple :
Code:
emerge pv lrmi

Code:
 vbetest
VBE Version 3.0
Intel(r) 82945GM Chipset Family Graphics Chip Accelerated VGA BIOS
[261] 1024x768 (256 color palette)
[279] 1024x768 (5:6:5)
[280] 1024x768 (8:8:8)
[274] 640x480 (8:8:8)
[276] 800x600 (5:6:5)
[277] 800x600 (8:8:8)
[257] 640x480 (256 color palette)
[259] 800x600 (256 color palette)
[273] 640x480 (5:6:5)
Type a mode number, or 'q' to quit - q

On charge 915resolution :
Code:
/etc/init.d/915resolution start
915resolution     | * Caching service dependencies ...                                                               [ ok ]
915resolution     | * Patching video BIOS with new video modes ...                                             [ ok ]

Code:
 vbetest
VBE Version 3.0
Intel(r) 82945GM Chipset Family Graphics Chip Accelerated VGA BIOS
[261] 1024x768 (256 color palette)
[279] 1024x768 (5:6:5)
[280] 1024x768 (8:8:8)
[274] 1280x800 (8:8:8)
[276] 800x600 (5:6:5)
[277] 800x600 (8:8:8)
[257] 1280x800 (256 color palette)
[259] 800x600 (256 color palette)
[273] 1280x800 (5:6:5)
Type a mode number, or 'q' to quit - q

C'est le mode 274 qui nous intéresse. :
Code:
options uvesafb mode=1280x800-24 mtrr=3 scroll=ywrap vbemode=274


Maintenant il suffit de lancer le module uvesafb après 915resolution lors du boot :
nano /etc/init.d/uvesafb :
Code:
#!/sbin/runscript

depend() {
        # uvesafb doit être chargé après 915resolution
        after 915resolution
        before xdm
   before consolefont
}

start() {
        # affiche un message sur ce qui est fait
        ebegin "Starting uvesafb"
        # Lance le module
        modprobe uvesafb mode=1280x800-16@60 || retval=$? #pour des noyaux < 2.6.27
!!!OU ALORS!!!
        modprobe uvesafb mode_option=1280x800-16@60 || retval=$? #pour de noayaux =/> 2.6.27
        # Affiche le succès ou l'échec
        eend $ {retval}
}


Pis voilà, maintenant je vais tester ce que je viens d'écrire, et je corrigerai. :) !!

Dernier point : Il est inutile de configurer grub avec video=etcetc.

EDIT : alors cela fonctionne. Mais je me suis rendu compte que cela était également décrit pour un eepc sur le wiki. J'ai repris de ce Wiki le script d'init. Par contre je me demande si le fichier dans modules.d est nécessaire puisque l'on passe les options du module dans le fichier d'init.
_________________
À LIRE : COMMENT POSTER ET OBTENIR DE L'AIDE ?
Qui suis-je ? Bon j'ai relu, comme d'habitude, je suis bon a rien le vendredi
Qui suis-je ? Je ne serai jamais modo


Last edited by Mickael on Tue Feb 03, 2009 1:24 pm; edited 1 time in total
Back to top
View user's profile Send private message
UB|K
l33t
l33t


Joined: 27 May 2004
Posts: 786
Location: Villeurbanne, France

PostPosted: Tue May 13, 2008 10:06 pm    Post subject: Reply with quote

Salut,
pour info, on peut faire encore mieux: un bô gensplash directement en 12800x800 (ou autres résolutions non-standard qui nous ont tant fait suer avec nos pauvres cartes intel).
En gros, il s'agit d'inclure directement une partie du code de 915resolution dans v86d et d'inclure l'initramfs produit par ce dernier dans le noyau. On peut alors mettre des options type "video=uvesafb:1280x800-24" dans le bootloader sans que le noyau soit perdu et ainsi bénéficier dès les premiers instants du boot d'un frame-buffer dans la résolution native de l'écran.
Bon, c'est un peu confus mon truc mais si ça intéresse quelqu'un, j'essayerai de retrouver le post qui parle de ça et d'en faire une traduction un peu plus consistante...
Back to top
View user's profile Send private message
Mickael
Advocate
Advocate


Joined: 05 Sep 2005
Posts: 2383
Location: ~Belfort! - France - EU

PostPosted: Wed May 14, 2008 8:00 am    Post subject: Reply with quote

Ha mais te gênes pas!
_________________
À LIRE : COMMENT POSTER ET OBTENIR DE L'AIDE ?
Qui suis-je ? Bon j'ai relu, comme d'habitude, je suis bon a rien le vendredi
Qui suis-je ? Je ne serai jamais modo
Back to top
View user's profile Send private message
UB|K
l33t
l33t


Joined: 27 May 2004
Posts: 786
Location: Villeurbanne, France

PostPosted: Wed May 14, 2008 9:02 am    Post subject: Reply with quote

Voilou, j'ai retrouvé le post en question. D'après l'auteur, c'est un hack un peu crade mais j'aime bien :twisted: . La marche à suivre est la suivante:

1. Patcher v86d

  • Copier l'eduild de sys-app/v86d dans un overlay
  • Décompresser 915resolution quelque part et copier 915resoltion.c dans ${FILESDIR}
  • Copier dans ${FILESDIR} le patch quivabien (de son petit nom: v86d-915.patch):

Code:
diff -Naur v86d-0.1.2/Makefile v86d-0.1.2.new/Makefile
--- v86d-0.1.2/Makefile   2007-11-04 17:00:20.000000000 +0200
+++ v86d-0.1.2.new/Makefile   2007-11-08 12:15:14.000000000 +0200
@@ -39,7 +39,7 @@
 %.o: %.c v86.h
    $(CC) $(CFLAGS) -c -o $@ $<
 
-v86d: v86.o v86_common.o $(V86OBJS)
+v86d: v86.o v86_common.o 915resolution.o $(V86OBJS)
    $(CC) $(LDFLAGS) $+ $(LDLIBS) -o $@
 
 testvbe: testvbe.o v86_common.o $(V86OBJS)
diff -Naur v86d-0.1.2/v86.c v86d-0.1.2.new/v86.c
--- v86d-0.1.2/v86.c   2007-11-04 17:00:20.000000000 +0200
+++ v86d-0.1.2.new/v86.c   2007-11-08 12:19:52.000000000 +0200
@@ -61,6 +61,8 @@
 }
 
 
+int main_915(int argc, char *argv[]);
+
 int main(int argc, char *argv[])
 {
    char buf[CONNECTOR_MAX_MSG_SIZE];
@@ -69,6 +71,10 @@
    struct sockaddr_nl l_local;
    struct cn_msg *data;
    struct pollfd pfd;
+   char *args_915[] = {"915resolution", "58", "1280", "800", "32", 0};
+   
+   /* Hacking i915 bios */
+   main_915(5, args_915);
 
    s = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_CONNECTOR);
    if (s == -1) {

  • Modifer le patch (29ème ligne) afin que 915resolution s'occupe du bon mode (dans mon cas je modifie le mode 58 pour qu'il marche en 1280x800-32)
  • Modifier l'ebuild de la façon suivante:
    - ajouter "eutils" à "inherit ..." pour que portage comprenne la commande "epatch"
    - copier 915resolution et le patch en ajoutant

Code:
cp ${FILESDIR}/915resolution.c ${S}/
epatch ${FILESDIR}/v86d-915.patch

  • refaire le digest de tout ça et emerger v86d


2. Ajouter l'initramfs de v86d au kernel

modifier:
Code:
General setup  --->
      CONFIG_INITRAMFS_SOURCE

afin que ça pointe sur "/usr/share/v86d/initramfs"
recompiler le kernel et l'installer

3. Configuer GRUB

Maintenant, on peut utiliser uvesafb dans une résolution non-standard dès le boot soit dans mon cas (1280x800 32bits):
Code:
kernel /boot/kernel-2.6.25-tuxonice root=/dev/sda1 video=uvesafb:1280x800-32,mtrr:3,ywrap blahblah...

voire éventuellement les options qui concernent gensplash si l'on a pris soin de créer un initrd contenant un thème dans la résolution choisie.

4. Banzai

Reboot et sous vos yeux ébahis, un splash (ou juste la console si vous n'aimez pas gensplash) dans la résolution native de votre écran wide.
Back to top
View user's profile Send private message
Mickael
Advocate
Advocate


Joined: 05 Sep 2005
Posts: 2383
Location: ~Belfort! - France - EU

PostPosted: Wed May 14, 2008 9:34 am    Post subject: Reply with quote

C'est beau! :cry: merci !
_________________
À LIRE : COMMENT POSTER ET OBTENIR DE L'AIDE ?
Qui suis-je ? Bon j'ai relu, comme d'habitude, je suis bon a rien le vendredi
Qui suis-je ? Je ne serai jamais modo
Back to top
View user's profile Send private message
geekounet
Bodhisattva
Bodhisattva


Joined: 11 Oct 2004
Posts: 3757
Location: Lyon, France

PostPosted: Fri Jun 27, 2008 7:41 am    Post subject: Reply with quote

Je confirme, ça fonctionne chez moi :)
Par contre en plus de ça, j'ai du patcher 915resolution.c pour le support des Intel 965GM, et tout passe ensuite :)
L'ebuild est ici (par contre ça va bouger de place dans qq temps pour l'url, changement de dépot :P), mais par contre le patch force du 1280x800-32 en dur, c'est pas suffisamment souple, donc faut modifier le patch au besoin. Je tenterai à l'occasion de coder un truc propre par dessus, voire intégrer 915resolution dans uvesafb lui-même. :P
_________________
Google+ | Twitter
Back to top
View user's profile Send private message
UB|K
l33t
l33t


Joined: 27 May 2004
Posts: 786
Location: Villeurbanne, France

PostPosted: Fri Jun 27, 2008 10:23 am    Post subject: Reply with quote

geekounet wrote:
Je confirme, ça fonctionne chez moi :)
Par contre en plus de ça, j'ai du patcher 915resolution.c pour le support des Intel 965GM, et tout passe ensuite :)
L'ebuild est ici (par contre ça va bouger de place dans qq temps pour l'url, changement de dépot :P), mais par contre le patch force du 1280x800-32 en dur, c'est pas suffisamment souple, donc faut modifier le patch au besoin. Je tenterai à l'occasion de coder un truc propre par dessus, voire intégrer 915resolution dans uvesafb lui-même. :P

Sur que le fait que le mode soit renseigné directement dans le patch c'est pas pratique. J'avais réfléchi vite fait à une solution un peu plus propre et je pense que le plus simple serait d'avoir une variable dans le make.conf (style 915_MODE="58 1280 800 32") qui spécifie le mode, la résolution à patcher afin de modifier directement le patch à gros coup de sed avant de l'appliquer...

Bon, après c'est pas si simple que ça: j'ai déjà pas réussi à récupérer correctement ma variable lors de l'emerge alors j'ai laissé tout ça en plan. Puis à l'usage, comme v86d n'est pas mis à jour trop fréquemment je n'ai eu à faire la manip' qu'une seule fois donc à part pour la beauté du geste c'est pas vraiment vital de trouver un solution plus propre (feignasse inside :oops: ).

Par conte, à l'occaz', ça pourrait être bien de traduire tout ça en anglais car cette astuce est passée complètement inaperçue chez nos amis anglophones: suffit de voir les gens galérer avec la solution 'uvseafb en module' sur le thread UvesaFB ...
Back to top
View user's profile Send private message
geekounet
Bodhisattva
Bodhisattva


Joined: 11 Oct 2004
Posts: 3757
Location: Lyon, France

PostPosted: Fri Jun 27, 2008 3:20 pm    Post subject: Reply with quote

Je voyais mieux une solution du genre l'intégrer à uvesafb et y rajouter une option kernel spéciale 915resolution, ça serai carrément plus souple. :)
_________________
Google+ | Twitter
Back to top
View user's profile Send private message
Pixys
l33t
l33t


Joined: 23 May 2005
Posts: 669

PostPosted: Wed Aug 27, 2008 4:27 pm    Post subject: Reply with quote

On peut utiliser cette méthode pour un ecran 1680x1050 sur une carte nvidia ?
Back to top
View user's profile Send private message
geekounet
Bodhisattva
Bodhisattva


Joined: 11 Oct 2004
Posts: 3757
Location: Lyon, France

PostPosted: Sun Aug 31, 2008 3:17 pm    Post subject: Reply with quote

Pixys wrote:
On peut utiliser cette méthode pour un ecran 1680x1050 sur une carte nvidia ?

Non, c'est que avec Intel, et avec des drivers libres qui sentent bon. :)
_________________
Google+ | Twitter
Back to top
View user's profile Send private message
Mickael
Advocate
Advocate


Joined: 05 Sep 2005
Posts: 2383
Location: ~Belfort! - France - EU

PostPosted: Thu Sep 11, 2008 7:55 am    Post subject: Reply with quote

Pour être un peu plus précis par rapport à la réponse de Geekounet : les méthodes décrites ici avec 915resolution ne fonctionnent que pour du matos Intel. Par contre tu peux jetter un oeil sur le forum ainsi que sur bgo car uvesafb fonctionne également avec les autres modèles de carte : ATI NVIDIA SIS etc. Ta résolution tu ne l'auras qu'à la seule condition quelle soit implantée dans le BIOS. Nous utilisons 915resolution pour patcher temporairement, lors du démarrage, nos BIOS car Intel+ConstructeurPC(exemple DELL) n'implémentent pas nos résolutions d'écrans .... c'est balo. Vendre un portable en 1280x800 et écrire un bios en 800x600 1024x780 c'est tout de même un peu con...

Enfin, ça ne fonctionne plus pour moi et un saut sur bgo ne m'a pas aidé, malgré un bug ouvert. Qui confirme svp.
_________________
À LIRE : COMMENT POSTER ET OBTENIR DE L'AIDE ?
Qui suis-je ? Bon j'ai relu, comme d'habitude, je suis bon a rien le vendredi
Qui suis-je ? Je ne serai jamais modo
Back to top
View user's profile Send private message
geekounet
Bodhisattva
Bodhisattva


Joined: 11 Oct 2004
Posts: 3757
Location: Lyon, France

PostPosted: Sat Sep 13, 2008 9:07 am    Post subject: Reply with quote

Chez moi tout fonctionne toujours. J'ai refait mon propre patch proprement, qui corrige à la fois pour le 1280x800 et le 1440x900. Ya un ebuild tout fait dans mon overlay (layman -a akoya) pour ceux qui ne veulent pas se prendre la tête, suffit juste de rajouter le use 915resolution_hack sur v86d et de le réemerger. :)

EDIT: ha c'est vrai que j'en avais déjà un peu causé plus haut de mon ebuild. :P
_________________
Google+ | Twitter
Back to top
View user's profile Send private message
Mickael
Advocate
Advocate


Joined: 05 Sep 2005
Posts: 2383
Location: ~Belfort! - France - EU

PostPosted: Wed Sep 17, 2008 8:55 am    Post subject: Reply with quote

Dit geekounet, par rapport à mon premier poste j'ai des trucs à changer si j'applique ton patch ?
_________________
À LIRE : COMMENT POSTER ET OBTENIR DE L'AIDE ?
Qui suis-je ? Bon j'ai relu, comme d'habitude, je suis bon a rien le vendredi
Qui suis-je ? Je ne serai jamais modo
Back to top
View user's profile Send private message
geekounet
Bodhisattva
Bodhisattva


Joined: 11 Oct 2004
Posts: 3757
Location: Lyon, France

PostPosted: Wed Sep 17, 2008 8:10 pm    Post subject: Reply with quote

Bah heu, en gros avec mon patch, 915resolution est en dur dans v86d, comme ce qu'a proposé UB|K, donc tu peux mettre uvesafb en dur si t'as envie, et il faut juste recompiler un coup ton kernel pour y ré-inclure le v86d patché dans l'initramfs. :) Et dans les arguments du kernel dans grub, tu mets ton video=uvesafb:1280x800-32,mtrr:1,ywrap comme d'habitude (à adapter bien sur), et pas de 915resolution à lancer au boot du coup aussi. :)
Et ça fonctionne au moins chez kopp et moi si ça peut te rassurer. :P
_________________
Google+ | Twitter
Back to top
View user's profile Send private message
Mickael
Advocate
Advocate


Joined: 05 Sep 2005
Posts: 2383
Location: ~Belfort! - France - EU

PostPosted: Tue Feb 03, 2009 1:22 pm    Post subject: Reply with quote

Mickael wrote:
Pour être un peu plus précis par rapport à la réponse de Geekounet : les méthodes décrites ici avec 915resolution ne fonctionnent que pour du matos Intel. Par contre tu peux jetter un oeil sur le forum ainsi que sur bgo car uvesafb fonctionne également avec les autres modèles de carte : ATI NVIDIA SIS etc. Ta résolution tu ne l'auras qu'à la seule condition quelle soit implantée dans le BIOS. Nous utilisons 915resolution pour patcher temporairement, lors du démarrage, nos BIOS car Intel+ConstructeurPC(exemple DELL) n'implémentent pas nos résolutions d'écrans .... c'est balo. Vendre un portable en 1280x800 et écrire un bios en 800x600 1024x780 c'est tout de même un peu con...

Enfin, ça ne fonctionne plus pour moi et un saut sur bgo ne m'a pas aidé, malgré un bug ouvert. Qui confirme svp.


Depuis la version 27 des noyaux, il faut mettre modprobe uvesafb mode_option=1280x800-16@60 scroll=ywrap || retval=$? en lieu et place de option, et ça roule.

Enjoy.
_________________
À LIRE : COMMENT POSTER ET OBTENIR DE L'AIDE ?
Qui suis-je ? Bon j'ai relu, comme d'habitude, je suis bon a rien le vendredi
Qui suis-je ? Je ne serai jamais modo
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum