Raspberry Pi 2 -frontendin rakentaminen.

VDR ja DVB aiheista keskustelua

Raspberry Pi 2 -frontendin rakentaminen.

ViestiKirjoittaja kurg » 16.03.2015 19:45

On niin kovassa käytössä ollut ongelmia ratkoessa tämä keskustelupalsta, että kokeilen kantaa osaltani korteni kekoon :).

Olen viimeaikoina värkännyt Raspberry Pi 2:sta frontendiä VDR:lle, joten tässä tulee.

Backend:
-Intelin tuplaydin prosessori
-2xDVB-C Terratec Cinergy PCI HD
-TP-Link Gigabit PCI Express network adapter (RTL-8168B)

Frontend:
-Raspberry Pi 2
-Sandisk Ultra 16GB MicroSDHC Class 10
-USB-porttiin kytkettävä infrapunavastaanotin (alunperin PS3:lle tarkoitettu, mallia "kiina", näkyy joystickkinä Linuxille)

Datan siirrosta back- ja fronendin välillä huolehtii streamdev-plugin ja http://vdr.schmirler.de/ -sivun pluginit.

Ostin hardwaredekoodausominaisuuden Raspberryn sivuilta (maksu paypal:lla, purkuavaimet tuli sähköpostilla samana päivänä):
MPEG2 £2,40 + VC-1 £1,20 = £3,60

Muistikortin valinta:
Raspberry Pi 2:n (ja myös aikaisempien mallien) SD-muistikorttilukijan teoreettinen maksiminopeus on 25MB/s (käytännössä hitusen yli 20MB/s), joten tätä nopeammista korteista ei nopeuden osalta ole hyötyä. Täältä löytyy suuntaa antava lista: http://elinux.org/RPi_SD_cards#SD_card_performance

Muistikortille laitoin http://www.raspberrypi.org/downloads/ -sivulta Raspbian -käyttöjärjestelmän ohjeiden mukaisesti (Debian Wheezy, February 2015, kernel 3.18)

Tärkeimmät TV-käyttöön liittyvät Raspberry-asetukset (tv-reso 1080p50):
/boot/config.txt:
Koodi: Valitse kaikki
disable_overscan=1
hdmi_group=1
hdmi_mode=31
gpu_mem=128



Tarvittavia ohjelmia/kirjastoja:
Yleisesti:
sudo apt-get install ccache screen cvs
VDR:
sudo apt-get install libfontconfig1-dev libjpeg8-dev libcap-dev gettext
rpihddevice-plugin:
sudo apt-get install libavcodec-dev libavformat-dev libavresample-dev

Päälinjat VDR:n asennuksessa:
Koodi: Valitse kaikki
wget ftp://ftp.tvdr.de/vdr/vdr-2.2.0.tar.bz2
tar xvfj vdr-2.2.0.tar.bz2
cd vdr-2.2.0/PLUGINS/src
rm -R dvbhddevice dvbsddevice epgtableid0 hello osddemo pictures rcu servicedemo skincurses status svdrpdemo

git clone git://projects.vdr-developer.org/vdr-plugin-streamdev.git
git clone git://projects.vdr-developer.org/vdr-plugin-rpihddevice.git
wget http://www.saunalahti.fi/~rahrenbe/vdr/femon/files/vdr-femon-2.2.0.tgz
wget http://vdr.schmirler.de/svdrpservice/vdr-svdrpservice-1.0.0.tgz
wget http://vdr.schmirler.de/remoteosd/vdr-remoteosd-1.0.0.tgz
wget http://vdr.schmirler.de/remotetimers/vdr-remotetimers-1.0.1.tgz
wget https://raw.githubusercontent.com/VDR4Arch/vdr4arch/master/plugins/vdr-remotetimers/remotetimers-vdr2.1.2compat.diff
 cd remotetimers && patch -p1 < ../remotetimers-vdr2.1.2compat.diff && cd ..
