Du kan se sidan på http://www.comhit.net/content.php/30...net-med-vtuner
*********
Den här guiden beskriver hur man skickar en hel digital-tv-ström från en box till en annan över internet med hjälp av vtuner. Jag är själv nybörjare på Linux och jag kan säkert ha fel/missat något, guiden är skriven efter mitt eget test. Hojta till i kommentarsfältet om det är något!

Ett användningsområde är t.ex. om man har tillgång till parabol på ett ställe, men saknar det på ett annat och har internetanslutning på båda ställena. I guiden är det två stycken DM800HD-boxar som används tillsammans med OpenPLi 2.1, men det går med största sannolikhet precis lika bra med andra MIPS-boxar och andra images.

Att skicka en hel ström på detta vis kräver stor mängd bandbredd. Det är på platsen som tv-signalen hämtas som vi ställer det vi kallar för serverboxen. Boxen som används för att ta emot signalen kallar vi för klientboxen. På serversidan är det hastigheten uppströms som blir belastad och på klientsidan nedströms. Jag har själv testat med 10 mbit/s åt båda håll och då fungerar det väldigt stabilt med SD-kanaler, men inte med HD-kanaler (med vissa enstaka undantag). För att få HD-kanaler att fungera på ett lika stabilt sätt är 20 mbit/s åt båda håll en trolig minimumgräns, men det är inget jag ens testat.

Serverboxens tuner kommer att vara dedikerad för detta användningsområde och går således inte att använda för vanligt tv-tittande (i teorin bör samma transponder som klientens fungera att titta på, men jag tror inte att det fungerar i praktiken).

Vi kommer som sagt att använda vtuner som fungerar så att själva tv-signalen skickas från serverboxen till klientboxen. Signalen avkodas alltså sedan på klientboxen. Det finns ett OpenPLi-plugin som heter RemoteChannelStreamConverter där man använder en helt vanlig installation med fungerande tv-tittande på serverboxen. På klientboxen installerar man plugin:et, får upp kanallistan från serverboxen och strömmar den färdiga "dekrypterade" bilden till klienten. Väldigt enkelt, och många har rapporterat om mycket goda resultat med RemoteChannelStreamConverter. Så har du inte testat den setupen tycker jag absolut att du ska göra det först. Då slipper du egentligen alla problem som följer med vtuner. Jag upplever dock en större stabilitet med vtuner och problem är ju som bekant till för att lösas.

En nackdel med vtuner är att alla portar måste vara öppna mot internet på serverboxen eftersom vtuners serverprogramvara slumpvis sätter de inkommande portarna. Det kommer alltså endast att fungera med en publik IP-adress, inom ett LAN eller via t.ex. DMZ. Därför ska man vara införstådd med säkerhetsrisken som följer med en helt oskyddad internetanslutning kopplad mot boxen. I guiden stänger vi ner de tjänster/portar som används för diverse servermjukvara som kommer förinstallerade med boxen/OpenPLi. Trots detta är boxen med all sannolikhet inte helt säkrad på något sätt, så ha det i åtanke.

I guiden beskrivs hur man:

  • Installerar server- och klientdelen i vtuner på DM800HD
  • Får vtuner (server- och klient) att starta automatiskt
  • Stänger ner serverboxens öppna portar/tjänster
  • Installerar en FreeDNS-klient (skript) på serverboxen
  • Startar serverboxen till standbyläge automatiskt vid start


Konfigurering av serverboxen

1. Flasha in önskad OpenPLi-image för aktuell box. Avsluta guiden vid start.
2. Välj Meny -> Viloläge/Omstart -> Stäng av. Gör boxen strömlös och starta den igen.
3. Byt lösenordet på root-användaren via Telnet med följande kommando:

passwd

Välj ett lösenord på minst 15 tecken.

4. Jag tycker att nano är en betydligt trevligare texteditor än vi, men det är en smaksak. Installera nano via SSH med följande kommandon:

opkg update
opkg install libncurses5
opkg install nano

Olikt de nano-versioner jag använt tidigare verkar denna lägga in nya radbrytningar automatiskt om texten inte får plats på en rad, vilket kommer förstöra våra kommande inklistrade skript. Kör därför:

nano -w /etc/nanorc

Lägg till följande och spara filen:

Kod:
set nowrap
5. Vi tar bort NFS och Samba (observera att första kommandot är ett enda jättelångt kommando):

opkg remove cifs --force-depends && opkg remove kernel-module-cifs --force-depends && opkg remove kernel-module-smbfs --force-depends && opkg remove nfs-utils-client --force-depends && opkg remove samba --force-depends && opkg remove task-base-nfs --force-depends && opkg remove task-base-smbfs --force-depends

rm -rf /etc/samba

6. Inaktivera FTP och Telnet. Börja med att editera /etc/inetd.conf (givetvis kör du vi här om så önskas):

nano /etc/inetd.conf

