Asus My Cinema P7131 Hybrid (TV-kort)

Uppdatering 2007-11-07: Numera verkar det som om stöd för kortet finns med direkt i Linux-kerneln, så man borde kunna stoppa in den och köra direkt. För vissa versioner av kortet behöver man fortfarande ladda ned en firmware-fil, annars ska allt fungera (relativt) smidigt.

Gammals skräp jag behövde ta bort:

Filen "/etc/udev/rules.d/25-lirc.rules" skapade jag för länge sen när jag använde en hemgjord seriell mottagare. Filen har innehållet

KERNEL=="ttyS0", NAME="%k", SYMLINK+="lirc", MODE="0666"

och blir troligen i vägn för TV-kortets IR-mottagare, så jag tog bort den...

Installation

Den analoga mottagningen fungerade direkt efter att kortet stoppats in i datorn (kör med FC6). För att ta emot digital-tv så behövde man göra lite fler saker.

För det första, så behövde jag installera mercurial (källkodshanteringsverktyg), som man använde för att hämta hem den aktuella versionen av v4l-dvb. Sen kompilerade och installera jag v4l-dvb. Man behöver ha källkoden till kärnan, och den behöver vara korrekt konfigurerad för att man ska kunna bygga modulerna i v4l-dvb. Jag har gjort det för evigheter sen, och kommer tyvärr inte ihåg om man behövde tänka på några detaljer. En annan detalj som var trevlig var att drivrutinerna också tar hand om IR-sensorn, och skapade enheten /dev/lirc. Från början skickas alla knapptryckningar som tangentbords-tryckningar. Om man i stället vill skicka allt via lircd, så behöver man göra lite mer.
Mer info här: How to install DVB device drivers

För det andra så hämtade jag en firmwarefil, som heter "dvb-fe-tda10046.fw". Den stoppade jag i katalogen /lib/firmware, eftersom just mitt kort troligen behövde det. Det finns olika versioner av kortet, och några tidigare innehåller tydligen ett EEPROM-minne där firmwaren lagras, men jag tror jag läste någonstans att min revision av kortet inte hade minne för permanent lagring av firmwaren. Det innebär att hotplug i linux kommer att överföra denna firmware till TV-kortet varje gång som datorn startas.

För det andra så behövde man göra en kanalsökning, och för att göra det använde jag paketet dvb-apps. Jag gjorde sökningen först med detta kommando:

scandvb /usr/share/dvb-apps/dvb-t/se-Sodertalje_Ragnhildsborg > ~/.tzap/channels.conf

Förutom detta så vill många applikationer ha separata kopior av channels.conf, så jag skapade symboliska länkar till .tzap/channels.conf i katalogerna ~/.mplayer samt ~/.xine
Mer info här: Testing your DVB device, Dvb-apps.

Användning (digital-TV)

Den ytte-pytte-lilla antennen som följde med kortet räcker för att få en hyfsad mottagning, men jag tänker koppla in en riktig antenn, för nu får man lite störningar i bilden ibland beroende på var man står i rummet.

Det enklaste sättet att se på TV för mig är att starta xine, och trycka på DVB-knappen i panelen. Man byter enklast station genom att ta upp playlist, och välja vilken kanal man vill titta på där.

Man kan också spela upp strömmen via mplayer, antingen direkt:

mplayer dvb://"TV6" -vf pp=lb

