vu+DUO2: Neue Fernbedienung kaufen, welche?

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Danke hgdo, Du hast verstanden, was ich gesucht habe!

      hgdo schrieb:

      Weil klar ist, dass nur der Austausch des Bildes nicht ausreicht.
      Man muss dann auch die Datei /usr/lib/enigma2/python/Plugins/Extensions/OpenWebif/controllers/models/owibranding.py anpassen.
      Bei meiner aktuellen OpenWebif-Version muss Zeile 649 geändert werden in:

      Quellcode

      1. Quellcode: owibranding.py
      2. elif procmodel == "vuduo2":
      3. remote = "vu_normal_02"
      Die Fernbedienung Typ VI ist jetzt eingetroffen, ich habe das Bild geändert. Jetzt will ich die owibranding.py anpassen, meine Datei hat aber nur 212 Zeilen (siehe Anhang als TXT).
      Da ich kein PYTHON kann, habe ich erst mal nichts geändert. Kannst Du mir helfen?
      Danke!!
      Dateien
      • owibranding.txt

        (6,07 kB, 2 mal heruntergeladen, zuletzt: )

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von MichaelVU ()

    • Leider ist deine Textdatei ohne Zeilennummer. Besser wäre ein Code-Block.

      Ändere

      Quellcode

      1. if procmodel in ("solo", "duo", "uno", "solo2", "solose", "zero", "solo4k", "uno4k", "ultimo4k"):
      2. remote = "vu_normal"
      3. elif procmodel == "duo2":
      4. remote = "vu_duo2"
      5. elif procmodel == "ultimo":
      6. remote = "vu_ultimo"
      7. elif procmodel in ("uno4kse", "zero4k", "duo4k", "duo4kse"):
      8. remote = "vu_normal_02"
      in

      Quellcode

      1. if procmodel in ("solo", "duo", "uno", "solo2", "solose", "zero", "solo4k", "uno4k", "ultimo4k"):
      2. remote = "vu_normal"
      3. elif procmodel == "duo2":
      4. remote = "vu_normal_02"
      5. elif procmodel == "ultimo":
      6. remote = "vu_ultimo"
      7. elif procmodel in ("uno4kse", "zero4k", "duo4k", "duo4kse"):
      8. remote = "vu_normal_02"
    • Vielen Dank, habe es so versucht, irgend etwas habe ich falsch gemacht: Die Belegung ist falsch.

      Die Bilder: die große Datei ist die neue Typ VI:

      Quellcode

      1. ftp> ls public/images/remotes/*
      2. 200 PORT command successful. Consider using PASV.
      3. 150 Here comes the directory listing.
      4. -rw-r--r-- 1 1000 1000 13689 Feb 08 2021 ow_remote.png
      5. -rw-r--r-- 1 1000 1000 86467 Dec 22 19:14 vu_duo2.png
      6. -rw-r--r-- 1 1000 1000 9584 Feb 08 2021 vu_normal.png
      7. -rw-r--r-- 1 1000 1000 86467 Feb 08 2021 vu_normal_02.png
      8. -rw-r--r-- 1 1000 1000 15354 Feb 08 2021 vu_ultimo.png
      9. 226 Directory send OK.

      Meine owibranding.py:

      Python-Quellcode

      1. # -*- coding: utf-8 -*-
      2. ##############################################################################
      3. # 2014 E2OpenPlugins #
      4. # #
      5. # This file is open source software; you can redistribute it and/or modify #
      6. # it under the terms of the GNU General Public License version 2 as #
      7. # published by the Free Software Foundation. #
      8. # #
      9. ##############################################################################
      10. # Simulate the oe-a boxbranding module (Only functions required by OWIF) #
      11. ##############################################################################
      12. from Plugins.Extensions.OpenWebif.__init__ import _
      13. from Components.About import about
      14. from socket import has_ipv6
      15. from Tools.Directories import fileExists, pathExists
      16. from Tools.HardwareInfo import HardwareInfo
      17. import string
      18. import os, hashlib
      19. try:
      20. from Components.About import about
      21. except ImportError:
      22. pass
      23. tpmloaded = 1
      24. try:
      25. from enigma import eTPM
      26. if not hasattr(eTPM, 'getData'):
      27. tpmloaded = 0
      28. except:
      29. tpmloaded = 0
      30. def validate_certificate(cert, key):
      31. buf = decrypt_block(cert[8:], key)
      32. if buf is None:
      33. return None
      34. return buf[36:107] + cert[139:196]
      35. def get_random():
      36. try:
      37. xor = lambda a,b: ''.join(chr(ord(c)^ord(d)) for c,d in zip(a,b*100))
      38. random = urandom(8)
      39. x = str(time())[-8:]
      40. result = xor(random, x)
      41. return result
      42. except:
      43. return None
      44. def bin2long(s):
      45. return reduce( lambda x,y:(x<<8L)+y, map(ord, s))
      46. def long2bin(l):
      47. res = ""
      48. for byte in range(128):
      49. res += chr((l >> (1024 - (byte + 1) * 8)) & 0xff)
      50. return res
      51. def rsa_pub1024(src, mod):
      52. return long2bin(pow(bin2long(src), 65537, bin2long(mod)))
      53. def decrypt_block(src, mod):
      54. if len(src) != 128 and len(src) != 202:
      55. return None
      56. dest = rsa_pub1024(src[:128], mod)
      57. hash = hashlib.sha1(dest[1:107])
      58. if len(src) == 202:
      59. hash.update(src[131:192])
      60. result = hash.digest()
      61. if result == dest[107:127]:
      62. return dest
      63. return None
      64. def tpm_check():
      65. try:
      66. tpm = eTPM()
      67. rootkey = ['\x9f', '|', '\xe4', 'G', '\xc9', '\xb4', '\xf4', '#', '&', '\xce', '\xb3', '\xfe', '\xda', '\xc9', 'U', '`', '\xd8', '\x8c', 's', 'o', '\x90', '\x9b', '\\', 'b', '\xc0', '\x89', '\xd1', '\x8c', '\x9e', 'J', 'T', '\xc5', 'X', '\xa1', '\xb8', '\x13', '5', 'E', '\x02', '\xc9', '\xb2', '\xe6', 't', '\x89', '\xde', '\xcd', '\x9d', '\x11', '\xdd', '\xc7', '\xf4', '\xe4', '\xe4', '\xbc', '\xdb', '\x9c', '\xea', '}', '\xad', '\xda', 't', 'r', '\x9b', '\xdc', '\xbc', '\x18', '3', '\xe7', '\xaf', '|', '\xae', '\x0c', '\xe3', '\xb5', '\x84', '\x8d', '\r', '\x8d', '\x9d', '2', '\xd0', '\xce', '\xd5', 'q', '\t', '\x84', 'c', '\xa8', ')', '\x99', '\xdc', '<', '"', 'x', '\xe8', '\x87', '\x8f', '\x02', ';', 'S', 'm', '\xd5', '\xf0', '\xa3', '_', '\xb7', 'T', '\t', '\xde', '\xa7', '\xf1', '\xc9', '\xae', '\x8a', '\xd7', '\xd2', '\xcf', '\xb2', '.', '\x13', '\xfb', '\xac', 'j', '\xdf', '\xb1', '\x1d', ':', '?']
      68. random = None
      69. result = None
      70. l2r = False
      71. l2k = None
      72. l3k = None
      73. l2c = tpm.getData(eTPM.DT_LEVEL2_CERT)
      74. if l2c is None:
      75. return 0
      76. l2k = validate_certificate(l2c, rootkey)
      77. if l2k is None:
      78. return 0
      79. l3c = tpm.getData(eTPM.DT_LEVEL3_CERT)
      80. if l3c is None:
      81. return 0
      82. l3k = validate_certificate(l3c, l2k)
      83. if l3k is None:
      84. return 0
      85. random = get_random()
      86. if random is None:
      87. return 0
      88. value = tpm.computeSignature(random)
      89. result = decrypt_block(value, l3k)
      90. if result is None:
      91. return 0
      92. if result [80:88] != random:
      93. return 0
      94. return 1
      95. except:
      96. return 0
      97. def getAllInfo():
      98. info = {}
      99. info['brand'] = "Vu+"
      100. f = open("/proc/stb/info/vumodel",'r')
      101. procmodel = f.readline().strip()
      102. f.close()
      103. orgdream = 0
      104. info['model'] = HardwareInfo().get_friendly_name()
      105. info['procmodel'] = procmodel
      106. info['type'] = procmodel
      107. info['transcodingmodel'] = False
      108. if procmodel in ("duo2", "solo2", "solose", "solo4k", "ultimo4k", "uno4k", "uno4kse", "duo4k", "duo4kse"):
      109. info['transcodingmodel'] = procmodel
      110. remote = "vu_normal"
      111. ########## Änderung für Fernbedienung Typ VI
      112. ############### Original Typ IV:
      113. # if procmodel in ("solo", "duo", "uno", "solo2", "solose", "zero", "solo4k", "uno4k", "ultimo4k"):
      114. # remote = "vu_normal"
      115. # elif procmodel == "duo2":
      116. # remote = "vu_duo2"
      117. # elif procmodel == "ultimo":
      118. # remote = "vu_ultimo"
      119. # elif procmodel in ("uno4kse", "zero4k", "duo4k", "duo4kse"):
      120. # remote = "vu_normal_02"
      121. ############### GEÄNDERT Typ VI, Quelle: https://www.vuplus-support.org/wbb4/index.php?thread/145754-vu-duo2-neue-fernbedienung-kaufen-welche/&postID=2139448#post2139448
      122. if procmodel in ("solo", "duo", "uno", "solo2", "solose", "zero", "solo4k", "uno4k", "ultimo4k"):
      123. remote = "vu_normal"
      124. elif procmodel == "duo2":
      125. remote = "vu_normal_02"
      126. elif procmodel == "ultimo":
      127. remote = "vu_ultimo"
      128. elif procmodel in ("uno4kse", "zero4k", "duo4k", "duo4kse"):
      129. remote = "vu_normal_02"
      130. #######################
      131. info['remote'] = remote
      132. distro = "VTi"
      133. imagever = ""
      134. imagever += about.getVTiVersionString()
      135. oever = "openvuplus 3.0"
      136. imagebuild = ""
      137. # reporting the installed dvb-module version is as close as we get without too much hassle
      138. driverdate = 'unknown'
      139. try:
      140. driverdate = os.popen('/usr/bin/opkg -V0 list_installed *dvb-modules*').readline().split( )[2] # nosec
      141. except:
      142. try:
      143. driverdate = os.popen('/usr/bin/opkg -V0 list_installed *dvb-proxy*').readline().split( )[2] # nosec
      144. except:
      145. try:
      146. driverdate = os.popen('/usr/bin/opkg -V0 list_installed *kernel-core-default-gos*').readline().split( )[2] # nosec
      147. except: # nosec
      148. pass
      149. info['oever'] = oever
      150. info['distro'] = distro
      151. info['imagever'] = imagever
      152. info['imagebuild'] = imagebuild
      153. info['driverdate'] = driverdate
      154. return info
      155. STATIC_INFO_DIC = getAllInfo()
      156. def getMachineBuild():
      157. return STATIC_INFO_DIC['procmodel']
      158. def getMachineBrand():
      159. return STATIC_INFO_DIC['brand']
      160. def getMachineName():
      161. return STATIC_INFO_DIC['model']
      162. def getMachineProcModel():
      163. return STATIC_INFO_DIC['procmodel']
      164. def getBoxType():
      165. return STATIC_INFO_DIC['type']
      166. def getOEVersion():
      167. return STATIC_INFO_DIC['oever']
      168. def getDriverDate():
      169. return STATIC_INFO_DIC['driverdate']
      170. def getImageVersion():
      171. return STATIC_INFO_DIC['imagever']
      172. def getImageBuild():
      173. return STATIC_INFO_DIC['imagebuild']
      174. def getImageDistro():
      175. return STATIC_INFO_DIC['distro']
      176. def getTranscodingModel():
      177. return STATIC_INFO_DIC['transcodingmodel']
      178. class rc_model:
      179. def getRcFolder(self):
      180. return STATIC_INFO_DIC['remote']
      Alles anzeigen
    • habe jetzt nach 8 Jahren auch mit der FB Probleme gehabt. Einen Neukauf kann man sich sparen wenn die Tasten nicht mehr richtig reagieren.

      FB aufmachen und auf der Platine die einzelnen Tastenkontakte mit Graphit einreiben.

      Dazu habe ich die Platine mit etwas unterlegt dass sie wieder weiter in die Höhe zu den Tasten gedrückt wird.

      Funktioniert wieder einwandfrei
      seit Juli 2013 auf der Linux-Seite angekommen
      Gruß Edi :318:

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von edieagle ()

    • Das hatte ich damals auch gemacht, aber
      1. Ist es gar nicht so einfach, die FB zu öffnen, ohne Spuren zu hinterlassen.
      2. Hat es nicht lange gehalten.
      An alle Neulinge und auch einige alte Hasen: Bitte denkt an eine Sicherung.
      BackupSuite und Image-Backup sind kein Hexenwerk, und ruckzuck erledigt!
    • Ich würde mich freuen, wenn jemand zu meinem Problem Stellung nehmen könnte; ich habe jetzt die neue Fernbedienung und deren Bild im OpenWebIF. Aber die Zuordnung der Tasten ist beim Klicken um Browser falsch. Wie ist der Zusammenhang zwischen
      /usr/lib/enigma2/python/Plugins/Extensions/OpenWebif/public/static/remotes/vu_normal_02.png
      und
      /usr/lib/enigma2/python/Plugins/Extensions/OpenWebif/public/static/remotes/vu_normal_02.html
      Die HTML-Datei hat hier folgenden Inhalt:

      Quellcode

      1. <img border='0' src='/images/remotes/vu_normal_02.png' width='142' height='488' usemap='#map' >
      2. <map name="map">
      3. <area shape="rect" coords="95,17,118,30" id ="116" alt="Power" onclick="pressMenuRemote('116');">
      4. <area shape="rect" coords="21,40,41,50" id ="388" alt="text" onclick="pressMenuRemote('388');">
      5. <area shape="rect" coords="47,40,67,50" id ="370" alt="subtitle" onclick="pressMenuRemote('370');">
      6. <area shape="rect" coords="21,60,50,70" id ="2" alt="1" onclick="pressMenuRemote('2');">
      7. <area shape="rect" coords="56,60,85,70" id ="3" alt="2" onclick="pressMenuRemote('3');">
      8. <area shape="rect" coords="91,60,120,70" id ="4" alt="3" onclick="pressMenuRemote('4');">
      9. <area shape="rect" coords="21,80,50,90" id ="5" alt="4" onclick="pressMenuRemote('5');">
      10. <area shape="rect" coords="56,80,85,90" id ="6" alt="5" onclick="pressMenuRemote('6');">
      11. <area shape="rect" coords="91,80,120,90" id ="7" alt="6" onclick="pressMenuRemote('7');">
      12. <area shape="rect" coords="21,101,50,111" id ="8" alt="7" onclick="pressMenuRemote('8');">
      13. <area shape="rect" coords="56,101,85,111" id ="9" alt="8" onclick="pressMenuRemote('9');">
      14. <area shape="rect" coords="91,101,120,111" id ="10" alt="9" onclick="pressMenuRemote('10');">
      15. <area shape="rect" coords="21,121,50,131" id ="412" alt="previous" onclick="pressMenuRemote('412');">
      16. <area shape="rect" coords="56,121,85,131" id ="11" alt="0" onclick="pressMenuRemote('11');">
      17. <area shape="rect" coords="91,121,120,131" id ="407" alt="next" onclick="pressMenuRemote('407');">
      18. <area shape="rect" coords="21,144,41,153" id ="398" alt="red" onclick="pressMenuRemote('398');">
      19. <area shape="rect" coords="47,144,67,153" id ="399" alt="green" onclick="pressMenuRemote('399');">
      20. <area shape="rect" coords="74,144,94,153" id ="400" alt="yellow" onclick="pressMenuRemote('400');">
      21. <area shape="rect" coords="99,144,119,153" id ="401" alt="blue" onclick="pressMenuRemote('401');">
      22. <area shape="rect" coords="58,167,83,182" id ="103" alt="up" onclick="pressMenuRemote('103');">
      23. <area shape="rect" coords="58,221,83,236" id ="108" alt="down" onclick="pressMenuRemote('108');">
      24. <area shape="rect" coords="39,189,51,211" id ="105" alt="left" onclick="pressMenuRemote('105');">
      25. <area shape="rect" coords="89,189,101,211" id ="106" alt="right" onclick="pressMenuRemote('106');">
      26. <area shape="circle" coords="70,200,34" id ="352" alt="OK" onclick="pressMenuRemote('352');">
      27. <area shape="rect" coords="21,249,50,274" id ="115" alt="volume up" onclick="pressMenuRemote('115');">
      28. <area shape="rect" coords="21,275,50,300" id ="114" alt="volume down" onclick="pressMenuRemote('114');">
      29. <area shape="rect" coords="91,226,118,236" id ="174" alt="exit" onclick="pressMenuRemote('174');">
      30. <area shape="rect" coords="21,226,48,236" id ="358" alt="epg" onclick="pressMenuRemote('358');">
      31. <area shape="rect" coords="90,249,119,274" id ="402" alt="channelup" onclick="pressMenuRemote('402');">
      32. <area shape="rect" coords="90,275,119,300" id ="403" alt="channeldown" onclick="pressMenuRemote('403');">
      33. <area shape="rect" coords="91,165,118,236," id ="139" alt="menu" onclick="pressMenuRemote('139');">
      34. <area shape="rect" coords="21,165,48,236" id ="393" alt="videolist" onclick="pressMenuRemote('393');">
      35. <area shape="rect" coords="60,249,80,260" id ="392" alt="audio" onclick="pressMenuRemote('392');">
      36. <area shape="rect" coords="60,269,80,280" id="113" alt="mute" onclick="pressMenuRemote('113');">
      37. <area shape="rect" coords="60,290,80,301" id ="176" alt="timer edit" onclick="pressMenuRemote('176');">
      38. <area shape="rect" coords="100,40,120,50" id ="138" alt="help" onclick="pressMenuRemote('138');">
      39. <area shape="rect" coords="21,309,41,319" id ="168" alt="rewind" onclick="pressMenuRemote('168');">
      40. <area shape="rect" coords="47,309,67,319" id ="207" alt="play" onclick="pressMenuRemote('207');">
      41. <area shape="rect" coords="73,309,93,319" id ="119" alt="pause" onclick="pressMenuRemote('119');">
      42. <area shape="rect" coords="100,309,120,319" id ="208" alt="forward" onclick="pressMenuRemote('208');">
      43. <area shape="rect" coords="21,328,41,338" id ="377" alt="tv" onclick="pressMenuRemote('377');">
      44. <area shape="rect" coords="47,328,67,338" id ="167" alt="record" onclick="pressMenuRemote('167');">
      45. <area shape="rect" coords="73,328,93,338" id ="128" alt="stop" onclick="pressMenuRemote('128');">
      46. <area shape="rect" coords="100,328,120,338" id ="385" alt="radio" onclick="pressMenuRemote('385');">
      47. </map>
      Alles anzeigen
      Was fehlt oder was ist falsch?
    • Da war leider etwas mit den Pfaden durcheinander:
      Wie ist der Zusammenhang zwischen
      /usr/lib/enigma2/python/Plugins/Extensions/OpenWebif/public/images/remotes/vu_normal_02.png
      und
      /usr/lib/enigma2/python/Plugins/Extensions/OpenWebif/public/static/remotes/vu_normal_02.html
    • @MichaelVU

      Auch ohne es zu wissen, kann man den Zusammenhang doch eigentlich ablesen: Die Koordinaten ("coords") beschreiben die Lage eines Rechtecks ("rect") auf dem Bildschirm, der zu einer Taste gehört. Die Taste kannst du bei "alt" ablesen. Üblicherweise werden die obere linke und die untere rechte Ecke angegeben, der Nullpunkt (0, 0) ist oben links und nach unten bzw. rechts nehmen die Werte zu.
      Eventuelle Ratschläge gebe ich nach bestem Wissen und Gewissen aber ohne jede Gewähr. Bei Fragen fragen.
      Tipps:
      Screenshots erstellen VU+ Wiki

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Dibagger ()

    • MichaelVU schrieb:

      Vielen Dank, habe es so versucht, irgend etwas habe ich falsch gemacht: Die Belegung ist falsch.
      Ich habe es eben nochmal getestet und es funktioniert einwandfrei. Eine Änderung des Bildes ist völlig überflüssig. Man muss lediglich in owibranding.py der Box die aktuelle verwendete Fernbedienung zuordnen (siehe Beitrag #22). Das hab ich mit meiner Box mit mehreren FBs getestet.

      Mögliche Fehler
      Änderung mit einem nicht linuxkonformen Editor gemacht
      Box und OpenWebif nach der Änderung nicht neu gestartet.