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

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

Hi Michael,

schön dass es geklappt hat. Viel Erfolg bei den Aufzeichnungen!

Die entsprechende Automatisierung kam erst mit Saraswati 0.5.0 dazu. Eigentlich hätte damit folgender Befehl ausreichen müssen:

Sag gern Bescheid, falls es (z.B. mit einer frischen Installation von Saraswati) noch nicht so klappt wie gewünscht. Die Idee von "sudo saraswati setup --systemd" war in der Tat, die manchmal fehleranfälligen manuellen Aktionen zum Anlegen eines Benutzers inkl. der Vergabe der entsprechenden Dateisystemrechte abzukürzen. Also genau die Schritte, bei denen es bei Dir u.U. ein wenig gehakt hat. Es wäre praktisch, wenn wir das für zukünftige Anwendungsfälle so schick hinkriegen, dass die Installation “wash & go” und fehlerfrei über die Bühne gehen kann. Merci!

Viele Grüße,
Andreas.

Ja, ich würde tatsächlich das Micro in Bodennähe anbringen, da sollte mehr “Informationsgehalt” als anderswo in der Beute herrschen, etwa Flugbetrieb Räuberei.

Beim Gitterboxen hast du vermutlich etwas mehr “noise” aus der Umwelt als am anderen Stellen, und bei manchen Testaufnahmen hatte ich den Eindruck Resonanzen vom Gitter zu hören. Dennoch würde ich es da versuchen.

Hatte es zunächst am Boden probiert, leider hat es einigen Bienen nicht ganz so sehr gefallen. habe sie mit so einem Schaumstoffhaube direkt auf den Gitterboden gelegt, da ich auch ab und an das Einflugloch mit Schaumstoff einenge war ich der Meinung, das die Bienen Dieses Material ignorieren würden. Die Soundfiles Sprachen doch eine andere Sprache. 5 Bis 10 Bienen waren der Meinung das das Teil dort nicht hin gehört und haben es versucht Richtung Ausgang zu schleifen. Durch die Lautstärke dieser Bienen direkt am Mikro ist es nahezu unmöglich irgendwas anderes zu hören.
Wenn die Bienen mal nachließen waren die Nebengeräusche wie Vogelgezwitscher, Hundegebell usw. doch recht störend. Ohne die Schutzhülle ließen die Bienen auch keine Ruhe.

Entweder werden die Mikrofone als störendes Objekt erkannt, oder sie erzeugen irgendwelche Geräusche.

Habe Die Mikrofone jetzt deshalb erstmal im Deckel platziert Ich habe in meinen Beuten oben keine Folie sondern ein Abdeckgaze so das die Geräusche doch recht gut durchkommen sollten.
Werde es später aber auch nochmal mit einem Gedruckten Gehäuse für die Mikrofone versuchen.

Zugangsdaten für den FTP Server gibt es erstmal auf Nachfrage per PN.


Aktuell sind ein Ableger und ein kleines Wirtschaftsvolk angeschloßen. Für er die beiden Wunschvölker muß ich noch eine Halterung für den Computer Konstruieren, da die 1,5m der Mikrofone doch arg kurz sind. Stehen tut er momentan auf einer leeren Reservebeute.

1 Like

Auch im aktuellen (Werbe-)Video von Beep wird das Mikro am Flugloch platziert. Ist ein I2S-mic das natürlich kleiner als ein normales ist, daher passt es in einen Lockenwickler.

Meine sind auch klein, sie haben einen Durchmesser von ca 4mm und sind 12-15mm lang. Ich habe nur leider keine Locken, also auch keine Lockenwickler :roll_eyes:
Die kleine Größe kann sicherlich auch ein Grund sein, so das die Bienen meinen könnten sie könnten/müssten sie weg/aufräumen.
Werde mal schauen, ob ich Montag ein paar Lockenwickler besorgen kann.

:-))

https://www.holtermann-shop.de/Koeniginnenzucht/Zusetzkaefige/Imgut---Lockenwickler--Chico-.html

2 Likes

4 posts were merged into an existing topic: System für kontinuierliche Audio-Aufzeichnung (BOB Projekt, Phase 1)

Das system läuft momentan schon seit ein paar Tagen stabil und recht sauber. Bisher gesammelte Daten sind 28GB.
Der 2.Kanal hinkt ab und an mit dem Rsync ein paar Stunden hinterher. Derzeit fehlen noch knapp 1GB Daten auf dem NAS.
Auch gibt es ein kleines Problem mit de USB Mikrofonen. Bei einem Neustart werden sie nicht immer vom Gstreamer erkannt. Sie müssen dann eimal kurz abgezogen und wieder angesteckt werden. Bin jetzt dabei einen weiteren PC fertig zu machen, dann kann ich auch schauen, ob ich es hin bekomme auf .ogg umzustellen. Der erste “naive” Versuch einfach in der recorder.py von muxer=matroskamux auf muxer=oggmux umzustellen ist natürlich gescheitert.

1 Like

So ein Phänomen habe ich bei einem Windows-Rechner mit einer Maus auch, die über einen USB-Hub angebunden ist. Wenn die Maus über den Hub angeschlossen ist funktioniert sie nach einem Neustart des Rechners nicht und muss ab- und wieder angesteckt werden. Wenn sie direkt an einem USB-Port des Rechners hängt funktioniert es.

Wie sind deine Mics angeschlossen? Direkt am Rechner, könntest du ggf. auch USB-Ports tauschen oder laufen die über einen Hub?

