Diese Seite mit anderen teilen ...

Informationen zum Thema:
Forum:
DAB Digitalradio Forum
Beiträge im Thema:
210
Erster Beitrag:
vor 2 Jahren, 6 Monaten
Letzter Beitrag:
vor 2 Monaten, 2 Wochen
Beteiligte Autoren:
andimik, Basic.Master, Stefan Heimers, w_weinmann, 20-99-17, Makki1, Hagen, dh5ym, newspaperman, Günter Lorenz, ... und 14 weitere

DAB+ Linux Software

Startbeitrag von Makki1 am 19.05.2015 23:59

Hi, was könnt ihr da empfehlen?
Möglichst einfach, commandline, keine GUI, per script steuer/auslesbar.
RTL2832U USB vorhanden (oder bessere Vorschläge?)

Makki

Die 50 interessantesten Antworten:

Für den Realtek-Chipsatz gibt es da als GUI-mäßiges Komplettpaket SDR-J (http://www.sdr-j.tk/index.html).

Daneben gibt es seit kurzem dab2eti (https://github.com/linuxstb/dabtools), um direkt einen ETI-NI-Dump von einem kompletten Ensemble zu machen (nicht nur zum direkten Abspielen interessant!). Mit dem mitgelieferten eti2mpa kann man einen DAB-Sender (kein DAB+) daraus extrahieren und den MP2-Strom an einen beliebigen Audioplayer weiterleiten.

Ich arbeite aber aktuell an einem Linux-Player, mit dem man DAB und DAB+ Sender unter Linux abspielen kann. Sowohl per Konsole als auch mit (GTK-)GUI. Dort kann man optional per SID den Sender angeben, der aus dem Ensemble abgespielt werden soll (auf der Konsole verpflichtend, weil der ETI-Datenstrom per stdin eingelesen wird).

von Basic.Master - am 20.05.2015 07:42
Zitat
Basic.Master
...
Den Gain-Parameter habe ich bei dab2eti weggelassen; laut README geht Autogain aktuell nur bei diesem Tuner.
Am Anfang hatte ich auch Sticks mit anderen Tunern versucht, aber es beim (kurzen) Probieren nicht geschafft, da einen Lock zu bekommen.


Für die anderen Tunerchips trifft wohl das zu:
Zitat
https://github.com/linuxstb/dabtools
...
but it seems that the E4000 tuner is the only one (amongst those I have tested) which is able to lock onto a DAB ensemble using auto-gain. For my other devices (one with an FC00013, and one with an R828D), I need to very carefully set the gain manually.


Vermutlich ist die richtige Gain-Einstellung bei den Tunern dann ähnlich "fummelig" wie bei SDR-J. (Meiner Erfahrung nach gibt es dort für jedes Ensemble nur 1 oder 2 Gains, bei denen es klappt).

Viele Grüße,
Andi

von Andi_Bayern - am 20.05.2015 20:15
@Günter:
Der Einleseteil wird so 1:1 unter Windows nicht funzen, fällt mir gerade auf - der select-Befehl dort geht nur mit WinSock und Netzwerk-Sockets, nicht mit Dateien oder stdin. Das muss ich noch anpassen. Der Rest von DABlin könnte theoretisch ohne Änderung laufen.

@Makki:
dab2eti zieht selbst auf PCs eine ganze Menge CPU-Power, weil das komplette Ensemble dekodiert wird. Das wird eine STB-CPU nicht schaffen, die parallel auch noch anderes zu tun hat. Man müsste dab2eti erstmal umschreiben, damit z.B. nur ein Subchannel dekodiert wird (in dessen TODOs ist so ein Vorschlag schon drin).

@dh5ym:
Diese Wine-Methode hatte ich bei mir mal versucht; das lief ganz gut. Aber nativer Empfang gefällt mir dann doch besser :xcool:

von Basic.Master - am 30.05.2015 09:38
Zitat
Stefan Heimers
Hier gibt's einen Workaround: http://stackoverflow.com/questions/548063/kill-a-process-started-with-popen

Als Quick and Dirty Ansatz würde wohl auch ein system("killall dabtools"); evtl mit -9 helfen, normalerweise läuft ja eh nur eine Einstanz davon.

Zitat

Aber vielleicht wäre es besser, gleich die dabtools in eine C oder C++ Library umzuschreiben, die nachher in verschiedenen Programmen sauber und ohne externen Prozess eingebunden werden könnte. Das würde auch weitere Funktionen wie das periodische Abfragen der Signalstärke ermöglichen.

Das wäre natürlich die saubere Lösung.

Ich würde mich dennoch sehr freuen, wenn DABlin weiterhin die Möglichkeit bietet einen DAB ETI-NI Strom zu dekodieren, welcher von Stdin kommt, wenn beim Start ein bestimmter Übergabeparameter gesetzt wurde.

Ich habe übrigens als Workaround ein kleines Shell Skript geschrieben in welchem die Frequenzen hinterlegt sind.

von newspaperman - am 03.06.2015 19:48
Dieses Beispiel auf StackOverflow hatte ich mir auch schon mal angesehen. Eine Lib wäre aber natürlich das Optimum. Wer macht es?:D
Als Zwischenlösung ist killall zum Abschießen eine Option (auch wenn das nicht gerade sauber ist), weil dab2eti in der aktuellen Version tatsächlich hardkodiert das RTL-SDR Gerät mit Index 0 verwendet.
Ich werde mal ein bißchen rumbasteln.

Die Möglichkeit, direkt einen ETI-NI-Stream per stdin oder Datei abzuspielen, wird auf jeden Fall drinbleiben. Wahrscheinlich baue ich für das Pseudo-Umschalten mit dab2eti einen Parameter ein, der diesen Modus aktiviert und worüber man dann ggf. den Pfad zum dab2eti-Binary übergibt.

@newspaperman:
Wenn nicht, dann stelle dein Skript gerne online bzw. mache einen Pull Request auf GitHub.

von Basic.Master - am 04.06.2015 17:05
Anbei mein kleines dab.sh Skript. Als Übergabeparamter einfach den DAB Kanalnamen angeben.

#!/bin/sh

DAB2ETI=~/dab-software/dabtools/src/dab2eti
DABLIN=~/dab-software/dablin/dablin_gtk

case "$1" in
5a) freq=174928000;;
5b) freq=176640000;;
5c) freq=178352000;;
5d) freq=180064000;;
6a) freq=181936000;;
6b) freq=183648000;;
6c) freq=185360000;;
6d) freq=187072000;;
7a) freq=188928000;;
7b) freq=190640000;;
7c) freq=192352000;;
7d) freq=194064000;;
8a) freq=195936000;;
8b) freq=197648000;;
8c) freq=199360000;;
8d) freq=201072000;;
9a) freq=202928000;;
9b) freq=204640000;;
9c) freq=206352000;;
9d) freq=208064000;;
10a) freq=209936000;;
10b) freq=211648000;;
10c) freq=213360000;;
10d) freq=215072000;;
11a) freq=216928000;;
11b) freq=218640000;;
11c) freq=220352000;;
11d) freq=222064000;;
12a) freq=223936000;;
12b) freq=225648000;;
12c) freq=227360000;;
12d) freq=229072000;;
13a) freq=230784000;;
13b) freq=232496000;;
13c) freq=234208000;;
13d) freq=235776000;;
13e) freq=237488000;;
13f) freq=239200000;;
*) echo "Usage : ./dab.sh DAB-channel"
echo "e. g.: # ./dab.sh 5a"
exit 1;;
esac

$DAB2ETI $freq | $DABLIN


von newspaperman - am 06.06.2015 21:37
Zitat
Basic.Master
Eine Lib wäre aber natürlich das Optimum. Wer macht es?:D


Ich kanns mal versuchen, weiss aber noch nicht ob ich es schaffe.

Ich denke mal ich ersetze dab2eti.c aus den dabtools durch einen C++ Wrapper und übernehme die anderen Files wie sie sind.

Das Headerfile wird voraussichtlich so ähnlich wie unten aussehen. setChannel() und setFrequency() werden beide die Frequenz setzen, wobei setChannel() den Kanal (z.B. 5C) aus einer Tabelle liest und dann die entsprechende Frequenz setzt.


class dab2eti {
public:
dab2eti();
~dab2eti();
bool setGain(std::string channel);
bool setChannel(std::string channel);
bool setFrequency(float frequency);
std:: ostream getEtiStream();
private:
int frequency; // receiving frequency in Hz
int gain;
};


von Stefan Heimers - am 07.06.2015 11:31
@Basic.Master: Nach erneuter Lektüre des Threads habe ich dich wohl falsch verstanden. Meine Library stellt eine Funktion zur Verfügung, die man aufrufen kann und dann einen ETI Frame zurück erhält.

Ich glaub Du hast es umgekehrt gemeint: Die Library soll wenn ein Frame bereit ist eine Funktion aufrufen, die dann im Client implementiert wird.

Das ist anders als in meinem Beispielprogramm, sollte aber auch gehen. Dazu brauchst Du die Vererbung der C++ Klassen. Deine C++-Klasse muss die Klasse dab2eti erben, und dann die Funktion void dab2eti::eti_callback(uint8_t* eti) "überladen", also neu implementieren und somit ersetzen.

