Intro

Der er min overbevisning at hvis man kender den bagved liggende teknik så ved man også bedre hvordan man skal afhjælpe et problem i en given situation, derfor har jeg valgt at skrive alt det ned jeg ved om EPG databasen.

Men husk….

Hver gang man tilføjer funktionalitet til sit medie center, øger man risikoen for data fejl. Det gælder programmer som mit eget, Big Screen programmer, Remote Potato o.s.v.
Men man gør det jo fordi man mangler disse funtionaliteter, men man skal bare vide at det forholder sig sådan.

Hvordan virker det

Microsoft Windows Media Center’s EPG database er en simpel SQLLite database, så vidt jeg kan se. 

Selve database filen ligger i mappen
C:\ProgramData\Microsoft\eHome

image

Selve databasefilen hedder første gang mcepg2-0.db, men kan sagtens få et nyt nummer så den aktuelle kan f.eks. hedde mcepg2-11.db eller lign.
I dette eksempel er filen kun ca. 2MB stor, men en EPG fil med data ligger mellem 20 – 150 MB.

Hvad det aktive nummer er kan man finde i registry værdien her

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Media Center\Service\EPG\EPG.instance

Hvis den værdi ikke findes, svarer det til instance 0, d.v.s. så vil filen hedde MCEPG2-0.DB.
Windows Media Center laver selv en ny kopi hver gang den “opdager” en fejl i database, og forhøjer nummeret med 1. Derfor kan man sagtens finde mapper hvor der er mange kopier af databasen bare med forskellige “instans” numre.

Sammen med selve database filen er der også en mappe af samme navn, deri ligger flere ting.

image

*.MEM filerne er bare en del af databasen (tror jeg) og er ikke så interessant, men derimod er der er en undermappe som hedder “backup” som er meget interessant.

image

I “backup” mappen findes der igen flere undermapper, filerne i disse undermapper er XML filer som kan indlæses via LOADMXF tool’et. Disse filer bliver bl.a. dannet hver gang man tilføjer en ny optagelse, selve filerne hedder noget som angiver præcis hvornår backuppen er taget. Udover dette ser det ud til Medie Center laver en fil hver dag mindst. Kun de seneste tre kopier bliver gemt, d.v.s. når der kommer en ny backup, bliver der fjernet 1 hvis der er over tre.

image

Hvis man skal anvende disse filer, er det vigtigt at man anvender filer af samme navn fra alle mapperne. Disse filer indholder bl.a. dit TV setup (lineup), og indholder også de planlagte optagelser som du har (recordings) samt noget som ikke anvendes her i danmark, men som er funktionalitet for US brugere (subscriptions).
Disse XML filer er tilsammen dit grundlæggende setup for dit medie center.

Hvis Windows Media Center opdager en fejl i databasen, laver den automatisk en ny instans af databasen og henter via de seneste backup filer hele dit TV setup ind igen samt alle dine optagelser.

Recovery processen i Windows Media Center

Hvis nogen ser følgende besked når de starter Media Center så er det fordi er er foregået en recovery af databasen.

MCEError1

Selve recovery processen kan også startes manuelt, det er faktisk det som er indbygget i MCImportXMLTV GUI delen. Jeg vil her beskrive hvordan det gøres manuelt.

Som så meget andet i Media Center, er dette “bare” et baggrunds job i Opgave styringen. Selve opgaven “Task” hedder ObjectStoreRecoveryTask.

image

Det jobbet gør, er følgende.

1. Laver en ny instans af EPG databasen (Laver en ny database med 1 nummer højere end den gamle).
2. Genindlæser de seneste backup data fra “backup” folderen nævnt tidligere.
3. Henter Microsoft EPG data fra WWW og indlæser dem.

Alt i alt tager den process typisk et par minutter.

Når man så starter Windows Media Center derefter vil man få beskeden om at der er rettet i optagelses data (se billede ovenfor).

Hvilke programmer tilgår EPG databasen

Der er mange “klienter” på EPG databasen, udover selvfølgelig selve Windows Media Center.

Hvis man kigger på processer på et standard Windows Media Center som tilgår databasen, så er det følgende processer.

mcGLIDhost.exe  (DVB EPG Stream loader – “Inband guide data loader”)
mcupdate.exe  (Anvendt af mange baggrunds job, bl.a. til at hente Microsoft EPG data med)
ehShell.exe (Selve Windows Media Center)
loadmxf.exe (Windows Media Center MXF loader utility)

Hvis man installerer 3. parts programmer som

Remote Potato, så vil processen RemotePotatoService.exe til tider også gå i databasen.
Big Screen byRemote programmet vil også tilgå databasen.

Programmer som skriver i databasen, kan typisk forårsage fejl i databasen, SQLLite databasen kører ikke i transaktioner, d.v.s. står et program af midt i en opdatering, vil databasen være efterladt i en tilstand som ikke er forudsigelig = Ødelagt.
Mit program MCImportXMLTV anvender LOADMXF toolet til at indlæse data ind i databasen med.
Dette tool validerer input i filen hen af vejen, og står typisk af ved bestemte %, afh. af hvad der galt med databasen eller data.

