# HOWTO - DXR3 w gentoo

## _troll_

Wersja: 1.1 # 29.07.2004 r.

Changelog:

27.07.2004 - pierwsza wersja

29.07.2004 - dodałem info o lspci w celu sprawdzenia jaki typ urządzenia jest u użytkownika

Witam!

Jakiś czas temu zmęczyło mnie co chwila zmieniać rozdzielczość monitora po to, by odpalić MPlayer'a z włączoną opcją fullscreen i wyjściem TV-Out. Normalnie pracuje w rozdzielczości większej niż 800x600, a jak wiecie to jest max co mogą nam dać nasze telewizory (no... chyba, że ktoś jest szczęśliwcem i ma TV warte tyle co nowy samochód  :Wink:  ). Poszukałem i rozwiązaniem mojej bolączki okazał się być stary i poczciwy DXR3, o którym mowa w tym HOWTO.

 *Quote:*   

> Nie jest to jedyne wyjście. Można też bawić się w odpalenie drugiego Xserwera o potrzebnych paramterach. Po prostu jakoś mnie to nie satysfakcjonowało... Lubię wszystko mieć pod ręką  Opinie na temat, czy rozwiązanie przedstawione w tym howto jest najlepsze pozostawiam Wam. W linuksie jedną z tych cudownych rzeczy, która przyciąga rzesze nowych użytkowników jest fakt, że dobrych rozwiązań zawsze są co najmniej dwa (ale to rzadki przypadek, bo zwykle bywa ich więcej  ).

 

PS. Podczas pisania, to małe howto trochę mi się rozbuchało.... mam nadzieję, że zostało przy tym jednak czytelne.  :Smile: 

1. Co nam daje DXR3?

- wyjście TV-Out niezależne od karty graficznej (czy to będzie nVidia, ATI, czy cokolwiek innego - to jest powód dla którego sam się zdecydowałem na takie rozwiązanie)

- wsparcie dla dekomresji filmów DVD (dzięki tej zabawce można je odtwarzać nawet na P1 133MHz - wątpię by wielu ludzi jeszcze z tego korzystało, ale mówię o tym dla porządku  :Wink:  )

- dekoder dźwięku przestrzennego (6-cio kanałowego) wraz z wyjściem cyfrowym S/PDIF

Obecnie DXR'y nie są już produkowane, więc jedyną możliwość zdobycia ich jest rynek 'second hand', a tam możesz go kupić już za 50 złotych (nie jest to więc spory wydatek  :Smile:  ).

WAŻNE: gdy będziesz chciał kupić swojego DXR'a, ważne jest byś od razu dostał kabelek do TV-Out'u! Urządzenie to ma rozszerzony standard S-Video i chociaż zwykły kabelek S-Video wejdzie w gniazdo to na ekranie TV zobaczysz wszystko w black&white. Jest tak bowiem w niestadardowym miejscu jest umieszczony pin dla wyjścia luminancji (o ile się w tym wszystkim orientuje...). Kabelek ten można dostać u producenta, ale np. dla mojego modelu jest on dostępny jedynie w Stanach za 10 dolców, co razem z kosztami przesyłki czyni taki zakup troszkę nieopłacalnym...

Do odpalenia DXR3 użyjemy sterowników i biblioteki dostępnych na stronie projektu : http://dxr3.sourceforge.net . Obsługiwane są jedynie modele z chip'em em8300:

- DXR3 z firmy Creative;

- Hollywood Plus firmy Sigma Designs (to jest model, który sam zakupiłem).

O tym, który z nich posiadasz możesz się dowiedzieć wydając polecenie 

```
lspci
```

Więcej o tym znajdziesz tutaj: http://dxr3.sourceforge.net/howto.html#detboard

2. Instalacja modułu i biblioteki

2.1. Kernel

Nim zaczniemy musimy się upewnić, że nasz kernel jest 'gotowy'. Do poprawnego działania potrzebne będą Ci:

```
Device Drivers  ---> I2C support  ---> I2C support Y/M

Device Drivers  ---> I2C support  ---> I2C Algorithms  ---> I2C bit-banging interfaces Y/M
```

2.2. Ebuild'y

Dalej - co prawda w portage znajdują się stosowne pakiety, jednak nie działają one poprawnie z kernelami z serii 2.6 (jak również późnymi 2.5). Dla jąder 2.6 potrzebne Ci będą źródła dostępne w archiwum CVS projektu. Na sieci znalazłem do nich (źródeł CVS) stosowne ebuildy (zarówno do modułu jądra, jak i do biblioteki). Niestety nie działały prawidłowo na jajkach serii 2.6, więc (jak zwykle w takich okazjach) trochę poprawiłem i zrobiłem działające wersje:

http://trollmoors.dyndns.org/em8300-modules-cvs.tar.bz2 (moduł jądra)

http://trollmoors.dyndns.org/em8300-libraries-cvs.tar.bz2 (biblioteki)

Niestety nie mialem okazji sprawdzić, czy działają one z kernelami 2.4, ale nie powinno być problemu (jeśli coś się zdarzy, że jednak ebuildy nie będą chciały działać - dajcie znać; postraram się poprawić).

Zamiast em8300-modules-cvs można użyć modułu do jądra dostarczanego razem z źródłami kernela) nie zapomnij wówczas użyć opcji --nodeps przy emerge'owaniu pakietu z biblioteką). Stosowny patch posiada m.in. love-sources oraz, obecnie, ostatni dostępny vivid-sources 2.6.7-r2 (thx Fallow!). Jakąś chwilę temu poprosiłem o dołączenie tego patcha przez Fallow'a do vivid-sources, ale wycofałem się z tego pomysłu. Z tym patchem niestety coś cienko działało, podczas gdy z ebuild'em do wersji cvs wszystko poszło bez problemu.

INFO: Oryginalne ebuildy do wersji cvs napisał Florian Schilhabel i możesz je pobrać/obejrzeć tutaj:

http://cvs.berlios.de/cgi-bin/viewcvs.cgi/gentoo-deutsch/ebuilds/media-video/em8300-modules-cvs/

http://cvs.berlios.de/cgi-bin/viewcvs.cgi/gentoo-deutsch/ebuilds/media-video/em8300-libraries-cvs/

Po pobraniu ebuild'ów i ich rozpakowaniu do PORTAGE_OVERLAY wykonujemy prosty zabieg:

```
emerge em8300-libraries-cvs
```

HINT: em8300-libraries-cvs ma w swoich zależnościach 8300-modules-cvs, więc pociągnie go automatycznie.

 *Quote:*   

> Tutaj mała uwaga. Z nieznanego mi powodu CVS na serwerach sourceforge.net działa tylko w pewnych godzinach. Tak niestety ma  . Najlepiej instalować w godzinach 21-23 czasu naszego kraju - wówczas zawsze mi działało.

 

2.3. Po emerge'owaniu

Po zainstalowaniu ebuilda _musisz_ wyedytować plik /etc/moduled.d/em8300. Umieściłem w nim stosowane wpisy dla obu typów urządzeń. Odhaszuj stosowne linie w zalęzności od typu Twojego urządzenia oraz do użytych opcji przy konfigurowaniu I2C w kernelu (jeśli nie skompilowałeś ich jako moduły, ale statycznie w jądro, wówczas nie potrzebne Ci tutaj będą zależności do ich włączenia).

Aby dowiedzieć się, którą wersję urządzenia posiadamy wydajemy polecenie 'lspci'. W wynikach odszukujemy linijkę przypominającą tą:

```
0000:01:07.0 Multimedia controller: Sigma Designs, Inc. REALmagic Hollywood Plus DVD Decoder (rev 01)
```