Noch einen Mangel hat meine Library: Frequenz und Gain lassen sich noch nicht zur Laufzeit umschalten, nur bevor der erste Frame abgefragt wird. Das ist eine Kleinigkeit, das werde ich heute Abend nach Feierabend noch implementieren.

von Stefan Heimers - am 10.06.2015 09:37
Genau; sobald ein Frame fertig ist, sollte es an eine Callback-Funktion übergeben werden, die man vorher an die Lib übergeben hat. Dabei könntest du einfach noch als Bedingung festlegen, dass die Funktion schnellmöglichst wieder zurückspringt. Das hieße, dass die Callback-Funktion eigentlich nur den Frame zwischenspeichern darf und mehr nicht (wie genau sie das Frame zwischenspeichert, könnte dir dann egal sein) - die Verarbeitung der Frames muss dann in einem anderen Thread passieren. Damit kann dann die Callback-Funktion direkt von den eingebauten Demod-Thread aufgerufen werden, ohne dass du mit einer Queue die Frames puffern müsstest und über einen separaten Thread weitergibst.

Callback-Funktion wäre C-Stil, aber Vererbung ist hier in C++ wirklich eleganter, da hast du Recht. Dann kann man einfach die entsprechende Methode überschreiben (Überladen wäre der Fall, wenn man eine neue Methode mit demselben Funktionsnamen hinzufügen würde, die andere Parameter bekommt - das bringt in dem Fall hier nichts). Das Problem ist, dass eti_callback eine statische Funktion ist, aber die nicht (via virtual) überschreibbar sind - wenn ich nichts übersehen habe.

Ich habe eti_callback deswegen mal testweise von Klassen- zu Objektmethode gemacht ("static" entfernt). Jetzt bekommt init_dab_state ja eti_callback übergeben. Theoretisch bräuchte init_dab_state ab sofort noch die Info, auf welchem Objekt eti_callback aufgerufen werden soll. Normalerweise kann man in C++ an std::bind eine Funktion sowie ein Objekt übergeben, und erhält eine gebundene Funktion zurück - so dass man dieses Objekt nicht mehr extra übergeben muss. Bei mir hat das hier jetzt nicht geklappt (in anderen Fällen schon); ich weiß nicht genau warum. Vielleicht weil init_dab_state eine reine C-Funktion ist...?

Hattest du eigentlich noch etwas spezielles gemacht, damit example die Lib findet? Weil ich musste die libdabplus.so nach /usr/lib kopieren - dachte eigentlich, er sucht nach ihr auch im aktuellen Ordner (diesen testweise zu $PATH hinzuzufügen hat nicht gereicht).

Momentan besteht auch noch das Problem, dass man als Lib-Nutzer nicht weiß, ab wann exakt nach einem Frequenzwechsel die ETI-Frames nicht mehr zum alten Kanal, sondern zum neuen gehören. Das wäre sehr wichtig, damit dann z.B. nicht irgendwelche Sender eingelesen werden, die eigentlich im alten Kanal senden.

von Basic.Master - am 11.06.2015 08:43
Zitat
Basic.Master
Hattest du eigentlich noch etwas spezielles gemacht, damit example die Lib findet? Weil ich musste die libdabplus.so nach /usr/lib kopieren - dachte eigentlich, er sucht nach ihr auch im aktuellen Ordner (diesen testweise zu $PATH hinzuzufügen hat nicht gereicht).


Ich habe erst die Umgebungsvariable LD_LIBRARY_PATH auf das aktuelle Verzeichnis gesetzt, dann wird die Lib gefunden.

Das mit dem Callback scheint komplizierter, als ich dachte. Bei mir hat es nur funktioniert wenn ich eti_callback als statisch deklariert habe. Dass sich die Funktion dann nicht mehr überschreiben lässt habe ich nicht gewusst.

Heute komme ich wohl nicht mehr dazu. Falls Du eine Lösung findest kannst Du sie ja auf github pushen. Sonst schaue ich mir die Sache am Wochenende nochmal an.

von Stefan Heimers - am 11.06.2015 09:58
Alles klar; jetzt bräuchte man nur noch einen Weg, den Empfang über die Lib selbst zu beenden.

In der Zwischenzeit habe ich mal die Möglichkeit umgesetzt, übergangsweise dab2eti per popen/pclose als Quelle zu nutzen. Entsprechend gibt es jetzt ein Auswahlfeld für den gewünschten Kanal. Dazu muss man den Pfad zum dab2eti-Binary als Parameter angeben (sonst bleibt das Feld grau und das alte Verhalten mit stdin bzw. Datei wird aktiv).
Einen gewünschten Startkanal kann man auch wählen; bei der Konsolenversion ist er natürlich Pflicht.
Bei der GTK-Version kann man außerdem optional diejenigen Kanäle angeben, die in der Kanalliste erscheinen sollen [weil man sie empfangen kann] - ansonsten wird die komplette Liste mit allen potentiellen DAB-Kanälen benutzt, was normalerweise wenig Sinn macht.

von Basic.Master - am 19.06.2015 12:42
Sehr schön, die Kanalwahl im GUI macht die Bedienung doch schon viel bequemer.

Ich habe noch festgestellt, dass bei meinem TrekStor Stick der Autogain trotz E4000 Tuner sehr schleicht funktioniert. Ich habe den Gain dann fest auf 4dB gestellt und benutze eine regelbare Zimmerantenne (Digitenne TT1), damit ist der Empfang recht gut, es gehen alle ortsüblichen Ensembles.

Bei der Library gab es noch ein paar kleine Änderungen: Die Funktion stopReceiver() beendet den Empfang. Das Beispielprogramm example2 wurde so erweitert, dass es als erstes Kommandozeilenargument entweder einen Kanal oder eine Frequenz akzeptiert. Somit funktioniert nun auch dablin_gtk -d example2 oder example2 12C | dablin_gtk.

Ich habe noch nicht herausgefunden, wie man feststellen kann, ab wann ein neuer Frame zum neuen Kanal gehört. Aber vielleicht braucht es das auch gar nicht, wenn man den Empfang mit stopReceiver() beendet, den Kanal wechselt, und dann mit startReceiver() wieder startet sollten doch alle folgenden ETI Frames zum neuen Kanal gehören.

von Stefan Heimers - am 20.06.2015 07:29
Ich wollte mich auch mal hier einmischen. Ich höre gerade erfolgreich mit meinem generischen RTL2832U stick mit R820T Tuner in Kombination mit dab2eti und dablin_gtk. Außerdem habe ich noch einen NOXON DAB Stick, der ja einen E4000 Tuner mit auto gain hat.
Allerdings habe ich sowohl mit dem R820T als auch dem E4000 oft Probleme einen lock zu bekommen. Aus dem Grund probiere ich dann immer etwas ziellos den gain Parameter von dab2eti aus.
Daher wollte ich auch mal zwei bis drei Sachen fragen:

  1. was genau macht der gain? So weit ich weiß ist es der Verstärker, aber warum stelle ich den dann nicht einfach auf Maximum? Kann es sein, dass das Ziel der richtig gain Einstellung ist die Rauschvarianz zu senken? So etwa wie in den drei Bildern hier: https://de.wikipedia.org/wiki/Quadraturamplitudenmodulation#Konstellationsdiagramm (4-QAM-Empfangssymbole mit additivem Gauß'schen Rauschen (AWGN) der Varianzen 0,01, 0,1 und 0,3) dargestellt? (Bitte verzeiht mir hier mein mangelhaftes Fachwissen, das ist vermutlich eine etwas plakative und dumme Frage, aber doch etwas fundamental für das gesamte Verständnis)
  2. Gäbe es eine Möglichkeit z.B. direkt von dab2eti einen Wert ausgegeben zu bekommen, der mir hilft den richtigen gain zu finden? Z.B. so was wie Empfangsbalken oder ein float wert von 0 bis 1 oder etwas ähnliches
  3. Gibt es eine Möglichkeit einen autogain software-seitig zu implementieren indem der gain in Abhängigkeit das Wertes der in 2. ausgegeben wird gesetzt wird?


Ansonsten bin ich sehr zufrieden mit der Richtung, in die die Entwicklung für Linux in dem Bereich geht :-) (Cool wäre natürlich auch noch, wenn dab2eti sub-channel filter implementiert)

von white_gecko - am 02.01.2016 17:01
Hallo,

unter Opensuse 13.2 kann ich mit meinen RTL 2832U Stick mit dem DABlin-Player kein DAB+ Radio hören..

Die Konsole liefert der folgende:


@linux:~> dab2eti 216928000 | dablin_gtk
Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000001

Using device 0: Generic RTL2832U OEM
Detached kernel driver
DABlin - capital DAB experience
Found Rafael Micro R820T tuner
SDLOutput: using SDL version '2.0.4'
ETISource: reading from 'stdin'
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6
[R82XX] PLL not locked!
Tuned to 216928000 Hz.
Tuner gain set to automatic.
Waiting for sync...
startup_delay=1



Könnt Ihr unterstützen. woran es hakt?

Danke!

von 20-99-17 - am 01.08.2016 10:45
Der Empfang von "Energy" ist bei uns recht gut..
Laut der Radio das neben mir steht habe ich nun "178.352MHZ" eingetragen...

