IPTV savo rankomis. Leidžiam nemokamą antžeminę televiziją namų tinkle.

Šiais laikais, kai internetiniai tinklai apraizgė visą pasaulį, o namuose dažnai galima sutikti visai solidžiai organizuotų tinklų, būtų sarmata nepasileisti IPTV televizijos savo tinkle.

Šiame straipsnyje aprašysiu, kaip namų sąlygomis, neišleidžiant daug pinigų, pasidaryti nuosavą IPTV nuo lauko DVB-T antenos. Paleisime nemokamai transliuojamus lietuviškus kanalus savo namų tinkle. Tai bus pakankamai paprastas variantas, kai srautas transliuojamas multicast protokolu. Kitą kartą apžvelgsiu kiek sudėtingesnį, bet, mano nuomone, kur kas pažangesnį IPTV televizijos perdavimo būdą. Taigi važiuojame…

Mums reikės:

  • Lauko TV antenos;
  • Raspberry Pi mikro kompiuterio;
  • Raspbian OS;
  • MuMuDVB programa;
  • Skaitmeninio USB DVB-T tiunerio (geriau dviejų ar trijų*);
  • Televizijos signalo šakotuvo (jei du ar daugiau tiunerių);
  • Šiek tiek koaksialinio televizijos kabelio;
  • UTP kabelio;

*norint per skirtingus įrenginius matyti kanalus iš skirtingų dažnių, reikia atskiro tiunerio kiekvienam dažniui. Ant Raspberry Pi kompiuterio saugu lesti iki trijų USB DVB-T tiunerių.

Prieš pradėdamas aprašinėti veiksmų eigą noriu atkreipti dėmesį, jog aš naudojuosi linux operacinėmis sistemomis, todėl Windows sistemoje eiga būtų kiek kitokia. Linux’e komandoms įvesti naudoju terminalą, o “langinėse” tam reikalui reikėtų naudoti programą Putty.

Na o dabar užmetame akį į viso šito gėrio sujungimo schemą. Kaip matome viskas čia labai paprasta, belieka tik “gyvybę” įpūsti.

Taip atrodo namų IPTV sujungimo schema.

Operacinės sistemos diegimas ir paruošimas

Pradžioje reikia į mikro SD kortelę sudiegti Raspbian operacinę sistemą. Kadangi mums nereikia darbalaukio, nes “avietė” dirbs kaip serveris, tai siunčiamės paskutinę Raspbian versiją be darbalaukio aplinkos, – Raspbian Buster Lite. Toliau šitą gėrį reikia supūsti į mSD. Aš tam naudoju paprastą, bet ne prastą programą balenaEtcher. Beje, yra ir Windows versija! Jums tereikia įdėti mSD į kompiuterį, programai balenaEtcher nurodyti kur guli parsiųstas Raspbian Buster Lite (nurodome visą suzipuotą) ir viskas, toliau ji ten viską padarys pati. Linux dar paprašys suvesti root slaptažodį. Tai tiek su OS įrašymu. Kai kortelė bus paruošta, šakniniame jos skirsnyje reikia sukurti failiuką be jokio plėtinio, kurio pavadinimas ssh. Linux terpėje, terminale galime įvesti tokią komanda:

touch ssh 

Na o dabar grūdam kortelę į Raspberry Pi kompiuterį, jungiam į elektrą bei tinklą. Palaukiam kol mikro kompiuteris pilnai užsikraus.

Užsikrovus “avietei” reikia sužinoti jos IP adresą, kurį priskyrė routeris. Yra du keliai. Vienas greitas, bet gal painesnis, o kitas lengvesnis, bet gali būti sunkiau įgyvendinamas. Imame pirmą variantą, o jam reikia programos nmap. Jei sistemoje neturime, sudiegiame vesdami:

sudo apt-get install nmap

O tada jau vedame:

sudo nmap -sn 192.168.1.0/24

Gausime krūvą IP adresų ir tarp jų bus “avietės” adresas. Painumas čia gal tik tame, kad jei nežinome kas dedasi mūsų tinkle ir jei turime pajungtų daug įrenginių, tada susigaudyti kas kame gali būt keblu.

Kitas variantas, – tiesiog prisijungiam prie namų routerio ir pasižiūrime kokį IP priskyrė. Čia būtų, ko gero, lengviausias ir suprantamiausias variantas, bet gal nevisi moka prisijungi ar net neturi prieigos prie routerio. Bet čia jau kita kalba.