taki wpis ja otrzymuję przy swojej karcie.

Ja skompilowałem I2C statycznie w kernel, a moim urządzeniem jest Hollywood Plus, więc plik ten dla mnie finalnie wygląda tak:

```
vim /etc/modules.d/em8300

alias char-major-121 em8300

pre-install em8300 modprobe adv717x

options adv717x pixelport_16bit=1 pixelport_other_pal=0

options em8300 dicom_fix=0 dicom_control=0 dicom_other_pal=0
```

(zbędne linie usunąłem, ale wystarczy ich nie odhaszowywać).

Dla dociekliwych poleceam przejrzeć jeszcze na koniec ten adres http://dxr3.sourceforge.net/howto.html#detboard , aby dowiedzieć się jakie opcje przydadzą się dla Twojej karty (ja podmieniłem 'dicom_fix=0 dicom_control=0' na 'dicom_fix=1 dicom_control=1' , ale chodziło także bez tego  :Smile:  )

 *Quote:*   

> HINT: lscpi jest bardzo przydatnym poleceniem. Aby zainstalować ten programik potrzebny Ci będzie pakiet 'pciutils' - oczywiście znajdujący się w portage

 

3. Pliki urządzeń

3.1. Pliki urządzeń, a devfs

Drugim plikiem, który zainstalowałeś podczas emerge'owania jest /etc/devfs.d/em8300. Możesz go podejrzeć, jednak nie zmieniaj nic w nim, chyba że wiesz co robisz!!! (ja nie wiedziałem, a regułki pochodzą z howto (2), więc nic nie zmieniałem  :Wink:  ).

3.2. Ładowanie modułu - nieciekawy i upierdliwy problem

A teraz rzecz dośc ważna -- jeśli (i tylko wtedy gdy) używasz modułów dla sterowników dźwięku, nie wolno Ci dopisać modułu em8300 do /etc/modules.autoload.d/kernel-2.X!!!

a) nie możesz ich tutaj _w ogóle_ dopisać, jeśli Twoje moduły dźwięku ładują się razem z odpaleniem alsasound;

b) jeśli jednak tutaj posiadasz listę swoich modułów ze sterownikami dźwięku, to dopisz em8300 PO nich wszystkich.

Jest tak ponieważ moduł em8300 posiada własną kartę dźwiękową i przejmie plik urządzenia /dev/dsp (zawsze możesz odpowiednio namieszać, ale ja preferuję prostotę instalacji, jeśli jest w danej sytuacji możliwa).

No więc należy teraz powiedzieć, gdzie bezpiecznie można ładować ten moduł. Ja dodałem stosowne wpisy do /etc/conf.d/local.start, ponieważ wszystko to co się tam znajduje jest przetwarzane na końcu startu systemu. W moim przypadku wygląda to więc tak:

```
vim /etc/conf.d/local.start

modprobe adv717x

modprobe em8300
```

Nic więcej. Proste  :Smile: 

 *Quote:*   

> Powyższą komendę modprobe możesz też wydać teraz, by sprawdzić czy wszystko działa jak należy przed restartem komputera.

 

3.3. Prawa do pliku urządzenia

Niestety to nie wszystko - teraz rzecz najczęściej mało znana użytkownikom. Pliki urządzeń /dev/em8300* stworzone po załadowaniu modułu em8300, które utworzył dla nas devfs, trzebaby teraz udostępnić zwykłym użytkownikom Twojego systemu. W tym celu wykorzystamy PAM'a (w trakcie sprawdzania uprawnień do urządzenia, reguły przetwarzane są po kolei, a wygrywa _ostatnia_ pasująca; tak się składa, że tym ostatnim mechanizmem sprawdzania uprawnień jest zawsze PAM, więc skorzystamy właśnie z niego).

Do tego celu edytujemy plik /etc/security/console.perms

```
vim /etc/security/console.perms
```

 (zamiast vim użyj tego czego lubisz  :Wink:  )

