Hi!
I'm building a DVB box from the scratch using Gentoo (what else?). I intend to use vdr as my pvr software, using vdr-softdevice in DirectFB mode. I do not wish to use X, as it create a yet another set of problems and unnecessary complexity. I'm having trouble with the DirectFB versions distributed via portage. Basic framebuffer itself works like a charm, but DirectFB doesn't. I've already scoured through the web, usenet and README's but found nothing that I could use.
My hardware:
AMD Duron 750Mhz, 320MB memory, 80GB HD, Matrox G200, Technotrend C-1500 dvb-c card
Software:
Kernel 2.6.19-r5 (gentoo patched)
DirectFB 0.9.25.1 / DirectFB 1.0.0
DFB++ 0.9.23 / DirectFB 0.9.25
If I try launching _any_ DirectFB app (vdr w/ softdevice, mplayer, dfbg, dfb demo programs etc.) I get errors like this:
(*) DirectFB/Core: Single Application Core. (2007-04-14 16:37)
(!) Direct/Modules: Could not open module directory `/usr/lib/directfb-1.0-0/systems'!
--> No such file or directory
(!) DirectFB/core/system: No system found!
(#) DirectFBError [DirectFBCreate() failed]: No (suitable) implementation found!
/usr/lib/directfb-1.0.0 contains only these:
gfxdrivers inputdrivers interfaces wm
If I create a link from gfxdrivers to system, I will get this instead:
(*) DirectFB/Core: Single Application Core. (2007-04-14 16:37)
(!) Direct/Modules: Module 'libdirectfb_matrox.so' did not register itself after loading! Trying default module constructor...
(!) Direct/Modules: ... even did not register after explicitly calling the module constructor!
(!) DirectFB/core/system: No system found!
(#) DirectFBError [DirectFBCreate() failed]: No (suitable) implementation found!
If I have the link systems -> gfxdrivers, this is what strace gives me (only essential parts):
---snip---
open("/usr/lib/directfb-1.0-0/systems/libdirectfb_matrox.so", O_RDONLY) = 4
---snip---
open("/etc/ld.so.cache", O_RDONLY) = 4
---snip---
open("/lib/libsysfs.so.2", O_RDONLY) = 4
---snip---
write(2, "(!) Direct/Modules: Module \'libd"..., 127(!) Direct/Modules: Module 'libdirectfb_matrox.so' did not re
gister itself after loading! Trying default module constructor...
) = 127
write(2, "(!) Direct/Modules: ... even did"..., 95(!) Direct/Modules: ... even did not register after explicitly
calling the module constructor!
) = 95
If I install vanilla directfb-1.0.0 from
http://www.directfb.org I don't get these messages. I have not yet thoroughly tested whether I could use vanilla directfb instead, but I'd rather not because using it will bring other problems along.
Here are some hopefully relevant pieces of information about my system:
/etc/make.conf:
USE="-ipv6 mmx sysfs X acpi alsa apache2 dbus directfb dvb fbcon ffmpeg hal lm_sensors matrox mp3 nls ogg pam sam
ba theora truetype unicode usb vorbis xv xvid"
VIDEO_CARDS="mga matrox"
/etc/portage/package.use:
media-video/vdr dvbplayer jumpplay debug cmdsubmenu setup-plugin submenu subtitles
media-video/mplayer X xv
dev-libs/DirectFB -fbcon -fusion jpeg mpeg png
/etc/portage/package.keywords:
sys-apps/hwinfo ~x86
sys-fs/sysfsutils ~x86
dev-libs/DirectFB ~x86
dev-libs/DFB++ ~x86
/etc/direcfbrc:
system=fbdev
fbdev=/dev/fb0
debug
busid=1:0:0
depth=16
hardware
/etc/fb.modes (created with GTF):
mode "80low"
# PCLK: 48.71 MHz, H: 48.32 kHz, V: 80.00 Hz
geometry 768 576 768 576 16
timings 20531 120 40 24 1 80 3
hsync low
vsync high
endmode
mode "80hz"
# PCLK: 88.50 MHz, H: 64.32 kHz, V: 80.00 Hz
geometry 1024 768 1024 768 16
timings 11299 176 64 32 1 112 3
hsync low
vsync high
endmode
lsmod|grep fb:
i2c_matroxfb 4096 0
i2c_algo_bit 7304 1 i2c_matroxfb
matroxfb_base 26016 2 i2c_matroxfb
matroxfb_DAC1064 10624 1 matroxfb_base
matroxfb_accel 4160 1 matroxfb_base
cfbcopyarea 3584 1 matroxfb_accel
cfbimgblt 2688 1 matroxfb_accel
cfbfillrect 3648 1 matroxfb_accel
matroxfb_Ti3026 5568 1 matroxfb_base
matroxfb_g450 5888 1 matroxfb_base
g450_pll 5440 2 matroxfb_DAC1064,matroxfb_g450
matroxfb_misc 10864 7 i2c_matroxfb,matroxfb_base,matroxfb_DAC1064,matroxfb_accel,matroxfb_Ti3026,matroxfb_g450,g450_pll
lspci -vv (only the Matrox card):
01:00.0 VGA compatible controller: Matrox Graphics, Inc. MGA G200 AGP (rev 01) (prog-if 00 [VGA])
Subsystem: Matrox Graphics, Inc. Millennium G200 AGP
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 64 (4000ns min, 8000ns max), Cache Line Size: 32 bytes
Interrupt: pin A routed to IRQ 9
Region 0: Memory at dd000000 (32-bit, prefetchable) [size=16M]
Region 1: Memory at dfafc000 (32-bit, non-prefetchable) [size=16K]
Region 2: Memory at df000000 (32-bit, non-prefetchable) [size=8M]
Expansion ROM at dfae0000 [disabled] [size=64K]
Capabilities: [dc] Power Management version 1
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [f0] AGP version 1.0
Status: RQ=32 Iso- ArqSz=0 Cal=0 SBA+ ITACoh- GART64- HTrans- 64bit- FW- AGP3- Rate=x1,x2
Command: RQ=32 ArqSz=0 Cal=0 SBA+ AGP+ GART64- 64bit- FW- Rate=x2