Dabar jau žinome Raspberry Pi IP adresą ir galime prie jo prisijungti. Terminale vykdome tokią komandą:

ssh pi@raspberrypi_ip_adresas 

Naujai jungiantis paklaus ar išsaugoti key, atsakome yes ir vedame slaptažodį kuris yra raspberry. Gauname raspberry pi komandinę eilutę kuri atrodo taip:

pi@raspberrypi:~ $

MuMuDVB programos diegimas ir konfigūracija

Na o dabar susidiegiame MuMuDVB programą, kuri užsiims TV signalo dalyba į namų tinklą. Pirmiausia parsiunčiame pačią programą į namų katalogą:

cd ~ && wget http://data.mumudvb.net/release/mumudvb_2.1.0-6-6ae3baa_armhf.deb #naujausias šiai dienai

Ir sudiegiame vykdydami komandą:

sudo dpkg -i mumudvb*.deb

Kaip sudiegti į linux DVB tvarkykles neaprašinėsiu, nes nežinia koks modelis pas jus yra. Aš naudoju štai tokius DVB-T USB tiunerius.

Pasitikrinti ar viskas gerai su DVB adapteriu galima įvykdžius komandą:

dmesg | grep dvb

Turime gauti kažką panašaus į žemiau rodomą tekstą. Atkreipiam dėmesį, kad tiuneris turi būti “in warm state”.

[    5.031813] usb 1-1.3: dvb_usb_v2: found a 'Realtek RTL2832U reference design' in warm state

[    5.072101] usb 1-1.3: dvb_usb_v2: will pass the complete MPEG2 transport stream to the software demuxer

[    5.072150] dvbdev: DVB: registering new adapter (Realtek RTL2832U reference design)

[    5.210748] rc rc0: lirc_dev: driver dvb_usb_rtl28xxu registered at minor = 0, raw IR receiver, no transmitter

[    5.213899] usb 1-1.3: dvb_usb_v2: schedule remote query interval to 200 msecs

[    5.224028] usb 1-1.3: dvb_usb_v2: 'Realtek RTL2832U reference design' successfully initialized and connected

[    5.224657] usbcore: registered new interface driver dvb_usb_rtl28xxu

[    5.658319] dvbdev: DVB: registering new adapter (CXD2880)

Dabar pasižiūrime kaip ten pas mus tiunerius (jei jų yra daugiau) supranta neseniai sudiegta MuMuDVB programa. Beje, jei pas jus vienas DVB-T tiuneris, tai šią vietą galite praleisti. Čia skirta tam, kad identifikuoti visus turimus DVB tiunerius.

mumudvb -l

Ir gauname panašią į šią išvestį. Mums aktualu DVB CARDS LISTING skiltis.

Info:  DVB:  ==================================

Info:  DVB:          DVB CARDS LISTING

Info:  DVB:  ==================================

Info:  DVB:  =========== Card 0 - Tuner 0 ===========

Info:  DVB:   Frontend : Realtek RTL2832 (DVB-T)

Info:  DVB:   Terrestrial (DVB-T) card

Info:  DVB:   Frequency: 174000 kHz to 862000 kHz

Info:  DVB:  

Info:  DVB:  =========== Card 1 - Tuner 0 ===========

Info:  DVB:   Frontend : Sony CXD2880

Info:  DVB:   Terrestrial (DVB-T) card

Info:  DVB:   Frequency: 174000 kHz to 862000 kHz

Info:  DVB:  

Na o dabar belieka pasirašyti konfig failą su kuriuo paleisime pačią programą. Ties čia reikia šiek tiek paaiškinti. Tas va pavadinimas card0tuner0.conf gali būti bet koks. Tarkime aš pas save paprasčiausiai pasivadinu dažnio kurį noriu transliuoti numeriu. Mano atveju tai failas vadinasi 658000000Hz.conf, tiesiog kad pats suprasčiau kas ir kame. Vykdome tokią komandą:

sudo mkdir -p /etc/mumudvb && sudo nano /etc/mumudvb/card0tuner0.conf

Ir dabar mums reikia žinoti, kokį dažnį norėsime transliuoti. Kokiais anžeminiais dažniais transliuojama Lietuvoje galime pasižiūrėti Lietuvos Respublikos ryšių reguliavimo tarnybos tinklapyje, skiltis Skaitmeninės antžeminės televizijos dažniai ir aprėptys.

Tad jums gali prireikti pasikeisti card, tuner reikšmes (jei daugiau fizinių tiunerių), bei freq reikšmę. Taigi atsidariusiame lange suvedame kažką panašaus į tai:

autoconfiguration=full

card=0

tuner=0

bandwidth=8MHz

freq=658MHz

Failą įrašome suspaudę Ctrl+O ir Ctrl+X klavišų kombinacijas ir dabar jau galime pasitikrinti ar viskas veikia. Raspberry Pi su tiuneriais turi būti pajungta tiek prie lauko antenos, tiek prie namų tinklo. Bandome paleisti transliavimą į tinklą. Vedame tokią komandą:

sudo mumudvb -d -c /etc/mumudvb/card0tuner0.conf

Jei viskas teisingai, tai pasileis programa, nutįs nemažąs log’as ir tarp įrašų turite pamatyti transliuojamų programų sąrašą. Jei kanalų pavadinimai matosi, tada kompiuteryje pasileidžiame VLC programą ir atsidarius langui, kairėje pusėje pačioje apačioje spustelim Tinklo srautai (SAP). Dešinėje lange turi atsrasti į tinklą transliuojamų programų sąrašas.

VLC programos langas. Transliuojamų TV kanalų sąrašas.

Viskas, dabar galime nemokamus antžeminės skaitmeninės televizijos kanalus žiūrėti kompiuteryje vietiniame tinkle. Atkreipsiu dėmesį, kad ne visi routeriai geba sustvarkyti su multicast srautu, dažnu atveju gali tiesiog “užmušti” Wi-Fi tinklą. Tad jei susiduriate su problemomis dėl bevielio tinklo, jums reikia leisti kaip unicast, bet apie tai pabandysiu parašyti kituose straipsniuose.

Dar paminėsiu, kad jei pas jus keletas DVB-T tiunerių, tai jums kiekvienam tiuneriui reikės parašyti atskitą konfigūraciją ir leisti atskirą mumudvb sesiją. Kitaip tariant reikės parašyti sekantį card1tuner0.conf failą.

Pabaigai bonusas

Kad nereikėtų kiekvieną kartą vesti komandos sudo mumudvb -d -c /etc/mumudvb/card0tuner0.conf (tarkime dingus elektrai) pravartu pasirašyti paleidimo skriptą su reikiamais nustatymais ir padaryti automatinį startavimą. Darome sekančiai:

sudo nano /usr/bin/runtv

Atsidariusiame lange suvedama štai taip:

#!/bin/bash
mkdir /var/run/mumudvb
chmod 777 /var/run/mumudvb
/usr/bin/mumudvb -c /etc/mumudvb/card0tuner0.conf
exit 0

Failą įrašome suspaudę Ctrl+O ir Ctrl+X klavišų kombinacijas. Jei turite kelis tiunerius, tai atrodys kažkaip taip:

#!/bin/bash
mkdir /var/run/mumudvb
chmod 777 /var/run/mumudvb
/usr/bin/mumudvb -c /etc/mumudvb/card0tuner0.conf &
/usr/bin/mumudvb -c /etc/mumudvb/card1tuner0.conf &
/usr/bin/mumudvb -c /etc/mumudvb/card2tuner0.conf &
exit 0

Po visko belieka naujai sukurtam runtv failui priskirti vykdymo teise. Vykdom komandą:

sudo chmod +x /usr/bin/runtv

Na ir teliko parašyti paleidimo servisą. Vėlgi kuriame naują failą :

sudo nano /etc/systemd/system/mumudvb.service

Įkopijuojame:

[Unit]
Description=mumudvb
Wants=network.target

[Service]
Type=forking
ExecStart=/usr/bin/runtv

[Install]
WantedBy=multi-user.target

Išsaugome failo turinį klavišų kombinacija Ctrl+O ir Ctrl+X, bei užregistruojame servisą sistemoje komanda:

sudo systemctl enable mumudvb.service

Galop, jei viską padarėm gerai, paleidžiame mumudvb servisą. Beje, nepamirškime prieš tai sustabdyti rankiniu būdu paleisto mumudvb!

sudo service mumudvb start

Pasitikriname ar mumudvb sėkmingai startavo:

sudo service mumudvb status

Turime pamatyti kažką panašaus į

MuMuDVB serviso statusas.
Taip turi atrodyti sėkmingai startavusio serviso statusas.

Tai štai va tiek to vargo. Na o jei kažkas nesigauna, pasiklydode, ar neaiškiai surašyta, būtinai atsiliepkite komentaruose. Man jūsų mintys labai svarbios. Patikslinimai ir pastebėjimai taip pat laukiame.

Iki susiskaitymo 😉

Parašykite komentarą