From VDR Wiki
Jump to navigation Jump to search


MediaHighWay EPG is a program to receive EPG data via satellite, the information is made available by Canal+ group (Mediahighway receivers).

Mhwepg transforms the EPG data in a VDR compliant format.


Hardware requirements

  • Driver API 3 (current drivers are not supported)

Software requirements

  • Mhwepg
  • Loadepg
  • Perl
  • At (job manager)


tar -zxvf mhwepg-<VERSION>.tar.gz
cd mhwepg-<VERSION>
tar -jxvf loadepg--<VERSION>.tar.bz2
patch < mhwepg-<VERSION>.diff


The following entries goes to the commands.conf

Canal Digitaal (Netherlands)]   : echo "cd $SOURCEDIR/mhwepg && ./ -d localhost -p 2001 -s S19.2E -f 12515"|at now
Digital+ (Spain)]               : echo "cd $SOURCEDIR/mhwepg && ./ -d localhost -p 2001 -s S19.2E -f 10847"|at now
Canal+/CanalSatellite (France)] : echo "cd $SOURCEDIR/mhwepg && ./ -d localhost -p 2001 -s S19.2E -f 12363"|at now
Sky (Italia)]                   : echo "cd $SOURCEDIR/mhwepg && ./ -d localhost -p 2001 -s S13.0E -f 11880"|at now
Cyfra+ (Poland)]                : echo "cd $SOURCEDIR/mhwepg && ./ -d localhost -p 2001 -s S13.0E -f 10719"|at now

If everything went right, the following can be found in the /var/log/mhwepg.log

UTC Offset = 0
Country = ESP, Region = 1
Local Time Offset = 3600
Next Local Time Offset = 7200
Date of change = 25/03/2001
Reading titles ...
Reading summaries ...
Nb of summaries : 12419
Nb of titles : 11588
Writing EPG data to file ...
Nb of channels = 82


Parameter Description
-a NUM use given adapter (default 0)
-d NUM use given demux (default 0)
-s STR source (such as S19.2E)
-e STR list of equivalent channels
-l send the channels list to stderr
-o STR output to file <string> (default stdout)


Don't know if something changed in the driver in kernel 2.6, but I couldn't get the program to work even after patching. It seems that the default buffer size is too small for everything to work smoothly. What solved my problem was adding the following lines at the beginning of SetFiltSection, right after the line struct dmx_sct_filter_params sctFilterParams;

        if (ioctl(fd, DMX_SET_BUFFER_SIZE, 10*188*1024)<0) {
          perror("DMX SET BUFFER SIZE");

I'm puzzled because 10*188*1024 should be the default buffer size, but before the modification it didn't work, now it does so....


[1] Mhwepg homepage