Leider ändert sich trotzdem nichts.. :-(

dab2eti 178352000 | dablin_gtk
Found 1 device(s):
DABlin - capital DAB experience
0: Realtek, RTL2838UHIDIR, SN: 00000001

Using device 0: Generic RTL2832U OEM
Detached kernel driver
SDLOutput: using SDL version '2.0.4'
ETISource: reading from 'stdin'
Found Rafael Micro R820T tuner
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6
[R82XX] PLL not locked!
Tuned to 178352000 Hz.
Tuner gain set to automatic.
Waiting for sync...
startup_delay=1


von 20-99-17 - am 01.08.2016 12:02
Hab noch ein bisserl rumgespielt...

Nun kann ich der Konsole die folgenden Informationen entlocken..

@linux:~> dablin_gtk -d ~/bin/dab2eti -c 11D -C 5C,7B,11A,11C,11D -s 0xd911
DABlin - capital DAB experience
SDLOutput: using SDL version '2.0.4'
ETISource: playing live from 222064 kHz via dab2eti
sh: /home/daniel/bin/dab2eti: Datei oder Verzeichnis nicht gefunden
ETISource: EOF reached!
dab2eti: Kein Prozess gefunden
ETISource: error killing dab2eti
ETISource: playing live from 220352 kHz via dab2eti
sh: /home/daniel/bin/dab2eti: Datei oder Verzeichnis nicht gefunden
ETISource: EOF reached!
dab2eti: Kein Prozess gefunden
ETISource: error killing dab2eti
ETISource: playing live from 178352 kHz via dab2eti
sh: /home/daniel//bin/dab2eti: Datei oder Verzeichnis nicht gefunden
ETISource: EOF reached!
dab2eti: Kein Prozess gefunden
ETISource: error killing dab2eti
ETISource: playing live from 190640 kHz via dab2eti
sh: /home/daniel//bin/dab2eti: Datei oder Verzeichnis nicht gefunden
ETISource: EOF reached!


von 20-99-17 - am 01.08.2016 12:14
dablin_gtk erstellt selbst keine Dateien; die Meldungen mit Datei/Verzeichnis kommt hier daher, dass er dab2eti nicht findet.

Habe gerade gemerkt, dass du die Beispielaufrufe aus der README direkt verwendest. So 1:1 übernehmen klappt aber nicht, weil da auch Pfade/Kanäle/IDs drin sind.

Probiere es erstmal mit diesem Aufruf:
dablin_gtk -d ~/bin/dab2eti -g 37

Hinter "-d" kommt der Pfad, in dem "dab2eti" liegt (musst du anpassen, weil es bei dir in einem anderen Pfad liegt).

Hinter "-g" kommt der Gain-Wert - du musst die von dab2eti angezeigten Werte
Zitat

0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6

nacheinander ausprobieren (und dabei wiegesagt den Wert mal 10 nehmen).

Wenn dab2eti bei dir im Pfad /home/daniel/bla/blub liegt und du den Gain-Wert 3.7 testen willst, wäre das dann beispielsweise:

Zitat

dablin_gtk -d /home/daniel/bla/blub/dab2eti -g 37


von Basic.Master - am 02.08.2016 07:14
@linux:~> dablin_gtk -d ~/bin/dab2eti -g 37
DABlin - capital DAB experience
SDLOutput: using SDL version '2.0.4'
ETISource: playing live from 185360 kHz via dab2eti
sh: /home/daniel/bin/dab2eti: Datei oder Verzeichnis nicht gefunden
ETISource: EOF reached!
dab2eti: Kein Prozess gefunden
ETISource: error killing dab2eti
ETISource: playing live from 206352 kHz via dab2eti
sh: /home/daniel/bin/dab2eti: Datei oder Verzeichnis nicht gefunden
ETISource: EOF reached!
dab2eti: Kein Prozess gefunden
ETISource: error killing dab2eti
ETISource: playing live from 223936 kHz via dab2eti
sh: /home/daniel/bin/dab2eti: Datei oder Verzeichnis nicht gefunden
ETISource: EOF reached!
dab2eti: Kein Prozess gefunden
ETISource: error killing dab2eti


??

Wo soll den dab2eti liegen?
Kann es sein, das es bei mir (noch) gar nicht existiert?

von 20-99-17 - am 02.08.2016 07:32
Ja ich verwende die OpenSuse Pakete...

@linux:~> dablin_gtk -d dab2eti -g 37
DABlin - capital DAB experience
SDLOutput: using SDL version '2.0.4'
ETISource: playing live from 192352 kHz via dab2eti
Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000001

Using device 0: Generic RTL2832U OEM
Found Rafael Micro R820T tuner
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6
[R82XX] PLL not locked!
Tuned to 192352000 Hz.
Tuner gain set to 3.70 dB.
Waiting for sync...
startup_delay=1
Signal caught, exiting!

User cancel, exiting...
r82xx_write: i2c wr failed=-9 reg=0a len=1
ETISource: playing live from 206352 kHz via dab2eti
Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000001

Using device 0: Generic RTL2832U OEM
Found Rafael Micro R820T tuner
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6
[R82XX] PLL not locked!
Tuned to 206352000 Hz.
Tuner gain set to 3.70 dB.
Waiting for sync...
startup_delay=1
Signal caught, exiting!


von 20-99-17 - am 02.08.2016 07:48
Mit dem Gain-Wert bekommt er keinen Sync. Es kann aber auch daran liegen, dass ein Kanal gewählt wird, auf dem nix reinkommt.

An dab2eti wird (direkt oder via dablin) auf jeden Fall immer die Frequenz übergeben (gibt an, welcher von den DAB-Blöcken/Kanälen gemeint ist; genau, sowas wie z.B. 9C oder 12D).
Manche Sticks - z.B. deiner - brauchen leider zusätzlich noch diesen Gain-Wert, wobei man da durchprobieren muss, welcher passt.

Zum einen musst du (fürs erste) in dablin_gtk einen DAB-Block auswählen, den du definitiv (gut) bei dir empfängst. Du schreibst oben, dass Energy bei dir gut reinkommt - die Frage wäre, ob das das Energy aus dem Bundesmux (Kanal 5C) ist. Weil es gibt tw. auch regionale Energy-Ableger via DAB.

Um nicht jedes Mal extra den 5C via Klick auswählen zu müssen, kannst du stattdessen auch einfach folgendes an den dablin_gtk-Aufruf hinten dranhängen:
Zitat

-c 5C


von Basic.Master - am 02.08.2016 09:55
Mittlerweile bin ich (vielleicht) einen Schritt weiter...

Er findet zumindest gelegentlich etwaa... Musik höre ich jedoch trotzdem noch keine :-/


Library error 0, exiting...
ETISource: EOF reached!
ETISource: playing live from 206352 kHz via dab2eti
Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000001

Using device 0: Generic RTL2832U OEM
Detached kernel driver
Found Rafael Micro R820T tuner
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6
[R82XX] PLL not locked!
Tuned to 206352000 Hz.
Tuner gain set to automatic.
Waiting for sync...
startup_delay=1
Locked
ENSEMBLE_INFO: EId=0x10be, CIFCount = 16 156
SubChId=1, slForm=1, StartAddress=0, size=66, bitrate=88, ASCTy=0x3f
SubChId=2, slForm=1, StartAddress=66, size=66, bitrate=88, ASCTy=0x3f
SubChId=3, slForm=1, StartAddress=132, size=66, bitrate=88, ASCTy=0x3f
SubChId=4, slForm=1, StartAddress=198, size=54, bitrate=72, ASCTy=0x3f
SubChId=6, slForm=1, StartAddress=252, size=60, bitrate=80, ASCTy=0x3f
SubChId=7, slForm=1, StartAddress=312, size=60, bitrate=80, ASCTy=0x3f
SubChId=8, slForm=1, StartAddress=372, size=60, bitrate=80, ASCTy=0x3f
SubChId=9, slForm=1, StartAddress=432, size=60, bitrate=80, ASCTy=0x3f
SubChId=11, slForm=1, StartAddress=492, size=66, bitrate=88, ASCTy=0x3f
SubChId=12, slForm=1, StartAddress=558, size=60, bitrate=80, ASCTy=0x3f
SubChId=14, slForm=1, StartAddress=618, size=60, bitrate=80, ASCTy=0x3f
FICDecoder: found new audio service: SID 0x1C19, subchannel 1, DAB+
FICDecoder: found new audio service: SID 0x1015, subchannel 11, DAB+
FICDecoder: found new audio service: SID 0x1C2C, subchannel 7, DAB+
FICDecoder: found new audio service: SID 0x141F, subchannel 9, DAB+
FICDecoder: found new audio service: SID 0x1014, subchannel 14, DAB+
FICDecoder: found new audio service: SID 0x131A, subchannel 8, DAB+
FICDecoder: found new audio service: SID 0xD48C, subchannel 6, DAB+
FICDecoder: found new audio service: SID 0x1713, subchannel 12, DAB+
FICDecoder: found new audio service: SID 0x1D17, subchannel 3, DAB+
FICDecoder: found new audio service: SID 0x1716, subchannel 2, DAB+
FICDecoder: found new audio service: SID 0x1D12, subchannel 4, DAB+
FICDecoder: found new ensemble ID/label: 0x10BE 'Augsburg '
FICDecoder: found new service ID/label: 0x1D12 'FANTASY LOUNGE '
FICDecoder: found new service ID/label: 0x1716 'Smart Radio '
FICDecoder: found new service ID/label: 0x1D17 'RADIO AUGSBURG '
FICDecoder: found new service ID/label: 0x1713 'RADIO FANTASY '
FICDecoder: found new service ID/label: 0xD48C 'HITRADIO RT1 '
FICDecoder: found new service ID/label: 0x131A 'MEGARADIO BAYERN'
FICDecoder: found new service ID/label: 0x1014 'egoFM '
FICDecoder: found new service ID/label: 0x141F 'MEGA 80's '
FICDecoder: found new service ID/label: 0x1C2C 'PURE FM '
FICDecoder: found new service ID/label: 0x1015 'Radio Ilmwelle '
FICDecoder: found new service ID/label: 0x1C19 'PN EINS URBAN '
Lock lost, resetting ringbuffer
Locked
Lock lost, resetting ringbuffer
Locked
Lock lost, resetting ringbuffer
Locked
Lock lost, resetting ringbuffer
ETIPlayer: playing subchannel 1 (DAB+)
Locked
Lock lost, resetting ringbuffer
Locked
Lock lost, resetting ringbuffer
ETIPlayer: playing subchannel 3 (DAB+)
Locked
(0+) SuperframeFilter: Superframe sync started...
(0+) (0+) (0+) (15) SuperframeFilter: Superframe sync succeeded after 4 frame(s)
ETIPlayer: format: HE-AAC, 48 kHz Stereo @ 88 kBit/s
AACDecoder: using decoder 'FAAD2'
SDLOutput: using audio buffer of 192000 bytes
Lock lost, resetting ringbuffer
SDLOutput: audio opened; driver name: pulseaudio, freq: 48000, channels: 2, size: 16384, samples: 2048, silence: 0x00, output: 32bit float
(1) Locked
(0+) (AU #1) (AU #2) Lock lost, resetting ringbuffer
ETIPlayer: playing subchannel 6 (DAB+)
ETIPlayer: playing subchannel 7 (DAB+)
Signal caught, exiting!

User cancel, exiting...
Reattached kernel driver
ETIPlayer: playing no subchannel
ETIPlayer: playing no subchannel
ETIPlayer: playing no subchannel
ETIPlayer: playing no subchannel
ETIPlayer: playing no subchannel
ETIPlayer: playing no subchannel
ETISource: playing live from 213360 kHz via dab2eti
Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000001

Using device 0: Generic RTL2832U OEM
Detached kernel driver
Found Rafael Micro R820T tuner
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6
[R82XX] PLL not locked!
Tuned to 213360000 Hz.
Tuner gain set to automatic.
Waiting for sync...
startup_delay=1


von 20-99-17 - am 03.08.2016 16:44
Moinsen zusammen,

beim Stöbern hab ich folgendes für uns Linux Benutzer gefunden
http://support.sundtek.com/index.php/topic,2115.msg16820.html

Ich hab mal angefragt wann denn der Tuner kommen soll.
Ich tippe darauf das sie entweder den Silicon Labs chip oder den Keystone Chip verwenden da sie dort erwähnen das alles auf dem Tuner dekodiert wird was uns bei der Codec Geschichte viele Probleme abnehmen könnte bzw. abnimmt.

Werde berichten ob und welche Antwort ich da erhalte.

Edit:
was ich da gerade sehe:
Im USB Audio Modus:
$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: Intel [HDA Intel], device 0: ALC269 Analog [ALC269 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: HD [Sundtek DAB/DAB+/FM/FM HD], device 0: USB Audio [USB Audio]
Subdevices: 0/1
Subdevice #0: subdevice #0

das scheint interessant zu sein :-)

von PeterKO - am 25.08.2016 12:36
Hab vorher die Antwort erhalten wann das Teil verfügbar sein wird:

----
Hallo Peter,

wir arbeiten aktuell noch an der Software diese soll so einfach wie möglich unter Linux und MacOSX funktionieren.
Der Tuner wird voraussichtlich im Laufe des Septembers verfügbar sein.
Bezüglich den Preisen können wir derzeit noch keine Auskunft geben da noch nicht alle Features des Tuners definiert sind (eventuell werden wir diverse Features optional machen z.B einen Standalone Modus ohne PC nur mit 5V Netzteil).
Wir aktualisieren das Forum auch regelmäßig bezüglich der weiteren Entwicklungen:
http://support.sundtek.com/index.php/topic,2115.msg16820.html

Viele Grüße aus Berlin,
----


also dann mal warten....

von PeterKO - am 25.08.2016 16:26
Was mache ich falsch?


andreas@andiE535:~$ git clone https://github.com/linuxstb/dabtools.git
Klone nach 'dabtools' ...
remote: Counting objects: 175, done.
remote: Total 175 (delta 0), reused 0 (delta 0), pack-reused 175
Empfange Objekte: 100% (175/175), 135.38 KiB | 0 bytes/s, Fertig.
Löse Unterschiede auf: 100% (90/90), Fertig.
Prüfe Konnektivität ... Fertig.
andreas@andiE535:~$ cd dabtools/
andreas@andiE535:~/dabtools$ make
make: *** Es wurden keine Ziele angegeben und keine „make“-Steuerdatei gefunden. Schluss.


Im Unterverzeichnis src funktioniert make


andreas@andiE535:~/dabtools/src$ make
gcc -O3 -W -Wall -g -I/usr/local/include/ -I/usr/include/libusb-1.0 -DENABLE_SPIRAL_VITERBI -msse2 -msse3 -std=gnu99 -c -o wf_sync.o wf_sync.c
gcc -O3 -W -Wall -g -I/usr/local/include/ -I/usr/include/libusb-1.0 -DENABLE_SPIRAL_VITERBI -msse2 -msse3 -std=gnu99 -c -o wf_prstables.o wf_prstables.c
gcc -O3 -W -Wall -g -I/usr/local/include/ -I/usr/include/libusb-1.0 -DENABLE_SPIRAL_VITERBI -msse2 -msse3 -std=gnu99 -c -o wf_maths.o wf_maths.c
gcc -O3 -W -Wall -g -I/usr/local/include/ -I/usr/include/libusb-1.0 -DENABLE_SPIRAL_VITERBI -msse2 -msse3 -std=gnu99 -c -o fic.o fic.c
fic.c: In function ‘fib_parse’:
fic.c:120:19: warning: unused variable ‘id’ [-Wunused-variable]
int id = (fib[j+1] > 4;

usw.



sudo make install geht aber nicht.

librtlsdr und libfftw3 sollten schon drauf sein. etisnoop, dablin und anderes habe ich erfolgreich ge"make"t.

von andimik - am 07.10.2016 19:43
Hallo,
versuche Dablin mit Raspian zu "maken".
Ist das überhaupt möglich? Das Tutorial im Github bezieht sich immer nur auf Ubuntu.
______________________________________________________________
pi@lemaker ~/dablin $ sudo apt-get install libmpg123-dev libfaad-dev libsdl2-devReading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package libsdl2-dev
pi@lemaker ~/dablin $

_____________________________________________________________
Damit beginnt der Spaß. SDL2 hab ich mit dann von woanders installiert.
Nur mit mäßigem Erfolg:

_____________________________________________________________
pi@lemaker ~/dablin/cmake $ make
Scanning dependencies of target dablin
[ 5%] Building CXX object CMakeFiles/dablin.dir/sdl_output.cpp.o
cc1plus: error: unrecognized command line option â-std=gnu++11â
make[2]: *** [CMakeFiles/dablin.dir/sdl_output.cpp.o] Error 1
make[1]: *** [CMakeFiles/dablin.dir/all] Error 2
make: *** [all] Error 2
pi@lemaker ~/dablin/cmake $

_________________________________________________________

"ka9q-fec" wurde von mir auch manuell installiert.


_______________________________________________________
Hardware ist ein BananaPi mit Raspian
PRETTY_NAME="Raspbian GNU/Linux 7 (wheezy)"
NAME="Raspbian GNU/Linux"
VERSION_ID="7"
VERSION="7 (wheezy)"
ID=raspbian
ID_LIKE=debian
ANSI_COLOR="1;31"
HOME_URL="http://www.raspbian.org/";
SUPPORT_URL="http://www.raspbian.org/RaspbianForums";
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs";


______________________________________________________________

Danke schonmal.

von w_weinmann - am 14.10.2016 08:26
DABlin sollte auch auf dem RPi laufen (getestet hab ich es nicht). Was eher das Problem sein könnte ist, mit der Leistung des RPi ein DAB-Ensemble zu empfangen. Falls du es jetzt nicht von einem SAT-Feed nimmst oder so.

Der Compiler hat anscheinend Probleme mit dem Parameter, der die Features von C++11 aktiviert. Bei CMake wird da aktuell ein anderer (neuerer) Parameter benutzt als beim normalen Makefile, zeigt sich gerade. Wahrscheinlich kann die Compiler-Version aus Debian 7 den noch nicht.

Du kannst also entweder das normale Makefile benutzen, was schon da ist, oder einfach in der CMakeLists.txt die Zeile 48 ändern von:

add_definitions(-std=gnu++11)

auf:

add_definitions(-std=c++0x)

Und die CMake-Variante nochmal von vorne durchlaufen.

von Basic.Master - am 14.10.2016 08:50
OK. Danke.
Ich bin zumidest mal ein paar Schritte weiter:

________________________________________________
pi@lemaker ~/dablin/build $ make
Scanning dependencies of target dablin
[ 5%] Building CXX object CMakeFiles/dablin.dir/sdl_output.cpp.o
[ 10%] Building CXX object CMakeFiles/dablin.dir/dabplus_decoder.cpp.o
[ 15%] Building CXX object CMakeFiles/dablin.dir/eti_source.cpp.o
[ 20%] Building CXX object CMakeFiles/dablin.dir/eti_player.cpp.o
In file included from /home/pi/dablin/eti_player.cpp:19:0:
/home/pi/dablin/eti_player.h:57:2: error: âsteady_clockâ in namespace âstd::chronoâ does not name a type
/home/pi/dablin/eti_player.cpp: In constructor âETIPlayer::ETIPlayer(bool, ETIPlayerObserver*)â:
/home/pi/dablin/eti_player.cpp:26:2: error: ânext_frame_timeâ was not declared in this scope
/home/pi/dablin/eti_player.cpp:26:33: error: âstd::chrono::steady_clockâ has not been declared
/home/pi/dablin/eti_player.cpp: In member function âvoid ETIPlayer::ProcessFrame(const uint8_t*)â:
/home/pi/dablin/eti_player.cpp:87:32: error: ânext_frame_timeâ was not declared in this scope
make[2]: *** [CMakeFiles/dablin.dir/eti_player.cpp.o] Error 1
make[1]: *** [CMakeFiles/dablin.dir/all] Error 2
make: *** [all] Error 2
pi@lemaker ~/dablin/build $

__________________________________________________
Jetzt hängt der ETIPlayer.

von w_weinmann - am 14.10.2016 09:24
@Basic.Master
Hallo,
ich bin jetzt wieder ein paar Schritte weiter.
Den Raspi3 neu aufgesetzt und mit apt-get upgrade alles auf den neuesten Stand gebracht.
Dann klappts auch mit
sudo apt-get install libmpg123-dev libfaad-dev libsdl2-dev
und mit ka9q-fec.
Noch schnell einen VNC Server drauf und mit Xrdp auf den Desktop.
So jetzt wartet DABlin auf eine "accessibility bus address" oder eine ETISource.
(Meine Erwartungshaltung war hier halt RTLSDR.lib und gut... :-))
Also habe ich mich an die dabtools gewagt um dab2eti zu kompilieren.
Nur leider brauchen die dabtools fftw3 und eine Hardwarempfehlung vom Kaliber Core2Duo & co,
Fftw3 ist dann nach 3 Stunden kompilieren auch abgebrochen.
Bin ich hier auf einem Holzweg oder ist die Reise mit dem Pi hiermit beendet?

von w_weinmann - am 15.10.2016 08:35
Ich habe nicht aufgegeben:
dab2eti läuft.

sudo apt-get install libfftw3-dev

Warum so kompliziert, wenn es auch einfach (als Paket geht..)
Nur wird kein Sync erreicht. Ich habe mit diversen Gains schon gespielt, mit T820 und oder Noxon-DAB Stick. Was anderes habe ich leider nicht.
______________________________________
Using device 0: Terratec NOXON DAB/DAB+ USB dongle (rev 1)
Found Fitipower FC0013 tuner
Supported gain values (23): -9.9 -7.3 -6.5 -6.3 -6.0 -5.8 -5.4 5.8 6.1 6.3 6.5 6.7 6.8 7.0 7.1 17.9 18.1 18.2 18.4 18.6 18.8 19.1 19.7
Tuned to 208064000 Hz.
Tuner gain set to 7.00 dB.
Waiting for sync...
startup_delay=1

_____________________________________________________________

Mal was anderes.
Ich habe einen SAT>IP Server (Zufälliger weise auch mit Sirius 5°E als Option :-) ). Könnte der die über 5°E abgestrahlten DAB Pakete empfangen (per vtuner o.ä.) und dann als ETIStream an dablin weiterleiten?

von w_weinmann - am 15.10.2016 14:15
Ich habe es jetzt auch mal probiert, auf meinem RPi 2. Mein Realtek-Stick hat den E4000-Tuner, der Autogain hat und relativ schnell synct (beim Noxon-Stick mit Tuner, der Gain braucht, braucht er am normalen PC bei mir immer eine halbe Minute oder so, bis er synct). Am normalen PC klappt es ganz normal, aber am RPi bekommt er ebenfalls keinen Sync. Die Auslastung durch dab2eti ist auch sehr hoch; wahrscheinlich reicht die Leistung eines einzigen Kerns da leider nicht - jemand müsste das mal auf Multithreading umschreiben...

Das mit Sirius sollte klappen. Dabei kannst du die Tools aus https://github.com/piratfm/eti-tools benutzen:

  • ts2na, um aus dem TS den ETI-Strom zu extrahieren (ist dann ETI-NA)
  • na2ni, um ETI-NA zu ETI-NI zu konvertieren, damit dablin es verarbeiten kann

Die Tools lassen sich bequem alle hintereinander über Pipes zusammenschalten.

von Basic.Master - am 15.10.2016 20:59
Bitte nicht lachen. Aber was machen die Zellen zwischen den Kopfhörern hier falsch:
____________________________________________________________
./na2ni -p 5060 -i rtsp://192.168.22.29/?src=4&freq=12303&pol=h&ro=0.35&msys=dvbs&mtype=qpsk&plts=off&sr=25547&fec=78 -o ~/testdab1
[1] 4711
[2] 4712
[3] 4713
[4] 4714
[5] 4715
usage: ./na2ni [-i ] [-o ]
[6] 4716
[7] 4717
[8] 4718
-bash: -o: Kommando nicht gefunden.
[1] Exit 1 ./na2ni -p 5060 -i rtsp://192.168.22.29/?src=4
[2] Fertig freq=12303
[3] Fertig pol=h
[4] Fertig ro=0.35
[5] Fertig msys=dvbs
[6] Fertig mtype=qpsk
[7]- Fertig plts=off
[8]+ Fertig sr=25547

______________________________________________________________________

Die berühmte Erwartungshaltung war mal wieder :
TS-Stream vom ganzen Transponder an na2ni, der dann aus dem PID 5060 den D1 National DAB Block extrahiert und in das File "testdab1" speichert.
Können die dabtools überhaupt mit rtsp oder http streams umgehen? (Laut nachgedacht..)
:gruebel:

von w_weinmann - am 16.10.2016 11:11
@Basic.Master
Riesen Dank für deinen Support.:spos:

Das Semikolin generierte die Forensoftware.
(und wird auch wieder hier generiert..)
So klappts:

wget -t 0 -c "http://satipserver/?src=4&freq=12303&pol=h&msys=dvbs&mtype=qpsk&sr=25547&fec=78&pids=0,1,16,18,20,5060,5070,1062,1061"; -O - | ~/eti-tools/ts2na -s 12 -p 1062 | ~/eti-tools/na2ni | dablin_gtk

:hot::spos:

Nur mit "nur PID 0,5060,1062" in der Streamanforderung wird es nix. Erst wenn ich PID 1,16,18,20 dazu nehme frisst ts2na mit na2ni den Stream.
Wichtig ist auch bei wget -t 0 -c sonnst bricht der Stream-Download ab bevor die 'gepipten' Anwendungen eine Chance haben.

Was auch nicht geklappt hat, ist der Umweg über meinen DVBViewer Recording Service. Der unterstützt nämlich entgegen der SAT>>IP Spezifikation kein HTTP. (Und wget kein RTSP).
Somit musste ich direkt über den SAT>>IP Server gehen.

Audio kommt auch problemlos aus dem PI.

Zur Scriptzeile für Nachmacher:
satipserver = IP des Servers.
PD 1062/1061 entsprechend des gewünschten Ensembels bei ts2na austauschen.
Alle absoluten Pfade z.B.(~/bla/na2ni) müssen auch entsprechend angepasst werden.

von w_weinmann - am 17.10.2016 07:33
@andimik:
Zum einen ist es die bekannte Taubheit der Realtek-Sticks.
Zum anderen liegt es an dab2eti selbst, was aktuell leider schneller als die Realtek-DLL unter Windows aufgibt. Denn momentan wird der Lock schon verloren, sobald auch nur ein einziger FIB die falsche Prüfsumme hat - egal, ob das eigentliche Programm nur noch mit Fehlern decodiert wird oder noch fehlerfrei ist.
Auf den Privatmux auf 11C in Hessen wird übrigens deswegen gar nicht erst gelockt (ohne Änderungen am Code), weil aus irgendeinem Grund (müsste man sich mal genauer ansehen) einer der FIBs immer durch die CRC-Prüfung fällt.

@w_weinmann:
Die AAC-Programme, die auf dem RPi3 nicht so klingen wie sie sollen, werden die auf dem PC korrekt abgespielt? Alternativ kann man dablin auch mit fdk-aac benutzen, dem AAC-Decoder von Fraunhofer - eventuell läuft der auf dem RPi besser. Wenn die Tonhöhe anders als normal ist, könnte das allerdings auch irgendein Bug von SDL2 auf dem RPi sein; müsste ich mal testen, wenn du mir da ein Programm als Beispiel nennen könntest.
Ja, das verstehe ich auch überhaupt nicht, wie man da dann Mono sendet, während auf UKW Stereo läuft...

von Basic.Master - am 17.10.2016 20:25
@andimik:
Wie das mit den Strichen ist, weiß ich nicht; unterhalb von Bits und Bytes habe ich leider nur sehr wenig Ahnung.
Der Airspy sieht interessant aus; ich bestell mir glaub ich mal die Mini-Ausgabe und gucke mal, ob man das irgendwie dranflanschen kann an dab2eti.

@w_weinmann:
In den Paketquellen von Ubuntu gibt es das Paket libfdk-aac-dev - bei Raspbian ist das nicht dabei. Daher nimm hier am besten die Lib-Version von OpenDigitalRadio selbst (bei mir war auf frischem Raspbian noch das Paket libtool nötig):

https://github.com/Opendigitalradio/fdk-aac

Mit fdk-aac funzen die AAC-Sender soweit problemlos auf dem RPi 2.

Den Fehler mit FAAD2 tritt bei mir auf dem RPi 2 ebenfalls auf, anscheinend bei Sendern mit HE-AAC bzw. HE-AAC v2 - AAC-LC scheint nicht betroffen zu sein. Es liegt daran, dass FAAD2 in den besagten Fällen eine falsche Samplingrate zurückgibt, die ich direkt an SDL weiterreiche. Deswegen klingt es dann nach "langsamem Tonband" und es gibt dauernd Buffer-Overflows. Warum da die falsche Samplingrate zurückkommt, muss ich mir jetzt mal ansehen.

von Basic.Master - am 20.10.2016 09:07
So, das Problem mit FAAD und RPi habe ich jetzt auf die exakte Ursache runterbrechen können:

Betroffen sind AAC-Sender mit SBR (wiegesagt HE-AAC und HE-AAC v2) auf Systemen, wo der char-Datentyp unsigniert ist. Denn in FAAD2 wurde im struct mp4AudioSpecificConfig die Variable sbr_present_flag als char definiert. In der mp4.c wird diese Variable dann mit -1 initialisiert. Das Problem dabei ist, dass NICHT automatisch davon ausgegangen werden kann, dass char signed ist. Auf meinem Ubuntu-System ist char signed, in Raspbian aber unsigned. Entsprechend wird diese Variable mit 255 statt mit -1 initialisiert. Ob sich bei anderen char-Variablen in FAAD2 ebenfalls Fehler ergeben weiß ich nicht. Wenn ich FAAD2 selbst kompiliere und ./configure ein CFLAGS=-fsigned-char voranstelle, sind chars signed und alles funktioniert wie erwartet. Aber das ist natürlich keine Lösung. Ich werde also wohl auf auf explizite Signalisierung (bisher: implizit) via AudioSpecificConfig umstellen.

von Basic.Master - am 20.10.2016 10:15
Zitat
Basic.Master
So, das Problem mit FAAD und RPi habe ich jetzt auf die exakte Ursache runterbrechen können:

In der Geschwindigkeit, wie das jetzt hier gefixt wurde, bleibt echt das schlechte Gewissen, dass ich dich bei der Analyse nicht schnell genug unterstützten konnte.
:spos::spos::spos:
Schnell mal neu gecloned und gebuilded:
Zumindest mit FAAD werden mit HE-AACv2 auf dem im 'SDL national' die Singels wieder mit 45 rpm und nicht mehr mit 33 abgespielt. :)
Zitat
Basic.Master
Auf meinem Ubuntu-System ist char signed, in Raspbian aber unsigned. Entsprechend wird diese Variable mit 255 statt mit -1 initialisiert.