i dodajemy linijki:

```
<em8300>=/dev/em8300*

<console>  0600 <em8300>     0600 root.audio
```

Jak widzisz dodaliśmy uprawnienia użytkownikom grupy audio (jeśli preferujesz jakąś inną grupę - nie ma problemu; podmień audio na dowolną inną Tobie pasującą).

Od teraz użytkownicy grupy audio mogą sobie korzystać z Twojego DXR'a. A my przechodzimy dalej.

4. Problemowy 'microcode'

4.1. Co to i o co biega...?

RISC'owy procesor em8300 niestety musi być oprogramowany przed użyciem. Raz - przy każdym starcie systemu. "Chłopcy" od projektu dxr3 pracują nad tym problemem, ale na razie nie wymyślili jak to obejść, więc zadowolimy się działającym półśrodkiem.

W zależności od typu urządzenia (a jakżeby inaczej  :Wink:  ) udajemy się na stosowną stronę www producenta urządzenia, skąd pobieramy plik sterownika dla Windows9x (tak, tak; dla Windwos  :Razz:  ). Rozkompresowujemy plik ze sterownikiem (są to zwykłe zip'y). Odnajdujemy stosowny plik o rozszerzeniu vx_ i przy użyciu zainstalowanego wraz em8300-libraries-cvs skryptu msexpand.pl rozpakowujemy archiwum vx_

 *Quote:*   

> typ urządzenia; adres www; nazwa pliku vx_
> 
> a) Creative DXR3; http://files.americas.creative.com/manualdn/Drivers/Others/346/ENCORE_DXR3.EXE ; enc2dev.vx_
> 
> b) Sigma Designs Hollywood Plus; http://www.sigmadesigns.com/support/download_hollywood_plus_win9x.htm ; rmquasar.vx_

 

Niestety co do linku jestem pewien jedynie w sprawie Sigmy. Modelu Creative'a nie posiadam. Gdyby któs mógł potwierdzić przydatność powyższego, będzie miło  :Smile: 

Kroki dla Hollywood Plus:

```
wget ftp://ftp.sigmadesigns.com/HollywoodPlus/HP2_41w1.zip

unzip HP2_41w1.zip

/usr/share/em8300/msexpand.pl rmquasar.vx_
```

Niniejszym rozpakowaliśmy archiwum vx_. Teraz musimy ze stosownego pliku sterownika wyciągnąć nasz 'microcode'. Do tego użyjemy narzędzia microcode_extract.pl (pewnie się domyślasz razem z czym zostało zaisntalowane - i masz rację  :Wink:  ).

```
/usr/share/em8300/microcode_extract.pl rmquasar.vxd . micro
```

Teoretycznie drugi i trzeci parametr są opcjonalne - teoretycznie, bowiem np. mi nie chciało bez tego zadziałać... W tym momencie powinienieś w bieżącym katalogu zauważyć pliki microcode{012}.bin. Są trzy... Teraz stoisz przed subiektywnym wyborem - który z nich najlepiej będzie u Ciebie działał. Najlepiej abyś przetestował sobie wszystkie i wybrał ten, który najlepiej Ci 'leży' (tak zalecają ludzie od dxr3 - w tym momencie jedynie powtarzam).

Do załadowania mikrokodu służy narzędzie /usr/share/em8300/microcode_upload.pl (także z tego samego pakietu co wszystkie powyższe).

```
/usr/share/em8300/microcode_upload.pl microcode0.bin
```

Teraz jesteś nareszcie gotów, by wypróbować jak działa DXR3  :Smile: 

4.2. A na przyszłe restarty komputera...

Jak już wspomniałem mikrokodzik musi być ładowany z każdym startem systemu. Po wybraniu tego jednego z trzech, skopiuj plik np. jako /usr/share/em8300/mcode.bin , a do local.start dodaj stosowny wpis, _po_ ładowniu modułów:

```
cp microcode0.bin /usr/share/em8300/mcode.bin

vim /etc/conf.d/local.start

/usr/share/em8300/microcode_upload.pl /usr/share/em8300/mcode.bin
```

5. Odpalmy sobie jakiś film

5.1. USE="dxr3" ?

Na forum gentoo możesz znaleźć informację, że był kiedyś pomysł wprowadzenia flagi USE o nazwie 'dxr3'. Zarzucono go jednak i stwierdzono, że MPlayer'owi oraz Xine'owi pozostawia się swobodę w wykrywaniw stosownych headerów. Na starcie czeka Cię więc rekompilacja MPlayera i/lub Xine (w zależności od tego z czego korzystasz).

Nie korzystam z Xine, ale stosowne informacje co zrobić, by uruchomić DXR3 jako urządzenie wyjścia, znajdziesz na stronach projektu oraz w (3). Tutaj skupię się na Mplayerze.

5.2. Oglądanie filmów DVD przy użyciu MPlayera i DXR3

W tym celu wystarczy wydać polecenie:

```
mplayer -vo dxr3 -dvd <rozdział_filmu>
```

a aby jeszcze skorzystać z wyjścia audio musisz dodać: -ao oss:/dev/em8300_ma-0

To wszystko co trzeba zrobić.  :Smile: 

5.3. Oglądanie filmów DivX/XviD/etc przy użyciu MPlayera i DXR3

Do tego musimy użyć filtra dla strumienia MPEG1. Zrobisz to podając opcję -vop z wartością lavc lub fame. Np:

```
mplayer -vo dxr3 -vop lavc plik.avi
```

ew. z wyjściem audio j.w.

 *Quote:*   

> osobiście polecam lavc - przy korzystaniu z fame miałem wrażenie jakby trochę dźwięk uciekał...

 

5.4. Przydatne opcje MPlayera

OSD z naszego DXR'a... no po prostu 'sucks' i nie da się tego inaczej nazwać! Zamiast tego polecam użyć jednej z opcji mplayer'a:

```
-vf expand=-1:-1:-1:-1:1
```

Obsługa odtwarzania dźwięku AC3 poprzez cyfrowe wyjście karty:

```
-ac hwac3
```

Przydatne opcje dla napisów na wyjściu TV-Out:

```
-subpos 90 -subwidth 100 -subalign 2
```

Po szczegóły możesz się udać do dokumetnacji MPlayer'a.

6. Czynności na koniec