eller genom att spela in strömmen för programmet man tittar på, så man kan spola fram och tillbaka i strömmen (men spolar man förbi vad som sänds för tillfället så stängs mplayer, och man får starta från början, och gå dit man var i filmen innan man spolade bort sig.

mplayer dvb://"TV6" -dumpstream -dumpfile programmet.ts &
sleep 10 #för att få lite data buffrat
mplayer programmet.ts -vf pp=lb

Ett annat sätt att använda kortet är genom att låta mencoder packa in datat i an avi-fil, och det har fördelen att man kan ange längden på det man spelar in, samtidigt som det blir lätt att skripta det med kommandot at.

#spelar in 80 minuter från ettan
mencoder dvb://"SVT1" -oac copy -ovc copy -o programmet.avi -endpos 01:20:00

#spelar in 70 minuter från ettan from 20:55
echo 'mencoder dvb://"SVT1" -oac copy -ovc copy -o /tmp/programmet.avi -endpos 01:20:00' | at 20:55

Ytterliggare ett sätt att använda kortet är genom att använda tzap (ett av programmen i dvb-apps), och plocka ut en mpeg-fil:

tzap -r "TV6" &
cat /dev/dvb/adapter0/dvr0 > programmet.mpeg &
sleep 10 #För att få lite data buffrat
mplayer programmet.mpeg

Editera sparade TS-strömmar

Det programmet jag använt för editering var faktiskt ProjectX, och det är inte något särskilt lättanvänt program. Jag har inte heller någon aning om vad bästa sättet att göra det på är heller.

Hur som helst så satte jag in cut-points på tidslinjen för att få bort reklam och annat onödigt, och sen satte jag igång den på att demux:a strömmen (delar på video och audio, ser till att syncning blir så bra som möjligt, osv. Efter det så slog jag ihop strömmen igen med mplex, samt använde avidemux2 för att koda till Xvid4 (så den sköter inställningarna, och räknar ut så filmen får plats på en CD-skiva).

java -jar ProjectX.jar
mplex -f 3 -V -o delme_vbr.mpg delme_demux_video.m2v delme_demux_audio.mp2
avidemux2 delme_vbr.mpg

För det mesta så använder jag inte avidemux2 över huvud taget, utan bränner resultatet från mplex i stället. Av någon konstig anledning så får man någon gång ibland en fil där ljud-synket inte stämmer helt, och då kan man ange flaggan -O -100ms (men med rätt antal millisekunder) för att mplex ska rätta till problemet.

Just nu tittar jag lite på hur man ska kunna använda MJPEG-tools, och det fanns en howtosourceforge.

Användning (FM-radio)

Blev lite jobbigare att använda radion, eftersom inte någon kabel för inkoppling av TV-kortet till ljudkortet ingick. Det går att gå runt det också, men det är lite omständigare. En bra sak att känna till är att TV-kortets inbyggda AD-omvandlare enbart samplar med 32kHz samplingsfrekvens... radio

SVT HD

Det verkar vara jättesvårt att ta in SVT HD, och jag har fortfarande inte lyckats. Första problemet var att få i ordning en giltig inställningsfil till scandvb. Det man kunde gissa sig till att den skulle innehålla kommer från information utspridd på flera olika ställen på teracom:s hemsida, och min gissning var:

# Sweden - Stockholm/Nacka 
#
# Note: according to www.teracom.se, "Frekvenstabeller tv",
#
# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
T 730000000 8MHz 1/3 NONE QAM64 8k 1/8 NONE

Utdatat från scandvb "namn på filen ovan" blev då

scanning se-Stockholm_Nacka_according_to_www.simong.se[TRY TO GET SVD HD]
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
ERROR: invalid enum value '1/3'
initial transponder 730000000 0 9 9 3 1 2 0
>>> tune to: 730000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE
WARNING: >>> tuning failed!!!
>>> tune to: 730000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE (tuning failed)
WARNING: >>> tuning failed!!!
ERROR: initial tuning failed
dumping lists (0 services)
Done.

Tyvärr fungerade det inte, och till slut provade jag pilla på olika variabler, och när jag råkade mata in en ogiltig variant (som inte borde gå) lyckades kortet och linux tillslut få tag i kanalerna.

# Sweden - Stockholm/Nacka 
#
# Note: according to www.teracom.se, "Frekvenstabeller tv",
#
# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
T 730000000 20MHz 1/3 NONE QAM64 2k 1/8 NONE 

Det gick till och med att ändra raden till

# Sweden - Stockholm/Nacka 
#
# To get data for SVT HD. 
#
# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
T 730000000 this might be very helpful for you!

vilket jag tyckte var ganska roligt. Utdatat från scandvb visade att den bara antog att frekvensen var fast, och alla andra parametrar har den satt i något auto-läge, så att den tar reda på dom själv. Själva orsaken till att scandvb behövde använda konfigurationsfiler var så vitt jag visste att det saknades stöd för att automatiskt detektera sändningsparametrar, men när det fungerar, så skulle man kunna ordna fram en lista där samtliga frekvenser för DVB-T i t.ex sverige är med, så kan man göra en autosökning ändå. En sak som man kanske inte kan gissa sig till är vilket "guard interval" som används, eftersom signalens utseende när den kommer fram beror på om det finns multi-path interference. Hur som helst var utdatat från scandvb numera:

scanning se-Stockholm_Nacka_according_to_www.simong.se[TRY TO GET SVD HD]
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
ERROR: invalid enum value 'this'
ERROR: invalid enum value 'migh'
ERROR: invalid enum value 't'
ERROR: invalid enum value 'be'
ERROR: invalid enum value 'very'
ERROR: invalid enum value 'help'
ERROR: invalid enum value 'ful'
initial transponder 730000000 3 9 9 6 2 4 4
>>> tune to: 730000000:INVERSION_AUTO:BANDWIDTH_AUTO:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIERARCHY_AUTO
0x0000 0x030c: pmt_pid 0x030c Sverigefinska Riksf~rbundet -- TV Finland (running)
0x0000 0xfffe: pmt_pid 0x0712 Boxer TV Access AB -- Boxer Navigator (running)
0x0000 0x0262: pmt_pid 0x0262 Sveriges Television -- SVT HD (running)
Network Name 'Teracom_Mux_6'
dumping lists (3 services)
TV Finland:730000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:789:788:780
Boxer Navigator:730000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0:65534
SVT HD:730000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:618:610
Done.

Det är ganska lätt att lägga till TV Finland och SVD HD i slutet av den channels.conf som man har sedan tidigare. MEN TYVÄRR hittade den inte videoströmmen, troligen beroende på att SVT HD sänds i H.264 i stället för MPEG2, så man vill kanske lägga till den separat. Det går att se vilken ström det är genom att använda dvbtraffic, som visade att id 619 har störst bandbredd av alla grejer, så om man lägger till den så vill man i södertälje nog lägga till

SVT HD:730000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:619:618:610

Nu är nästa steg att komma på hur man tittar på videoströmmen, det låter jag nog någon annan klura ut.

Användning (Videofångst)

Jag har en liten PAL-kamera kopplad till en video-ingång på TV-kortet. För att titta på den bilden med mplayer skriver man följande:

mplayer -tv driver=v4l2:input=1:width=720:height=576 tv://

Och för att spela in i mpeg4 (utan ljud och utan att deinterlace'a först):

mencoder -tv driver=v4l2:input=1:width=720:height=576 tv:// -o test.avi -nosound -ovc lavc -lavcopts vcodec=mpeg4:ildct:ilme

Länkar

http://www.linuxtv.org/
http://www.mythtv.org/
Fedora Myth(TV)ology
ProjectX guide (något gammal, GUI:t annorlunda numera)
ProjectX (bara om ljud)
HOWTO Master a DVD from DVB transport stream