Der Rechner hat unten 3 x USB und oben unter der roten Antennenabdeckung einen weiteren Service-USB in dem mein Funk Maus/Tastatur Adapter steckt. Die 2 Microfone stecken direkt in den unteren 3 USB-Ports. Sie sind aber mit einem Wasserdichtem Deckel überdeckt. So muß man den Deckel immer aufschrauben, wenn man sie abstecken muß.
Mit lsusb werden die Microfone auch immer erkannt. Er erkennt dabei aber auch 2 interne Linux USB Hubs .
Mit meinem Testrechner könnte ich das Problem aber bisher nicht reproduzieren.
Habe da saraswati zwar schon installiert aber den saraswati-dienst bisher noch nicht gestartet.
Ich tippe mal ins Blaue und sage das der Dienst startet bevor der USB fertig initialisiert ist und es daher nicht funktioniert. Es könnte also reichen alsa und Gstreamer vor saraswati neu zu starten. Hatte gestern Abend im Dunkeln keine Muße evtl. erneut zu den Rechner raus zu müssen, und hab es daher nicht nochmal ausprobieren wollen.

1 Like

Hi Michael,

vielen Dank für Deine Rückmeldungen.

Dazu habe ich bei Start Saraswati service after USB sound devices have been registered · Issue #12 · hiveeyes/saraswati · GitHub ein Ticket angelegt.

Viele Grüße,
Andreas.

Laut linux - In systemd service file, how do I say "after USB is ready"? - Super User müsste man den Mechanismus wohl am besten individuell auf die Zahl der USB-Busse abstimmen.

Wie sieht denn Dein Verzeichnis unter /dev/bus/usb oder /sys/bus/usb aus, wenn alle Audiogeräte ordnungsgemäß aktiv sind?

Aus der Hüfte heraus habe ich nun https://github.com/hiveeyes/saraswati/commit/357b14898 eingereicht. Saraswati würde damit (saraswati.path) erst dann gestartet, nachdem das Verzeichnis /dev/bus/usb nicht (mehr) leer ist. Für Audiogeräte am USB Bus könnte es so funktionieren, mir gefällt es aber trotzdem noch nicht 100%ig, weil es auf Systemen ohne USB Audiogeräte zu kurz greift.

Trotzdem ist es so erstmal bis auf weiteres Bestandteil von Saraswati 0.6.0, die Systemd Unit Konfiguration kann also nach dem Upgrade per "sudo pip3 install saraswati --upgrade" via "sudo saraswati setup --systemd" entsprechend aktualisiert werden.

Danach das System zum Testen am besten komplett neustarten und berichten, ob es damit vielleicht schon gut klappt. Vielen Dank!

Wenn alles läuft schaut es so aus, es schaut aber genauso aus wenn es nicht läuft.

bsoering@Bienenstand:/sys/bus/usb/devices$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 003: ID 04d8:0c02 Microchip Technology, Inc. AR1100 HID-MOUSE
Bus 005 Device 002: ID 1a02:bad8 Advantech DLoG DLT-V83xx
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 003: ID 1b3f:2019 Generalplus Technology Inc. USB Microphone
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 003: ID 0c76:160a JMTek, LLC. USB Audio Device
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
bsoering@Bienenstand:~$ lsusb -t
/:  Bus 05.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
    |__ Port 1: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 1: Dev 2, If 1, Class=Application Specific Interface, Driver=, 12M
    |__ Port 2: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 12M
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
    |__ Port 1: Dev 3, If 0, Class=Audio, Driver=snd-usb-audio, 12M
    |__ Port 1: Dev 3, If 2, Class=Audio, Driver=snd-usb-audio, 12M
    |__ Port 1: Dev 3, If 3, Class=Human Interface Device, Driver=usbhid, 12M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
    |__ Port 1: Dev 3, If 0, Class=Audio, Driver=snd-usb-audio, 12M
    |__ Port 1: Dev 3, If 1, Class=Audio, Driver=snd-usb-audio, 12M
    |__ Port 1: Dev 3, If 2, Class=Human Interface Device, Driver=usbhid, 12M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/8p, 480M
bsoering@Bienenstand:/dev/bus/usb$ ls
001  002  003  004  005
bsoering@Bienenstand:/dev/bus/usb$ cd /sys/bus/usb
bsoering@Bienenstand:/sys/bus/usb$ ls
devices  drivers  drivers_autoprobe  drivers_probe  uevent
bsoering@Bienenstand:/sys/bus/usb$ cd devices
bsoering@Bienenstand:/sys/bus/usb/devices$ ls
1-0:1.0  2-1:1.0  3-0:1.0  3-1:1.2  5-0:1.0  5-1:1.1  usb1  usb4
2-0:1.0  2-1:1.1  3-1      3-1:1.3  5-1      5-2      usb2  usb5
2-1      2-1:1.2  3-1:1.0  4-0:1.0  5-1:1.0  5-2:1.0  usb3
bsoering@Bienenstand:/sys/bus/usb/devices$ 

Habe es aber anscheinend über diese Anleitung hinbekommen. War anscheinend ein Fehler in Linux selbst, nach Installation von ein paar Updates. Auf alle fälle startet saraswati jetzt auch selbsttätig ohne Probleme. Nur in der GUI unter Menu/Einstellungen/Klang/Eingang werden die Soundkarten bis zum ersten Restart von saraswati nicht angezeigt. Womit man aber durchaus leben kann.

1 Like

Wunderbar, dann könnten die bei Erschließung von Saraswati für den Betrieb auf einem Industrie PC, mit Upload per SSH+rsync auf Synology NAS - #43 by Andreas beschriebenen Verbesserungen der Systemd Unit Konfiguration vielleicht wirklich hilfreich sein:

1 Like