Se till att sätta ett #-tecken framför alla rader som börjar med ftp och telnet och spara sedan filen. Exempel:

Kod:
#ftp		stream	tcp	nowait	root	/usr/sbin/vsftpd	vsftpd
#ftp		stream	tcp	nowait	root	ftpd	ftpd -w /
#telnet	stream	tcp	nowait	root	/usr/sbin/telnetd	telnetd
7. Välj Meny -> Plugins -> OpenWebif och ändra OpenWebInterface Enabled till nej.
8. Nu kan vi starta om boxen genom att välja Meny -> Viloläge/Omstart -> Omstart.
9. Nu ska NFS, Samba, FTP, Telnet och HTTP vara inaktiverat vilket du bör testa/bekräfta. Du ska endast kunna nå boxen via SSH (och TV/fjärr).
10. Om du har en dynamisk IP-adress, och använder DynDNS-tjänsten FreeDNS, kan du installera ett uppdateringsskript som kontrollerar om din IP-adress har ändrats och uppdaterar den mot FreeDNS vid behov:

cd /usr/bin/
mkdir freedns
cd freedns
nano freedns.sh

Klistra in hela skriptet i filen och byt ut xxxxx... mot din personliga kod från FreeDNS-tjänsten:

Kod:
#!/bin/sh

###########################################################################
#
#  Files:
#          freedns.conf        Keeps the last updated IP
#          freedns.log         Register date & time of the actualization
#
###########################################################################

if test -f /usr/bin/freedns/freedns.conf
  then
  CacheIP=$(cat /usr/bin/freedns/freedns.conf)
fi

# CurreIP=$(wget -qO- http://ipecho.net/plain ; echo)
CurreIP=$(ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}')


if [ "$CurreIP" = "$CacheIP" ]
  then
  echo "Update not required."
else
  echo "Updating http://free.afraid.org with IP:" $CurreIP
  wget http://freedns.afraid.org/dynamic/update.php?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -O /dev/stdout
  echo `date` "- Updating log with IP:" $CurreIP >> /usr/bin/freedns/freedns.log
fi


rm -f /usr/bin/freedns/freedns.conf
echo $CurreIP > /usr/bin/freedns/freedns.conf
Nu gör vi skriptet körbart och testar det:

chmod +x freedns.sh
./freedns.sh

11. Vi vill att skriptet körs var 10:e minut genom crontab:

opkg install busybox-cron
env VISUAL=nano crontab -e

Skriv in följande rad i filen och avsluta med en ny tom rad i slutet på filen. Utan den tomma raden kan skriptet ev. bli obrukbart så den detaljen är viktig:

Kod:
*/10 * * * * /usr/bin/freedns/freedns.sh
12. Med den senaste tidens skriverier angående om DreamBox är en laglig maskin eller inte väljer jag att byta MAC-adress och hostname för att dölja vilken typ av maskin som egentligen sitter bakom operatörens modem. Det här steget rekommenderar jag ingen att följa eftersom jag misstänker att boxen kan sluta fungera helt. Du bör veta vad du gör med dessa kommandon! Observera även att du troligtvis får en ny IP-adress från din operatör när du byter MAC-adress eftersom operatören (DHCP-servern) tror att du kopplat in en helt ny utrustning i deras modem och problematiken i att kontrollera vilken IP-adress boxen fått, nu när vi begränsat åtkomsten till boxen. Om du tidigare installerat FreeDNS-skriptet och allt fungerar som det är tänkt, så bör du ju kunna vänta ca 30 min för att sedan använda DNS-adressen. Vi börjar med MAC-adressen:

rm /etc/network/interfaces
nano /etc/network/interfaces

Klistra in följande i filen, byt ut 00:00:00:00:00:00 mot önskad MAC-adress och spara:

Kod:
# automatically generated by enigma2
# do NOT change manually!

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
pre-up ifconfig eth0 hw ether 00:00:00:00:00:00
Sedan byter vi hostname:

nano /etc/hostname

Editera till önskat hostname och spara filen.

13. Vi lägger till första skriptet som får vtuner-servern att starta automatiskt när boxen startar:

cd /etc/rc3.d/
nano S00vTunerPrepare.sh

Klistra in hela skriptet i filen:

Kod:
#!/bin/sh
# MartiniB #

BinPATH=/usr/bin/
EnigmaSH="$BinPATH"enigma2.sh
VTunerStartScripts=""$BinPATH"vTunerServer.sh "$BinPATH"vTunerClient.sh"
t="\t"
n="\n"
AND="\&"

test -f $EnigmaSH || exit 0