LOADMXF

Jeg har fundet en beskrivelse her der lidt mere i detailjer forklarer hvad der kan være glat afh. hvilken % LOADMXF når til.

http://bigscreenglobal.com/bgepgsupport.aspx?PID=BSEV1&ID=TS3


Kort fortalt siger den følgende

Hvis LOADMXF fejler ved <20%
Databasen er korrupt af ukendte årsager, typisk vil du også få problemer med at selve Media Center crasher når den tilgår EPG data.

Hvis LOADMXF fejler mellem 80-90%
Dette tyder på der faktisk er et problem med de data from hentes ind, hvis det er fra MCImportXMLTV, så tyder det på at disse data af en eller anden grund ikke er korrekte. Typisk kan dette være fejl i ONTV’s data eller i programmet.

Hvis LOADMXF fejler ved ~97%
Dette er typisk en fejl der ses hvis man endnu ikke har kørt TV Setup i Medie Center, da der så ikke findes en “MergedLineup” relation i databasen.

Hvordan nulstiller man SÅ EPG databasen

Før man prøver at nulstille databasen, skal man selvfølgelig sikre sig alle programmer som tilgår databasen også er lukket. Disse programmer er nævnt i et andet afsnitt her i teksten.

Hel frisk database

Det er meget enkelt at komme tilbage til initielt setup igen. D.v.s. hvor man skal køre TV setup igen.

  1. Slet database filen mcepg2-<n>.DB samt biblioteket af samme navn under mappen C:\Programdata\Microsoft\eHome.

  2. Start Windows Media Center og kør TV Setup igen.

Genopret database (Rebuild) (Virker ikke med DVBLogic’s TVSource)

  1. Gå i opgave styringen find mappen “\Microsoft\Windows\Media Center” og find opgaven “ObjectStoreRecoveryTask”
  2. Højre klik og kør denne opgave. Vent 5-10 min og start så Windows Media Center og check om alt er ok.
  3. Hvis den IKKE kunne recover din lineup, så er du også tilbage til initiel setup, d.v.s. så skal du køre TV setup igen.

Genopret database (Rebuild) (Med DVBLogic’s TV Source)

TVSource “snyder” databasen lidt, og derfor virker den alm. recover ikke, da deres Addin “overskriver” nogen data uden at Medie Centeret ved det.
Så da er det nødvendigt at følge nedenstående guide istedetfor.

  1. Tag en kopi af XML backup filerne (dem du ønsker at genetablere), det er tre filer der hedder det samme i hver sin mappe (Se andet afsnit for en nærmere omtale af disse filer).
  2. Udfør alle punkter i “Hel frisk database”. i TV Setup skal du bare tilføje de fire virtuelle tunere og vælge at gennemføre guide.
  3. Luk Windows Media Center ned og start det op igen, nu vil DVBLogic’s addin foreslå at opdatere kanaler, sig ja til dette. Dette skal gerne gå godt.
  4. Luk Windows Media Center igen.
  5. Start nu en kommando prompt
  6. Kør kommando
    C:\Windows\ehome\loadmxf –i <sti-til-backup-filer>\lineup\20110220_133433
    Dette vil restore din lineup (Dine valgte kanaler)
  7. Kør kommando
    C:\Windows\ehome\loadmxf –i <sti-til-backup-filer>\recordings\20110220_133433
    Dette vil restore din planlagte optagelser
  8. Kør kommando
    C:\Windows\ehome\loadmxf –i <sti-til-backup-filer>\subscriptions\20110220_133433
    Dette vil restore dine subscriptions (USA ting, men gør det alligevel)


Ved genoprettelse af database, burde alt TV Setup være intakt samt alt andet tuner setup.
BEMÆRK, ingen EPG data er hentet ind endnu, ud over Microsoft, d.v.s. hvis du anvender ONTV data via mit program, skal dette hentes ind nu, inden man kan se data i guiden.

Data fra mit program kan loades via kommandoen
(Seneste data generet af mit tool)


C:\windows\ehome\loadmxf –i c:\programdata\nrsoft\mcimportxmltv\mxf_output.xml

 

Simpel Backup metode (Fil backup)

Det er muligt at kopiere database filerne til et sikkert sted.
Man kan så køre dem tilbage ved at overskrive de “dårlige” versioner.
Jeg har planer om at lave et tool, der kan gøre dette automatisk for en hver nat eller “on demand”. Mere om det senere…

Volume shadow copies (Gendannelses punkter)

En anden simpel mulighed som foregår helt af sig selv er at anvende en gammel “god” kopi af filen, hvis f.eks. din EPG database gik “ned” om natten, Så kan man jo prøve at anvende en tidligere udgave. Den vil selvfølgelig ikke indeholde ændrer efter det tidspunkt den er taget, de ting er tabt, men det kan da spare en for noget arbejde.

image