Erschließung von Saraswati für den Betrieb auf einem Industrie PC, mit Upload per SSH+rsync auf Synology NAS

Da Du pip nicht per sudo ausgeführt hast, ist saraswati vermutlich unter ~/.local/bin gelandet, was standardmäßig nicht im Pfad ist.

Habe auch gerade die Installationsanleitung bei GitHub - hiveeyes/saraswati: Saraswati is a robust, multi-channel audio recording, transmission and storage system auf Vordermann gebracht.

Da Du pip nicht per sudo ausgeführt hast, ist saraswati vermutlich unter ~/.local/bin gelandet, was standardmäßig nicht im Pfad ist.

stimmt muß jetzt den PATH in die .bashrc schreiben Mint verwehrt mir aber den zugriff.

in der bash geht es aber zur not auch.

PATH=$PATH:/home/appli/bin
export PATH

[/bsoering@Bienenstand:~$ saraswati record --channel="testdrive source=autoaudiosrc"
2021-06-20 23:04:35,858 [saraswati.recorder] INFO   : Setting up audio recorder
2021-06-20 23:04:41,340 [saraswati.recorder] INFO   : Spool location: /home/bsoering/.local/share/saraswati/spool/recording_{channel}_{timestamp}_{fragment:04d}.mka
2021-06-20 23:04:41,341 [saraswati.recorder] INFO   : Chunk duration: 60 seconds
2021-06-20 23:04:41,341 [saraswati.recorder] INFO   : Maximum number of file fragments: 9999
2021-06-20 23:04:41,342 [saraswati.recorder] INFO   : Adding channel "testdrive" on audio source "autoaudiosrc"
2021-06-20 23:04:41,385 [saraswati.recorder] INFO   : Detected GStreamer>=1.14.4, using 'format-location-full'
2021-06-20 23:04:41,386 [saraswati.recorder] INFO   : Starting audio recorder
2021-06-20 23:04:41,386 [saraswati.recorder] INFO   : Starting pipeline: Pipeline(expression='autoaudiosrc ! audioconvert ! queue ! flacenc ! flactag ! flacparse ! muxer.audio_0 splitmuxsink name=muxer muxer=matroskamux max-size-time=60000000000 max-files=9999', gst=<Gst.Pipeline object at 0x7f382a8342c0 (GstPipeline at 0x18c8160)>)
2021-06-20 23:04:41,571 [saraswati.recorder] INFO   : Saving next audio fragment to "recording_testdrive_20210620T210441+0000_0000.mka"
2021-06-20 23:05:41,767 [saraswati.recorder] INFO   : Saving next audio fragment to "recording_testdrive_20210620T210541+0000_0001.mka"
2021-06-20 23:06:41,737 [saraswati.recorder] INFO   : Saving next audio fragment to "recording_testdrive_20210620T210641+0000_0002.mka"
2021-06-20 23:07:41,713 [saraswati.recorder] INFO   : Saving next audio fragment to "recording_testdrive_20210620T210741+0000_0003.mka"
2021-06-20 23:08:41,691 [saraswati.recorder] INFO   : Saving next audio fragment to "recording_testdrive_20210620T210841+0000_0004.mka"
2021-06-20 23:09:41,660 [saraswati.recorder] INFO   : Saving next audio fragment to "recording_testdrive_20210620T210941+0000_0005.mka"
2021-06-20 23:10:41,636 [saraswati.recorder] INFO   : Saving next audio fragment to "recording_testdrive_20210620T211041+0000_0006.mka"
2021-06-20 23:11:41,612 [saraswati.recorder] INFO   : Saving next audio fragment to "recording_testdrive_20210620T211141+0000_0007.mka"
2021-06-20 23:12:41,606 [saraswati.recorder] INFO   : Saving next audio fragment to "recording_testdrive_20210620T211241+0000_0008.mka"

schaut auf alle fälle schon mal gut aus.
morgen oder übermorgen bekomme ich die 2 Mikrofone die ich verwenden möchte, bin mal gespannt wie das mit 2 Stück wird. Momentan habe ich eine USB Soundblaster mit Mikrofon dran.

Den FTP Server richte ich morgen ein. Hatte die alte Fritzbox (7490 gebrandet) gegen eine 7590 getauscht, da die andere mir nicht genug Leistung und Einstellungen hatte.

Dieser Rechner kann zwar auch eine interne Festplatte beherbergen, aber da bin ich mir wegen der zur erwarteten innen Temperaturen nicht sicher wie lange die halten.

1 Like

Hi Michael,

Wunderbar. Ja, genau so soll das im störungsfreien Betrieb aussehen.

Ich habe noch ein paar weitere Verbesserungen und Bugfixes hinzugefügt, mittlerweile gibt es Saraswati in der Version 0.3.2. Was noch ansteht, ist, das Gerät sinnvoll per "systemd" unit file flugfähig zu bekommen. Damit müsstest Du es dann vollständig autonom im Feld laufen lassen können.

Auch wenn es bestimmt noch Bugs geben wird, glaube ich, dass die Infrastruktur nun auch schon im aktuellen 0.3er Release ausgereift genug ist, um robust und resilient im Feld betrieben werden zu können. Ich habe das Programm die letzten beiden Tage während der Entwicklung immer mal wieder längere Strecken laufen lassen und dabei auch “kein Netzwerk” und andere absichtlich herbeigeführte Fehlerszenarien berücksichtigt.

Viele Grüße,
Andreas.

Moin Andreas,
Bin jetzt dabei auch rsync zu testen. Nutze dafür eine Synology Diskstation DS212j ([en]) mit 2x 4TB Platten.

Hab da ein paar Probleme die wahrscheinlich auf de Einstellungen der Diskstation zurückzuführen sind.

  1. hab ich noch nicht rausgefunden, wie ich die Dateien die über rsync kommen in ein anderen Ordner als homes/benutzer/port/angegebenesVerzeichnis bekomme. Ja Port ist richtig, da schiebt er den Port der Verbindung mit rein. wenn ich den Port nicht mit angebe kommt keine Verbindung zu Stande.

  2. verlangt meine Diskstation ein Passwort welches ich nicht in den Optionen unter bekomme.

--upload="rsync://Benutzer@serveradresse:port" verlangt bei mir bei der ersten Verbindungsaufnahme nach einer manuellen Angabe des Passwortes mit einem Timeout nach 16 Sekunden. Bei verbindungsproblemen verlangt er dieses später dann wieder.
wenn ich jetzt --upload="rsync://Benutzer:Passwort@serveradresse:port" verwende bricht er mit einer Fehlermeldung ab.
.
Dateien Live, gibt es aber auch ohne FTP über eine Freigabe Connecting...
(dieser link ist nur ein Test. Werde Link und Text später wieder Ändern.)
Eine Info über die Downloadgeschwindigkeit wär aber evtl.
nicht schlecht.

Bei Connect with Synology Diskstation for uploading audio files using rsync over SSH · Issue #10 · hiveeyes/saraswati · GitHub habe ich ein paar Links herausgesucht, wie man SSH key-based Authentifizierung im DiskStation Manager (DSM), dem Betriebssystem für die NAS Boxen, konfiguriert. Schließlich ist die Basis “auch nur ein Linux”.

Da Du die NAS selber verwaltest und u.U. leicht entsprechend konfigurieren könntest, wäre das auf jeden Fall die bevorzugte Variante, die auch keine Änderungen an Saraswati erfordern würde.

Nein, das klappt nicht. Weder Passwort noch Portnummer lassen sich so an dieser Stelle bestimmen, denke ich. Nach dem :, das nach dem Hostnamen kommt, geht die Pfadadresse los, da hat keine Portnummer mehr Platz.

Für die Angabe der Portnummer bleiben also nur diese beiden Optionen:

  1. rsync Befehl modifizieren à la -e 'ssh -p <port> -i <path-to-key>', wie von @Diren vorgemacht und bei Developing Saraswati: A robust, multi-channel audio recording, transmission and storage system - #30 by Andreas diskutiert.

  2. Einstellungen in der .ssh/config Datei vornehmen (Port), wie von @roh bei Developing Saraswati: A robust, multi-channel audio recording, transmission and storage system - #23 by roh beschrieben.

Variante 1 bräuchte jedoch eine Änderung am Code, daher würde ich Variante 2 bevorzugen.

Du meinst beim Upload aus Sicht von Saraswati? Es gäbe da noch die Optionen --progress und --progress2 für rsync. Diese könnte man u.U. noch mit dazu nehmen, wenn sich dann die Ausgabe nicht mit den anderen Meldungen im Log von Saraswati in die Quere kommt.

Meine [diesen Link](http://gofile.me/6R2B4/7c8uKTV4x ). Das ist eine Freigabe auf den Speicherort auf dem Nas. Wenn ich hier von meinem Rechner runterlade läd er bei mir im lokalem Netz runter. Die Dateien sind zwar Müll, da das Micro defekt ist, aber die neuen kommen erst morgen an.

Achso. An dieser Stelle kann ich wahrscheinlich nicht weiterhelfen? Über diesen Link jedenfalls finde ich keinerlei verwertbaren HTTP Direktlinks, die man z.B. an wget weitergeben könnte. Diese Art des Dateizugriffs scheint also ausschließlich im Browser zu funktionieren?

Ja stimmt, deswegen wollte ich wissen, man da einigermaßen zügig runterladen kann.
Werde morgen Abend mal deine Tipps mit dem ssh Schlüsseln durcharbeiten. Ist mir momentan zu hoch und ich muss wieder früh raus. Danke nochmal schaut werde den Rechner morgen auf alle fälle schon mal an den Bienenstand schrauben, wenn die Micros da sind. Die restlichen Sachen bekomme ich denke ich auch ohne physischen zugriff hin.

Danke nochmal für die tolle Arbeit.

1 Like

Doch, geht gut, finde ich.

Das wäre toll, wenn das klappt.

Exzellent. Hauptsache das Gerät ist reboot-safe und kommt von selbst wieder ins Netz. Viel Erfolg dabei!

3 posts were merged into an existing topic: Developing Saraswati: A robust, multi-channel audio recording, transmission and storage system

It comes at just the right time.
My new microphones have just arrived.
I ordered 2 different ones to see if there were any differences.
hw:1 + hw:2
I was already wondering how to assign the individual microphones to the channels.

gst-device-monitor-1.0

Probing devices...


Device found:

	name  : Monitor of Eingebautes Tongerät Analog Stereo
	class : Audio/Source
	caps  : audio/x-raw, format=(string){ S16LE, S16BE, F32LE, F32BE, S32LE, S32BE, S24LE, S24BE, S24_32LE, S24_32BE, U8 }, layout=(string)interleaved, rate=(int)[ 1, 384000 ], channels=(int)[ 1, 32 ];
	        audio/x-alaw, rate=(int)[ 1, 384000 ], channels=(int)[ 1, 32 ];
	        audio/x-mulaw, rate=(int)[ 1, 384000 ], channels=(int)[ 1, 32 ];
	properties:
		device.description = "Monitor\ of\ Eingebautes\ Tonger\303\244t\ Analog\ Stereo"
		device.class = monitor
		alsa.card = 0
		alsa.card_name = "HDA\ Intel"
		alsa.long_card_name = "HDA\ Intel\ at\ 0xfeaf8000\ irq\ 27"
		alsa.driver_name = snd_hda_intel
		device.bus_path = pci-0000:00:1b.0
		sysfs.path = /devices/pci0000:00/0000:00:1b.0/sound/card0
		device.bus = pci
		device.vendor.id = 8086
		device.vendor.name = "Intel\ Corporation"
		device.product.id = 284b
		device.product.name = "82801H\ \(ICH8\ Family\)\ HD\ Audio\ Controller"
		device.form_factor = internal
		device.string = 0
		module-udev-detect.discovered = 1
		device.icon_name = audio-card-pci
		is-default = false
	gst-launch-1.0 pulsesrc device=alsa_output.pci-0000_00_1b.0.analog-stereo.monitor ! ...


Device found:

	name  : USB Microphone Mehrkanal
	class : Audio/Source
	caps  : audio/x-raw, format=(string){ S16LE, S16BE, F32LE, F32BE, S32LE, S32BE, S24LE, S24BE, S24_32LE, S24_32BE, U8 }, layout=(string)interleaved, rate=(int)[ 1, 384000 ], channels=(int)[ 1, 32 ];
	        audio/x-alaw, rate=(int)[ 1, 384000 ], channels=(int)[ 1, 32 ];
	        audio/x-mulaw, rate=(int)[ 1, 384000 ], channels=(int)[ 1, 32 ];
	properties:
		alsa.resolution_bits = 16
		device.api = alsa
		device.class = sound
		alsa.class = generic
		alsa.subclass = generic-mix
		alsa.name = "USB\ Audio"
		alsa.id = "USB\ Audio"
		alsa.subdevice = 0
		alsa.subdevice_name = "subdevice\ \#0"
		alsa.device = 0
		alsa.card = 1
		alsa.card_name = "USB\ Microphone"
		alsa.long_card_name = "MUSIC-BOOST\ USB\ Microphone\ at\ usb-0000:00:1d.0-2\,\ full\ speed"
		alsa.driver_name = snd_usb_audio
		device.bus_path = pci-0000:00:1d.0-usb-0:2:1.0
		sysfs.path = /devices/pci0000:00/0000:00:1d.0/usb2/2-2/2-2:1.0/sound/card1
		udev.id = usb-MUSIC-BOOST_USB_Microphone_MB-306-00
		device.bus = usb
		device.vendor.id = 1b3f
		device.vendor.name = "Generalplus\ Technology\ Inc."
		device.product.id = 2019
		device.product.name = "USB\ Microphone"
		device.serial = MUSIC-BOOST_USB_Microphone_MB-306
		device.form_factor = microphone
		device.string = hw:1
		device.buffering.buffer_size = 176400
		device.buffering.fragment_size = 88200
		device.access_mode = mmap+timer
		device.profile.name = multichannel-input
		device.profile.description = Mehrkanal
		device.description = "USB\ Microphone\ Mehrkanal"
		module-udev-detect.discovered = 1
		device.icon_name = audio-input-microphone-usb
		is-default = false
	gst-launch-1.0 pulsesrc device=alsa_input.usb-MUSIC-BOOST_USB_Microphone_MB-306-00.multichannel-input ! ...


Device found:

	name  : USB Audio Device Mono
	class : Audio/Source
	caps  : audio/x-raw, format=(string){ S16LE, S16BE, F32LE, F32BE, S32LE, S32BE, S24LE, S24BE, S24_32LE, S24_32BE, U8 }, layout=(string)interleaved, rate=(int)[ 1, 384000 ], channels=(int)[ 1, 32 ];
	        audio/x-alaw, rate=(int)[ 1, 384000 ], channels=(int)[ 1, 32 ];
	        audio/x-mulaw, rate=(int)[ 1, 384000 ], channels=(int)[ 1, 32 ];
	properties:
		alsa.resolution_bits = 16
		device.api = alsa
		device.class = sound
		alsa.class = generic
		alsa.subclass = generic-mix
		alsa.name = "USB\ Audio"
		alsa.id = "USB\ Audio"
		alsa.subdevice = 0
		alsa.subdevice_name = "subdevice\ \#0"
		alsa.device = 0
		alsa.card = 2
		alsa.card_name = "USB\ Audio\ Device"
		alsa.long_card_name = "USB\ Audio\ Device\ at\ usb-0000:00:1d.1-2\,\ full\ speed"
		alsa.driver_name = snd_usb_audio
		device.bus_path = pci-0000:00:1d.1-usb-0:2:1.0
		sysfs.path = /devices/pci0000:00/0000:00:1d.1/usb3/3-2/3-2:1.0/sound/card2
		udev.id = usb-0c76_USB_Audio_Device-00
		device.bus = usb
		device.vendor.id = 0c76
		device.vendor.name = "JMTek\,\ LLC."
		device.product.id = 160a
		device.product.name = "USB\ Audio\ Device"
		device.serial = 0c76_USB_Audio_Device
		device.string = hw:2
		device.buffering.buffer_size = 176400
		device.buffering.fragment_size = 88200
		device.access_mode = mmap+timer
		device.profile.name = mono-fallback
		device.profile.description = Mono
		device.description = "USB\ Audio\ Device\ Mono"
		module-udev-detect.discovered = 1
		device.icon_name = audio-card-usb
		is-default = true
	gst-launch-1.0 pulsesrc device=alsa_input.usb-0c76_USB_Audio_Device-00.mono-fallback ! ...


Device found:

	name  : Eingebautes Tongerät Analog Stereo
	class : Audio/Sink
	caps  : audio/x-raw, format=(string){ S16LE, S16BE, F32LE, F32BE, S32LE, S32BE, S24LE, S24BE, S24_32LE, S24_32BE, U8 }, layout=(string)interleaved, rate=(int)[ 1, 384000 ], channels=(int)[ 1, 32 ];
	        audio/x-alaw, rate=(int)[ 1, 384000 ], channels=(int)[ 1, 32 ];
	        audio/x-mulaw, rate=(int)[ 1, 384000 ], channels=(int)[ 1, 32 ];
	properties:
		alsa.resolution_bits = 16
		device.api = alsa
		device.class = sound
		alsa.class = generic
		alsa.subclass = generic-mix
		alsa.name = "ALC272\ Analog"
		alsa.id = "ALC272\ Analog"
		alsa.subdevice = 0
		alsa.subdevice_name = "subdevice\ \#0"
		alsa.device = 0
		alsa.card = 0
		alsa.card_name = "HDA\ Intel"
		alsa.long_card_name = "HDA\ Intel\ at\ 0xfeaf8000\ irq\ 27"
		alsa.driver_name = snd_hda_intel
		device.bus_path = pci-0000:00:1b.0
		sysfs.path = /devices/pci0000:00/0000:00:1b.0/sound/card0
		device.bus = pci
		device.vendor.id = 8086
		device.vendor.name = "Intel\ Corporation"
		device.product.id = 284b
		device.product.name = "82801H\ \(ICH8\ Family\)\ HD\ Audio\ Controller"
		device.form_factor = internal
		device.string = front:0
		device.buffering.buffer_size = 65536
		device.buffering.fragment_size = 32768
		device.access_mode = mmap+timer
		device.profile.name = analog-stereo
		device.profile.description = "Analog\ Stereo"
		device.description = "Eingebautes\ Tonger\303\244t\ Analog\ Stereo"
		module-udev-detect.discovered = 1
		device.icon_name = audio-card-pci
		is-default = true
	gst-launch-1.0 ... ! pulsesink device=alsa_output.pci-0000_00_1b.0.analog-stereo

I think the device.string = is the value i must seek.

The systemd service i will test, afterwards.

1 Like

I don’t know whether they will work. Look at this gst-launch-1.0 example:

Following that, I think you will have to use a Saraswati channel definition like this in /etc/default/saraswati:

SARASWATI_CHANNEL_1="channel1 source=pulsesrc device=alsa_input.usb-0c76_USB_Audio_Device-00.mono-fallback"

You can play around with the hardware by invoking pipelines interactively using gst-launch-1.0 before configuring Saraswati. For example:

gst-launch-1.0 pulsesrc device=alsa_input.usb-0c76_USB_Audio_Device-00.mono-fallback ! wavenc ! filesink location=test.wav

The other pulsesrc devices I am seeing from your output are:

pulsesrc device=alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
pulsesrc device=alsa_input.usb-MUSIC-BOOST_USB_Microphone_MB-306-00.multichannel-input
pulsesrc device=alsa_input.usb-0c76_USB_Audio_Device-00.mono-fallback

OK this works for me.

gst-launch-1.0 pulsesrc device=alsa_input.usb-0c76_USB_Audio_Device-00.mono-fallback ! filesink location=test.wav
bsoering@Bienenstand:~$ gst-launch-1.0 pulsesrc device=alsa_input.usb-0c76_USB_Audio_Device-00.mono-fallback ! filesink location=test.wav
Leitung wird auf PAUSIERT gesetzt ...
Leitung ist aktiv und erfordert keinen VORLAUF …
Leitung wird auf ABSPIELEN gesetzt ...
New clock: GstPulseSrcClock
Verzögerung neu verteilen …

^Chandling interrupt.
Interrupt: Leitung wird gestoppt ...
Execution ended after 0:00:30.500382395
Leitung wird auf PAUSIERT gesetzt ...
Leitung wird auf BEREIT gesetzt ...
Leitung wird auf NULL gesetzt ...
Leitung wird geleert ...

but in the bash with saraswati it does not work.

saraswati record --channel="testdrive source=alsa_input.usb-0c76_USB_Audio_Device-00.mono-fallback" --upload="rsync://User@xxx.xxx.xxx.xx:xx"
2021-06-22 22:02:25,692 [saraswati.recorder] INFO   : Setting up audio recorder
2021-06-22 22:02:25,838 [saraswati.recorder] INFO   : Spool location: /home/bsoering/.local/share/saraswati/spool/recording_{channel}_{timestamp}_{fragment:04d}.mka
2021-06-22 22:02:25,839 [saraswati.recorder] INFO   : Chunk duration: 300 seconds
2021-06-22 22:02:25,839 [saraswati.recorder] INFO   : Maximum number of file fragments: 9999
2021-06-22 22:02:25,840 [saraswati.recorder] INFO   : Adding channel "testdrive" on audio source "alsa_input.usb-0c76_USB_Audio_Device-00.mono-fallback"
Traceback (most recent call last):
  File "/home/bsoering/.local/bin/saraswati", line 8, in <module>
    sys.exit(cli())
  File "/home/bsoering/.local/lib/python3.8/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/home/bsoering/.local/lib/python3.8/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/home/bsoering/.local/lib/python3.8/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/bsoering/.local/lib/python3.8/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/bsoering/.local/lib/python3.8/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/home/bsoering/.local/lib/python3.8/site-packages/saraswati/cli.py", line 234, in record
    recorder.add_channel(name=channel.name, source=channel.source)
  File "/home/bsoering/.local/lib/python3.8/site-packages/saraswati/recorder.py", line 175, in add_channel
    pipeline_gst = Gst.parse_launch(pipeline_expression)
gi.repository.GLib.Error: gst_parse_error: unexpected reference "alsa_input" - ignoring (0)

by using sudo saraswati setup --systemd
The log is too long to show it here.

Jun 22 22:28:11 Bienenstand sh[263882]: rsync error: syntax or usage error (code 1) at options.c(2369) [client=3.1.3]
Jun 22 22:28:11 Bienenstand sh[263882]: 2021-06-22 22:28:11,331 [saraswati.uploader] ERROR  : Error while uploading
Jun 22 22:28:11 Bienenstand sh[263882]: Traceback (most recent call last):
Jun 22 22:28:11 Bienenstand sh[263882]:   File "/usr/local/lib/python3.8/dist-packages/saraswati/uploader.py", line 49, in run
Jun 22 22:28:11 Bienenstand sh[263882]:     self.upload()
Jun 22 22:28:11 Bienenstand sh[263882]:   File "/usr/local/lib/python3.8/dist-packages/saraswati/uploader.py", line 106, in upload
Jun 22 22:28:11 Bienenstand sh[263882]:     raise ChildProcessError(message)
Jun 22 22:28:11 Bienenstand sh[263882]: ChildProcessError: Rsync command failed: rsync  version 3.1.3  protocol version 31
Jun 22 22:28:11 Bienenstand sh[263882]: Copyright (C) 1996-2018 by Andrew Tridgell, Wayne Davison, and others.
Jun 22 22:28:11 Bienenstand sh[263882]: Web site: http://rsync.samba.org/
Jun 22 22:28:11 Bienenstand sh[263882]: Capabilities:
Jun 22 22:28:11 Bienenstand sh[263882]:     64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
Jun 22 22:28:11 Bienenstand sh[263882]:     socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
Jun 22 22:28:11 Bienenstand sh[263882]:     append, ACLs, xattrs, iconv, symtimes, prealloc
Jun 22 22:28:11 Bienenstand sh[263882]: rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
Jun 22 22:28:11 Bienenstand sh[263882]: are welcome to redistribute it under certain conditions.  See the GNU
Jun 22 22:28:11 Bienenstand sh[263882]: General Public Licence for details.
Jun 22 22:28:11 Bienenstand sh[263882]: rsync is a file transfer program capable

Config File:

# Use real hardware devices
SARASWATI_CHANNEL_1='channel1 source=alsasrc device="hw:0"'
SARASWATI_CHANNEL_2='channel2 source=alsasrc device="hw:1"'
# SARASWATI_CHANNEL_3='channel3 source=alsasrc device="hw:2"'
# SARASWATI_CHANNEL_4='channel4 source=alsasrc device="hw:3"'

# Use sine wave generators
# SARASWATI_CHANNEL_10="testdrive1 source=audiotestsrc wave=3 freq=200"
# SARASWATI_CHANNEL_11="testdrive2 source=audiotestsrc wave=3 freq=400"
# SARASWATI_CHANNEL_12="testdrive3 source=audiotestsrc wave=3 freq=600"
# SARASWATI_CHANNEL_13="testdrive4 source=audiotestsrc wave=3 freq=800"

# Configure spool directory
SARASWATI_SPOOL_PATH=/var/spool/saraswati

# Configure chunking
# SARASWATI_CHUNK_DURATION=300

# Configure rsync upload
SARASWATI_UPLOAD_TARGET="rsync://MKO1640@192.168.188.70:saraswati/"
SARASWATI_UPLOAD_INTERVAL=300

Please use the full GStreamer source string, "pulsesrc device=" is part of it, like:

saraswati record --channel="testdrive source=pulsesrc device=alsa_input.usb-0c76_USB_Audio_Device-00.mono-fallback"

This might look weird, but it’s true.

Bummer. Can you investigate the root cause by using the full rsync command printed into the log file just before this error message and play around with the options?

If you can also share the full, unmodified output of "[saraswati.uploader] DEBUG : Invoking command: xxx" from your log file privately with me, I might be able to spot the error.

Maybe it is related to the --files-from option in any way? See, for example, rsync not using --files-from option? - Unix & Linux Stack Exchange.

Verbesserungen an der Dokumentation

Bei Running Saraswati in production » Configure file upload ist nun detailliert beschrieben, wie die SSH Verbindung konfiguriert werden sollte, um einen autonomen Betrieb von Saraswati als Systemdienst zu ermöglichen.

Bei Connect with Synology Diskstation for uploading audio files using rsync over SSH · Issue #10 · hiveeyes/saraswati · GitHub habe ich ein paar Links gesammelt, wie man eine Synology NAS so konfiguriert, so dass sie SSH key-based authentication ermöglicht.

Bei Running Saraswati in production » Configure audio channels ist nun besser beschrieben, wie man die zur Verfügung stehenden Audiogeräte herausfinden kann.

gst-device-monitor-1.0 | grep gst-launch

Obacht

Bitte führe vor weiteren Tests erst einmal folgendes aus, um die neueste Version von Saraswati zu installieren und notwendige Änderungen beim Anlegen des Benutzers saraswati anzuwenden:

sudo pip3 install saraswati --upgrade
sudo saraswati setup --systemd

Andernfalls hat der Benutzer saraswati kein Home-Verzeichnis, /home/saraswati würde also fehlen. Somit lässt sich dort das .ssh/-Verzeichnis nur schwer bestücken, das wird jedoch bei der Konfiguration Running Saraswati in production » Configure file upload (s.o.) benötigt.

2 Likes

Es hat nochmal ein etwas Schweiß gekostet, Saraswati 0.5.0 per rsync mit dem Nas per ssh-key zu verbinden. Bin nach dieser Anleitung vorgegangen. Ich musste ich allerdings trotzdem noch einen Home Ordner für den automatisch angelegten Benutzer “saraswati” anlegen, da ich sonnst nicht den generierten Key unter /home/saraswati/.ssh hinzufügen konnte.
Keine Ahnung, ob der fehlende Benutzer-Ordner aufgrund des Updates von Saraswati 0.4.1 auf 0.5.0 fehlte, oder generell nicht mit installiert wird.
Zu guter Letzt musste ich noch die Tipps von diesem Blog nutzen, um die Rechte auf die Ordner und die Key-Dateien weiter zu begrenzen, so das der Key auch endlich akzeptiert wurde.

Ich lasse ihn bis heute Abend/Nacht nochmal so vor sich hin laufen, und morgen früh geht der Kasten zu den Bienen.

Dank Glasfaseranschluß mit DS-Lite funktioniert der FTP Server noch nicht richtig, Arbeite mit meinem Internetanbieter an einer Lösung. Port Control Protocol (PCP) könnte das Problem lösen, sobald eingerichtet und Freigeschaltet.

Daher wird es erstmal wieder nur ein Link auf den Fileserver geben. Da der Rechner bei mir in der Wohnung steht und auch Private Gespräche aufzeichnet auch erst bei den Bienen.

Es fallen aber mehrere GB pro tag an. Daher sollten wir nach den ersten Test Phasen die Pausen zwischen den Aufzeichnungen etwas vergrößern.
Platz ist momentan 4Tb, dürfte bei 2 Kanälen aber nur knapp ein Jahr reichen.
Gespeichert wird soweit ich gesehen habe in UTC-Zeit. Die Daten sind also Aktuell, auch wenn es auf den ersten Blick nicht danach aussieht.

@Andreas Echt genial was Du da alles auf die schnelle alles Eingebaut hast.
ab und an bekomme ich aber noch eine Fehlermeldung

Jun 25 01:43:51 Bienenstand sh[177228]: Dropped 306054 samples. This is most likely because downstream can't keep up and is consuming samples too slowly.)

Könnte aber auch daran gelegen haben, das ich noch etwas mit dem Computer gearbeitet hab und in Firefox Favoriten zu bee-observer.org und swarm.hiveeyes.org angelegt hatte sowie einige Dateien aus dem früheren Aufzeichnungen gelöscht habe.

@clemens @Diren @caro @weef würdet ihr eigentlich das Micro mittig auf den Gitterboden legen oder doch etwas besser z.B im Deckel platzieren. Habe momentan auch nur ein Micro pro Volk geplant, ursprünglich geplant waren ja glaube ich 4 (Sourround?). Welches ich aber persönlich für erstmal zu viel halte, es fehlen dann ja Vergleichsmöglichkeiten zu anderen Völkern.
Ein paar von den Rechnern hätte ich aber auch noch zur Verfügung falls sich der ein oder andere dazu entscheiden würde soetwas ebenfalls bei sich zu installieren.

1 Like