TUTORIAL: New firmware CUSTOM 3 (Custom3_0148VK Sept-2010)
+3
annubis
Irving
vic1972
7 participantes
Página 1 de 1.
TUTORIAL: New firmware CUSTOM 3 (Custom3_0148VK Sept-2010)
Hello, new versions are available, so all links in the posts and pdf document has been deleted.
please grab latest versions from here:
http://sourceforge.net/projects/lgmenu/files/
updated instructions are:
https://ms450.forosactivos.net/english-ms400h-ms450h-ms408d-ms409d-f7/tutorial-pm-lg-menu-v103-t444.htm
**********************************************************************
Hello,
here it is finally, firmware CUSTOM 3, its identification is: Custom3_0148VK
Main developers has been: Keltek and Victor.
Of course with help and collaboration of many people.
All the information of this new firmware (User guide, installation, etc),
is available in the following documents:
Spanish: http://dl.dropbox.com/u/684543/varios/ms450h/Firmwares/CUSTOM3.0/distribution/PM_LGM_UserGuide_ES.pdf
English: http://dl.dropbox.com/u/684543/varios/ms450h/Firmwares/CUSTOM3.0/distribution/PM_LGM_UserGuide_EN.pdf
French: http://dl.dropbox.com/u/684543/varios/ms450h/Firmwares/CUSTOM3.0/distribution/PM_LGM_UserGuide_FR.pdf
The main functionalities are:
The main functionalities of PipeManagement: (Full description in the documents).
The main functionalities of LGMenu are:
Better if you download the two files together in the following link:
http://dl.dropbox.com/u/684543/varios/ms450h/Firmwares/CUSTOM3.0/distribution/distribution.zip
The files, basically are two files needed:
Basically you have to put those file in a USB stick,do not change the file names.
switch off lg, connect USB, and switch on lg while pressing round key at the front.
More instructions in the guide.
Basically consist in two installation process: the firmware and packages.
Each of these process generates a reboot when they finish, so do not get worry if the lg reboot.
Then you can access lgmenu putting ip address in your web browser.
We have created a site to put all incidences and ideas:
http://sourceforge.net/tracker/?group_id=348378
Thanks Keltek for great dedication and communication.
please grab latest versions from here:
http://sourceforge.net/projects/lgmenu/files/
updated instructions are:
https://ms450.forosactivos.net/english-ms400h-ms450h-ms408d-ms409d-f7/tutorial-pm-lg-menu-v103-t444.htm
**********************************************************************
Hello,
here it is finally, firmware CUSTOM 3, its identification is: Custom3_0148VK
Main developers has been: Keltek and Victor.
Of course with help and collaboration of many people.
All the information of this new firmware (User guide, installation, etc),
is available in the following documents:
Spanish: http://dl.dropbox.com/u/684543/varios/ms450h/Firmwares/CUSTOM3.0/distribution/PM_LGM_UserGuide_ES.pdf
English: http://dl.dropbox.com/u/684543/varios/ms450h/Firmwares/CUSTOM3.0/distribution/PM_LGM_UserGuide_EN.pdf
French: http://dl.dropbox.com/u/684543/varios/ms450h/Firmwares/CUSTOM3.0/distribution/PM_LGM_UserGuide_FR.pdf
The main functionalities are:
- PipeManagement: modification of the behaviour of the LG in background and numeric codes.
- LGMenu: Portal web with many utilities and functionalities; and platform for new developments and ideas.
- Last version of busybox.
The main functionalities of PipeManagement: (Full description in the documents).
- After Recording Power Off Management.
- Subtitles management.
- Recording Backup.
- Timer Management.
- Numeric Codes.
- Auto Power Off.
- Custom Scripts.
- Prompter OK.
- Prompter Yes.
- Prompter No.
- Channel Carousel.
- Channel List Recovery Internet.
- Channel List Backup / Restore.
- Recording Backup / Restore.
The main functionalities of LGMenu are:
- FTP server from lg boot.
- Portal web with different options in default web port.
- Order, edit, delete channels.
- History of recordings
- List of recordings with ftp/http links.
- Minutes are added in recording if added from EPG.
- List, delete and edit recordings.
- Backup/ restore of main lg config files.
- Page to configure services.
- Show LG seetings.
- Reboot LG PVR.
- bit torrent cliente (rTorrent) with web interface (wTorrent)
- Virtual remote controller.
- MultiLanguage.
- Login: username and password to access web portal [optional].
Better if you download the two files together in the following link:
http://dl.dropbox.com/u/684543/varios/ms450h/Firmwares/CUSTOM3.0/distribution/distribution.zip
The files, basically are two files needed:
- Firmware: http://dl.dropbox.com/u/684543/varios/ms450h/Firmwares/CUSTOM3.0/distribution/MS400_100417_0148.img
- CustomPackages: http://dl.dropbox.com/u/684543/varios/ms450h/Firmwares/CUSTOM3.0/distribution/Custom-KV-v1.0.tar.gz
Basically you have to put those file in a USB stick,do not change the file names.
switch off lg, connect USB, and switch on lg while pressing round key at the front.
More instructions in the guide.
Basically consist in two installation process: the firmware and packages.
Each of these process generates a reboot when they finish, so do not get worry if the lg reboot.
Then you can access lgmenu putting ip address in your web browser.
We have created a site to put all incidences and ideas:
http://sourceforge.net/tracker/?group_id=348378
Thanks Keltek for great dedication and communication.
Última edición por vic1972 el Dom Oct 03, 2010 10:46 pm, editado 2 veces
vic1972- Mensajes : 2260
Fecha de inscripción : 09/12/2009
Edad : 52
Localización : Malaga
Re: TUTORIAL: New firmware CUSTOM 3 (Custom3_0148VK Sept-2010)
Thanks Keltek and Victor.
Irving- Mensajes : 9
Fecha de inscripción : 14/06/2010
Re: TUTORIAL: New firmware CUSTOM 3 (Custom3_0148VK Sept-2010)
Muchas gracias
Thanks a lot
Merci beaucoup
Thanks a lot
Merci beaucoup
annubis- Mensajes : 78
Fecha de inscripción : 12/08/2010
Re: TUTORIAL: New firmware CUSTOM 3 (Custom3_0148VK Sept-2010)
Good job to you
I can see you use some tips I found, great
I try to install it next week
Really, good job !
Seb@stien
I can see you use some tips I found, great
I try to install it next week
Really, good job !
Seb@stien
Seb@stien- Mensajes : 93
Fecha de inscripción : 15/12/2009
AU Report
Hi,
I got AU version of the devise. Got installed external HDD (1Tb).
Updated to resent unofficial version (v3). Great job. Keep going.
Have noticed several things. Some was able to resolve, with some need help.
Installation: First part was without any problems. Second part with custom routines did not work. Had to copy files to devise and run manually installation script. After that got web interface, ftp and samba. Great job.
Some problems: when watching files through samba some files are taking time to seek. With 2009 version of firmware this was not the case. Would appreciate solution.
On Scheduling page Destination had only two options: HDD and USB. Had to modify two files to add External HDD (HDD+): act_Schedule.inc and lang_eng.inc. Edited files are attached.
Schedule file
It looks like that web scheduling uses counter for setting records rather than program number. In AU there are programs spread from 1 to 99. Total number of program is around 40. As a result either devise does not understand when say channel 22 is set to be recorded (there is no program 22, example) or web interfase shows error when program 99 was selected for recording on devise - total count is only 40, so 99 cannot be displayed.
I would kindly appreciate your help.
Thank you.
Kind regards,
TY
I got AU version of the devise. Got installed external HDD (1Tb).
Updated to resent unofficial version (v3). Great job. Keep going.
Have noticed several things. Some was able to resolve, with some need help.
Installation: First part was without any problems. Second part with custom routines did not work. Had to copy files to devise and run manually installation script. After that got web interface, ftp and samba. Great job.
Some problems: when watching files through samba some files are taking time to seek. With 2009 version of firmware this was not the case. Would appreciate solution.
On Scheduling page Destination had only two options: HDD and USB. Had to modify two files to add External HDD (HDD+): act_Schedule.inc and lang_eng.inc. Edited files are attached.
Schedule file
- Código:
<?php
$message = "";
$editentry = false;
function updTimerRec() {
$fh = fopen("/tmp/command_sender.txt", "a");
if ($fh) {
fwrite($fh, "G\n");
fflush($fh);
sleep(2);
fwrite($fh, ",\n");
fflush($fh);
fclose($fh);
}
}
// Udelej seznam kanalu
$lg_cmd = "/tmp/hdd/root/custom/bin/lgchanedit";
$read_file = "/usr/local/etc/dvdplayer/dtv_channel.txt";
$lg_list = $lg_cmd." -l -f ".$read_file;
$db_file="/usr/local/etc/dvdplayer/schedule_record.db";
$sql = new SQLite3($db_file, SQLITE3_OPEN_READWRITE);
$out = exec($lg_list, $list);
if ($out == "Error reading input file.") {
$list = array();
} else {
$c = count($list);
$chlist = array();
for ($i = 0; $i<$c; $i++) {
$chlist[$i] = (list($ch_index, $ch_name, $ch_name2, $ch_type) = explode(":", $list[$i]));
}
}
// Zajisti zmeny triggeru
$TRIGGER1 = "CREATE TRIGGER update_EPG1 AFTER INSERT ON timer_record_table BEGIN UPDATE timer_record_table SET timestamp_Start = (timestamp_Start - 0) WHERE ID = new.ID AND event_id > 0; UPDATE timer_record_table SET timestamp_Offset = (timestamp_Offset+";
$TRIGGER2 = ") WHERE ID = new.ID AND event_id > 0; UPDATE timer_record_table SET start_minute = max(0, start_minute - 0) WHERE ID = new.ID AND event_id > 0; UPDATE timer_record_table SET length_minute = (length_minute+";
$TRIGGER3 = ") WHERE ID = new.ID AND event_id > 0; END;";
$DROPTRIG = "DROP TRIGGER update_EPG1;";
if (!empty($_POST["deactivate"]) && $_POST["deactivate"] == REC_SHIFTDEACT) {
// Smaz trigger
$sql->exec($DROPTRIG);
} else if (!empty($_POST["epgtrig"]) && $_POST["epgtrig"] == REC_SHIFTPERFORM) {
$epgmin = (!empty($_POST["epg_min"]))?$_POST["epg_min"]:0;
if (is_numeric($epgmin) && $epgmin > 0) {
$trig = $TRIGGER1.($epgmin * 60).$TRIGGER2.($epgmin).$TRIGGER3;
$res = exec("/tmp/hdd/root/custom/bin/sqlite3 ".$db_file." ".schema timer_record_table"");
if (strpos($res, "update_EPG1") > 0) {
$sql->exec($DROPTRIG);
}
$sql->exec($trig);
} else if(is_numeric($epgmin) && $epgmin == 0) {
$res = exec("/tmp/hdd/root/custom/bin/sqlite3 ".$db_file." ".schema timer_record_table"");
if (strpos($res, "update_EPG1") > 0) {
$sql->exec($DROPTRIG);
}
}
}
// Zjistit, jestli uz mame trigger
$res = exec("/tmp/hdd/root/custom/bin/sqlite3 ".$db_file." ".schema timer_record_table"");
if (strpos($res, "update_EPG1") > 0) {
// Trigger existuje
$shiftactive = 1;
$minlen = substr($res, strpos($res, "length_minute") + 13);
$minlen = substr($minlen, strpos($minlen, "length_minute") + 13);
$minlen = substr($minlen, strpos($minlen, "+") + 1);
$minlen = substr($minlen, 0, strpos($minlen, ")"));
} else {
$shiftactive = 0;
$minlen = 0;
}
$dtz = new DateTimeZone(date_default_timezone_get());
$tzoffset = $dtz->getOffset(new DateTime());
// Proved akce
if (!empty($_POST["recaction"])) {
$recaction = $_POST["recaction"];
// Pridej zaznam
if ($recaction == REC_ADD) {
$recdate = $_POST["recdate"];
$start_hour = $_POST["rechour"];
$start_minute = $_POST["recminute"];
$length_hour = $_POST["reclhour"];
$length_minute = $_POST["reclminute"];
$channel = $_POST["recchan"];
$target = $_POST["recdest"];
$frequency = $_POST["recfrequency"];
$now = time() - $tzoffset;
$plan = strtotime($recdate." ".$start_hour.":".$start_minute);
if(empty($recdate)) {
$message = REC_EMPTYDATE;
} else if ($length_hour == 0 && $length_minute < 10) {
$message = REC_SHORTLEN;
} else if ($plan - $now < 0) {
$message = REC_BADDATE;
} else {
$id = 0;
$datestamp = 0;
$date = $frequency;
list($date_day, $date_month, $date_year) = explode(".", $recdate);
$source = 10;
$quality = 1;
$sap = 0;
$timestamp_start = mktime($start_hour, $start_minute, 0, $date_month, $date_day, $date_year) + $tzoffset;
$timestamp_offset = ($length_hour * 3600) + ($length_minute * 60);
$enable = 0;
$lock = 0;
$schedule_type = 0;
$event_id = -1;
$user_id = 0;
$user_string = "";
$sql_insert = "INSERT INTO timer_record_table (datestamp, date, date_year, date_month, date_day, start_hour, start_minute, length_hour, length_minute,".
" source, channel, quality, target, SAP, timestamp_start , timestamp_offset, enable, lock, schedule_type, event_id , user_id , user_string ) ".
" VALUES (0, $frequency, $date_year, $date_month, $date_day, $start_hour, $start_minute, $length_hour, $length_minute, $source, $channel,".
" $quality, $target, $sap, $timestamp_start, $timestamp_offset, $enable, $lock, $schedule_type, $event_id, $user_id, '$user_string');";
$result = $sql->exec($sql_insert);
if (!$result) {
$message = REC_INSERROR;
} else {
updTimerRec();
}
}
} else if ($recaction == REC_SAVE) {
// Uloz zmeny
$id = $_POST["id"];
$sdd = $_POST["day"];
$sdm = $_POST["month"];
$sdy = $_POST["year"];
$sth = $_POST["rechour"];
$stm = $_POST["recminute"];
$leh = $_POST["reclhour"];
$lem = $_POST["reclminute"];
$cha = $_POST["recchan"];
$rfr = $_POST["recfre"];
$tar = $_POST["recdest"];
$timestamp_start = mktime($sth, $stm, 0, $sdm, $sdd, $sdy) + $tzoffset;
$timestamp_offset = ($leh * 3600) + ($lem * 60);
$sql_update = "UPDATE timer_record_table SET date = ".$rfr.", start_hour = ".$sth.", start_minute = ".$stm.", length_hour = ".$leh.", length_minute = ".$lem.
", channel = ".$cha.", target = ".$tar.", timestamp_start = ".$timestamp_start.", timestamp_offset = ".$timestamp_offset." WHERE ID = ".$id." AND lock = 0";
$result = $sql->exec($sql_update);
if (!$result) {
$message = REC_UPDERROR;
} else {
updTimerRec();
}
} else if ($recaction == REC_DELETE) {
// Smaz zaznam
$id = $_POST["id"];
$sql_delete = "DELETE FROM timer_record_table WHERE id = ".$id;
$result = $sql->exec($sql_delete);
if (!$result) {
$message = REC_DELETEERROR;
} else {
updTimerRec();
}
}
}
// Udelej seznam zaznamu
$query = "SELECT * FROM timer_record_table ORDER BY timestamp_start";
$results = $sql->query($query);
$cur_starth = date("H");
$cur_startm = date("i");
$tzcorrection = $tzoffset/3600;
$loctime = localtime(time(),true);
$tm_mday = $loctime["tm_mday"];
$tm_mon = $loctime["tm_mon"];
$tm_year = $loctime["tm_year"];
if ($cur_starth - $tzcorrection < 0) {
// Cas je posunut do dalsiho dne
if ($tm_mday - 1 < 1) {
// Cas je posunut do dalsiho mesice
if ($tm_mon - 1 < 0) {
// Cas je posunut do dalsiho roku
$tm_year--;
}
$tm_mon--;
}
$tm_mday--;
$cur_starth -= $tzcorrection;
} else {
$cur_starth -= $tzcorrection;
}
$cur_date = $tm_mday.".".($tm_mon + 1).".".($tm_year + 1900);
if (!empty($_POST["recentryedit"]) && $_POST["recentryedit"] == REC_BUTEDIT) {
if ($_POST["lock"] == 0) {
$id = $_POST["id"];
$editentry = true;
} else {
$message = REC_ENTRYLOCKED;
}
}
?>
<div id="main_t">
<ul id="tabs">
<li>
<div class="tabs"><?=REC_RECORDED?></div>
</li>
</ul>
</div>
<div id="main_m">
<div id="content" align="center">
<h1><?=REC_ENDSHIFT?></h1>
<form method="post" action=""><?=REC_ENDSHIFTMSG?> <input type="text"
size="2" name="epg_min" value="<?=$minlen?>" /><?=REC_MIN?> <input
type="submit" name="epgtrig" value="<?=REC_SHIFTPERFORM?>" /> <input
type="submit" name="deactivate" value="<?=REC_SHIFTDEACT?>"
<?=($shiftactive == 0?" disabled="disabled"":"")?> /></form>
<h1><?=REC_ADDENTRY?></h1>
<?=!empty($message)?"<div style="color: red;">".$message."</div>":""?>
<form name="record" method="post" action="">
<table width="950" border="1" cellspacing="0" cellpadding="0"
class="download"
style="border-collapse: collapse; border-color: #eeeeee;">
<tr>
<th class="listTorrentsHead"><?=REC_DATE?></th>
<th class="listTorrentsHead"><?=REC_HOURMINUTE?></th>
<th class="listTorrentsHead"><?=REC_LEN?></th>
<th class="listTorrentsHead"><?=REC_CHANNEL?></th>
<th class="listTorrentsHead"><?=REC_DESTINATION?></th>
<th class="listTorrentsHead"><?=REC_FREQUENCY?></th>
<th class="listTorrentsHead"></th>
</tr>
<tr class="t_cont">
<td class="name"><input type="text" name="recdate"
value="<?=$cur_date?>" size="10" /><a href="#"
onclick="cal.select(document.forms['record'].recdate, 'anchor1', 'dd.MM.yyyy'); return false;"
name="anchor1" id="anchor1"><?=REC_SELDATE?></a>
<div id="testdiv1"
style="position: absolute; visibility: hidden; background-color: white; layer-background-color: white;"></div>
</td>
<td><select name="rechour" size="1">
<?
for ($h = 0; $h<24; $h++) {
print "<option value="$h"".($cur_starth == $h?"selected=" selected"":"").">".($h<10?"0$h":$h)."</option>\n";
}
?>
</select> : <select name="recminute" size="1">
<?
for ($m = 0; $m<60; $m+=5) {
print "<option value="$m"".(($m >= $cur_startm && $m <= ($cur_startm + 5))?" selected="selected"":"").">".($m<10?"0$m":$m)."</option>\n";
}
?>
</select></td>
<td><select name="reclhour" size="1">
<?
for ($h = 0; $h<24; $h++) {
print "<option value="$h">".($h<10?"0$h":$h)."</option>\n";
}
?>
</select> : <select name="reclminute" size="1">
<?
for ($m = 0; $m<60; $m+=5) {
print "<option value="$m">".($m<10?"0$m":$m)."</option>\n";
}
?>
</select></td>
<td><select name="recchan" size="1">
<?
for ($i=0; $i < count($chlist); $i++) {
print("<option value="".$chlist[$i][0]."">".$chlist[$i][0]." ".$chlist[$i][1]."</option>\n");
}
?>
</select></td>
<td><select name="recdest" size="1">
<option value="7"><?=DST_PLS?></option>
<option value="0"><?=DST_HDD?></option>
<option value="1"><?=DST_USB?></option>
</select></td>
<td><select name="recfrequency" size="1">
<option value="0"><?=REC_ONCE?></option>
<option value="1"><?=REC_EVERYDAY?></option>
<option value="2"><?=REC_MON_FRI?></option>
<option value="3"><?=REC_MON_SAT?></option>
<option value="7"><?=REC_WEEK?></option>
</select></td>
<td><input type="submit" name="recaction" value="<?=REC_ADD?>" /></td>
</tr>
</table>
</form>
<i style="font-size: 10px"><?=REC_ADDNOTICE?></i>
<h1><?=REC_RECLIST?></h1>
<?
if ($editentry == true) {
print "<form method="post" action="">\n";
}
?>
<table width="950" border="1" cellspacing="0" cellpadding="0"
class="download"
style="border-collapse: collapse; border-color: #eeeeee;">
<tr>
<th class="listTorrentsHead"><?=HIST_DATE?></th>
<th class="listTorrentsHead"><?=HIST_LEN?></th>
<th class="listTorrentsHead"><?=HIST_SOURCE?></th>
<th class="listTorrentsHead"><?=HIST_CHANNEL?></th>
<th class="listTorrentsHead"><?=REC_FREQUENCY?></th>
<th class="listTorrentsHead"><?=HIST_QUALITY?></th>
<th class="listTorrentsHead"><?=HIST_DESTINATION?></th>
<th class="listTorrentsHead"><?=HIST_LOCK?></th>
<th class="listTorrentsHead"></th>
</tr>
<?
$rowid = 0;
while ($row = $results -> fetchArray()) {
if( $rowid % 2 == 0) {
$rowstyle = ROW_EVEN;
} else {
$rowstyle = ROW_ODD;
}
$rowid++;
?>
<tr class="t_cont" style="height: 25px; background-color: <?=$rowstyle?>;">
<td class="name" align="center"><?=$row["date_day"]?>.<?=$row["date_month"]?>.<?=$row["date_year"]?>
<?
if ($editentry && $id == $row["ID"]) {
print "<select name="rechour" size="1">";
for ($h = 0; $h<24; $h++) {
print "<option value="$h"".($row["start_hour"] == $h?"selected=" selected"":"").">".($h<10?"0$h":$h)."</option>\n";
}
print "</select> : <select name="recminute" size="1">";
for ($m = 0; $m<60; $m+=5) {
print "<option value="$m"".($row["start_minute"] == $m?" selected="selected"":"").">".($m<10?"0$m":$m)."</option>\n";
}
print "</select>\n";
} else {
print $row["start_hour"].":";
print ($row["start_minute"] > 9) ? $row["start_minute"] : "0".$row["start_minute"];
}
print "</td>\n";
$lh=$row["length_hour"];
$lm=$row["length_minute"];
if ($lm > 59) {
$lh++;
$lm=$lm - 60;
}
if ($editentry && $id == $row["ID"]) {
print "<td class="name" align="center"><select name="reclhour" size="1">\n";
for ($h = 0; $h<24; $h++) {
print "<option value="$h"".($lh == $h?" selected="selected"":"").">".($h<10?"0$h":$h)."</option>\n";
}
print "</select> : <select name="reclminute" size="1">\n";
for ($m = 0; $m<60; $m+=5) {
print "<option value="$m"".($lm == $m?" selected="selected"":"").">".($m<10?"0$m":$m)."</option>\n";
}
print "</select></td>\n";
} else {
print "<td class="name" align="center">".$lh.":".($lm>9?$lm:"0".$lm)."</td>\n";
}
switch ($row["source"]) {
case "10":
$source = SRC_DVBT;
break;
default:
$source = HIST_UNKNOWN_SOURCE."(".$row["source"].")";
}
print "<td class="name" align="center">".$source."</td>\n";
print "<td class="name" align="center">\n";
if ($editentry && $id == $row["ID"]) {
print "<select name="recchan" size="1">";
for ($i=0; $i < count($chlist); $i++) {
$ch = $chlist[$row["channel"]-1][1];
print("<option value="".$chlist[$i][0].""".($ch == $chlist[$i][1]?" selected="selected"":"").">".$chlist[$i][0]." ".$chlist[$i][1]."</option>\n");
}
print "</select>\n";
} else {
print $chlist[$row["channel"]-1][1];
}
?></td>
<?
switch ($row["date"]) {
case 0:
$frequency = REC_ONCE;
break;
case 1:
$frequency = REC_EVERYDAY;
break;
case 2:
$frequency = REC_MON_FRI;
break;
case 3:
$frequency = REC_MON_SAT;
break;
case 7:
$frequency = REC_WEEK;
break;
}
?>
<td class="name" align="center"><?
if ($editentry && $id == $row["ID"]) {
?> <select name="recfre" size="1">
<option value="0"
<?=($row["date"] == 0 ? " selected="selected"" : "")?>><?=REC_ONCE?></option>
<option value="1"
<?=($row["date"] == 1 ? " selected="selected"" : "")?>><?=REC_EVERYDAY?></option>
<option value="2"
<?=($row["date"] == 2 ? " selected="selected"" : "")?>><?=REC_MON_FRI?></option>
<option value="3"
<?=($row["date"] == 3 ? " selected="selected"" : "")?>><?=REC_MON_SAT?></option>
<option value="7"
<?=($row["date"] == 7 ? " selected="selected"" : "")?>><?=REC_WEEK?></option>
</select> <?
} else {
print $frequency;
}
print "</td>\n";
switch ($row["quality"]) {
case "1":
$quality = QUALITY_HIGH;
break;
default:
$source = QUALITY_UNKNOW."(".$row["quality"].")";
}
print "<td class="name" align="center">".$quality."</td>\n";
switch ($row["target"]) {
case "0":
$destination = DST_HDD;
break;
case "1":
$destination = DST_USB;
break;
case "7":
$destination = DST_PLS;
break;
default:
$destination = DST_UNKNOWN."(".$row["target"].")";
}
print "<td class="name" align="center">";
if ($editentry && $id == $row["ID"]) {
?> <select name="recdest" size="1">
<option value="0"
<?=($row["target"] == 0?" selected="selected"":"")?>><?=DST_HDD?></option>
<option value="1"
<?=($row["target"] == 1?" selected="selected"":"")?>><?=DST_USB?></option>
<option value="7"
<?=($row["target"] == 7?" selected="selected"":"")?>><?=DST_PLS?></option>
</select> <?
} else {
print $destination;
}
print "</td>\n";
switch ($row["lock"]) {
case "0":
$lock = LOCK_UNLOCKED;
break;
case "1":
$lock = LOCK_LOCKED;
break;
default:
$lock = LOCK_UNKNOWN."(".$row["lock"].")";
}
print "<td class="name" align="center">".$lock."</td>\n";
print "<td class="name" align="center">\n";
if ($editentry == false) {
?>
<form action="" method="post"><input type="submit" name="recentryedit"
value="<?=REC_BUTEDIT?>" /> <input type="hidden" name="id"
value="<?=$row["ID"]?>" /> <input type="hidden" name="lock"
value="<?=$row["lock"]?>" /></form>
<?
} else {
if ($row["ID"] == $id) {
?> <input type="submit" name="recaction" value="<?=REC_SAVE?>" /> <input
type="submit" name="recaction" value="<?=REC_DELETE?>" /> <input
type="submit" name="recaction" value="<?=REC_CANCEL?>" /> <input
type="hidden" name="id" value="<?=$row["ID"]?>" /> <input
type="hidden" name="day" value="<?=$row["date_day"]?>" /> <input
type="hidden" name="month" value="<?=$row["date_month"]?>" /> <input
type="hidden" name="year" value="<?=$row["date_year"]?>" /> <?
}
}
?></td>
</tr>
<?
}
?>
</table>
<?=($editentry == true)?"</form>":""?></div>
</div>
<div id="main_b"></div>
- Código:
<?
// Defines language definition
define("LG_MENU_TITLE", "Control panel for LG MS400H/MS450H");
define("MAIN_WTORRENT", "wTorrent");
define("MAIN_CHEDITOR", "Channels");
define("MAIN_BACKUP", "Backup/Restore");
define("MAIN_RECED", "Scheduling");
define("MAIN_RECORDS", "Records");
define("MAIN_HISTORY", "History");
define("MAIN_SETTINGS", "Settings");
define("MAIN_SERVICES", "Services");
define("MAIN_RESTART", "Restart");
define("MAIN_UPTIME", "Uptime: ");
define("MAIN_LOADAVERAGE", "load: ");
define("MAIN_LANGUAGE", "Language:");
define("MAIN_LOGOUT", "Logout");
define("MAIN_AUTHFAILED", "Authetication failed");
define("MAIN_USERLOGIN", "User login");
define("MAIN_USERNAME", "User name:");
define("MAIN_PASSWORD", "Password:");
define("MAIN_SENDLOGIN", "Login");
// Editor kanalu
define("CHED_CHEDITOR", "Channel editor");
define("CHED_ORDER", "Order");
define("CHED_TYPE", "Type");
define("CHED_NAME", "Name");
define("CHED_A_EDIT", "Edit");
define("CHED_A_SAVE", "Save");
define("CHED_A_CANCEL", "Cancel");
define("CHED_FILENOTEXISTS", "The channel file not exists or is empty.");
define("CHED_BADCHANNEL", "Bad channel number.");
// ZálohovánÃ
define("BCK_BACKUP", "Backup and restore");
define("BCK_BCKLIST", "List of backup files");
define("BCK_DATE", "Date and time of backup");
define("BCK_SIZE", "Size");
define("BCK_NAME", "Name");
define("BCK_CONTROL", "");
define("BCK_OP_DELETE", "Delete");
define("BCK_OP_RESTORE", "Restore");
define("BCK_OP_CREATE", "Create backup");
define("BCK_DONE", "Backup succesfully created into file<br/>\$BKPDIR/\$BACKUPNAME_PRE\$ver.tar");
define("BCK_RESTDONE", "File <br/>\$bfile<br/>succesfully restored.");
// Prohlizeni historie
define("HIST_HISTORY", "History viewer");
define("HIST_ID", "ID");
define("HIST_DATE", "Date");
define("HIST_LEN", "Length");
define("HIST_SOURCE", "Source");
define("HIST_FILE", "File");
define("HIST_CHANNEL", "Channel");
define("HIST_QUALITY", "Quality");
define("HIST_DESTINATION", "Destination");
define("HIST_TIMESTAMP", "Timestamp");
define("HIST_OFFSET", "Offset");
define("HIST_RESULT", "Result");
define("HIST_LOCK", "Lock");
define("HIST_TYPE", "Type");
define("HIST_UNKNOWN_SOURCE", "Unknown");
define("HIST_NOTEXISTS", "Deleted");
// Editor záznamů
define("REC_RECORDED", "List and edit scheduled recordings");
define("REC_RECLIST", "List of scheduled recordings");
define("REC_ENDSHIFT", "Change the end of scheduling if added from EPG");
define("REC_ENDSHIFTMSG", "Minutes, which will be added to end of recording:");
define("REC_MIN", "min.");
define("REC_SHIFTPERFORM", "Perform");
define("REC_SHIFTDEACT", "Deaktivate");
define("REC_ADDENTRY", "Add entry");
define("REC_HOURMINUTE", "Begin");
define("REC_DATE", "Date");
define("REC_LEN", "Length");
define("REC_CHANNEL", "Channel");
define("REC_DESTINATION", "Destination");
define("REC_SELDATE", "Select date");
define("REC_ADD", "Add");
define("REC_EMPTYDATE", "Empty date.");
define("REC_SHORTLEN", "Length of recording is too small. Please enter at least 10 min.");
define("REC_INSERROR", "Error while adding scheduled entry into database.");
define("REC_DELETEERROR", "Error while deleting entry.");
define("REC_UPDATEERRROR", "Error while changing entry.");
define("REC_ENTRYLOCKED", "Entry is locked. Probably is recorded now.");
define("REC_BADDATE", "Entry date canot be in past.");
define("REC_ADDNOTICE", "Warning: After adding entry, there will be no added additional minutes.");
define("REC_BUTEDIT", "Edit");
define("REC_CANCEL", "Cancel");
define("REC_DELETE", "Delete");
define("REC_SAVE", "Save");
define("REC_FREQUENCY", "Repeating");
define("REC_ONCE", "Once");
define("REC_EVERYDAY", "Everyday");
define("REC_MON_SAT", "Mon-Sat");
define("REC_MON_FRI", "Mon-Fri");
define("REC_WEEK", "Weekly");
// List of saved schedulings in REC direcotry
define("RCD_RECORDNINGS", "List of files in recording directory");
define("RCD_NOTAVAILABLE", "N/A");
define("RCD_SAVEDATE", "Save date");
define("RCD_FILESIZE", "File size");
define("RCD_FILENAME", "File name");
define("RCD_RENAME", "Rename");
// Editor nastavenÃ
define("SET_SETTINGS", "Settings");
define("SET_ENABLED", "Enabled");
define("SET_DISABLED", "Disabled");
define("SET_ANTENAPOWER", "Antena power:");
define("SET_RECQUALITY", "Record quality:");
define("SET_AUTOCHAPTER", "Automatic chapters:");
define("SET_BRIGHTNESS", "Brightness:");
define("SET_CONTRAST", "Constrast:");
define("SETUP_DOLBY_PROLOGIC_ENABLE", "Enable Dolby ProLogic:");
define("SET_NETWORK", "Settings of wired connection");
define("SET_WLAN", "Settings of wireless connection");
define("SETUP_USE_DHCP", "Use DHCP:");
define("SETUP_NET_ETH0_IPADDR", "IP adress:");
define("SETUP_NET_ETH0_MASK", "Network mask:");
define("SETUP_NET_ETH0_GATEWAY", "Gateway:");
define("SETUP_NET_ETH0_DNS", "DNS:");
// Restart
define("RST_RESTART", "Perform reset");
define("RST_WARN", "Are you sure to perform reset of device?");
define("RST_WARN2", "Please do not perform restart if recording is actie. It will be interrupted!");
define("RST_WARN3", "Are you really suer to restart device?");
define("RST_PERFORMING", "Reset is performaed...");
define("RST_MESSAGE", "About 40 seconds will be the device started and ready.");
define("RST_RSTBUTTON", "Perform restart");
define("RST_RSTBUTTON2", "Yeas, I'm suer. I really wants to restart device...");
define("SRC_DVBT", "DVB-T");
define("DST_HDD", "HDD");
define("DST_USB", "USB");
define("DST_PLS", "HDD+");
define("DST_UNKNOWN", "Unknown");
define("QUALITY_HIGH", "High");
define("QUALITY_UNKNOWN", "Unknown");
define("RECEND_OK", "OK");
define("RECEND_STOPPED", "Stopped by hand");
define("RECEND_SCHEDULED", "Scheduled stop");
define("RECEND_UNKNOWN", "Unknown");
define("LOCK_UNLOCKED", "Unlocked");
define("LOCK_LOCKED", "Locked");
define("LOCK_UNKNOWN", "Unknown");
define("CAL_MONTHS", "'Januray','February','March','April','May','June','July','August','September','October','November','December'");
define("CAL_DAYS", "'Su','Mo','Tu','We','Th','Fr','Sa'");
define("CAL_TODAY", "'today'");
// Remote controll
define("MAIN_REMOTECONTROLL", "Virtual RC");
// Services
define("SVC_SERVICES", "Services");
define("SVC_ACT_STOP", "Stop");
define("SVC_ACT_START", "Start");
define("SVC_ACT_ENABLE", "Enable");
define("SVC_ACT_DISABLE", "Disable");
define("SVC_DESCRIPTION", "Description");
define("SVC_CONTROL", "Control");
define("SVC_STATE", "Service status");
define("SVC_STATE_STARTED", "Started");
define("SVC_STATE_STOPPED", "Stopped");
define("SVC_STATE_ENABLED", "Enabled");
define("SVC_STATE_DISABLED", "Disabled");
define("SVC_STATE_UNKNOWN", "Unknown");
// Remote control
define("RC_NUMBERS", "Numbers");
define("RC_POWEROFF", "Power off");
define("RC_SETTINGS", "Show/hide settings buttons");
define("RC_UP", "Up");
define("RC_HOME", "Home");
define("RC_LEFT", "Left");
define("RC_OK", "Ok");
define("RC_RIGHT", "Right");
define("RC_RETURN", "Return");
define("RC_DOWN", "Down");
define("RC_USB", "USB");
define("RC_PLAY", "Play");
define("RC_PAUSE", "Pause");
define("RC_STOP", "Stop");
define("RC_PLAYSLOW", "Play slow");
define("RC_PREV", "Prev");
define("RC_REWIND", "Rewind");
define("RC_FORWARD", "Forward");
define("RC_NEXT", "Next");
define("RC_VOLUP", "Vol +");
define("RC_MUTE", "Mute");
define("RC_VOLDOWN", "Vol -");
define("RC_SUBTITLES", "Subtitles");
define("RC_SEARCHCHAPTER", "Search chapters");
define("RC_PREVCHAPTER", "Prev chapter");
define("RC_NEXTCHAPTER", "Next chapter");
define("RC_REPEATTITLE", "Repeat title");
define("RC_ZOOMIN", "Zoom +");
define("RC_ZOOMOUT", "Zoom -");
define("RC_REPEATAB", "Repeat A-B");
define("RC_B_SETUP", "Setup");
define("RC_B_MENU", "Menu");
define("RC_B_FILECOPY", "File copy");
define("RC_B_VIDEOSYS", "Video sys");
define("RC_B_AUDIOSYS", "Audio sys");
define("RC_B_YSTMODE", "YST mode");
?>
It looks like that web scheduling uses counter for setting records rather than program number. In AU there are programs spread from 1 to 99. Total number of program is around 40. As a result either devise does not understand when say channel 22 is set to be recorded (there is no program 22, example) or web interfase shows error when program 99 was selected for recording on devise - total count is only 40, so 99 cannot be displayed.
I would kindly appreciate your help.
Thank you.
Kind regards,
TY
Co0olCat- Mensajes : 17
Fecha de inscripción : 31/01/2010
Re: TUTORIAL: New firmware CUSTOM 3 (Custom3_0148VK Sept-2010)
I have found if you use NTFS formated USB, the installation cannot start. So for all of you PLEASE USE FAT32 FORMATED USB DISK. But there are some other problems we need to discover.Co0olCat escribió:Hi,
I got AU version of the devise. Got installed external HDD (1Tb).
Updated to resent unofficial version (v3). Great job. Keep going.
Have noticed several things. Some was able to resolve, with some need help.
Installation: First part was without any problems. Second part with custom routines did not work. Had to copy files to devise and run manually installation script. After that got web interface, ftp and samba. Great job.
I don't know the "2009 version firmware". Do you mean using Samba on other Linux machine (connect LG PVR to other PC) or connect PC to LG PVR?Co0olCat escribió:
Some problems: when watching files through samba some files are taking time to seek. With 2009 version of firmware this was not the case. Would appreciate solution.
Thank you for files. I have added your changes, but I can't test it (I don't have the second HDD). For next file sending please use (better) PM or upload as attachment to SourceForge page (best). The files you pasted here are hard to check for differences so the attachment is the best solution. You can file the enhancement ticket with file attachment as anonymous.Co0olCat escribió:On Scheduling page Destination had only two options: HDD and USB. Had to modify two files to add External HDD (HDD+): act_Schedule.inc and lang_eng.inc. Edited files are attached.
I must admit I don't understand this. In scheduling page you chose the name of channel as get from channel description file. If you have a screen-shot please post it.Co0olCat escribió:It looks like that web scheduling uses counter for setting records rather than program number. In AU there are programs spread from 1 to 99. Total number of program is around 40. As a result either devise does not understand when say channel 22 is set to be recorded (there is no program 22, example) or web interfase shows error when program 99 was selected for recording on devise - total count is only 40, so 99 cannot be displayed.
Many thanks for comments.
Re: TUTORIAL: New firmware CUSTOM 3 (Custom3_0148VK Sept-2010)
Thank you for help.
I have used FAT formatting. The first part of installation was without any problem. As for the second part, I have found in the ...\installation directory corrupted archive. It looks like that devise tried to copy the file, but it was not successful. After I have copied it manually and unpacked I was able to run installation script.
Here are some errors from the schedule which was created through the devise:
Notice: Undefined offset: 71 in /tmp/hdd/root/custom/var/www/lgmenu/act_Schedule.inc on line 386
Notice: Undefined offset: 98 in /tmp/hdd/root/custom/var/www/lgmenu/act_Schedule.inc on line 386
Looks to be the case that LG uses program number.
As for firmware and problem with seeking I was referring to firmware MS400_091211_0118 and samba running on LG.
I am accessing records through local network to play on Windows XP 32, Zoomplayer.
thank you.
Kind regards,
TY
I have used FAT formatting. The first part of installation was without any problem. As for the second part, I have found in the ...\installation directory corrupted archive. It looks like that devise tried to copy the file, but it was not successful. After I have copied it manually and unpacked I was able to run installation script.
Here are some errors from the schedule which was created through the devise:
Notice: Undefined offset: 71 in /tmp/hdd/root/custom/var/www/lgmenu/act_Schedule.inc on line 386
Notice: Undefined offset: 98 in /tmp/hdd/root/custom/var/www/lgmenu/act_Schedule.inc on line 386
Looks to be the case that LG uses program number.
As for firmware and problem with seeking I was referring to firmware MS400_091211_0118 and samba running on LG.
I am accessing records through local network to play on Windows XP 32, Zoomplayer.
thank you.
Kind regards,
TY
Co0olCat- Mensajes : 17
Fecha de inscripción : 31/01/2010
Re: TUTORIAL: New firmware CUSTOM 3 (Custom3_0148VK Sept-2010)
Co0olCat escribió:
Some problems: when watching files through samba some files are taking time to seek. With 2009 version of firmware this was not the case. Would appreciate solution.
I went through my old smb configuration. In new configuration there are couple of new settings. After I have replaced (with slight changes) new config with this one (see below) I got my seek functionality back.
smb.conf
- Código:
#======================= Global Settings =====================================
[global]
workgroup = Basegroup
netbios name = LGMS408
server string = LGMS408
security = share
encrypt passwords = true
null paswords=yes
guest account=root
directory mask=0755
create mask=0644
interfaces = eth0 wlan0
socket options = IPTOS_LOWDELAY TCP_NODELAY SO_KEEPALIVE
smb passwd file = /tmp/hdd/root/custom/etc/smbpasswd
private dir = /tmp/hdd/root/custom/etc
# Disable everything that concerns printers
printcap name = /dev/null
load printers = no
printcap cache time = 0
disable spoolss = yes
show add printer wizard = no
#============================ Share Definitions ==============================
[hdd]
path = /tmp/hdd/volumes/HDD1
comment = File storage
public = yes
writable = yes
browsable = yes
printable = no
[ExHDD]
path=/mnt/usbmounts/sdb1
comment=External HDD
public = yes
writable = yes
browsable = yes
printable = no
Thank you.
Kind regards,
TY
Co0olCat- Mensajes : 17
Fecha de inscripción : 31/01/2010
PipeManagement service 3.1
Hello,
just a short notice,
there is a new service available for PipeManagement. (v3.1)
Just enter 999 like a channel number and wait a couple of minutes.
Regards
just a short notice,
there is a new service available for PipeManagement. (v3.1)
Just enter 999 like a channel number and wait a couple of minutes.
Regards
vic1972- Mensajes : 2260
Fecha de inscripción : 09/12/2009
Edad : 52
Localización : Malaga
bug with GOTO after firmware
Hi, after installing the firmware, the GOTO stroke doesn't work well :
- as I try to type some numbers in the hour field, the cursor immediately wants to go to minutes
- when I validate the numbers, the video begins to run at a high speed (5-6 triangles) and I have to stop it to get it at normal speed again
cbadoud- Mensajes : 1
Fecha de inscripción : 12/07/2010
Re: TUTORIAL: New firmware CUSTOM 3 (Custom3_0148VK Sept-2010)
Hi,
this firmware is already deprecated.
Please use new firmware: MS Harmony Pack.
regards.
this firmware is already deprecated.
Please use new firmware: MS Harmony Pack.
regards.
vic1972- Mensajes : 2260
Fecha de inscripción : 09/12/2009
Edad : 52
Localización : Malaga
Temas similares
» NEW custom firmware: CUSTOM1
» New custom firmware: 100417A_Vic2 (25-Jun-2010)
» Release firmware custom: 100417A_Vic2.1 (Julio-2010)
» HACE COSAS RARAS
» TUTORIAL: update firmware via USB
» New custom firmware: 100417A_Vic2 (25-Jun-2010)
» Release firmware custom: 100417A_Vic2.1 (Julio-2010)
» HACE COSAS RARAS
» TUTORIAL: update firmware via USB
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.