View previous topic :: View next topic |
Author |
Message |
Mickael Advocate
Joined: 05 Sep 2005 Posts: 2387 Location: ~Belfort! - France - EU
|
Posted: Thu Apr 24, 2008 1:19 pm Post subject: [TIP] uvesafb et les cartes intel |
|
|
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: | 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 |
|
|
UB|K l33t
Joined: 27 May 2004 Posts: 786 Location: Villeurbanne, France
|
Posted: Tue May 13, 2008 10:06 pm Post subject: |
|
|
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 |
|
|
Mickael Advocate
Joined: 05 Sep 2005 Posts: 2387 Location: ~Belfort! - France - EU
|
Posted: Wed May 14, 2008 8:00 am Post subject: |
|
|
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 |
|
|
UB|K l33t
Joined: 27 May 2004 Posts: 786 Location: Villeurbanne, France
|
Posted: Wed May 14, 2008 9:02 am Post subject: |
|
|
Voilou, j'ai retrouvé le post en question. D'après l'auteur, c'est un hack un peu crade mais j'aime bien . 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 |
|
|
Mickael Advocate
Joined: 05 Sep 2005 Posts: 2387 Location: ~Belfort! - France - EU
|
Posted: Wed May 14, 2008 9:34 am Post subject: |
|
|
C'est beau! 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 |
|
|
geekounet Bodhisattva
Joined: 11 Oct 2004 Posts: 3772 Location: Wellington, Aotearoa
|
Posted: Fri Jun 27, 2008 7:41 am Post subject: |
|
|
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 ), 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. |
|
Back to top |
|
|
UB|K l33t
Joined: 27 May 2004 Posts: 786 Location: Villeurbanne, France
|
Posted: Fri Jun 27, 2008 10:23 am Post subject: |
|
|
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 ), 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. |
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 ).
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 |
|
|
geekounet Bodhisattva
Joined: 11 Oct 2004 Posts: 3772 Location: Wellington, Aotearoa
|
Posted: Fri Jun 27, 2008 3:20 pm Post subject: |
|
|
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. |
|
Back to top |
|
|
Pixys l33t
Joined: 23 May 2005 Posts: 669
|
Posted: Wed Aug 27, 2008 4:27 pm Post subject: |
|
|
On peut utiliser cette méthode pour un ecran 1680x1050 sur une carte nvidia ? |
|
Back to top |
|
|
geekounet Bodhisattva
Joined: 11 Oct 2004 Posts: 3772 Location: Wellington, Aotearoa
|
Posted: Sun Aug 31, 2008 3:17 pm Post subject: |
|
|
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. |
|
Back to top |
|
|
Mickael Advocate
Joined: 05 Sep 2005 Posts: 2387 Location: ~Belfort! - France - EU
|
Posted: Thu Sep 11, 2008 7:55 am Post subject: |
|
|
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 |
|
|
geekounet Bodhisattva
Joined: 11 Oct 2004 Posts: 3772 Location: Wellington, Aotearoa
|
Posted: Sat Sep 13, 2008 9:07 am Post subject: |
|
|
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. |
|
Back to top |
|
|
Mickael Advocate
Joined: 05 Sep 2005 Posts: 2387 Location: ~Belfort! - France - EU
|
Posted: Wed Sep 17, 2008 8:55 am Post subject: |
|
|
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 |
|
|
geekounet Bodhisattva
Joined: 11 Oct 2004 Posts: 3772 Location: Wellington, Aotearoa
|
Posted: Wed Sep 17, 2008 8:10 pm Post subject: |
|
|
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. |
|
Back to top |
|
|
Mickael Advocate
Joined: 05 Sep 2005 Posts: 2387 Location: ~Belfort! - France - EU
|
Posted: Tue Feb 03, 2009 1:22 pm Post subject: |
|
|
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 |
|
|
|
|
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
|
|