Sundtek Support Forum

Deutsch => Sundtek MediaTV Pro => Dokumentation => Thema gestartet von: kaelectro am Mai 06, 2014, 02:35:10 Nachmittag

Titel: Darkice Fehlermeldung mit FM Radio
Beitrag von: kaelectro am Mai 06, 2014, 02:35:10 Nachmittag
Die Installation von Sundtek MediaTV Pro III auf meinem Raspberry Pi Model B lief problemlos und ich bekomme ein Audiosignal.

Betriebssystem: Debian Whezzy

Bisherige Schritte:
$ wget http://www.sundtek.de/media/sundtek_netinst.sh
$ chmod 755 sundtek_netinst.sh
$ sudo ./sundtek_netinst.sh
$ /opt/bin/mediaclient -f 105700000 -m RADIO -d /dev/radio0 -t 0

$ /opt/bin/mediaclient -m RADIO -d /dev/radio0 --mute off

$ cat /dev/radio0

wird der Streaminhalt angezeigt.

$ cat /dev/radio0 | aplay
wird der Audiostream hörbar ausgegeben.

$ sudo apt-get install darkice
Darkice installiert.

$ sudo /etc/darkice.cfg
Konfigurationsdatei erstellt mit folgendem Inhalt:
[general]
duration        = 0        # Dauer der Encodierung in Sekunden. 0 für endlos.
bufferSecs      = 5         # Größe des internen Buffer in Sekunden.
reconnect       = yes       # Wiederverbinden bei Verbindungsverlust.

[input]
device          = /dev/radio0  # OSS DSP Soundkarten-Eingang
sampleRate      = 48000     # Samplerate in Hz. Gängige Werte: 11025, 22050, 44100, 48000
bitsPerSample   = 16        # Bits pro Sample
channel         = 2         # Kanäle. 1 = mono, 2 = stereo

[icecast2-0]
bitrateMode     = abr        # Bitraten Modus: Mittlere Bitrate
format          = vorbis     # Format des Streams: Ogg Vorbis
bitrate         = 128         # Bitrate des Streams der zum Server gesendet wird
server          = localhost  # Hostname oder IP-Adresse des Icecast Servers
port            = 8000       # Port des Icecast Servers, gewöhnlich 8000
password        = XXXXX     # Passwort des Benutzers source auf dem Icecast Server
mountPoint      = stream     # Einebindepunkt des Streams am Server
name            = IceTest    # Metadaten: Name der Radio Station
description     = IceText    # Metadaten: Beschreibung der Radio Station
url             = http://... # URL der Radio Station
genre           = Rock       # Metadaten: Genre der Radio Station
public          = no         # Veröffentlichung der Metdaten zur Radio Station

Fehlermeldung:

Using config file: /etc/darkice.cfg
Using OSS DSP input device: /dev/radio0
Using POSIX real-time scheduling, priority 98
DarkIce: OssDspSource.cpp:202: can't set format [16]^


Brauche bitte einen Lösungsansatz
MfG
KaElectro
Titel: Re:Darkice Fehlermeldung mit FM Radio
Beitrag von: Sundtek am Mai 06, 2014, 02:42:59 Nachmittag
Das Problem findet sich in Darkice;


z.B.:

src/VorbisLibEncoder.cpp
Util::conv( bitsPerSample, b, processed, shortBuffer, isInBigEndian());

src/TwoLameLibEncoder.cpp
        Util::conv16( b,
                      processed,
                      leftBuffer,
                      rightBuffer,
                      inChannels,
                      isInBigEndian());



./src/OssDspSource.cpp (Zeile 202):
    i = format;
    if ( ioctl( fileDescriptor, SNDCTL_DSP_SETFMT, &i) == -1 ||
         i != format ) {

        close();
        throw Exception( __FILE__, __LINE__, "can't set format", i);
    }




Kurze Problembeschreibung, die Audiodaten kommen als AA BB AA BB vom USB Device am PC an.
Nun versucht darkice hier die CPU native Bytedarstellung anzufordern was wir nicht machen können (auf dem Raspberry PI wäre das dann BB AA BB AA etc.).


Sprich du musst Darkice umstellen damit es Little Endian verwendet, der Endiancheck in Util::conv müsste auf "false" gesetzt werden.

        Util::conv16( b,
                      processed,
                      leftBuffer,
                      rightBuffer,
                      inChannels,
                      false);

und der Audiocheck kann dann auch ignoriert werden:
./src/OssDspSource.cpp (Zeile 202):

