USB Audio

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

    • Hallo beisammen,
      ich betreibe auf meiner ET9500 den MPD um Musik auf der Stereoanlage auszugeben.
      Ich würde jetzt den MPD die Musik gerne über einen hochwertigen USB DAC (Audioquest Dragonfly) ausgeben lassen.
      Ich habe den zwar noch nicht angeschafft, nehme aber an, dass ich dafür mindestens mal das snd-usb-audio Kernelmodul brauche.

      Dieses ist wohl nicht aus dem Feed installierbar. (Oder gut versteckt, dann bitte Hinweis).

      Um mir das Kernelmodul zu kompilieren brauche ich wohl 'ne Toolchain und die Kernelsourcen vom 3.8.7.
      Im Web seh ich dazu den Wald vor lauter Bäumen nicht.

      Es wäre super, wenn mit hier jemand kurz sagen könnte, was ich von wo benötige.

      Auch wenn ich eigentlich Enigma selbst gar nicht kompilieren will, dennoch die Frage:
      Ist das Build-Environment für OpenHDF eigentlich internes KnowHow oder kann man das irgendwo runterladen und nachlesen?

      Vielen Dank!!

      lg
      eichhofener
      :88: :danke:
    • Das ist alles offen.
      Hier findest du den Anfang: github.com/oe-alliance
      und hier unser aktuelles Git: github.com/henrylicious/enigma2

      Du solltest allerdings schon wissen was du tust.
      Meine Bastelboxen: Mut@nt HD51 | GB Quad 4K | Mut@nt HD60 | OSMIO4K | HIS 4k Combo+

      ... Keinen Support per PN ... bitte stellt eure Fragen ins Forum!...

      ~ Benutzung OpenHDF Image ~ Benutzung der HDF-Toolbox ~ FAQ und Linksammlung ~ Build und Foren Server Spendenaktion ~
    • Hi Koivo,

      erstmal danke für Deine Antwort (hab mich vorher ja schon per Mausklick bedankt).
      Ich habe demnächst ein bißchen Zeit dieses Projekt weiterzuverfolgen.

      Bevor ich mir aber die Arbeit antu, das komplette HDF-Image zu übersetzen, von dem mich ja nur der Kernel interessiert vorab die Frage:

      Wenn ich mit Bitbake usw. das Image baue, wird dabei denn auch der Kernel neu kompiliert?
      Oder wird der einfach von irgendwoher (kernel.org?) kopiert?

      Ich will ja nur ein kernel-modul kompilieren (evtl. auch kernel anpassen wg. support für kernel-modul.

      Zusatzfrage: Wenn ich irgendwann einen passenden Kernel haben sollte, werde ich die Datei kernel.bin in einem vorhandenen HDF-Image ersetzen und flashen oder?
      Laufe ich dabei Gefahr (wenn ich was falsch mache), mir den Bootloader zu zerschießen?

      Vielen Dank vorab
      ~eichhofener

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

    • Ja klar wird der Kernel mit übersetzt. Es gibt ja auch verschiedene Kernel im git mit unterschiedlichen Ständen. Liegt an den Treibern.

      Wenn du den Kernel flashst, dann hat das ja nichts mit dem Bootloader zu tun. Ist ein seperater Bereich im Flash.
      Meine Bastelboxen: Mut@nt HD51 | GB Quad 4K | Mut@nt HD60 | OSMIO4K | HIS 4k Combo+

      ... Keinen Support per PN ... bitte stellt eure Fragen ins Forum!...

      ~ Benutzung OpenHDF Image ~ Benutzung der HDF-Toolbox ~ FAQ und Linksammlung ~ Build und Foren Server Spendenaktion ~
    • Hi Koivo,

      danke nochmal.
      Leider läuft es nicht ganz rund. Vielleicht hast Du eine Idee.

      Ich verwende OpenSuse 13.1
      Ich habe folgendermaßen begonnen:

      Quellcode

      1. mkdir ~/develop/et9x00
      2. cd ~/develop/et9x00
      3. git clone https://github.com/oe-alliance/build-enviroment.git
      4. cd build-enviroment
      5. make
      6. MACHINE=et9x00 DISTRO=openhdf make image
      7. Probleme:
      8. 1. Zweimal stolpert man über
      9. ./stdio.h:477:1: error: 'gets' undeclared here (not in a function)
      10. _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
      11. Das habe ich auf die Schnelle per auskommentieren des Makros im Headerfile "gelöst"
      12. Für die Kompilierungen der entsprechenden beiden Binaries gab es jeweils ein eigenes privates
      13. "include" Verzeichnis mit den Header Files der c-Standardbibliothek. Von wo werden die
      14. eigentlich geholt? (damit ich den Fehler an der Quelle patchen könnte).
      15. 2. Die perl Datei "find.pl" wird nicht gefunden.
      16. Naja, das werde ich wohl noch hinkriegen. Wahrscheinlich muss ich halt irgendein perl-Paket nachinstallieren...
      17. (Mein Leben als C++-Entwickler liegt schon 15 Jahre zurück. perl war da noch nicht so modern...)
      18. ... er macht aber weiter
      19. (kann es sein, dass das perl-Skript irgendwelche Sourcen patcht, und der folgende Fehler nur
      20. auftritt, weil Schritt 2 nicht funktioniert hat? Mir fehlt leider der Gesamtüberblick über das
      21. Build-System noch völlig, aber insgesamt ists schon beeindruckend, wie alles "bei 0" beginnt,
      22. und erstmal Entwicklungswerkzeuge gebaut werden).
      23. 3. Das finde ich jetzt ernsthafter:
      24. Beim kompilieren von libgcc2.c erhalte ich:
      25. /home/uwe/develop/et9x00/build-enviroment/builds/openhdf/et9x00/tmp/work-shared/gcc-4.6.3+svnr184847-r27/gcc-4_6-branch/libgcc/../gcc/libgcc2.c: In function '__negdi2':
      26. /home/uwe/develop/et9x00/build-enviroment/builds/openhdf/et9x00/tmp/work-shared/gcc-4.6.3+svnr184847-r27/gcc-4_6-branch/libgcc/../gcc/libgcc2.c:72:1: internal compiler error: Segmentation fault
      Alles anzeigen



      Wenn Du zu Punkt 3 eine Idee hast, wärs super.
      Oder habe ich mir evtl. die Daten aus dem git nicht richtig geholt ?!
      (Evtl. alte Version ?)

      Brauche ich evtl. (wg. Punkt 3) eine ganz bestimmte Version des gcc?
      (Allerdings hatte ich den Eindruck, dass fürs Kompilieren eh' ein eigener gcc verwendet wird, und nicht der gcc
      meiner OpenSuse Distro verwendet wird. Stimmt das?)

      Vielen Dank für Deine Hilfe schonmal.
      Liebe Grüße
      eichhofener

      PS: Ich habe das git https://github.com/henrylicious/enigma2 jetzt noch gar nicht verwendet, weil ich das so aufgefasst habe, dass es nur enigma2 umfasst und ich für die build-Umgebung erstmal das oe-alliance git brauche. Stimmt das?

      Dieser Beitrag wurde bereits 9 mal editiert, zuletzt von eichhofener ()

    • Hallo Koivo (und alle anderen, die mir helfen mögen),

      ich schreib mal ein Update meiner Bemühungen:

      Ich bin nun schon viel weiter, nachdem ich mich einige Zeit in die Architektur des openembedded-builds und bitbake reingekniet habe.
      Ich habe für alle bislang aufgelaufenen Probleme patches erstellt und in die bitbake recipes aufgenommen.
      Unten habe ich mal alle notwendigen Fixes aufgelistet. Vielleicht hilft es jemandem, der den Build auch mit einer aktuellen Linux-Distro machen möchte.
      (Bei Bedarf kann ich die Änderungen ja auch pushen).

      "bitbake openhdf-image" läuft jetzt bis zum letzten task durch. Beim letzten Schritt "do_rootfs" kommt allerdings eine lange Latte von Fehlermeldungen.

      Das Gute vorweg: Den Kernel konnte ich einwandfrei übersetzen und habe jetzt eine Version mit snd_usb_audio Support.
      Ich werde den demnächst mal durch Austausch in einem fertigen Image testen.

      Ich würde jetzt aber auch ganz gerne das komplette Image bauen können, und da habe ich noch Probleme.
      Es ist mir schon klar, dass Du dich nicht um jeden Kram kümmern kannst, und ich knie mich schon selbst rein, aber ein Fingerzeig wäre schon klasse.

      Ich verwende übrigens immer noch nur einen clone des oe-alliance git. Das enthält ja scheinbar auch schon enigma.
      An welcher Stelle muss ich https://github.com/henrylicious/enigma2 verwenden?



      Hier also mal ein Ausschnitte aus "build-enviroment/builds/openhdf/et9x00/tmp/work/et9x00-oe-linux/openhdf-image-531-20140120-r20140120172343/temp/log.do_rootfs":

      erstmal kommen Warnings, die mir auch schon nicht koscher vorkommen...

      Quellcode

      1. ...
      2. Package enigma2-plugin-dvb-sundtek.controlcenter version 1.0-20110318-r2 has no valid architecture, ignoring.
      3. Package enigma2-plugin-extensions-autoshredder version 0.3-20130329-r0 has no valid architecture, ignoring.
      4. Package enigma2-plugin-extensions-boblight-enigma2 version 0.8r3 has no valid architecture, ignoring.
      5. [usw.]
      6. ...


      dann kommts aber dicker:

      Quellcode

      1. ...
      2. Collected errors:
      3. * get_header_tar: Unknown typeflag: 0x78: Success.
      4. * extract_archive: Don't know how to handle /tmp/opkg-EaYA5l/openhdf-base-p2vLmz/PaxHeaders.27188/.: No such file or directory.
      5. * get_header_tar: Unknown typeflag: 0x78: No such file or directory.
      6. * get_header_tar: Unknown typeflag: 0x78: No such file or directory.
      7. * extract_archive: Don't know how to handle /tmp/opkg-EaYA5l/oe-alliance-base-j21J2Z/PaxHeaders.20708/.: No such file or directory.
      8. * get_header_tar: Unknown typeflag: 0x78: No such file or directory.
      9. * get_header_tar: Unknown typeflag: 0x78: No such file or directory.
      10. * extract_archive: Don't know how to handle /tmp/opkg-EaYA5l/task-core-boot-RyukSq/PaxHeaders.7165/.: No such file or directory.
      11. * get_header_tar: Unknown typeflag: 0x78: No such file or directory.
      12. * get_header_tar: Unknown typeflag: 0x78: No such file or directory.
      13. * extract_archive: Don't know how to handle /tmp/opkg-EaYA5l/busybox-hdHZMR/PaxHeaders.27549/.: No such file or directory.
      14. [usw.]
      15. ...
      Alles anzeigen


      Da schaue ich momentan noch nicht durch. Es wäre super, wenn Du mir einen Tipp geben könntest.
      Vielen Dank,
      eichhofener




      PS:
      Anbei eine Auflistung der Probleme, die bislang aufgetreten sind.
      1. gettext
      Das waren die stdio.h Probleme.
      Ursache ist, dass einige GNU-libraries eigene Versionen der C Header-Files mitbringen, die nicht 100%ig zum gcc 4.8.1 passen.
      -> per Patch des Headerfiles behoben

      2. open-ssl
      Enthält ein perl-skript, dass den shebang ("#!/bin/perl") in verschiedenen andern perl-Skripten auf einen eigenen Perl-Interpreter umbiegt.
      Dieses initiale perl-Skript wird vom opensuse perl Interpreter ausgeführt. Dessen Version 5.18 kennt "find.pl" nicht mehr.
      -> find.pl hinzugefügt, Verlinkung im recipe angepasst

      3. open-ssl
      Die pod-Files für die zugehörige perl-Dokumentation sind teilweise fehlerhaft. Die Übersetzung der pod-Files wird scheinbar auch von
      opensuses perl Paket erledigt und dieses ist pingeliger als ältere Versionen. Ich hätte die Doku wohl auch ganz rausschmeißen können :)
      -> per patch behoben

      4. libav
      Hier wird die Doku aus texi-Files erzeugt, die dann in pod-Files umgewandelt werden. Eines der texi-Files enthielt ein utf-8 Zeichen. Damit
      kam der texi2pod Konverter nicht klar.
      -> per patch behoben

      5. openjade
      Auch hier ein perl 5.18 Thema: Die getopts library gibt es nicht mehr und wurde durch das Modul Getopt::Std ersetz
      -> per patch behoben

      6. elfutils
      gcc 4.8.1: Wohl ein Bug, den der Compiler erst jetzt anmeckert.
      Es geht um eine Speicheranforderung per malloca.
      sizeof(p) liefert jetzt tatsächlich den Platzbedarf des Pointers (4 Bytes) (früher evtl. Platzbedarf der Struktur?)
      Der Kompiler meckert dies jedenfalls jetzt an. Gemeint war gewissermaßen sizeof(*p)
      -> per patch behoben

      7. gcc-4.6
      Ein Fehler im Target-Compiler, der beim Übersetzen von libgcc2.c zuschlägt. Es geht um den Zugriff eines Iterators auf eine
      Collection. Beim Test, bei dem herausgefunden wird, dass der Iterator über die Grenze der Collection hinausgeht, wird dennoch
      auf das entsprechende Element zugegriffen. Das resultiert in einer Speicherverletzung, wegen der der Compiler dann abschmiert.
      -> per patch behoben
    • Ich würde für das git vom Henry jetzt nicht meine Hand ins Feuer legen. Da wurde grad viel dran gebaut.
      Die Images baut Henry. Vielleicht kann er etwas zu den Fehlermeldungen sagen. Ich kann dir da so jetzt nicht helfen.
      Ich glaube Henry nimmt auch ein anderes Makefile um zu bauen.
      Meine Bastelboxen: Mut@nt HD51 | GB Quad 4K | Mut@nt HD60 | OSMIO4K | HIS 4k Combo+

      ... Keinen Support per PN ... bitte stellt eure Fragen ins Forum!...

      ~ Benutzung OpenHDF Image ~ Benutzung der HDF-Toolbox ~ FAQ und Linksammlung ~ Build und Foren Server Spendenaktion ~
    • Hi,
      ich habe möglicherweise schon eine Erklärung gegoogled:

      Zitat:

      Quellcode

      1. Since openSUSE 12.2 the installed tar uses posix instead of gnu encoding by default. This format is not fully supported by opkg and results in ipk packages not installable at the target.
      2. Logfile example:
      3. Installing blkid (2.21.2-1) to root...
      4. Configuring blkid.
      5. Collected errors:
      6. * get_header_tar: Unknown typeflag: 0x78: No such file or directory.
      7. * get_header_tar: Unknown typeflag: 0x78: No such file or directory.
      8. * get_header_tar: Unknown typeflag: 0x78: No such file or directory.
      9. * get_header_tar: Unknown typeflag: 0x78: No such file or directory.
      10. * get_header_tar: Unknown typeflag: 0x78: No such file or directory.
      11. * get_header_tar: Unknown typeflag: 0x78: No such file or directory.
      12. * get_header_tar: Unknown typeflag: 0x78: No such file or directory.
      Alles anzeigen


      Also wieder eine OpenSuse Eigenart. Ich muss "tar --format=gnu" verwenden. Der tar Aufruf wird sich in irgendeiner bitbake *.bbclass Datei verstecken.
      Ich lasse den build mal mit "-D -D -D" laufen. Vielleicht finde ich so heraus, welche Datei es ist.

      ~eichhofener
    • Wie Kernel komprimieren

      Sorry, ich gebe keine Ruhe.

      Das Problem mit dem Bauen des Images wollte ich jetzt erstmal zurückstellen, und den Kernel, den ich kompiliert habe in ein
      bestehendes OpenHDF Image reinkopieren.

      Jetzt muss ich feststellen, dass mein Kernel unkomprimiert ist, der Kernel im Image muss aber komprimiert sein.
      Scheinbar wird der Kernel erst beim Zusammenbauen des Image komprimiert ?!

      Weiss jemand, wie der Befehl zum Komprimieren des Image lautet?

      Vielen Dank
      ~eichhofener
    • Update und vorläufiger Endstand erreicht

      Hi!

      (wenns nervt, dass ich diesen Thread immer wieder nach vorne hole, bitte sagen, dann hör ich natürlich auf.)

      Ich antworte mir einfach mal selbst:
      1. Der Kernel wird einfach mit gzip -9 vmlinux gezippt. Ich hätte schwören können, dass da irgendein Entpacker-Stub davor muss. Ist aber nicht so.
      2. Man kann den Kernel dann direkt von der Kommandozeile der Box flashen:
        flash_erase /dev/mtd1 0 0
        nandwrite -p /dev/mtd1 vmlinux.gz
      3. Nach reboot kann man die Kernelmodule laden:
        insmod snd-hwdep.ko
        insmod snd-rawmidi.ko
        insmod snd-usbmidi-lib.ko
        insmod snd-usb-audio.ko
      4. Eine angesteckte USB-Sound-Karte erscheint jetzt direkt unter /proc/asound als ALSA device. Um man kann es unmittelbar in der mpd.conf verwenden.
        Sehr cool.


      Offener Punkt: Die USB-Soundkarte wird nur bis 44,1 kHz unterstützt (reicht mir allerdings).
      Das ist aber kein Problem der Box, sondern ist auch unter Desktop Linux so. Offenbar ein allgemeines Problem des Linux Kernels.

      Ich bin gegenwärtig sehr zufrieden.

      lg
      eichhofener
    • Coole Sache.
      Kernel und rootfs kannst du auch einfach im Betrieb mit ofgwrite flashen. Der Online Flash macht das genauso.
      Meine Bastelboxen: Mut@nt HD51 | GB Quad 4K | Mut@nt HD60 | OSMIO4K | HIS 4k Combo+

      ... Keinen Support per PN ... bitte stellt eure Fragen ins Forum!...

      ~ Benutzung OpenHDF Image ~ Benutzung der HDF-Toolbox ~ FAQ und Linksammlung ~ Build und Foren Server Spendenaktion ~

    Unsere Partnerboards

    ^
    Flag Counter