Samsung Magican for DreamOS

    • Samsung Magican for DreamOS

      Nachdem immer mehr user SSDs und im spezielen Samsung SSDs in die Dreamboxen verbauen habe ich ein rudimentäres wie puristisches Plugin gebastelt um die Samsung S.M.A.R.T. Werte auszulesen und Temperatur, Betriebsstunden, Gesunheitszustand, geschriebene LBAs/TB etc. auszulesen und anzuzeigen.

      Aktuell werden nur Samsungs SATA (mSATA, M.2) SSDs unterstützt. Festplatten oder SSDs anderer Hersteller werden mit "not supported" geblockt.
      Hintergrund: Die Hersteller verwenden unterschiedliche S.M.A.R.T. IDs was es unmöglich macht alle abzufangen und auszuwerten weil sie nicht einheitlich sind.
      Vielleicht kommt in einer zukünftigen Version der eine oder andere Hersteller hinzu.

      Die Eckdaten der SSDs sind in einer textbasierenten datenbank hinterlegt um gewisse Werte zu errechnen. Aktuell ist die Datenbank mit Samsung SSDs der Serien 840, 750, 850, 860 und 870 befüllt. Wenn jemand eine Samsung SSD in Verwendung hat die mit "unknown" angezeigt wird bitte melden, dann kann ich die database aktualisieren.


      Die SSD muss als Standard Speicher Gerät in den Geräteeinstellungen definiert werden, damit man die Infos über die GUI abrufen kann. Sollte das aus irgendeinem Grund nicht möglich sein, gibt es auch ein command line interface (script) mit dem die Infos über den Gerätenamen auslesen kann. Das Script kann vermutlich in jede Linux Distribution mit bash und entprechenden coreutils eingebaut werden (debian, ubuntu, mint, elementary os usw.). Ich habe mir das tool eigentlich für meine Linux Rechner gebaut, das DreamOS Plugin ist eigentlich nur ein Nebenprodukt.


      Nach der Installation findet man das Plugin unter Menü - Informationen - Samsung Magican





      Je nach Modell werden die TBW Werte berechnet, die Infos sehen dann so aus:





      Wenn die SSD in einem USB3.0 Gehäuse steckt und der linux kernel den USB3.0 Controller nicht erkennt werden keine S.M.A.R.T. Abfragen durchgelassen. Dann ist natürlich auch keine Ausgabe möglich







      Screens für die skin.xml bzw. die skin_user.xml

      HD

      Quellcode

      1. <screen name="SamsungMagicanConsole" position="center,120" size="450,520" title="Command execution...">
      2. <widget name="text" position="10,20" size="430,480" font="Console;16"/>
      3. </screen>


      FHD

      Quellcode

      1. <screen name="SamsungMagicanConsole" position="center,190" size="610,780" title="Command execution...">
      2. <widget name="text" position="10,10" size="600,770" font="Console;24"/>
      3. </screen>

      WQHD

      Quellcode

      1. <screen name="SamsungMagicanConsole" position="center,240" size="1640,1040" title="Command execution...">
      2. <widget name="text" position="20,40" size="1600,960" font="Console;32"/>
      3. </screen>




      Installation:
      Paket in Anhang nach /tmp auf die Box per FTP schieben und über das Terminal oder offline installer installieren


      dpkg -i /tmp/*samsung*.deb


      falls Abhängigkeiten nicht installiert sein sollten und eine Fehlermeldung erscheint, die fehlende pakete manuell nachziehen


      apt-get update && apt-get -f install
      Dateien
      Gruß Fred

      Die Dreambox ist tot, es lebe die Dreambox

      ¯\_(ツ)_/¯

      Quellcode

      1. root@dm920:~$ mount | grep "/ "
      2. /dev/mmcblk1p1 on / type ext4 (rw,relatime,data=ordered)
      3. root@dm920:~$

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Fred Bogus Trumper ()

    • Bedienung im Terminal

      smclt -e2


      Wenn eine Samsung SATA SSD als Standard Speicher Gerät definiert:

      smclt -e2

      Brainfuck-Quellcode

      1. root@dm920:~$ smclt -e2
      2. ----------------------------------------
      3. Samsung SATA SSD information
      4. ----------------------------------------
      5. Model: Samsung SSD 870 EVO 2TB
      6. Device Name: /dev/sda
      7. Firmware Version: SVT02B6Q
      8. Sector Size: 512 bytes
      9. MTBF: 1.500.000 hrs
      10. TBW: 1,2PB
      11. ----------------------------------------
      12. Drive health: 99%
      13. Temperature: 35°C
      14. Power on time: 457 hrs
      15. ----------------------------------------
      16. Data written: 3.644.233,974 MB
      17. 3.558,822 GB
      18. 3,475 TB
      19. 0,25% of 1,2PB 0,003 PB
      20. Mean write rate: 7.974,25 MB/hr
      21. ----------------------------------------
      22. root@dm920:~$
      Alles anzeigen



      smclt /dev/name

      Wenn man den Gerätenamen der Samsung SSD kennt, kann man die Abfrage z.B. so starten:

      smclt /dev/sdc

      Brainfuck-Quellcode

      1. root@dm920:~$ smclt /dev/sdc
      2. ----------------------------------------
      3. Samsung SATA SSD information
      4. ----------------------------------------
      5. Model: Samsung SSD 840 EVO 120GB mSATA
      6. Device Name: /dev/sdc
      7. Firmware Version: EXT41B6Q
      8. Sector Size: 512 bytes
      9. MTBF: 1.500.000 hrs
      10. TBW: 72TB
      11. ----------------------------------------
      12. Drive health: 99%
      13. Temperature: 32°C
      14. Power on time: 340 hrs
      15. ----------------------------------------
      16. Data written: 439.753,394 MB
      17. 429,447 GB
      18. 0,58% of 72TB 0,419 TB
      19. Mean write rate: 1.293,39 MB/hr
      20. ----------------------------------------
      21. root@dm920:~$
      Alles anzeigen



      Wenn man den Gerätenamen nicht kennt, kann man sich mit folgenden Optionen helfen

      smclt -la

      zeigt alle Blockgeräte (USB Sticks, Festplatten, SSDs etc.)

      smclt -la

      Quellcode

      1. root@dm920:~$ smclt -la
      2. attached SCSI devices (USB and SATA):
      3. NAME HCTL TYPE VENDOR MODEL REV TRAN
      4. /dev/sda 0:0:0:0 disk ATA Samsung SSD 870 SVT0 sata
      5. /dev/sdb 10:0:0:0 disk PI-239 USB 2.0 Drive 1.08 usb
      6. /dev/sdc 2:0:0:0 disk Samsung SSD 840 EVO 120G B mS usb
      7. /dev/sdd 4:0:0:0 disk -Pretec 01GB Wave 1.30 usb
      8. root@dm920:~$



      smclt -ls

      zeigt alle Blockgeräte mit S.M.A.R.T. Unterstützung

      smclt -ls

      Quellcode

      1. root@dm920:~$ smclt -ls
      2. attached SCSI devices with S.M.A.R.T. support:
      3. /dev/sda: Samsung SSD 870 EVO 2TB
      4. /dev/sdb: SanDisk SDSSDA120G
      5. /dev/sdc: Samsung SSD 840 EVO 120GB mSATA
      6. root@dm920:~$




      smclt -lm

      zeigt alle Samsung SSDs mit S.M.A.R.T. Unterstützung

      smclt -lm

      Quellcode

      1. root@dm920:~$ smclt -lm
      2. attached Samsung SATA SSDs with S.M.A.R.T. support
      3. also M.2 and mSATA SSDs in appropriate SATA adapter
      4. /dev/sda: Samsung SSD 870 EVO 2TB
      5. /dev/sdc: Samsung SSD 840 EVO 120GB mSATA
      6. root@dm920:~$



      smclt -h

      eine kleine Hilfe gibt es natürlich auch

      smclt -h

      Quellcode

      1. root@dm920:/media/usb$ smclt -h
      2. smclt
      3. usage: [<device>|option]
      4. devices:
      5. -e2 enigma2 default storage device
      6. <device> e.g. /dev/sda
      7. options:
      8. -la, --list-all list all attached SCSI devices
      9. -ls, --list-smart list all attached SCSI devices
      10. with S.M.A.R.T. support
      11. -lm, --list-magican list all attached Samsung SATA SSDs
      12. with S.M.A.R.T. support
      13. -V, --version information about this tool
      14. -h, --help show this help
      15. root@dm920:/media/usb$
      Alles anzeigen
      Gruß Fred

      Die Dreambox ist tot, es lebe die Dreambox

      ¯\_(ツ)_/¯

      Quellcode

      1. root@dm920:~$ mount | grep "/ "
      2. /dev/mmcblk1p1 on / type ext4 (rw,relatime,data=ordered)
      3. root@dm920:~$
    • das liegt leider am skin

      die Ausgabe wird über Screens.Console gesteuert, d.h. im plugin ist kein screen definiert. Müsste man in der skin.xml ansehen und könnt man ev. über eine skin_user.xml anpassen

      Ich habe schon befürchtet, dass die Ausgabe screenabhängig gut oder weniger gut sein wird.

      die vers. 1.0.1 war der erste Versuch um zu Testen was alles funktioniert oder nicht funktioniert.
      Ist jedenfalls auf der todo list
      Gruß Fred

      Die Dreambox ist tot, es lebe die Dreambox

      ¯\_(ツ)_/¯

      Quellcode

      1. root@dm920:~$ mount | grep "/ "
      2. /dev/mmcblk1p1 on / type ext4 (rw,relatime,data=ordered)
      3. root@dm920:~$
    • Mit Unterstützung von @Sven H ist der screen nun skinbar und kann angepasst werden.

      Erstmal an diese Stelle danke dafür.


      Beim Testen ist mir aufgefallen, dass manche skins fonts verwenden, in denen die einzelnen Zeichen unterschiedliche Breiten haben können, siehe auch Screenshot in #3
      Ich hatte das ganz nur im Default-(F)HD screen getestet und da haben die Zeichen des fonts eine fixe Breite.


      Bei variabler Breite der geht natürlich die für die Ausgabe im Terminal vorgesehene Formatierung (links/rechtsbündig siehe screenshots post #1) verloren und ist in der GUI unschön anzusehen - vorallem wenn die Ausgabe nicht mehr in den Konsolen Screen passt - dann werden Zeilen mit Zeilenvorsprung dargestellt und man muss scrollen was nicht sehr schön ist, siehe auch im nuke.evo - da habe ich die Höhe schon voll ausgereizt






      Tritt dann bei andern skins auch auf? Wenn ja werde ich die Ausgabe auf linksbündig umstellen müssen, damit es nicht ganz so wild aussieht
      Gruß Fred

      Die Dreambox ist tot, es lebe die Dreambox

      ¯\_(ツ)_/¯

      Quellcode

      1. root@dm920:~$ mount | grep "/ "
      2. /dev/mmcblk1p1 on / type ext4 (rw,relatime,data=ordered)
      3. root@dm920:~$
    • danke, da ist noch viel zu tun :D

      update im 1. post auf Version 1-r1.1.1

      release notes 1-r1.1.1:
      - Der Consolen Screen ist für HD, FHD, und WQHD (ungetestet) geskinnt und kann auch über die skin_user.xml einfach geändert, angepasst werden (nochmal THX an @sven H)
      - kleine fixes im script


      Beispiel screens im 1. Post


      post #6 bitte ignorieren, FHD bzw. nuke.evo passt jetzt hoffentlich auch




      Gruß Fred

      Die Dreambox ist tot, es lebe die Dreambox

      ¯\_(ツ)_/¯

      Quellcode

      1. root@dm920:~$ mount | grep "/ "
      2. /dev/mmcblk1p1 on / type ext4 (rw,relatime,data=ordered)
      3. root@dm920:~$

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Fred Bogus Trumper ()