You are not logged in.

#1 2008-12-01 14:31:23

mjcburr
Member
From: Canada
Registered: 2008-11-27
Posts: 2

Uvesafb Issue

I'm a long time Gentoo user and I've been trying Arch out for the past 2 weeks and the only problem that I had with the transition was getting uvesafb to work. It worked fine in Gentoo, but the Arch way is not the same. I'm using my own kernel (vanilla 2.6.27.7) and not the arch provided one.

Here is how it gets setup in Gentoo:
http://www.gentoo-wiki.info/HOWTO_Frame … rt#uvesafb

I'm using this for the resolution:
video=uvesafb:1680x1050-32@60,mtrr:3,ywrap

I used Pacman to find out that v86d does not install the initramfs file that I was using before. I have uvesafb compiled into the kernel, and everytime I bootup I get the following message:

uvesafb: failed to execute /sbin/v86d
uvesafb: make sure that the v86d helper is installed and executable

What am I missing? I tried the Arch wiki article on the subject with no success.

Offline

#2 2008-12-01 15:52:44

Flasher
Member
From: Bavaria / Germany
Registered: 2005-04-24
Posts: 126

Re: Uvesafb Issue

Hello!

I have the same problem with my custom kernel. I built my kernel with uvesafb support (no module).

Nov 26 13:57:32 sn-client-09 v86d[226]: segfault at 8034 ip 0804a0bf sp bfb649a0 error 4 in v86d[8048000+7c000]
Nov 26 13:57:32 sn-client-09 uvesafb: failed to execute /sbin/v86d
Nov 26 13:57:32 sn-client-09 uvesafb: make sure that the v86d helper is installed and executable
Nov 26 13:57:32 sn-client-09 uvesafb: Getting VBE info block failed (eax=0x4f00, err=11)
Nov 26 13:57:32 sn-client-09 uvesafb: vbe_init() failed with -22
Nov 26 13:57:32 sn-client-09 uvesafb: probe of uvesafb.0 failed with error -22

I'm using the current kernel 2.6.27.6 and v86d 0.19. initramfs support is enabled and the initramfs-config file from v86d package is copied in /usr/share/v86d/initramfs.