Gdy w obrazie na Twoim monitorze / TV jest za dużo zielonego/niebieskiego/inny problem, polecam się przyjrzeć dostępnym opcjom przy ładowaniu sterownika (robiliśmy to w 2. na samym końcu - linie options; komplet opcji z wytłumaczeniem do czego służą, znajdziesz tutaj: http://dxr3.sourceforge.net/howto.html#modldad ).

I to chyba już wszystko. "Niech filmy będą z nami"  :Smile: 

Dokumentacja przydatna przy tworzeniu tego howto:

(1) http://dxr3.sourceforge.net/howto.html (podstawowa skarbnica wiedzy na temat DXR3 pod linux'em; ang.)

(2) http://jeanmarie.delapierre.9online.fr/mpeg2/mpeg2.html (bardzo przydatna strona z info o devfs dla DXR3; fr.)

(3) http://lea-linux.org/hardware/xine_dxr3.html (XINE i PAM dla DXR3; fr.)

(4) http://www.gentoo.org/doc/en/devfs-guide.xml (devfs oraz PAM w gentoo; ang.)

Mam nadzieję, że komuś się przyda i (oczywiście) życzę miłego oglądania filmów  :Very Happy: 

Pozdrawiam,

Przemek

----------

## Robert W.

 *_troll_ wrote:*   

> 
> 
> ```
> emerge em8300-libraries-cvs
> ```
> ...

 

Niestety mi wyskakują w tym momencie błędy:

```

/bin/sh ../autotools/mkinstalldirs /var/tmp/portage/em8300-lib

raries-cvs-0.2/image//usr/bin

 /bin/sh ../libtool  --mode=install /bin/install -c  dhc /var/

tmp/portage/em8300-libraries-cvs-0.2/image//usr/bin/dhc

/bin/install -c dhc /var/tmp/portage/em8300-libraries-cvs-0.2/

image//usr/bin/dhc

make[1]: Nie nic do roboty w `install-data-am'.

make[1]: Leaving directory `/var/tmp/portage/em8300-libraries-

cvs-0.2/work/em8300/dhc'

!!! ERROR: media-video/em8300-libraries-cvs-0.2 failed.

!!! Function src_install, Line 60, Exitcode 0

!!! (no error message)
```

Last edited by Robert W. on Mon Jul 10, 2006 8:53 pm; edited 1 time in total

----------

## _troll_

 *Robert W. wrote:*   

>  *_troll_ wrote:*   Wersja: 1.0 # 27.07.2004 r.
> 
> ```
> emerge em8300-libraries-cvs
> ```
> ...

 

okej. Winny byl moj ebuild. Z tego co widze w logu nikt wiecej nie pobral tej ferelnej wersji....

zaraz stetsujemy poprawnosc nowej (wersji) z Robertem W.

..::UPDATE::..

poprawiony ebuild dziala jak trzeba  :Smile: 

..kuniec apdejta..

Pozdrawiam,

Przemek

----------

## jackie

Ja od siebie mogę dodać że istnieją skrypty automatyzujące wyświetlanie filmów na TV za pomocą DXR i kart DVB ( m. in. dopasowanie do rodzaju tv (4/3 16/9) automatyczne obliczanie wielkości ekranu itp ) http://batleth.sapienti-sat.org/projects/VDR/

Dodałbym tutaj również że aby oglądać spokojnie Divx-y potrzebny jest odpowiedniej mocy procesor. Wynika to stąd że karty tego typu zawierają w sobie sprzętowy dekoder sygnału MPEG 1/2 ( Czyli wspomaganie sprzętowe DVD/VCD ) i aby móc oglądać typowego "avika" w locie jest robiona zmiana formatu ( transkodowanie ) do mpeg. Także wskazane jest posiadać procesor ok 2GHz. ( Ja osobiście używam athlona xp 1700+ ) i chodzi w miarę bezproblemowo.

Tak nawiasem mówiąc robiłem ostatnio emerge mplayer-a do wersji 1.0_pre5-r2 i zauważyłem wyraźny spadek wydajności w stosunku do poprzednich ( objaw zacinanie się głosu , gubienie klatek). Co ciekawe jak ręcznie ściągnałem źródełka i przekompilowałem po bożemu to działa normalnie. Dodam że nie zmieniałem żadnych flag w porównaniu z poprzednimi wersjami mplayera.

----------

## Woocash

A ja mam tutuaj takie pytanie, mam DVD Creative'a i na nim pisze : PC-DVD Dxr2, to też moge stosować to how-to ?

----------

## _troll_

jackie: thx! uaktualnie jutro / pojutrze

woocash: nie. dxr2 ma inny chip i nie jest on kompatybilny z tym ktory siedzi w dxr3, stad - nie mozesz uzyc tego sterownika. Zastanawiam sie czy ktos w ogole robi sterowniki na jajko 2.6 (bo o ile pamietam z takiego korzystasz).

Zainteresuj sie tymi linkami:

http://dxr2.sourceforge.net/projects/dxr2-driver/

http://www.creativepower.us/creative_power/1/creative-dxr2.html

beda bardzo pomocne. Jesli uda Ci sie przebrnac przez instalacje i wszystko bedzie dzialac daj znac, a dodam to do tego howto.

Pozdrawiam,

Przemek

----------