wget http://www.saunalahti.fi/~rahrenbe/vdr/soppalusikka/files/vdr-skinsoppalusikka-2.2.0.tgz
cp /vdr/vdr-2.2.0/PLUGINS/src/skinsoppalusikka/themes/* /vdr/conf/themes/.
(tässä kohtaa kopioin tekemäni kanavalogot hakemistoon /vdr/conf/logos)
cvs -d:pserver:anonymous@xineliboutput.cvs.sourceforge.net:/cvsroot/xineliboutput co vdr-suspendoutput
wget http://vdr.schmirler.de/epgsync/vdr-epgsync-1.0.1.tgz


Kaikille plugineille tein ennen kääntöä symbolisen linkin (esim. ln -s vdr-plugin-streamdev streamdev).
VDR:n kääntö: "make -j5" (menee muuten aika haipakkaa Pi 2:lla)
VDR:n asennus: "sudo make install"

Tässä välissä conffitiedostot jonkinlaiseen kuntoon (mm. channels.conf svdrphosts.conf, sources.conf).

epg.data:aa ja osdteletext:iä varten varmistus, että /var/cache/vdr on kunnossa:
sudo mkdir -p /var/cache/vdr
sudo chown kurkku:kurkku /var/cache/vdr


VDR:n logit omaan tiedostoonsa (uusi sääntö käyttöön ilman boottausta: "sudo service rsyslog restart"):
/etc/rsyslog.d/10_vdr.conf:
Koodi: Valitse kaikki
if $programname == 'vdr' and $syslogseverity <= '6' then /var/log/vdr.log
& ~


/video -kansion mounttaus:
/etc/fstab:
Koodi: Valitse kaikki
vdr:/video /video nfs user,defaults 0 0


VDR:n käynnistysscripti:
Koodi: Valitse kaikki
#!/bin/bash

echo -n "LOADING VDR! - "; date

while [ true ]
do

  setterm -blank force > /dev/tty1

  sudo vdr \
  -u kurkku -s /vdr/conf/vdr_shutdown -c /vdr/conf -v /video \
  -Pstreamdev-client -Prpihddevice \
  -Pfemon -Psvdrpservice -Premoteosd -Premotetimers -Pepgsync \
  -P'skinsoppalusikka -l /vdr/conf/logos/xpm' \
  -Pgamepad -Psuspendoutput

  if test $? -eq 0 -o $? -eq 2; then setterm -blank poke > /dev/tty1; exit; fi

  setterm -blank poke > /dev/tty1

  echo -n "RESTARTING VDR! - "; date; echo -n " 3 "; sleep 1; echo -n " 2 "; sleep 1; echo -n " 1 "; sleep 1; echo " 0 "
done



Automaattisen käynnistymisen hoidin seuraavalla tavalla:

/etc/inittab:
Koodi: Valitse kaikki
1:2345:respawn:/sbin/getty --autologin kurkku --noclear 38400 tty1


~/.bashrc:
Koodi: Valitse kaikki
if [[ `tty` == "/dev/tty1" ]] && [[ `grep -o notv /proc/cmdline` != "notv" ]]; then
  echo "TTY1 - Starting VDR"
  /vdr/vdr
fi


Ideana siis se, että ykköskonsoli loggautuu automaattisesti sisään käyttäjänimellä kurkku ja .bashrc tarkistaa,
että ollaanko ykköskonsolissa ja että kernelille ei ole pistetty parametriä "notv" (tämä optio on testailua varten) ja käynnistää vdr:n.
Näin muut konsolit ja etäyhteydet (ssh) toimivat normaalisti.
Jos poistuu VDR:stä, saa sen ykköskonsolilla käynnistettyä uudestaan kirjoittamalla yksinkertaisesti "exit".
Uudessa Debian Jessie:ssä ei ilmeisesti ole koko /etc/inittab käytössä, joten siihen päivitettäessä kannattaa varautua tältä osin muutoksiin.


Kaukosäädöstä huolehtii gamepad-plugin:
Gamepadplugin asetuksiin (löytyy setup.conf:sta) /dev/input/by-id/usb-0c45_ff10-joystick (tämä nimi pysyy varmasti vakiona boottausten välissä tai vaikka lisäisi muita /dev/input/jsX -laitteita)

Nappulat löytyvät gamepad-ohjeen mukaisesti testimoodissa, joka aktivoidaan VDR:n pluginien asetusvalikosta:
/vdr/conf/plugins/gamepad/keymap.txt:
Koodi: Valitse kaikki
# key:          generic event number
# repeat:       repeat interval in ms, set to 0 to disable autorepeat
# hold:         time in ms between key press and start of auto repeat
#
# key   vdr_key         repeat  hold
24      Left            0       300
25      Right           0       300
26      Up              100     300
27      Down            100     300
6       Red             0       300
4       Green           0       300
5       Yellow          0       300
7       Blue            0       300
9       PlayPause       0       300
0       Menu            0       300
3       Back            0       300
2       Ok              0       300
8       Info            0       300



Ongelmia:
Nukkuminen tai suspend tms. tuotti päänvaivaa eniten. Halusin, että Raspberry saa kyllä jäädä päälle kun sitä ei katsella, mutta en halua, että frontend varaa backendiltä vastaanotinkorttia sen mukaan, mille kanavalle frontend on sattunut jäämään.

Osottautui, että jos "Filter Streaming" on streamdev:ssä päällä, varaa frontend aina vastaanottimen palvelimelta (myös tallenteita katsellessa tai suspendoutput-plugini aktivoitaessa). Kun poistin kyseisen asetuksen käytöstä, rupesi suspendoutput-plugin toimimaan halutusti (tätä havaintoa ennen tein purkkapaikkauksena ruman shell-scriptin, joka lähettää svdrpsend:llä käskyn backendille irrottaa client palveltavien listalta).

Epäilen kuitenkin, että nyt ei EPG-päivity ollenkaan. Epgsync-pluginin oletusasetuksilla ei ilmeisesti myöskään päivity EPG?
Epgsync:n asetuksiin voi kuitenkin määritellä haluttuja päivitysasetuksia (en ole vielä tutustunut tarkemmin).

En myöskään tiedä toimiiko ttxtsubs-tekstit (backendillä on tpid-patch) tai vaikkapa tekstitv ilman "Filter Streaming":a.

Jos tarvitsee, niin koko hdmi-ulostulon voi sammuttaa käskyllä "tvservice -o" ja takaisin sen saa "tvservice -p".

Jäljellejääviä vähäisempiä ongelmia:
-Lomituksenpoisto on ilmeisestikkin BOB. Tämä ei ole kovin uusinta hottia ja lisäksi ylin- ja/tai alin vaakaviiva saattaa välkkyä ikävästi.
-En saa DVB-tekstityksiä toimimaan oikein. Auttavasti kylläkin. Jos OSD on GPU-kiihdytetty, puuttuu kaksirivisistä DVB-teksteistä alempi rivi (sekä muutama pikselirivi ylemmästäkin rivistä) ja software-asetuksella tekstit ovat vaakasuunnassa rutistuneet normaalia kapeammaksi, mutta ovat vielä hyvin luettavissa.
-Kuva vaikuttaa hailakalta. Voi olla että kyseessä Studio/PC-levels -tyyppinen ongelma tai sitten tarttee vaan TV kalibroida uudestaan. Täytyy myös tutkia aiheeseen liittyvät vivut /boot/config.txt-tiedostossa.

Muutoin vaikuttaisi toimivan luotettavasti ja nopeasti. Kaikenkaikkiaan suositeltava viritys.

Muistikortilta on nyt käytössä alle 4GB, mutta olen asentanut monia muitakin aiheeseen liittymättömiä ohjelmia, kuten mplayer, vlc ja gimp. 4GB pitäisi riittää hyvin puhtaaseen VDR-käyttöön.
Viimeksi muokannut kurg päivämäärä 16.03.2015 20:21, muokattu yhteensä 2 kertaa
kurg
Vanhempi asiantuntija
 
Viestit: 175
Liittynyt: 13.04.2006 17:17

Re: Raspberry Pi 2 -frontendin rakentaminen.

ViestiKirjoittaja kurg » 16.03.2015 20:18

Tekstitv näyttäisi toimivan heittämällä:
git clone git://projects.vdr-developer.org/vdr-pl ... letext.git
Ja luonnollisesti käynnistykseen lisäksi vipu:
-Posdteletext
kurg
Vanhempi asiantuntija
 
Viestit: 175
Liittynyt: 13.04.2006 17:17

Re: Raspberry Pi 2 -frontendin rakentaminen.

ViestiKirjoittaja rofafor » 16.03.2015 20:33

Jos disabloit filtterit, niin silloin ei pidien tai kielikoodien päivitykset toimi eikä myöskään EIT-taulujen parsinta EPG:tä varten.

Rpihddevice-laajennokseen on vasta saapunut tuki OSD:n GPU-kiihdytykselle, joten vaativammatkin skinit (skindesigner) pitäisi toimia nyt ongelmitta. Osdteletext vaatinee tällöin tosin pätsiä, joka löytyy vdrportalista.
Avatar
rofafor
Optikkoliikkeen kopiovastaava
 
Viestit: 1360
Liittynyt: 26.03.2004 3:00
Paikkakunta: Internet

Re: Raspberry Pi 2 -frontendin rakentaminen.

ViestiKirjoittaja kurg » 16.03.2015 20:44

Arvelinkin että tuolla filtterien disabloinnilla voi olla muitakin seurauksia. Kokeilen nyt hetken aikaa ilman, mutta jos pitää pistää takas päälle niin tässä tää mun ruma shell-scripti, joka irrottaa streamdev-yhteyden clientiltä:
/vdr/conf/vdr_sleep:
Koodi: Valitse kaikki
#!/bin/bash
ID=`svdrpsend -d vdr plug streamdev-server lstc | tail -n 2 | head -n 1 | cut -f2 -d" " | rev | cut -c 2- | rev`
svdrpsend -d vdr plug streamdev-server disc $ID
svdrpsend hitk user5

/vdr/conf/commands.conf:
Koodi: Valitse kaikki
Nuku! : nohup /vdr/conf/vdr_sleep > /dev/null 2>&1 &

Huonona puolena on se, että tällöin suspendoutput:n omatoiminen aktivoituminen asetetun ajan päästä (oletuksena 120min) ei irroita streamdev-yhteyttä.
(vdr_sleep scriptissä on toistaiseksi myös sellainen vajaus, että se katkaisee listan alimman yhteyden riippumatta siitä, onko se haluttu yhteys, eli ei toimi monikatselujärjestelmässä tällaisenaan)

DVB-tekstitykset ei tosiaan toimi, GPU:lla tai ilman, oikein. Liekkö sitten samaa juttua kuin tuossa aikaisemmassa ongelmassani (eri viestiketju liittyen DVB-subtitlejen näkyvyyteen), eli rpihddevice ei ilmoita näyttöresoluutioparametreja oikein dvbsubtitle.c:lle?
kurg
Vanhempi asiantuntija
 
Viestit: 175
Liittynyt: 13.04.2006 17:17

Re: Raspberry Pi 2 -frontendin rakentaminen.

ViestiKirjoittaja rofafor » 16.03.2015 20:48

Itselläni ei ole ollut mitään ongelmia DVB-tekstien kanssa, mutta en ole kylläkään päivittänyt uusimpia plugineita hetkeen.

Streamdev-serverin vaihtoehtona voisi olla pystyttää SAT>IP-serveri (esim. https://github.com/catalinii/minisatip/) ja käyttää VDR:issä satip-pluginia.
Avatar
rofafor
Optikkoliikkeen kopiovastaava
 
Viestit: 1360
Liittynyt: 26.03.2004 3:00
Paikkakunta: Internet

Re: Raspberry Pi 2 -frontendin rakentaminen.

ViestiKirjoittaja kurg » 16.03.2015 21:06

Tässä vielä esimerkkikuvat DVB-tekstitysongelmasta ryyditettynä oikealla versiolla.
Liitteet
oikein.jpg
Oikein
oikein.jpg (38.74 KiB) Katsottu 7934 kertaa
GPU.jpg
GPU:lla alempi rivi puuttuu, skaalaus väärin
GPU.jpg (32.31 KiB) Katsottu 7934 kertaa
software.jpg
Softwarella skaalaus väärin
software.jpg (32.1 KiB) Katsottu 7934 kertaa
kurg
Vanhempi asiantuntija
 
Viestit: 175
Liittynyt: 13.04.2006 17:17

Re: Raspberry Pi 2 -frontendin rakentaminen.

ViestiKirjoittaja kurg » 18.03.2015 12:16

----CEC----

VDR:n ohjustamiseksi CEC:n avulla tarvitaan:
-libcec
-libcec-daemon
(+ yleensä jokin plugini VDR:ään)

LIBCEC
Kirjoitushetkellä ei käsittääkseni Raspbian Wheezyn pakettihallinnasta saa Raspberryä tukevaa libcec:ä, vaikka libcec pakettihallinasta löytyykin. Näin ollen libcec pitää kääntää itse:
Koodi: Valitse kaikki
sudo apt-get install autoconf libtool liblockdev1-dev libudev-dev
git clone git://github.com/Pulse-Eight/libcec.git
./bootstrap
./configure --with-rpi-include-path=/opt/vc/include --with-rpi-lib-path=/opt/vc/lib --enable-rpi
make
sudo make install
sudo ldconfig

(en tiedä onko tuo viimeinen käsky ldconfig pakollinen. joskus sitä vain tulee kirjoiteltua kun sillä on välillä saanut pois jonkun virheilmoituksen)

Tässä vaiheessa voidaan testailla, mitä tavaraa CEC:n yli liikkuu vai liikkuuko mitään:
cec-client

Nyt voidaan myös kokeilla käskyttää televisiota:
Päälle (-s = single command, -d 1 = ei debugdataa ruuduntäydeltä):
echo "on 0" | cec-client -s -d 1
Pois päältä:
echo "standby 0" | cec-client -s -d 1
Lista käskyistä (en tiedä onko tämä lista tyhjentävä):
echo h | cec-client -s -d 1
Infoa:
echo scan | cec-client -s -d 1

LIBCEC-DAEMON
Kirjoitushetkellä ei libcec-daemonia löydy ollenkaan pakettihallinnasta, joten kääntäkäämme sekin itse (apt-get:llä asennettavat kirjastot vievät tässä yhteydessä riippuvuuksiensa kanssa mainitsemisenarvoisen määrän tilaa, eli 100MB):
Koodi: Valitse kaikki
git clone git://github.com/bramp/libcec-daemon.git
sudo apt-get install libboost-program-options-dev libboost-thread-dev libboost-system-dev liblog4cplus-dev
./bootstrap
./configure
make

HUOM!
Ainakaan kirjoitushetkellä ei libcec-daemon käänny suoraan. Tarvitaan seuraavat muutokset:
https://github.com/bramp/libcec-daemon/ ... diff=split
(src/libcec.cpp rivi 156: iDoubleTapTimeoutMs -> iDoubleTapTimeout50Ms)
(src/main.cpp rivi 414: .keycode=keycode -> key.keycode=keycode)
Silti jää jäljelle herja siitä, että libcec:n pitäisi olla 2.1 tai uudempi (lib-kansiosta löytyy edellisen vaiheen jälkeen libcec.so.2.0.1) ja "Warning: swp{b} use is deprecated for ARMv6 and ARMv7". En tiedä onko näistä haittaa.

Daemonin testaus (television kaukosäätimen CEC:ä tukevien näppäinten painallus pitäisi tällä näkyä):
sudo ./libcec-daemon -v

Muokataan oikeuksia, jotta ei tarvita sudoa jatkossa (tässä oletetaan, että käyttäjä kuuluu input-ryhmään (/etc/group)):
$ sudo chgrp input /dev/uinput
$ sudo chmod 660 /dev/uinput

Tehdään udev-sääntö:
/etc/udev/rules.d/99-input.rules (voi valita jonkun muunkin tiedoston, esim. luoda /etc/udev/rules.d/66-libcec-daemon.rules -tiedoston):
Koodi: Valitse kaikki
KERNEL=="event*", ATTRS{name}=="libcec-daemon", SYMLINK="input/libcec-daemon", MODE="666"

udev-säännöt saa boottaamatta käyttöön: sudo udevadm control --reload-rules

Nyt libcec-daemon voidaan pistää käynnistymään daemoniksi esimerkiksi /etc/rc.local:ssa tai VDR:n käynnistysscriptissä:
libcec-daemon -d

Nyt pitäisi onnistua testi "evtest /dev/input/libcec-daemon".

VDR
Tästä eteenpäin VDR:n ohjaamisen /dev/input/libcec-daemon -tiedostolla on useita vaihtoehtoja:
vdr-plugin-inputdev
vdr-plugin-remote
lirc
(bonusvaihtoehtona kyseisen inputdevicen keymap:in voi ilmeisesti luoda käsin siten, että CEC:n kautta tulevat kaukosäätimen napit vastaavat näppäimistön nappeja ja käyttää VDR:ää ihan normaalina näppiksenä)

Valitsin remote-pluginin:
http://escape-edv.de/endriss/vdr/vdr-remote-0.5.0.tgz
Asenna normaalisti, lisää vdr-käynnistysscriptiin vdr:n parametriksi ja poista remote.conf (voi olla fiksumpiakin tapoja pakkoaktivoida VDR:n näppäinopettelumoodi, mutta tämä on ollut ainakin varma konsti).
-P'remote -i /dev/input/libcec-daemon'


Ongelmia:
Ongelmia CEC:n kanssa mulla on kasoittain, mutta oikeastaan ne kaikki liittyvät varsinaisen CEC-laitteiden kirjoon. Suurin ongelmalähde tällä hetkellä päivittäiseen käyttöön lienee Raspberryn ja Television välissä oleva Lindyn "4 IN, 2 OUT" HDMI-kytkin, joka ei kyllä toimi CEC:n osalta kaikkien sääntöjen mukaan. Kytkin tuntuu sekoittavan kaikkien CEC-laitteiden koodit kivaksi sekamelskaksi, joten input-valinnasta huolimatta käskyt menevät minne sattuu, jos menevät ollenkaan.

Testit siis kannattaa pyrkiä suorittamaan aluksi siten, että välissä ei ole mitään muita laitteita. Lisäksi voi hyvä olla kokeilla television eri hdmi-inputteja siten, että muita hdmi-laitteita ei ole samaan aikaan kiinni televisiossa. Myös sen varmistaminen, että varsinainen hdmi-kaapeli on varmasti CEC-yhteensopiva (ja ehjä), on hyvä idea.

Yksi sudenkuoppa saattaa tulla siitä, että osa kaukosäätimen napeista toimivat oletuksena normaalin näppäimistön nappien tapaan. Näin ollen jos käyttää VDR:n ohjaukseen jotakin muuta tapaa kuin näppistapa, saattaa koodit tulla kahteen kertaan (remote-plugin ottaa koodin vastaan, mutta lisäksi VDR lukee "näppäimistöltä" saman koodin).
kurg
Vanhempi asiantuntija
 
Viestit: 175
Liittynyt: 13.04.2006 17:17

Re: Raspberry Pi 2 -frontendin rakentaminen.

ViestiKirjoittaja rofafor » 19.03.2015 1:31

Kannattanee vilkaista myös cecremote-pluginia: http://www.uli-eckhardt.de/vdr/cec.en.shtml
Avatar
rofafor
Optikkoliikkeen kopiovastaava
 
Viestit: 1360
Liittynyt: 26.03.2004 3:00
Paikkakunta: Internet

Re: Raspberry Pi 2 -frontendin rakentaminen.

ViestiKirjoittaja kurg » 19.03.2015 19:26

Erittäin hyvänoloinen vaihtoehto.

Cecremote tarvitsee libcec:n ja pugixml:n. Libcec:in kääntö/asennus löytyy aikaisemmasta viestistäni.
pugixml:n kääntö ja asennus:
Koodi: Valitse kaikki
sudo apt-get install cmake
cd /usr/local/src
wget http://github.com/zeux/pugixml/releases/download/v1.5/pugixml-1.5.tar.gz
tar xvfz pugixml-1.5.tar.gz
cd pugixml-1.5
cmake scripts # luo linuxin Makefile:n scripts/CMakelists.txt tiedostoston avulla
make
sudo make install


Sitten VDR:ään normaalisti:
http://www.uli-eckhardt.de/vdr/download ... -0.4.0.tgz
Ja parametriksi VDR:n käynnistystiedostoon: -Pcecremote

Oletuksena plugini hakee conffitiedostoa [vdrconfigpath]/plugins/cecremote/cecremote.xml
Pohjaksi voi kopsata mukana tulevan xml:n: cp /usr/local/src/pugixml-1.5/contrib/cecremote.xml [vdrconfigpath]/plugins/cecremote/.

Mun tie päättyi tähän kohtaan, koska VDR käynnistyi mustaan ruutuun, mutta ei totellut mitään komentoja millään ohjustimella (ctrl-c:llä pääsi kuitenkin pois VDR:stä).

Tässä viimeiset rivit logista:
Mar 19 18:16:23 raspberrypi vdr: [cecremote] CEC Command 135 : device vendor id
Mar 19 18:16:23 raspberrypi vdr: [cecremote] CEC NOTICE: registering new CEC client - v2.2.0
Mar 19 18:16:24 raspberrypi vdr: [cecremote] CEC WARNING: unhandled response received: opcode=84 initiator=1 destination=f response=0
Mar 19 18:16:24 raspberrypi vdr: [cecremote] CEC Command 70 : give osd name

Voi hyvin liittyä Samsung P2370HD televisioon, joka tuntuu olevan aika kranttu ja eksoottinen CEC-komentojen suhteen. Välillä myös cec-client saattaa pysähtyä odottamaan jotain vastausta, jota ei koskaan tule ja se pitää pysäyttää ctrl-c:llä.
kurg
Vanhempi asiantuntija
 
Viestit: 175
Liittynyt: 13.04.2006 17:17

Re: Raspberry Pi 2 -frontendin rakentaminen.

ViestiKirjoittaja kurg » 22.03.2015 20:03

Tuo CEC on kyllä loistokeksintö. Vaikka ei varsinaisesti liity Raspberryyn, niin laitan tähän toteamuksia HDMI-kytkimen sielunmaisemasta.

Minulla on siis käytössä Lindy "4x2 HDMI 1.3 Matrix Switch" No.38043 niminen iR-kaukosäätimellä ohjattava HDMI-kytkin. En saanut millään CEC-komentoja, eli television kaukosäätimen näppäinpainalluksia televisiosta Raspberry:lle päin, muutoin kuin kytkemällä Raspberryn suoraan telkkuun. Rupesin tutkimaan kytkintä ja havaitsin, että kytkimen käyttämä Texas Intrumentsin TMDS442 -piiri ei ilmeisesti tue CEC-johtimen kytkentää (HDMI-liittimen pin 13). Homma on hoidettu siten, että kaikkien sisäänmenojen ja ulostulojen HDMI-liittimien pin 13 on kytketty yhteen. Tarkemmin HDMI:tä tuntematta, tämä ei tunnu kovin oikealta. Katkaisin piirilevyllä kulkevan tracen output 2:lta (jossa kiinni CEC:ä tukeva videotykki), jonka jälkeen systeemi on toiminut myös HDMI-kytkimen ollessa käytössä. Kytkin olisi suhteellisen helppo modata esimerkiksi sellaiseksi, että vain Input 1 ja Output 1 ovat keskenään kiinni CEC:n osalta.


Asiasta täysin kolmanteen, edelleen on ongelmia siinä, että streamdev-client ei irrottaudu serveristä. Jostain syystä aikaisemmin homma näytti toimivan, kun streamdevistä oli filtterit disabloituna. Nyt ei siltikään clientti irtoa. Täytyy jossain vaiheessa tutustua streamdev:n vaihtoehtoihin, kuten tuohon aikaisemmin ehdotettuun SAT>IP-serveri <-> satip-plugin järjestelyyn.
Edit:
Nyt taas irrottaa. No, jokatapauksessa ei oo tolta osin luotettava.
kurg
Vanhempi asiantuntija
 
Viestit: 175
Liittynyt: 13.04.2006 17:17

Re: Raspberry Pi 2 -frontendin rakentaminen.

ViestiKirjoittaja kurg » 24.03.2015 23:13

Juuri äsken tuli muutoksia rpihddevice:en (http://projects.vdr-developer.org/git/v ... evice.git/). Nyt DVB-teksteistä näkyy molemmat rivit myös OSD:n ollessa GPU-kiihdytetty. Valikot toimivat selvästi sutjakammin GPU-kiihdytyksellä.
Huomasin samalla myös sellaisen seikan, että DVB-tekstit skaalautuvat oikein HD-kanavilla.
Mun tän hetken teoria on, että tekstityksen skaalaus otetaan videomateriaalin resoluution perusteella, ei videomateriaalin kuvasuhteen perusteella. Tällöin 720x576 (tai 704x576), eli SD-materiaalilla tekstitys sijoittuu suunnilleen kuten 4:3 lähetyksissäkin vaikka kyseessä olisikin 16:9 lähetys. Toisen tekstitysrivin puuttuminen (josta tuossa aikaisemmin raportoin), saattoi hyvin myös olla pelkästään SD-materiaalilla.

Alle tunnin testauksen perusteella systeemi ei ole nyt vakaa. HD-kanavalle tai HD-tallennusta aloitettaessa katsomaan, koko VDR kaatuu noin 50%:n varmuudella. SSH:n kautta "killall -9 vdr"-käskyllä saa VDR:n sammumaan. Jatkan testejä.

Edit:
Software OSD:llä kaatumista ei vaikuttaisi tapahtuvan.
kurg
Vanhempi asiantuntija
 
Viestit: 175
Liittynyt: 13.04.2006 17:17

Re: Raspberry Pi 2 -frontendin rakentaminen.

ViestiKirjoittaja rofafor » 25.03.2015 0:17

kurg kirjoitti:Mun tän hetken teoria on, että tekstityksen skaalaus otetaan videomateriaalin resoluution perusteella, ei videomateriaalin kuvasuhteen perusteella.

Tekstitys kyllä skaalataan kuvasuhteen mukaan, mutta raspberryn kuvasuhde lasketaan suoraan rujosti resoluutiosta: http://projects.vdr-developer.org/git/v ... ice.c#n121
Avatar
rofafor
Optikkoliikkeen kopiovastaava
 
Viestit: 1360
Liittynyt: 26.03.2004 3:00
Paikkakunta: Internet

Re: Raspberry Pi 2 -frontendin rakentaminen.

ViestiKirjoittaja kurg » 24.04.2015 10:52

Mediaplayer plugin
Seuraavaksi vuorossa videosoittimen asennus. Soittimeksi valikoitu mplayer-plugin (http://www.muempf.de/index.html). Koska käytämme omxplayer:iä mplayer:in sijaan, tarvitaan jonkin verran muutoksia.

Varsinainen plugin:
http://www.muempf.de/down/vdr-mp3-0.10.2.tar.gz

Patch:
Tarvitaan patch, joka hoitaa tulkkauksen vdr:n ja omxplayerin välillä. Patch liitteenä (mplayer-plugin_vdr2.1.2_omxplayer.patch). Patch sisältää muutoksen, joka tarvitaan, jotta plugin kääntyisi vdr:n versiolla 2.1.2 ja uudemmilla. Patch on tehty yhdistämällä mp3-vdr2.1.2compat.diff (https://github.com/VDR4Arch/vdr4arch/tr ... ns/vdr-mp3) ja mplayer-omxplayer-patch.diff (http://www.vdr-portal.de/board18-vdr-ha ... omxplayer/). Jouduin poistamaan yhden aaltosulkeen tiedostosta player-mplayer.c (n.rivi 588), jotta suostui kääntymään (jostain syystä siellä oli patchin jäljiltä ylimääräinen aaltosulje). Lisäksi muokkasin patchiä siten, että nuolinäppäimistä oikealla ja vasemmalle tapahtuu pienet hypyt (pieni kelaus, luokkaa 10s, riippuen videotiedostosta), eikä isot hypyt (suuri kelaus, luokkaa 10min, riippuen videotiedostosta). Lisäksi patch disabloi Makefile:stä MP3-pluginin, koska se tarttee kaikkee lisäryönää ja ilman sitä kääntäminen on paljon helpompaa.

Plugin tarvitsee muutamia konffitiedostoja, joista löytyy esimerkit pluginin examples-hakemistosta. Oleellisimpia lienevät:

/vdr/conf/plugins/mplayer.sh (muista chmod 777) (alun IFS-rivi tekee ilmeisesti sen, että tiedostot, joissa on välilyötenjä, toimivat):
Koodi: Valitse kaikki
#!/bin/bash
export IFS="
"

omxplayer --key-config /vdr/conf/plugins/omxplayer.key.conf $1
killall -9 omxplayer.bin

exit


/vdr/conf/plugins/omxplayer.key.conf:
Koodi: Valitse kaikki
DECREASE_VOLUME:x
INCREASE_VOLUME:y
SEEK_BACK_SMALL:3
SEEK_FORWARD_SMALL:4
SEEK_BACK_LARGE:5
SEEK_FORWARD_LARGE:6
EXIT:q
PAUSE:p


/vdr/conf/plugins/mplayersources.conf (http://www.vdr-wiki.de/wiki/index.php/M ... urces.conf):
Koodi: Valitse kaikki
/polku/omiavideoita;Videoita;0


Sitten vielä käynnistysparametriesimerkki:
Koodi: Valitse kaikki
vdr -P'mplayer -m /vdr/conf/plugins/mount.sh -M /vdr/conf/plugins/mplayer.sh -R /vdr/conf/plugins'


Kauneusvirheitä:
-konsoliin tulee hitusen liikaa log-tyyppistä tavaraa
-resume ei toimi, video alkaa aina alusta
-ei kuvakelausta
-Makefile on vanhaa tyyliä, josta tulee maininta käännettäessä
Liitteet
mplayer-plugin_vdr2.1.2_omxplayer.patch
(9.46 KiB) 168 kertaa
kurg
Vanhempi asiantuntija
 
Viestit: 175
Liittynyt: 13.04.2006 17:17

Re: Raspberry Pi 2 -frontendin rakentaminen.

ViestiKirjoittaja Critter » 14.05.2015 16:50

Hyviä vinkkejä ja ohjeita. Olen miettinyt myös, että pitäisikö tuollainen raspi hommata ko. toimintaan. :)
Eikös myös kodi toimi raspilla ? Mikset asenetele kodia vdr:n rinnalle mediasoittimeksi ?
RIP VDR
VU+ DUO2 (OPEN ATV 5.1), 2*Dual T2/C viritin, 1TB HD, LA Digital CI+ CAM, LG 60PN650T
WeTek.OpenELEC Box with DVB-C/T2 viritin, Panasonic TH-42PZ80E
Critter
Yli-ihminen
 
Viestit: 866
Liittynyt: 16.12.2008 19:25

Re: Raspberry Pi 2 -frontendin rakentaminen.

ViestiKirjoittaja aaakoo » 31.05.2015 18:44

Minäkin hommasin Raspberry 2:n ja tämä sivu on ollut hyvä apu konffaukseen.

Itse asensin clientiksi OpenELEC:n ja yhteys VDR:lle toimii vnsi:n välityksellä. Olen myös yrittänyt tuollaista setuppia jossa clientissä on VDR stremdev-clientillä ja sitten rpihddevice mutta tässä ei toiminut MTV3HD kanavan LATM-äänet ja myöskin cecremote-plugin aiheutti liian usein segfaultin. Sitten kokeilin myös clientiin xineliboutputin vdr-fbfe:tä mutta tätä en saanut tunnistamaan CEC:iä. Mieli tekisi kuitenkin saada tuo VDR:n tuttu ja turvallinen käyttöliittymä, mutta en ole siihen vielä toimivaa ja vakaata setuppiä löytänyt joten tuo OpenELEC ja Kodi on jäänyt tuotantoon.

LIBCEC:
Aiemmin mainitut kääntöohjeet Libcec ei enää päde, ovat vaihtaneet CMaken käyttöön. Uudet ohjeet löysin Raspberry foorumilta https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=104797&start=5 ja lisätään ne nyt tähänkin:

Koodi: Valitse kaikki
1. Install required tools (e.g. gcc 4.8 for C++11 support)
   sudo apt-get install cmake g++-4.8
2. Get development headers
   sudo apt-get install liblockdev1-dev libudev-dev libxrandr-dev
3. Python & SWIG
   sudo apt-get install python-dev swig
4. Get all the latest code
   git clone --recursive git@github.com:Pulse-Eight/libcec.git
5. Modify ~/libcec/src/libcec/cmake/CheckPlatformSupport.cmake
   change
     check_library_exists(bcm_host vchi_initialise "" HAVE_RPI_API)
   to
     check_library_exists(bcm_host bcm_host_init "" HAVE_RPI_API)
   and below 'set(LIB_INFO "${LIB_INFO}, 'RPi'")' add
     include_directories(/opt/vc/include /opt/vc/include/interface/vcos/pthreads /opt/vc/include/interface/vmcs_host/linux)
6. Build platform
   cd ~/libcec/src/platform
   mkdir build
   cd build
   cmake -DCMAKE_CXX_COMPILER=g++-4.8 ..
   make
   sudo make install
7. Build libcec
   cd ~/libcec
   mkdir build
   cd build
   export LIBRARY_PATH=/opt/vc/lib
   cmake -DCMAKE_CXX_COMPILER=g++-4.8 -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_SHARED_LIBS=1 ..
   make
   sudo -E bash -c 'make install'


Tuosta vielä poiketen piti hakea myös tuo Platform erikseen githubista ja kääntää/asentaa se ensin, tuo mukana ei suostunut kääntymään.
aaakoo
Harrastaja
 
Viestit: 57
Liittynyt: 02.09.2006 3:04
Paikkakunta: Vaajakoski

Seuraava

Paluu VDR & DVB

Paikallaolijat

Käyttäjiä lukemassa tätä aluetta: Ei rekisteröityneitä käyttäjiä ja 1 vierailijaa

cron