│ │                                      [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support                                         
  │ │                                      (/usr/share/v86d/initramfs) Initramfs source file(s)                                                       
  │ │                                      (0)     User ID to map to 0 (user root)                                                                     
  │ │                                      (0)     Group ID to map to 0 (group root)

I also tested to build uvesafb as a module. After typing modeprobe uvesafb I get the same error-message in my kernel.log

Best regards,

Flasher

Offline

#3 2008-12-21 15:08:25

Flasher
Member
From: Bavaria / Germany
Registered: 2005-04-24
Posts: 126

Re: Uvesafb Issue

Hello!

Today I found a solution to get the v86d helper working with a custom kernel. Here are my PKGBUILD vor v86d:

# Maintainer: Flasher.D84 <Flasher.D84@gmail.com>
pkgname=v86d_custom
pkgver=0.1.9
pkgrel=6
pkgdesc="v86d is the userspace helper for uvesafb"
arch=(i686 x86_64)
makedepends=('kernel26_custom>=2.6.27' 'kernel26_custom<2.6.28')
url="http://dev.gentoo.org/~spock/projects/uvesafb/"
license=('GPL2')
groups=('local')
depends=('glibc' 'klibc' $(basename /lib/klibc-*.so .so))
source=(http://dev.gentoo.org/~spock/projects/uvesafb/archive/v86d-$pkgver.tar.bz2)
md5sums=('ebbbc8e7013c9544b6ba6981add43831')

build() {
  cd $startdir/src/v86d-$pkgver

  ./configure --with-klibc
  make KDIR=/usr/src/linux || return 1
  make DESTDIR=$startdir/pkg install || return 1

  mkdir -p $startdir/pkg/usr/share/v86d
  install -D -m644 $startdir/src/v86d-$pkgver/misc/initramfs $startdir/pkg/usr/share/v86d/
}

Best regards,

Flasher

Offline

#4 2008-12-21 17:36:34

mjcburr
Member
From: Canada
Registered: 2008-11-27
Posts: 2

Re: Uvesafb Issue

I'll have to give that a try when I get a chance. I managed to get the regular vesa framebuffer working at the correct resolution, but I'll give this a try anyways.

Offline

#5 2008-12-22 12:52:57

july`s
Member
Registered: 2004-08-16
Posts: 8

Re: Uvesafb Issue

it will be nice to see different solution about the same problem (uvesafb native resolution framebuffer console)

In my case imho root couse of problem is that i use laptop (e.g. LVDS output, so i a have to switch the mode at boot time).

I have try several ways to solve the problem, but the best i was able to use was 1280x1024 (instead of the native 1680x1050).

I have tried to use uvesafb as a module, but it only works for if i had set video=uvesafb:1680x1050 in the kernel command line (it failbacks to 1280x1024 anyway).
If i try to use uvesafb as a module (e.g. switch to framebuffer console at a later point, for example after using 915resolution) framebuffer console dosent work at all. (issue about LVDS and must set mode at a boot time).

So after some debugging, the way to solve problem was clear. I had to run 915resolution, before successful use of uvesafb.
uvesafb relies on a helper application v86d. So uvesafb.c call it:). I just need to call 915resolution before uvesafb.c call v86d:

~/packages/linux-2.6.28-rc6$ diff drivers/video/uvesafb.c_org drivers/video/uvesafb.c
35a36
> static char i915res_path[PATH_MAX] = "/usr/sbin/915resolution";
111c112
<         "PATH=/sbin:/bin",
---
>         "PATH=/sbin:/bin:/usr/sbin",
119c120,124
< 
---
>     char *i915argv[] = {
>         i915res_path,    
>         "30 1680 1050 32",
>     };
>     call_usermodehelper (i915res_path, i915argv, envp, 1);

even it looks good, i was not able to find (quick) way to pass the required parameters to 915resolution, so i needed to modify it:

~/packages/sources/915resolution-0.5.3$ diff 915resolution.c_gentoo_patched 915resolution.c_my 
767a768
> 
902c903,905
<     
---
>    //hack early kernel
>     int argcount = 5;
>     char *opcii[] = {" ", "30", "1680", "1050", "32"};  
904,905c907,908
< 
<     if (parse_args(argc, argv, &filename, &forced_chipset, &list, &mode, &x, &y, &bp, &raw, &htotal, &vtotal) == -1) {
---
>     //if (parse_args(argc, argv, &filename, &forced_chipset, &list, &mode, &x, &y, &bp, &raw, &htotal, &vtotal) == -1) {
>     if (parse_args(argcount, opcii, &filename, &forced_chipset, &list, &mode, &x, &y, &bp, &raw, &htotal, &vtotal) == -1) {

915resolution.c_gentoo_patched is a patched version, which add support for my video chip

after that the native 1680x1050 framebuffer console is invoking so:

# (11)
title Archo gitovtoc fb modularen (2.6.28_rc8_git6)
root    (hd0,0)
kernel /boot/vmlinuz26_jjl_28rc8_git6intelfb root=/dev/sda1 ro rootfstype=xfs video=uvesafb:1680x1050-32,mtrr:3,ywrap,nocrtc,noblank,noedid
#video=uvesafb:1680x1050-32,mtrr:3,ywrap,nocrtc
#
initrd /boot/v86d.img

/boot/v86d.img is just for presenting the early booting kernel with v86d and 915resolution

~/packages/sources/915resolution-0.5.3$ zgrep UVESA /proc/config.gz
CONFIG_FB_UVESA=y

ofcourse imho this files can be built in the kernel via initramfs (i have tried that, but my iniramfs filesystem was not correct, i just gunziped v86d.img)

p.s. a nice TODO will be integrate "hacking video mode" to v86d, may be with mode settings passed as options via kernel cmd

Offline

Board footer

Powered by FluxBB