for VTuner in $VTunerStartScripts; do
   if [ -e "$VTuner" ];then
	chmod 755 "$VTuner"
	Check=`grep "$VTuner start" $EnigmaSH| awk {'print $1'}`
	if [ ! $Check ]; then
		sed s#cd\ /home/root#if\ [\ \-"e $VTuner ]; then$n$t$VTuner start $AND$n"fi"$n$n"\&# "$EnigmaSH">"$EnigmaSH".tmp
		mv "$EnigmaSH".tmp "$EnigmaSH"
	fi
	Check=`grep "$VTuner start" $EnigmaSH| awk {'print $1'}`
	if [ ! $Check ]; then
		sed s#^.*Enigma#if\ [\ \-"e $VTuner ]; then$n$t$VTuner start $AND$n"fi"$n$n"\&# "$EnigmaSH">"$EnigmaSH".tmp
		mv "$EnigmaSH".tmp "$EnigmaSH"
	fi
	Check=`grep "$VTuner start" $EnigmaSH| awk {'print $1'}`
	if [ ! $Check ]; then
		sed s#.*\ /usr/bin/enigma2#if\ [\ \-"e $VTuner ]; then$n$t$VTuner start $AND$n"fi"$n$n"\&# "$EnigmaSH">"$EnigmaSH".tmp
		mv "$EnigmaSH".tmp "$EnigmaSH"
	fi
	Check=`grep "$VTuner stop" $EnigmaSH| awk {'print $1'}`
	if [ ! $Check ]; then
		sed s#ret=.*#\&"$n$n"if\ [\ \-"e $VTuner ]; then$n$t$VTuner stop$n"fi$n# "$EnigmaSH">"$EnigmaSH".tmp
		mv "$EnigmaSH".tmp "$EnigmaSH"
	fi
   fi
done

chmod 755 "$EnigmaSH"

exit 0
Nu gör vi skriptet körbart:

chmod +x S00vTunerPrepare.sh

14. Dags för själva serverfilen och andra skriptet som får vtuner-servern att starta automatiskt:

cd /usr/bin/
wget http://vtuner.googlecode.com/files/vtunerd.mipsel
mv vtunerd.mipsel vtunerd
nano vTunerServer.sh

Klistra in hela skriptet i filen:

Kod:
#!/bin/sh
# MartiniB #

#lnOF="vtunerd-2009-12-05-mipsel"

BinPATH="/usr/bin/"
DAEMON="vtunerd"
#OPTIONS="1 0 1 2 0"
#OPTIONS="1 0 3 3 3"
OPTIONS=""

if [ ! "$lnOF" = "" ]; then
	rm -f "$BinPATH$DAEMON"
	ln -s "$BinPATH$lnOF" "$BinPATH$DAEMON"
fi

test -f $BinPATH$DAEMON || exit 0


WaitEnigma2CompletlyStarted () {
	while [ ! `pidof enigma2` ]
	do
		sleep 5
	done
	sleep 100
}

case "$1" in
  start)
	WaitEnigma2CompletlyStarted
	chmod 755 "$BinPATH$DAEMON"
	start-stop-daemon -S -b -m -p /var/run/$DAEMON -x $BinPATH$DAEMON $OPTIONS
	;;
  stop)
	start-stop-daemon -K -p /var/run/$DAEMON
	;;
  restart)
	$0 stop
	$0 start
	;;
  *)
	echo "Usage: $0 {start|stop|restart}"
	exit 1
	;;
esac

exit 0
Nu gör vi server och skript körbart:

chmod +x vtunerd
chmod +x vTunerServer.sh

15. Ladda ner ett plugin i OpenPLi:s Plugins-feed som heter startuptostandby (under kategorin extensions). Efter en aktivering av det installerade pluginet i Plugins-menyn startar boxen direkt till standbyläge, vilket bör passa oss bra.

16. Efter en omstart är servern färdig att användas: Meny -> Viloläge/Omstart -> Omstart!


Konfigurering av klientboxen

1. Flasha in önskad OpenPLi-image för aktuell box. Avsluta guiden vid start.
2. Välj Meny -> Viloläge/Omstart -> Stäng av. Gör boxen strömlös och starta den igen.
3. Byt lösenordet på root-användaren via Telnet med följande kommando:

passwd

4. Även på klienten installerar vi nano via SSH med följande kommandon:

opkg update
opkg install libncurses5
opkg install nano

Vi förhindrar automatiska radbrytningar igen:

nano -w /etc/nanorc

Lägg till följande och spara filen:

Kod:
set nowrap
5. Installera själva vtuner-klienten (jag har skrivit det andra kommandot i en textruta för att inte forumet ska förstöra länktexten):

cd /tmp/
Kod:
wget http://vtuner.googlecode.com/files/vtuner-client_0.2-20120104-r2_mipsel.ipk
opkg install /tmp/vtuner-client_0.2-20120104-r2_mipsel.ipk

Skriptet konfigureras via Meny -> Plugins -> vTuner. Dock kan man endast skriva in IP-adresser där, vill du använda en DynDNS-adress så får du ange den i konfigurationsfilen:

nano /etc/vtunerc.conf

Byt ut IP-adressen i filen mot din DynDNS-adress till servern och spara filen.

6. Efter en omstart via Meny -> Viloläge/Omstart -> Omstart så bör allt fungera!