aus:
    if ( ioctl( fileDescriptor, SNDCTL_DSP_SETFMT, &i) == -1 ||
         i != format ) {
mach folgendes (i!=format) entfernen:
    if ( ioctl( fileDescriptor, SNDCTL_DSP_SETFMT, &i) == -1) {
Titel: Re:Darkice Fehlermeldung mit FM Radio
Beitrag von: kaelectro am Mai 09, 2014, 07:40:32 Vormittag
Moin,

anbei meine Änderungen...

VorbisLibEncoder.cpp
Util::conv( bitsPerSample, b, processed, shortBuffer, false);

TwoLameLibEncoder.cpp
       Util::conv16( b,
                      processed,
                      leftBuffer,
                      rightBuffer,
                      inChannels,
                      false);

OssDspSource.cpp
    i = format;
    if ( ioctl( fileDescriptor, SNDCTL_DSP_SETFMT, &i) == -1
       ) {
        close();
        throw Exception( __FILE__, __LINE__, "can't set format", i);
         }

Kompiliert
Gleiche Fehler Erscheinung wie vorher.
Kpl Inhalt der IF Schleife auskommentiert...


OssDspSource.cpp
    i = format;
    if ( ioctl( fileDescriptor, SNDCTL_DSP_SETFMT, &i) == -1
       ) {
/*        close();
        throw Exception( __FILE__, __LINE__, "can't set format", i);
*/    }

Neuer Fehler, kann die Channel nicht setzten:
Channel Anweisungen auskommentiert.


    if ( ioctl( fileDescriptor, SNDCTL_DSP_CHANNELS, &u) == -1 ||
         u != getChannel() ) {
        
/*        close();
        throw Exception( __FILE__, __LINE__, "can't set channels", u);
*/    }


Neuer Fehler, kann die SampleRate nicht setzten:
SampleRate Anweisungen auskommentiert.


    if ( ioctl( fileDescriptor, SNDCTL_DSP_SPEED, &u) == -1 ) {

/*      close();
        throw Exception( __FILE__, __LINE__,
                         "can't set soundcard recording sample rate", u);
*/    }

Neuer Fehler, Read Error mit Abbruch -
Der Audio Stream auf /dev/radio0 ist auch nicht mehr da. Einen Neustart des Audiostreams geht nicht.  

/opt/bin/mediaclient -f 105700000 -m RADIO -d /dev/radio0 -t 0
/opt/bin/mediaclient -m RADIO -d /dev/radio0 --mute off

Er zeigt zwar an das der Audiostrem enabled ist aber es kommt mit

cat /dev/radio0

nichts.

Das einzige was hilft "reboot" und dann von vorne.

Brauche den Radiostick dringent um FM Radio via icecast zu streamen.

Gibt es keine Möglichkeit das Device zu konvertieren und ein neues zu generien?

Nehme ich beim Darkice-Sstream einfach das Device /dev/dsp0 kommt zwar nur ein Rauschen aber der Stream funktioniert

Habe ich auch mit LIVEICE probiert. Bricht ab weil der Encoder das Format nivht unterstürzt bei /dev/radio0. Mit /dev/dsp0 funktioniert alles reibungslos...




Titel: Re:Darkice Fehlermeldung mit FM Radio
Beitrag von: Sundtek am Mai 09, 2014, 09:59:43 Vormittag
Ah ich sehe es erst jetzt, ja es muss /dev/dsp0 verwendet werden bei Darkice; /dev/radio0 ist kein OSS Device. Das dort PCM Daten (inklusive Header) rauskommen ist eine Erweiterung in unserem Treiber, /dev/dsp0 gibt nur Rohdaten aus (ohne PCM Header) - und diese werden üblicherweise von Applikationen weiterverwertet

Du hast schon alles richtig gemacht, teste dein Setup ggf. erst mal auf dem PC dort klappt es nämlich.
Wenn du es vom Raspberry PI Streamen willst kann es sein das du die Endianess anpassen musst (falsche Endianess -> Rauschen); die Information in einem vorherigen Post sollte dir da aber weiterhelfen.
Titel: Re:Darkice Fehlermeldung mit FM Radio
Beitrag von: kaelectro am Mai 12, 2014, 03:40:42 Nachmittag
Habe alles auf /dev/dsp0 geändert.

Darkice1.2 mit mp3 kompiliert.

alles gestartet und der Stream lief wunderbar.

Nach ca. 3-5 Minuten hört der Stream /dev/radio0 oder /dev/dsp0 einfach auf.

Ausgabe per
cat /dev/radio0

RIFF$▒WAVEfmt ▒▒▒data▒
Der Cat Befehlt beendet sich auch nicht automatisch.
 
Darkice läuft weiter und bricht nicht ab.

In den Logfiles ist mir nicht auffälliges entgegengesprungen.

Ist das auf dem RasPi normal, eine CPU Auslastung von 100% bei zwei Prozessen 
2303 /opt/bin/mediasrv -d --pluginpath="opt/bin
2304 /opt/bin/mediasrv -d --pluginpath="opt/bin
mit htop angezeigt ?

Noch einen Tip?
Titel: Re:Darkice Fehlermeldung mit FM Radio
Beitrag von: Sundtek am Mai 12, 2014, 04:43:26 Nachmittag
Logfile einschalten und das Ganze neu starten

echo "loglevel=min" > /etc/sundtek.conf

Ich nehme an du hast USB Probleme, oder ein Problem mit dem USB Controller Treiber.

Du verwendest das auf einem Raspberry PI Version A oder B?
Ich denke wir könnten das hier auch damit testen.
Titel: Re:Darkice Fehlermeldung mit FM Radio
Beitrag von: kaelectro am Mai 15, 2014, 11:33:52 Vormittag
moin,

anbei die neusten Erkenntnisse:

RasPi neu gestartet.

die Logdatei mediasrv.log

2014-05-15 10:37:40 [548] requesting to tune to frequency: 105700000 182
2014-05-15 10:37:41 [548] unmute fm radio
2014-05-15 10:37:58 [548] Starting up Multimedia Framework (May 10 2014 14:43:06        )
2014-05-15 10:37:58 [549] Starting service processor (PID 549)
2014-05-15 10:37:58 [548] Detected DVB version.h
2014-05-15 10:37:58 [548] API Version: 5.4
2014-05-15 10:37:58 [548] Running on Linux (3.10.25+)
2014-05-15 10:37:58 [548] unable to open /dev/misc
2014-05-15 10:37:58 [548] scanning devices
2014-05-15 10:37:58 [548] scanning for drivers
2014-05-15 10:37:58 [548] scanning for plugins
2014-05-15 10:37:58 [548] Starting up device manager
2014-05-15 10:37:58 [548] scanning devices done
2014-05-15 10:37:58 [548] attached devices:
2014-05-15 10:37:58 [549] Autostarting scripts in /etc/sundtek/
2014-05-15 10:37:58 [549] executed all available items
2014-05-15 10:37:58 [548] registering ID: 0
2014-05-15 10:37:58 [548] Using dynamic configuration
2014-05-15 10:37:58 [548] DTV1 Transfer is set to: Bulk
2014-05-15 10:38:03 [548] Using flat remote remote control layout
2014-05-15 10:38:03 [548]
2014-05-15 10:38:03 [548] Allocation using pg for type 65678
2014-05-15 10:38:03 [548] attaching DVB-T, DVB-C, DVB-T2
2014-05-15 10:38:03 [548] demodulator successfully attached (DVB-C)!
2014-05-15 10:38:04 [548] This device uses the third generation Tuner
2014-05-15 10:38:04 [548] Power up demodulator
2014-05-15 10:38:09 [548] Allocation using pg for type 16
2014-05-15 10:38:10 [548] SETTING PAL/SECAM
2014-05-15 10:38:10 [548] SETTING PAL/SECAM
2014-05-15 10:38:10 [548] attaching video decoder
2014-05-15 10:38:10 [548] SETTING PAL/SECAM
2014-05-15 10:38:10 [548] Setting frequency: 245250000
2014-05-15 10:38:10 [548] Setting analogTV Parameters
2014-05-15 10:38:10 [548] Setting PAL-B
2014-05-15 10:38:11 [548] attaching radio module
2014-05-15 10:38:12 [548] requesting to tune to frequency: 87900000 4
2014-05-15 10:38:12 [548] Setting Radio Volume: 219
2014-05-15 10:38:12 [548] configure urbs for bulk
2014-05-15 10:38:12 [548] Registering OSS emulation
2014-05-15 10:38:12 [548] registering: adapter0/0
2014-05-15 10:38:12 [548] registered virtual: /dev/dvb/adapter0/frontend0
2014-05-15 10:38:12 [548] registered virtual: /dev/dvb/adapter0/demux0
2014-05-15 10:38:12 [548] registered virtual: /dev/dvb/adapter0/dvr0
2014-05-15 10:38:12 [548] registered virtual: /dev/dsp0
2014-05-15 10:38:12 [548] registered virtual: /dev/video0
2014-05-15 10:38:12 [548] registered virtual: /dev/vbi0
2014-05-15 10:38:12 [548] registered virtual: /dev/radio0
2014-05-15 10:38:12 [548] registered virtual: /dev/rds0
2014-05-15 10:38:12 [548] Initializing Remote Control Support
2014-05-15 10:38:12 [548] This system does not support memory mapped USB transfe        rs
2014-05-15 10:38:12 [548] Once your system reaches the latest kernel version the
2014-05-15 10:38:12 [548] performance will increase automatically
2014-05-15 10:38:12 [548] registered virtual: /dev/mediainput0
2014-05-15 10:38:12 [548] Initialized MediaTV Pro III USB (EU)
2014-05-15 10:38:12 [548] Driver loaded within 14141 milliseconds
2014-05-15 10:38:12 [548] Initial devicescan done, switching detection mode
2014-05-15 10:38:27 [548] Enabling Standby

Radio mit Darkice Stream gestartet:

2014-05-15 11:09:19 [548] Waking up device
2014-05-15 11:09:19 [548] requesting to tune to frequency: 105700000 182
2014-05-15 11:09:19 [548] Initializing data transfer
2014-05-15 11:09:19 [548] unmute fm radio
2014-05-15 11:09:19 [2268] Starting audio processor (PID 2268)
2014-05-15 11:09:19 [2268] initializing audio in audio processor
2014-05-15 11:09:19 [2268] Starting audio service
2014-05-15 11:09:19 [2268] loaded local alsa driver
2014-05-15 11:09:19 [2268] alsa-audio: opening "default" interface
2014-05-15 11:09:19 [2268] Opening Alsa in blocking mode
2014-05-15 11:09:19 [2268] resetting audio pipe


3min:19 später endet die Übertragung von /dev/dsp0 oder auch /dev/radio0.

kein Eintrag im Log...

Es ist ein RasPi Model B.

Habe einen aktiven USB HUB zwischen geschaltet, keine Änderung.
Titel: Re:Darkice Fehlermeldung mit FM Radio
Beitrag von: Sundtek am Mai 15, 2014, 01:56:26 Nachmittag
okay du streamst, versuche Audio die lokale Audiowiedergabe vorher auszuschalten

/opt/bin/mediaclient -c external -d /dev/radio0

Kannst du uns dein darkice paket oder binary mailen (kontakt at sundtek de)?

Dann werden wir das hier mit unserem RPI testen.
Titel: Re:Darkice Fehlermeldung mit FM Radio
Beitrag von: kaelectro am Mai 23, 2014, 06:05:16 Nachmittag
Ich habe mir mal die Prozesse angeschaut.
Muss der Mediasrv so oft in dieser Auslastung laufen?

(http://www.kahlen-sicherheitstechnik.de/upload/raspi_mediasrv.gif)
Titel: Re:Darkice Fehlermeldung mit FM Radio
Beitrag von: Sundtek am Mai 23, 2014, 07:39:07 Nachmittag
Wie sieht denn die CPU Auslastung aus? Ist der ondemand Scheduler eingestellt und die CPU hinuntergetacktet?

Bei einer (durch ondemand Scheduler) extrem hinuntergetackteten CPU kann das wohl sein, was zeigt denn cat /proc/cpuinfo an?

Der Regelfall ist jedoch ein sehr geringer CPU Verbrauch für FM Radio! 99% ist bestimmt nicht in Ordnung, aber ich nehme an das der Ondemand Scheduler bei dir im Spiel ist und für die 99% sorgt.
Titel: Re:Darkice Fehlermeldung mit FM Radio
Beitrag von: kaelectro am Mai 24, 2014, 11:24:26 Vormittag
Ich habe meine Lösung gefunden!!!

Mein RasPi ist mit der TURBO Einstellung auf 1GHz getaktet.
Ich habe ein neu aufgesetztes System verwendet.

Mit HTOP untersucht wann die Überlast eintritt.

$ /opt/bin/mediaclient -f 105700000 -m RADIO -d /dev/radio0 -t 0
gestartet.

Alles OK!!!

$ /opt/bin/mediaclient -m RADIO -d /dev/radio0 --mute off
gestartet.

100% Auslastung :-(

$ /opt/bin/mediaclient -m RADIO -d /dev/radio0 --mute on

Alles OK!!!

$ /opt/bin/mediaclient -c external -d /dev/radio0
gestartet.

Alles OK!!!

$ /opt/bin/mediaclient -m RADIO -d /dev/radio0 --mute off
gestartet.

Alles OK!!!

Wenn ich zuerst den Mute off setze und dann den external dann hat dies keine positive Auswirkung, es bleibt bei 100%.


Ich lasse es jetzt per Script beim Bootvorgang aufrufen und die Auslastung der mediasrv bleibt bei 1%, so finde ich es OK.

$ /opt/bin/mediaclient -f 105700000 -m RADIO -d /dev/radio0 -t 0
$ /opt/bin/mediaclient -c external -d /dev/radio0
$ /opt/bin/mediaclient -m RADIO -d /dev/radio0 --mute off

Als Streaming Client setzte ich den "ICES" jetzt ein - der FUNZT wunderbar - bin sehr zufrieden.

Ein LOB an euren Support!!!!!