D.h. auf dem PC wäre das mit hoher Wahrscheinlichkeit nicht aufgefallen.

Sag mal, wenn ich mir die Changes/Fixes auf dem GitHub von heute so bestaune.... das Programmieren ist bei dir kein Hobby mehr?
Die PROFINET Stack und Ethernet/IP Geschichten in denen ich gerade beruflich die Bits und Bytes zählen und jonglieren darf sind echt kalter Kaffee dagegen.

Der Test mit fdk-aac steht bei mir noch aus. Aber die anstrengende Arbeitswoche zehrt an meiner abendlichen Motivation.
:spos:Respekt und Danke für den schnellen Fix.

von w_weinmann - am 20.10.2016 18:39
So, die VM Läuft. Ich hatte eine uralte Version des VMPlayers als Grundlage genommen (2.x). Mit der Version 6.0.7 läuft dann das ganze. ;)

Den Buildprozess habe ich wie auf dem RPi ausgeführt und letztlich hat erstmal alles soweit geklappt. Nur streikt jetzt na2ni. Der Test über Einzel- Dateien ohne Pipe läuft ebenfalls nicht.
Irgendwas mit dem frame skipping in Zeile 543 läuft nicht wie es soll.


./dablinscript_BBC
INFO: Using pid: 0x0425 (1061)
WARN: Forwarded error correction disabled (NOT COMPILED)
--2016-10-22 09:34:53-- http://192.168.XX.XX/?src=4&freq=12303&pol=h&msys=dvbs&mtype=qpsk&sr=25547&fec=78&pids=0,1,16,18,20,5070,1061
Connecting to 192.168.XX.XX:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [video/MP2T]
Saving to: ‘STDOUT’

WARN: TS Discontinuity [ ] 0 --.-KB/s
- [ ] 2,20K 7,38KB/s INFO: E1 Sync found at bit: 250, inverted: yes
DEBUG: seek: B:31, b:2
DEBUG: pre-readed output 14 frames (32 bytes left):
DABlin v1.1.0 - capital DAB experience
Plays a DAB/DAB+ audio service from a frame-aligned ETI-NI stream.
https://github.com/Opendigitalradio/dablin

DEBUG: MULTIFRAME FILLING: 206
na2ni: na2ni.c:543: main: Assertion `eti_skip_frames>=0 && eti_skip_frames < FRAMES_IN_BLOCK' failed.
- [ ] 115,22K 151KB/s SDLOutput: using SDL version '2.0.4'
ETISource: reading from 'stdin'
ETISource: EOF reached!
- [ ] 135,12K 103KB/s in 1,3s


Cannot write to ‘-’ (Broken pipe).



^C...DABlin exits...



Das ist halt für mich der Grund warum sich Linux nicht richtig durchsetzt. Du machst 2x das Gleiche auf 2 Plattformen, und schon läuft was neues schief.
In der Windows Welt ist das irgendwie zwar recht proprietär gelöst, aber dafür läuft der Laden (meistens) oder bei Apple erst.... ( :confused: )

von w_weinmann - am 22.10.2016 07:48
Wow, ich bin glücklich wie ein kleines Kind. :-)

Gerade aus Friaul zurückgekehrt mit einer 1,3 GB großen, fehlerfreien ETI-Datei von 10D Slowenien, das entspricht ca. 90 min DAB. Die Italiener konnten dort leider mit dem Stick nur mit dem DAB Player unter Windows empfangen werden, für Linux waren die Signale zu schwach.

Mit dem E4000 gibt es mit dab2eti anscheinend immer Fehler, egal wie stark ein Signal empfangen wird. Meint ihr, wird das besser, wenn man bei so einem Stick manuell einen Gain eingibt?

Vielleicht liegt es aber auch an meinem Stick (Trekstor DVBTST2-a), ich werde mich nach gebrauchten umsehen (ab Donnerstag brauchen theoretisch 2,5 Mio Österreicher keinen DVB-T Stick mehr) oder auf die Airspy-Unterstützung hoffen ...

Gott sei Dank hab ich den Noxon DABStick v1 mitgenommen, mit einem der Parameter (einer aus der Mitte der Liste) braucht es zwar ca. 1-2 Minuten bis zu einem Lock, aber dann lief es ca. 90 min ohne Fehler durch.

Eine kurze EIT-Datei (28 MB, gezippt auf 14,4 MB) liegt auf http://andimik.bplaced.net/temp/slovenija_dab10d_eit-file.zip

Vielleicht wäre es in dablin_gtk möglich, einen Schieberegler für den Datei-Fortschritt einzubauen, damit man - sofern die Quelle ein eti-file ist - spulen kann.

von andimik - am 23.10.2016 20:40
Ich habe mir dab2eti jetzt nochmal genauer angesehen: Dort wird ein Ringbuffer benutzt, allerdings wird dort jedes Byte einzeln reingeschrieben und nachher rausgelesen. Was natürlich sehr ineffizient ist!:wall:
Ich habe den Ringbuffer deswegen jetzt umgebaut, so dass mehrere Bytes in einem Rutsch gelesen/geschrieben werden.

Damit sinkt die Auslastung bei mir um 10%, z.B. beim 11C München von ~30% auf ~20% oder beim 10D Bayern (hat ja weniger Programme) von ~25% auf ~15%. Eventuell läuft es damit auch auf dem RPi 3 (bitte mal testen!) - auf dem RPi 2 geht es bei mir jedenfalls weiter nicht. Bin mal gespannt, ob es damit auch auf meinem alten Laptop (Pentium M) laufen wird, auf dem es bisher nicht ging.

Die angepasste Version liegt hier:
https://github.com/basicmaster/dabtools

von Basic.Master - am 01.11.2016 10:07
Darf ich fragen, wie ich hier weiterkomme?


> dablin: error while loading shared libraries: libfec.so.3: cannot open shared object file: Error 40



Hm. Das ist doch dort:


mint@mint /usr/local/lib $ ls -l
total 112
lrwxrwxrwx 1 root root 11 Nov 4 20:22 libfec.so -> libfec.so.3
-rw-r--r-- 1 root root 105884 Nov 4 20:22 libfec.so.3
drwxr-xr-x 2 root root 4096 Nov 4 20:22 pkgconfig
drwxrwsr-x 4 root staff 57 Jul 28 12:26 python2.7
drwxrwsr-x 3 root staff 36 Jul 28 12:24 python3.5
mint@mint /usr/local/lib $ sudo chmod 777 libfec.so.3



Und:

So richtig kapiere ich nicht, was damit gemeint ist:

Zitat
dablin
insert USE_FDK-AAC=1 after the make call (when using Make)


Ist hier in einer Datei was zu ändern?

Komischerweise hab ich am ersten Laptop das alles ohne Probleme installieren können (Ubuntu), am zweiten hab ich Linux Mint ...

von andimik - am 04.11.2016 21:08
Zitat
andimik
Kannst du das auch noch auf dablin im Readme schreiben? Ohne dieses Posting hätte ich auf am Zweitrechner nicht geschafft ...

Sowas müsste direkt bei den dabtools rein; mit dablin hat das ja erstmal nix zu tun.

Zitat
andimik
Darf ich fragen, wie ich hier weiterkomme?


> dablin: error while loading shared libraries: libfec.so.3: cannot open shared object file: Error 40


Hm. Das ist doch dort:


mint@mint /usr/local/lib $ ls -l
total 112
lrwxrwxrwx 1 root root 11 Nov 4 20:22 libfec.so -> libfec.so.3
-rw-r--r-- 1 root root 105884 Nov 4 20:22 libfec.so.3
drwxr-xr-x 2 root root 4096 Nov 4 20:22 pkgconfig
drwxrwsr-x 4 root staff 57 Jul 28 12:26 python2.7
drwxrwsr-x 3 root staff 36 Jul 28 12:24 python3.5
mint@mint /usr/local/lib $ sudo chmod 777 libfec.so.3


Evtl. hilft hier, den Lib-Cache zu erneuern: sudo ldconfig
Ansonsten nochmal dablin compilieren (davor "make clean", damit alles sauber ist)

Zitat
andimik
Und:

So richtig kapiere ich nicht, was damit gemeint ist:

Zitat
dablin
insert USE_FDK-AAC=1 after the make call (when using Make)


Ist hier in einer Datei was zu ändern?

Komischerweise hab ich am ersten Laptop das alles ohne Probleme installieren können (Ubuntu), am zweiten hab ich Linux Mint ...

Nein, in einer Datei muss da nichts geändert werden (bzw. nicht mehr; früher war das mal so). Du hängst "USE_FDK-AAC=1" einfach hinter den make-Aufruf.

von Basic.Master - am 04.11.2016 23:53
Am Wochenende hab ich dablin plus alle benötigte Bibliotheken mal auf Debian8 (Jessie) gebaut. Brauchte nur drei Packete (ka9q-fec, dabtools und eben dablin) selbst kompilieren, alle anderen benötigten Packete (die hier verstreut über den Faden erwähnt wurden) gibt es als *_dev. Bei librtlsdr_dev musste ich eine neuere Version aus Testing nehmen, weil in der Jessie-Version die Abhängigkeit zu libusb fehlte. Die Erfahrungsberichte aus diesem Faden und natürlich die Arbeit von @Basic.Master haben da sehr gut geholfen!

Der praktische Erfolg/Nutzen hält sich aber bislang leider noch in Grenzen:

Mit dem Ran T+-Stick klappt ab und an die Sync bei 11C, 11D und 5C und mit Sync war auch der Ton am PC da. Allerdings nur mit einer festgehaltenen Stabantenne mit 1-2 m Antennenkabel an einer bestimmten Position im Zimmer. Und bei ner Bewegung war der Sync weg.

Mit ner DVB-T-Zimmerantenne am Fenster, die am Sailor Concerto mit 3-5 Meter Antennenkabel auch Ingolstadt und IRT ran holt, keine Chance, auch nur ein einziges Ensemle gelockt zu bekommen (Der Sailor hat dafür den nicht behebbaren Bug, dass 11D nicht geht).

Und mit dem anderen Stick mit F0013-Tuner hab ich mit manueller Gainsuche auch nichts gelockt bekommen. Die erfolgreichen Empfangspunkte mit dem Ran T+-Stick waren zu unzuverlässig.

Mit aktuellen und aktualisierten Raspbian basierend auf Jessie hab ich die gleiche Packetzusammenstellung gleiche mal auf einem Pi3 aufgesetzt/compiliert. Bauen klappte einwandfrei. Da hab ich aber nur erst mal dab2eti getestet (und nach /dev/null laufen lassen), das brauchte ca. 82% Prozessorleistung, ein Lock hat leider nicht geklappt, auch nicht direkt am Fenster.
[Edit: mit dem F0013-Tuner waren es beim Durchprobieren der Gain-Werte anfangs 35-40%, danach doch auch ca 80% - das wird wohl erst mit besserer Stromversorgung aussagefähiger]

Da hat der Pi3 gleich eine seiner Schwächen gezeigt: Bei 5m Ethernet-Kabel war der Pegel zu klein, mit 3m ging Ethernet. (Aber eben kein Lock)
[Edit: lag wohl am zu schwachen Netzteil, Versuche mit besseren werden folgen]

Ich werd da noch mit verschiedenen HF-technischen Abschirmungen experimentieren. Vielleicht braucht der PI auch eine bessere Stromversorgung bzw. eine separate/externe Spannungs-Versorgung für USB (Ethernet läuft ja auch über USB).
Wenn man dat2eti gelockt bekäme und das Ethernet den ETI-Datenstrom schafft (wieviel Bandbreite hat da so ein Ensemble) wäre der Pi3 vielleicht zum Emfang zu gebrauchen...

Mit Wavesink auf dem Android-Tablett zeigen beide Sticks im Flugmodus zumindest am Fenster bessere Empfangseigenschaften mit der Stabantenne. Die DVB-T-Antenne bringt da auch nichts.
Ist fehlende/falsche Anpassung ein Problem?

von Hagen - am 28.11.2016 18:57
@Hagen:
Ich benutze den gleichen Stick wie du, habe hier im Zimmer allerdings eine Dachantenne am Boden liegen, deren optimale Position sich durch Ausprobieren ergeben hat.

Am Wochenende habe ich mal ein älteres Notebook mit 1,6 MHz Pentium M ausprobiert. Bei ähnlicher Auslastung (bzw. so um die 60% erstmal) gibt es dann auch einen Lock und der FIC wird decodiert. Aber die einzelnen Subchannels nicht - wahrscheinlich braucht das nochmal mehr Leistung.

Deswegen glaube ich auch nicht, dass man aktuell dab2eti auf dem Pi3 flüssig laufen lassen kann. Ich habe es auch probiert, aber keinen (wirklichen) Lock hinbekommen. Jemand der sich sowohl in den unteren Schichten der Übertragung auskennt als auch erfahrenerer Programmierer ist, müsste sich dab2eti halt mal ansehen.

von Basic.Master - am 29.11.2016 18:52
Zitat
Basic.Master
@Hagen:
Ich benutze den gleichen Stick wie du, habe hier im Zimmer allerdings eine Dachantenne am Boden liegen, deren optimale Position sich durch Ausprobieren ergeben hat.
'ne wenigstens für VHF optimierte Yagi hilft da sicherlich.
Mit gleichen Stick meinst Du sicherlich den Ran T+. Der zieht so 50% mehr Prozessorlast. Vielleicht wegen Autogain? Das Logilink/Dexatec (?)-Teil bleibt meist bei so 35-40% im ersten Kern, nur sehr selten mal Ausschläge auf ca. 70-80%. Der Ran T+ ist dauerhaft bei 80%. Da ich allerdings bei keinem der beiden einen stabilen Lock hatte,ist unklar, was im Dauerbetrieb benötigt wird.
Ich lass da per Script mal alle unterstützten Gain-Werte über alle empfangbaren Packete durchprobieren und dann immer 2-3 Minuten warten, Ergebnis schaue ich mir heut oder morgen abend mal an. Mit ist nicht klar, ob der optimale Gain spezifisch für das konkrete Hardware-Exemplar ist oder ob auch die Empfangs-Frequenz und Feldstärkeschwankungen einen Einfluss haben. Gestern hatte ich beim Logilink zwei nicht reproduzierbare kurze Locks bei unterschiedlichen Gains gesehen.

Zitat
Basic.Master
Deswegen glaube ich auch nicht, dass man aktuell dab2eti auf dem Pi3 flüssig laufen lassen kann. Ich habe es auch probiert, aber keinen (wirklichen) Lock hinbekommen. Jemand der sich sowohl in den unteren Schichten der Übertragung auskennt als auch erfahrenerer Programmierer ist, müsste sich dab2eti halt mal ansehen.

Habe die Hoffnung noch nicht aufgegeben, mit dem Pi3 das hinzubekommen. Wenn das Problem die selbsterzeugten Eigenstörungen sind, wird es schwierig, aber anderenfalls sollte mit Abschaltung von WLan und Blauzahn (da muss ich mich aber noch schlau machen, wie das geht - beides Dinge, die ich bislnag nicht mit Linux nutze) mindestens die Empfangsqualität wie auf dem Tablet mit Wavesink hinzubekommen sein (dort wirkt der Flugmodus Wunder!) - wenn denn sich dab2eti merklich verbessert.
Dieses dab2eti scheint ja eher den Charakter einer Machbarkeitsstudie zu haben, die im Rahmen einer Diplomarbeit entstanden ist. Da ist mit Sicherheit noch eine Menge Optimierungpotential drin im Hinblick auf Fehlerkorrektur & Co. Bei den notwendigen Algorhytmen und deren Zusammenspiel kenne ich mich aber auch nicht aus. Eventuell gibt es noch andere Projekte, die ähnliches tun.

von Hagen - am 30.11.2016 15:18
dab2eti sagt mir die Gainwerte, aber die 26 Stück nacheinander durchzuprobieren und ein paar Minuten warten dauert noch... Jetzt wo das Antenne-Problem geklärt ist, geht das leichter (per Script) und ist aussagefähiger... Bislang sah ich bei unterschiedl. Gain-Werten unzuverlässige Locks.

Kurze Aussetzer mit sofortigen ReSync sind mit DVB-T-Antenne am Ran T+-Stick schon mal dabei, aber das bedarf noch längerfristiger Beobachtungen.

Ob der Stick Antennespannung liefert (wie ich aktuell annehme) oder aber die Aktivantenne bei mir passiv gute Ergebnisse liefert, ist noch unklar.

Am Fenster, wo die Antenne steht, gehen die Oly-Ensembles an anderen Geräten mit Vollauschlag. Mit deutlichen Aussetztern geht am Sailor tw. auch noch was ganz ohne Antenne.
Wenn es ein Übersteuerungsproblem des Antennensignals gewesen sein sollte, müsste vielleicht mit IRT unter externer Spannung noch was gehen. Davon aber bislang keine Spur.

von Hagen - am 01.12.2016 16:06
Habe nun per Script einiges durchprobiert und daraus ein paar Erkenntnisse:

Mein Logilink VG0002A scheint baugleich mit dem verbeiteten Noxxon-Stick, meiner meldet sich als "Dexatek DK DVB-T Dongle (Logilink VG0002A)" mit Fitipower FC0013 tuner.

Beim Logilink kann man als Gain beliebige ganze Zahlen als zehntel dB angeben, nicht nur die 26 angezeigten "unterstützten" Werte. Und damit findet man dann schnellere Locks, die (am PC) auch stabil bleiben!!!

Bis zu 20 Sekunden pro Gainwert-/Kanal-Kombi sollte man auf erfolgreichen Lock warten, wenns länger dauert sind die Locks meist instabil. Unbrauchbar sind Gains, wo gleich nach dem Lock die Sync verloren wird.

'n USB-Verlängerungskabel zw. PC und Stick schadet auch nicht, reduziert eher Eigen-Störungen des PC.

Es lohnt sich, zu probieren. Allerdings waren bislang die optimalen Locks Kanal-/Ensemble-abhängig. Habe aber noch nicht alle Kanal-/Gainbereiche durchprobiert. Z.B. 11A und 12A hab ich noch nicht gar durchprobiert, weiß deshalb nicht, ob es da mit schwächeren Signalen klappen könnte. Mit dem Ran T+ lockten die beiden gar nicht.

Bei dablin_gtk wär es deshalb schön, wenn man bei Sticks mit manueller Gaineingabe den optimalen Gain je Kanal in irgendeiner Konfig-Datei speichern könnte, so dass der beim Ensemble-Wechsel verwendet werden kann, oder zumindest in einem Dialogfeld bei Bedarf eingeben kann.

Der Ran T+ liefert scheinbar tatsächlich Antennenspannung für die Aktiveantenne, der Logilink nicht.

Beim Pi3 klappt wohl wegen der ungenauen Zeitbasis (keine RTC vorhanden) nichts brauchbares (nur instabile Locks).
Wenn man sich so'n Extra-Board mit RTC anflanscht und WLan+Bluetooth abschaltet klappt es vielleicht. Prozessorleistung ist sicher kein Handycap (ist scheinbar besser, als die meines PC). Aber mit Extraboard ist ein Charme der Einfachheit weg... Dann doch gleich ein spezialisiertes Board anflanschen.

Zitat
andimik
Also ich hab jetzt SDR-J unter Linux zum Laufen gebracht
SDR-J verspricht einiges mehr an nützlichen Hilfen bei der Suche nach Störquellen. Werd ich bei Gelegenheit mal ausprobieren.
Die sagen, dass es mit dem Pi2 geht. Hm, vielleicht ist der eh besser geeignet, als der Pi3.

Zitat
andimik
Aber ich hab auf https://github.com/mpbraendli/dabtools gelesen, dass dab2eti nun auch mit dem HackRF funktioniert, wenn auch noch nicht richtig. Anscheinend arbeiten da 5 Personen getrennt am gleichen Code ...
In dem Bildchen sehe ich 3 (parallele Zweige), Scheinbar hat der ursprüngliche Autor sich zurückgezogen, so dass nun an mehreren Clones parallel gebastelt wird. So wie ich das sehe, müsste zumindest mit dem Zweig mit HackRF (tendenziell IMHO neuer Masterzweig) eine Zusammenführung leicht machbar sein - die haben ja schon mal das mit dem (c)make auf Standard gebracht...

von Hagen - am 04.12.2016 15:47
.raw sind IMHO im Prinzip Wav-Dateien ohne Header und das was als PCM von der Soundkarte an den Computer übergeben wird.

Das ist auch das, was Du z.B. bei dablin mit der Option -p in der Standardausgabe bekommst und das (ohne Standard-Error) in eine Datei speicherst.
Die kannst Du z.B. in Audacity importieren und mußt die (hardware- & software-spezifische) Wortbreite/Byteorder angeben. Versuchs bei dablin-Ausgabe mit 32bit & Littleendian o.ä.

.sdr weiß ich (noch) nicht, ist aber möglicherweise dasselbe, könnte 64bit sein...

Mit sox z.B. kannst Du ähnlich vorgehen, Du mußt beim Konvertieren nach wav nur die richtigen Parameter der Eingabedatei angeben (im Zweifelsfall ausprobieren), damit das Programm weiß, wie die Daten struktueriert sind.

rtl_tcp und dab2eti können damit nichts anfangen, weil da die Daten gemuxed, d.h., in komplexen Datenstreams verpackt sind. Erst dablin filtert aus den Streams das komprimierte Audio (und Zusatzdaten) heraus und dekrompimiert mit verwendeten Bibliotheken.

von Hagen - am 14.12.2016 20:10
Die Linux Software müsste mal beim SNR zum DABPlayer aufschließen, damit sie für mich interessant wird.

Mit DABPlayer und NOXON Stick kommen ich auf ca. 8 dB SNR. Circa gleich empfindlich wie meine Radios mit Verona- und Verona 2- Modul. :spos:
Obwohl hier immer wieder behauptet wird, dass der NOXON Stick nicht empfindlich sein soll.

welle.io und NOXON Stick: ca. 2 dB SNR
welle.io und AirSpy MINI: ca. 6 dB SNR







von Unbekannter_DAB_Fan - am 02.04.2017 13:09
Zitat
Hagen
Zitat
martin2
Windows-Software
Wie hieß doch gleich die Überschrift dieses Fadens?

[Wenn hier über Open Source SW geredet wird, die auch auf Windows verfügbar ist, finde ich das ok. aber über reine Windows-SW wird anderswo genug geredet]


Ich möchte hiemit in aller Form alle User dieses Threads und Entschuldigung bitten, dass ich so unverschämt, ignorant, frech und unmöglich war, und eine recherchierte Information bezüglich einer eventuell brauchbaren Neuigkeit hier reingepostet habe.
Ich nehme eine 10 jährige Forumssperre freiwillig auf mich und versichere glaubhaft und wahrhaftig, dass ich auf hier keine wie immer geartete unpassende Information mehr absondern werde.

von martin2 - am 09.05.2017 19:28
Man kann seit der neuesten ODRDabMod Version nun auch ein raw-File rausbekommen, das für qt-dab oder welle.io geeignet ist.

Das ini-file sieht so aus


[input]
transport=file
source=dateiname.eti
loop=0

[modulator]
gainmode =1
rate=2048000

[output]
output=file

[fileoutput]
format=u8
filename=/tmp/dateiname.raw



Man startet das Ganze mit dem o.g. ini-File

odr-dabmod datei_von_oben.ini

Wenn man die aktuellste Version haben möchte


git clone -b next https://github.com/Opendigitalradio/ODR-DabMod.git

klont den Zweig 'next'


cd ODR-DabMod/
./bootstrap.sh
./configure --disable-output-uhd --disable-zeromq
make
sudo maake install

falls man es nicht in die Luft senden möchte/kann/darf.

von andimik - am 08.08.2017 15:01
Zur Information:
MySnip.de hat keinen Einfluss auf die Inhalte der Beiträge. Bitte kontaktieren Sie den Administrator des Forums bei Problemen oder Löschforderungen über die Kontaktseite.
Falls die Kontaktaufnahme mit dem Administrator des Forums fehlschlägt, kontaktieren Sie uns bitte über die in unserem Impressum angegebenen Daten.