Beiträge von phx

    Puh. Sah auf den ersten Blick alles korrekt aus im log von doorpi. Mit gefährlichem Halbwissen stelle ich aber mal folgende Vermutung auf:
    1) aplay -L zeigt an, dass "default" auf auf pulseaudio geht
    2) In der doorpi.ini hast du jedoch nicht "ALSA: default device" als capture_device und playback_device ausgewählt
    3) Die in der doorpi.ini explizit gewählte Soundkarte "ALSA: USB PnP Sound Device" ist zwar die richtige Karte, wird aber nicht über Pulseaudio geroutet.


    Vielleicht reicht es schon, in der doorpi.ini wieder "ALSA: default device" für beide devices zu nehmen. Default in alsa ist pulseaudio, sobald es korrekt geladen ist, wie aplay -L ja bei dir anzeigt, und in Pulseaudio selbst sind die sinks/sources dann auf die richtige USB-Karte eingestellt.
    Ich habe bei mir von Anfang an die interne Karte deaktiviert (in /boot/config.txt dtparam=audio=on auskommentiert -> #dtparam=audio=on), um ein Problem weniger zu haben ;)


    Weitere Anmerkungen zur doorpi.ini:
    - "mic_gain_db = 0" habe ich bei mir nicht gesetzt. Ist Mikrofonverstärkung von 0 gewollt?
    - "call = ..." bei [AdminNumbers] sieht deplaziert aus, aber vielleicht kenn ich nur die Option nicht. Und "* = active" macht in Kombination mit den nachfolgend explizit aufgeführten Nummern keinen Sinn.

    Evtl. ist es einfach zu leise oder auf mute?


    Du kannst mit "alsamixer" auf der Konsole alles durchgehen. Mit F6 die Karte auswählen, F4 für Aufnahme (geht bei mir seltsamerweise nicht) oder F5 für Alle und den Pfeiltasten durchblättern ... alles was nach Micro, gain, In/Input riecht mal überprüfen.

    Dein raspbian ist fast identisch zu meinem. Ich sehe hier keinen Fehler. Dass in system.pa ausschließlich aec_args bei mir Anführungszeichen hat ... sollte nun wirklich keinen Unterschied machen.


    Ich habe mal alle meine Konfigurationsdateien angehängt. Insb. die vollständige pulseaudio Konfiguration (/etc/pulse/*)
    In /systemstate.txt ist die Ausgabe von allen Befehlen die mir gerade eingefallen sind. Insb. am Dateiende die Reche auf die von pulseaudio genutzten Verzeichnisse. Pulseaudio läuft bei mir nicht als root, sondern unter dem Nutzer pulse.


    Weitere Hinweise (evtl. liegt es an der autospawn option?)
    https://www.linuxquestions.org…r-pavucontrol-4175610042/
    -> ... evtl. pulseaudio mit -vvvv starten und dann schauen, was passiert, wenn du pactl aufrufst.
    https://askubuntu.com/question…o-pulseaudio-failed-error

    Hallo en123,


    ich würde gern helfen ... evtl. habe ich auch etwas in meiner Anleitung vergessen ... aber ein paar mehr Informationen braucht es schon zur Fehlersuche (s. post 124).


    Vielleicht spuckt "sudo journalctl -eu pulseaudio" einen Hinweis aus.
    Alternativ kannst du folgendes versuchen: pulseaudio beenden mit "sudo systemctl stop pulseaudio" oder pulseaudio -k (je nach startart) und danach pulseaudio manuell mit mehr log-output starten "sudo pulseaudio -vvv --system"



    Ergänzung:
    In /etc/pulse/client.conf ist bei mir alles auskommentiert und ich habe bei mir auch kein X-server/GUI laufen.

    Wenn jemand die SD-Karte rauszieht kommt er auch an den WLAN-Key. Wichtig ist, wie das Netzwerk am anderen Ende abgesichert ist.


    Wird die Platte abgenommen, so wird das erkannt (Mikroschalter) und ein Kommando abgeschickt. Anschließend ist kein öffnen der Tür mehr möglich.
    Das bringt mich aber auf die idee noch ein keep-alive einzubauen!


    Mit mehr Platz hätte man auch mehr machen können. Z.B. eine zweite Platte darunter mit einem Breifkastenschloss oder ähnlichem.
    Mir reicht es so. Muss ja nicht sicherer sein, all die Glasscheibe daneben ...

    sparkie:
    Doorpi verwendet linphone4raspberry 3.9.0. Deine Ergebnisse sind daher vermutlich nicht ganz vergleichbar.
    Gut zu wissen, dann linphone mit Echo-Unterdrückung grundsätzlich funktioniert. Über doorpi hatte es bei mir jedoch absolut keinen Effekt.

    Code
    pi@rpi3:~ $ sudo pip list | grep linphone
    linphone4raspberry 3.9.0
    
    
    pi@rpi3:~ $ dpkg -L linphone
    dpkg-query: Paket »linphone« ist nicht installiert




    emilio20:
    Versuch doch mal mit einer unveränderten Standardkonfiguration von pulseaudio anzufangen, ob dann pactl funktioniert und pulseaudio läuft.


    Je nachdem wie pulseaudio gestartet wurde, kannst du kontrollieren ob pulseaudio läuft und ggf. den log-level hoch drehen:


    Per Komandozeile:

    Code
    pi@rpi3:~ $ ps aux | grep pulse
    pulse      662  0.0  2.7 105724 25708 ?        S<sl Sep02   2:19 /usr/bin/pulseaudio

    Logging hoch drehen mit --log-level=4



    Oder über systemd in /etc/pulse/daemon.conf log-level=debug

    Code
    pi@rpi3:~ $ sudo systemctl status pulseaudio
    ● pulseaudio.service - PulseAudio Sound System
       Loaded: loaded (/etc/systemd/system/pulseaudio.service; enabled; vendor preset: enabled)
       Active: active (running) since Sun 2018-09-02 18:57:39 CEST; 3 months 19 days ago
     Main PID: 662 (pulseaudio)
       CGroup: /system.slice/pulseaudio.service
               └─662 /usr/bin/pulseaudio

    Log ansehen mit journalctl -fe -u pulseaudio

    Hallo emilio20,


    du bist auf dem richtigen Weg. Was du eintragen musst, zeigt dir pactl list short sinks (bzw. pactlr list short sources) an.

    Code
    $ pactl list short sinks
    0       alsa_output.platform-soc_sound.analog-stereo    module-alsa-card.c      s16le 2ch 16000Hz       SUSPENDED
    1       doorpisink      module-echo-cancel.c    float32le 2ch 16000Hz   SUSPENDED


    Bei dir fehlen wohl die Rechte für deinen Nutzer, um auf pulseaudio zuzugreifen. Schau evtl. nochmal in meinem Post unter Installation/Konfiguration pulseaudio nach.

    Code
    $ cat /etc/group | grep pulse
    audio:x:29:pi,pulse
    pulse:x:116:
    pulse-access:x:117:pi,root,pulse

    Entweder mit adduser oder manuell mit "sudo vigr" (und danach dasselbe nochmals mit "sudo vigr -s") die Gruppen bearbeiten.



    Und sichergehen, dass pulseaudio auch läuft ;)

    Code
    $ ps aux | grep pulse
    pulse      662  0.0  2.5 105724 23820 ?        S<sl Sep02   1:58 /usr/bin/pulseaudio



    In der doorpi.ini spielt sich eigentlich nicht viel ab. Hier alles bzgl. Audio:

    Wenn das Standard-ALSA-Gerät passt, dann ist alles gut.

    Code
    $ aplay -L
    ...
    default
        Playback/recording through the PulseAudio sound server
    ...

    Hm, steht eigentlich dabei ;)
    Das elektronische Schloss im Türblatt braucht eine 24V-Versorgung.
    Daneben hängen noch einige 24 Koppelrelais der Haussteuerung dran, aber das ist ein anderes Projekt ...

    Mal geraten, stimmen denn die Versionen und Zugriffsrechte?


    So sieht das bei mir aus, ebenfalls mit Raspbian stretch (nicht lite):


    pi@rpi3:/usr $ find . -name "*linphone*"
    ./local/lib/python2.7/dist-packages/linphone4raspberry-3.9.0.dist-info
    ./local/lib/python2.7/dist-packages/linphone
    ./local/lib/python2.7/dist-packages/linphone/unittests/linphonetester.pyc
    ./local/lib/python2.7/dist-packages/linphone/unittests/linphonetester.py
    ./local/lib/python2.7/dist-packages/linphone/linphone.so
    ./local/lib/python2.7/dist-packages/linphone/share/linphone
    ./local/lib/python2.7/dist-packages/linphone/share/sounds/linphone
    ./local/lib/python2.7/dist-packages/doorpi/sipphone/from_linphone.pyc
    ./local/lib/python2.7/dist-packages/doorpi/sipphone/linphone_lib
    ./local/lib/python2.7/dist-packages/doorpi/sipphone/from_linphone.py



    pi@rpi3:/usr $ ls -alF ./local/lib/python2.7/dist-packages/linphone
    insgesamt 9828
    drwxr-sr-x 4 root staff 4096 Aug 17 2017 ./
    drwxrwsr-x 24 root staff 4096 Aug 17 2017 ../
    -rw-r--r-- 1 root staff 56 Aug 17 2017 __init__.py
    -rw-r--r-- 1 root staff 231 Aug 17 2017 __init__.pyc
    -rwxr-xr-x 1 root staff 822716 Aug 17 2017 libavcodec.so.53*
    -rwxr-xr-x 1 root staff 133104 Aug 17 2017 libavutil.so.51*
    -rwxr-xr-x 1 root staff 175000 Aug 17 2017 libswscale.so.2*
    -rwxr-xr-x 1 root staff 8901868 Aug 17 2017 linphone.so*
    drwxr-sr-x 5 root staff 4096 Aug 17 2017 share/
    drwxr-sr-x 6 root staff 4096 Aug 17 2017 unittests/

    1) Abmessungen der Aussparung 68x290x30mm (BxHxT).
    Die Abdeckungen sind im 80mm-Raster, d.h. die gesamte Abdeckung ist 80mm breit und 320mm hoch. Aufgrund der seitlichen Überdeckung von nur 6mm, musste ich auch so kleine Magnete nehmen.


    2) Ja, es sind die drei von die aufgezählten abnehmbaren Abdeckungen. Alle auf der Unterseite identisch mit den ferromagnetischen 0,6mm Plättchen beklebt, im Abstand von ca. 20mm. Lange Streifen haben sich mit der Blechschere zu stark gebogen und waren danch nicht mehr ganz flach zu biegen. Nur bei der unteren Blindabdeckung sind die Magnete enger zusammen, damit die Abdeckung bei energischen Klinglern mit dicken Daumen auch sicher nicht verrutscht ;). Das Ganze, wie oben geschrieben, mit 1mm selbstklebenden Moosgummi eingefasst. Lässt sich mit einem scharfen Cuttermesser relativ gut schneiden.


    3) Der Abstand zwischen den Abdeckungen is ca. 0,6mm-0,7mm. Der Moosgummi ist umgedreht eingeklebt als "Schattenfuge". Ich wollte die Selbstklebeschicht nicht exponiert lassen in den Fugen. Die weißen Streifen oben und unten hinter der mittleren Abdeckungen sind die nicht abgezogene Schutzfolie. Diese Moosgummistreifen stehen ca. 0,8mm über. Die Abdeckungen lassen sich mit etwas Nachdruck verschieben, womit der Abstand justiert werden kann. Der Moosgummi ist weich genug, um kleine Toleranzen auszugleichen. Die 0,6mm Blechplättchen könnten auch zum einstellen oder kontrollieren des Abstands verwendet werden, funktioniert aber gut Pi * Auge. Abstandsunterschieden fallen dem Auge sofort auf.
    Ich hatte mir überlegt, Anschläge auf die Unterseite der Abdeckungen zu kleben, um diese seitlich und im Abstand zueinander zu fixieren. War aber alles nicht notwendig. Hält gut genug. Der Moosgummi wird leicht zusammengedrückt, da die Blechplättchen etwas dünner sind, und wirkt rutschhemmend.


    4) Ich hatte mir schon Führungen und Federmechanismen für die Klingeltaster überlegt, aber die oben aufgeführten Taster sind super. Die Grundfläche ist groß, bzw. der Taster groß und flach genug, um die Edelstahltastabdeckungen sicher aufzukleben. Der Taster hat einen gering Hub und kippt im unbetätigten Zustand auch nicht durch das Eigengewicht der Edelstahlabdeckungen nach unten.

    • Im ersten Schritt die Beinchen etwas hoch gebogen und gekürzt, damit eine ebene Grundfläche entsteht. Dann die Kunststoffzwischenplatte angeschliffen, die Taster grob plaziert (Abstand ca. 42mm), Kabel angelötet und dann die Taster auf die Zwischenplatte aufgeklebt und mit Federklemmzwingen fixiert, bis der JB-Weld trocken war (1 Tag).
    • Im zweiten Schritt die Abdeckungen an den Klebestellen gut angeraut (Diamantschlüsselfeile u. Schleifpapier) und mit Moosgummi eingefasst. Seitlich amTührrahmen wirkt der Moosgummi als Puffer. Zwischenplatte flach auf den Tisch gelegt, entfettet, Kleber auf die Taster aufgetragen (nur oben drauf, damit später nichts die Funktion stört), Abdeckungen von Hand gut angedrückt, den Abstand justiert und mit den 0,6mm Blechplättchen kontroliert. Und jetzte das Schwerste: Wieder einen Tag warten, bis das Epoxy fest ist, und dem Drang zu widerstehen, nur 1x kurz testen zu wollen!

    Die Linien auf der Kunststoffzwischenplatte dienten zur Ausrichtung der Taster beim Aufkleben jener und beim kleben der Abdeckungen.

    Die Löcher der vier M3-Schrauben der Kunststoffzwischenplatte sind etwas größer gebohrt, um die Platte ggf. noch ausrichten zu können. Durch Unterlegplättchen aus Papier, durch ausdünnen der Kunststoffplatte oder ähnliches könnte man die Tiefe noch justieren. Hat bei mir ohne Nacharbeit gepasst, da ich die darunterliegenden Distanzhülsen bereits auf den passenden Abstand in die Grundplatte geschraubt hatte.


    Auf dem rechten Bild kann man die beiden SMD-Taster der oberen Klingel gerade noch so erkennen. Die Taster sind parallel angeschlossen, d.h. egal ob einer oder beide zusammen Kontakt haben, der GPIO-Pin wird auf 3,3V gezogen und es klingelt. Am Pi ist pro Klingel-GPIO ein Kondensator (1uF-SMD) zu Masse angelötet, um die Taster zu entprellen. GPIO in DoorPi (pull_up_down) auf pull-down (PUD_DOWN) gesetzt. Die 2 weißen Litzen, welche hinter die Zwischenplatte verschwinden (schwarze und braune Zuleitung) sind nicht angeschlossen und gedacht für eine SMD-LED-Hinterleuchtung der Klingeltasten, falls mir mal langweilig sein sollte ;)


    5) Zu Beginn habe ich verschiedene Designs mit der kompletten Tür in SketchUp entworfen, um den Look zu beurteilen. Es sollte keine 1:1 Kopie der Gira werden und sich noch gut lasern lassen (zusammenhängende Teile insb. der Sprech-/Lautsprecheröffnung). Dxf (2007) der Teile mit und ohne Abmessungen im Anhang.



    Das Türschloss ist übrigens ein KFV Genius CB mit Nachtbetrieb und Offen-Erkennung. Dessen Kabel gehen in den Keller an die Haussteuerung, genauso wie die organgen CAT7 (AWG23) Kabel vom DoorPi. Der Türrahmen hat seitlich zum Glasteil hin eine Einfräsung, in welcher die Kabel nach unten geführt sind. Nach dem einsetzen des Glasseitenteils ist nichts mehr davon zu sehen.

    Die Karte hat einen 1,4W Verstärker gleich mit drauf. Reicht dicke. Lautstärke < 30%.
    Hat mir gefallen als "all-in-one"-Lösung. Eines der beiden Mikros sitzt auch direkt unter der Sprechöffnung.


    Schade, dass es die Karte nicht mehr gibt, jetzt wo die Treiber im mainline kernel sind und gut funktionieren.
    Die Vorgängerkarte "Wolfson Audio Card" gibt es seltsamerweise noch. Unterscheidet sich von den Features her kaum, ist aber offiziell nur für den Pi 1 A/B. ( Mod für 40pin Header )


    Die pulseaudio-echo-cancellation-Lösung sollte aber mit anderen Karten oder USB-Lösungen ebenfalls funktionieren.

    Heißt das, ich kann dir die Abdeckungen einfach abmachen? Oder sind die noch anders gesichert? Schrauben?

    Der Optik wegen wollte ich auf Schrauben verzichten. Diese laden doch auch zum Abschrauben ein? )
    Die magnetischen Abdeckungen sind unauffällig und halten so gut, auch gegen seitliches verschieben, dass ich auf kleine Winkel/Anschläge auf der Innenseite der Abdeckungen verzichten konnte.


    Man könnte sich überlegen, von der Innenseite oder seitlich am Türrahmen Sicherungsschrauben/-stifte zu verwenden.
    Mir genügt ein Alarm der Mikroschalter bzw. Reedkontakte.

    Danke, gerne.
    Falls jemand Probleme hat und ich etwas in der Beschreibung vergessen habe, einfach melden.


    Wäre schön zu wissen, ob es bei jemand mit einer anderen Soundkarten ebenfalls geholfen hat.


    Mit htop oder top sieht man gut, dass bei aktivem echo-cancel-Modul die Auslastung deutlich steigt. Es sind 3 pulseaudio-Threads mit ca. 20-50% pro Thread aktiv, je nach Audioaufkommen.
    Eigentlich ist bei der CPU noch Luft nach oben da, jedoch wären dann vermutlich größere Audiopuffer notwendig.


    Die /etc/pulse/daemon.conf settings "default-fragments" und "default-fragment-size-msec" könnten noch etwas bewirken (Anleitung zur Bestimmung der Größen: https://forums.linuxmint.com/viewtopic.php?t=44862).
    Da es bei mir funktioniert, lasse ich aber erst mal die Finger davon.

    Der steht nicht umsonst unter "Geplante Erweiterungen" ;)


    Rechts und links neben dem Pi wäre gerade noch Platz dafür. Als Alternative habe ich in meiner Bauteilekiste ein Reedkontakt gefunden. Der gefällt mir noch besser.

    Hallo allerseits,


    hier meine Umsetzung von DoorPi:


    Eingebaut im Türrahmen im Zuge der Erneuerung unserer Haustüre.

    Abdeckung in gebürstetem Edelstahl 1mm lasergeschnitten (geplant waren ursprünglich 1,5mm), mit Moosgummi hinterlegt.
    Die Abdeckungsteile sind einzeln abnehmbar und magenetisch befestigt.



    Besondere Herausforderung war die maximale Einbautiefe von 30mm, welcher mir unser Schreiner zugestand. Mehr wollte er den Türrahmen nicht schwächen. Deshalb wirkt alles etwas gequetscht.


    Das Ganze ist auf einer 3mm Kunststoffgrundplatte montiert, um es komplett herausnehmen zu können.
    Die Klingeltaster sind je auf 2 größere SMD-Taster aufgeklebt, welche ihrerseits auf ein geschraubtes Podest aus 3mm Kunststoffplatte geklebt sind. Name (wegretuschiert) und Klingelsymbol laserbeschriftet.
    Rund herum sind etliche Magnete eingeklebt.



    Details:
    oben - NFC-Modul mit Kameraloch. Kamera durch einseitige Verschraubung justierbar. Pfostenleiste vom NFC-Modul aus Platzgründen entfernt und Kabel direkt angelötet
    mitte - Raspberry Pi mit aufgesteckter Cirrus Audio Card. Stromstecker entfernt und NFC-Modul angelötet.
    unten - 2x Ethernet-Kabel (LAN + Stromversorgung über mehrere Adern, um Spannungsabfall zu minimieren). Lautsprecher per Klettband befestigt. Alles mit Molex steckern versehen.



    Kamera-/NFC-Abdeckung mit 3mm Plexiglas. Plexi mit Kreissäge bearbeitet, ausgedünnt, bis es genau gepasst hat und eben mit der Front abschließt und anschließend eingeklebt.
    Da die Edelstahlabdeckung nicht magnetisch war (doh!), habe ich Plättchen aus Resten einer Dunstabzugshaube aus ferromagnetischem Edelstahl 0,6mm aufgeklebt. Hält gut auf den kleinen Magneten. Moosgummi außen herum.
    Hinter die Sprechöffnungen ist ein Akustikstoff geklebt. Soll ja kein Insektenhotel werden.



    Provisorische Abdeckung aus Kunstsoff mit Kameraloch und Taster, da der Bau doch etwas länger gedauert hatte als gedacht ;)



    Bauteile:

    • Raspberry Pi 3B mit kleinem passivem Kühlkörper (Grafikarten-RAM-Chip-Kühler)

      • Raspbian Stretch
      • DoorPi 2.5.1
      • Pulseaudio zur Echo-Cancellation (s. Echo Problematik Thread)
      • Clients FritzFon C5 und Tablet mit DoorPi App
    • Cirrus Audio Card (Verwendung der onboard SMD-Mikrofone) - dtoverlay geändert, um SPI freizuschalten für NFC-Modul
    • NXP Explore NFC - derzeit nicht als DoorPi Keypad angebunden sondern kommuniziert per Python-Skript über MQTT mit der Haussteuerung.
    • Pi Cam V2 Kameramodul (standard, da Licht mit Bewegungsmelder vorhanden; eine Weitwinkellinse war nicht notwendig. So ist wenigstens auf dem Fritzfon-Display das Gesicht zu erkennen.)
    • Visaton Kleinlautsprecher 5cm (VIS 2930)
    • Edelstahlabdeckung aus gebürstetem Edelstahl 1mm, lasergeschnitten und -beschriftet von örtlichen Unternehmen
    • SMD-Taster Schurter 4,7mm (Taster 1606.11), pro Klingeltaster 2x, angenehmer Druckpunkt und geringer Hub, parallel verdrahtet, an 3,3V und an GPIO mit 1µF SMD-Kondensator gegenüber Masse zur Entprellung und gegen Störungen.
    • Moosgummi selbstklebend 1mm
    • 3mm x 2mm Neodym-Magnete mit Epoxidbeschichtung und ferromagnetische Plättchen + JB-Weld!
    • Cat7 Kabel und feldkonfektionierbarer Stecker (DELOCK 86265)
    • Diverse Distanzhülsen (Gewinde in Kunstoffgrundplatte geschnitten). Kunstoffhülsen und Kunstoffschrauben in der Nähe der NFC-Antenne.
    • Molex Mini-Fit Jr Stecker an Stromversorgung und Lautsprecher, um alles lösen zu können
    • Finder 5V Koppelrelais mit Freilaufdiode im Keller zur Steuerung des Türschlosses. Im Probebetrieb direkt an Doorpi GPIO angeschlossen. Aus Sicherheitsgründen Relaisansteuerung verlegt an Haussteuerung (MQTT Kommunikation).
    • 5V und 24V Hutschinennetzteile im Keller für DoorPi und Türschloss

    Geplante Erweiterungen:

    • Mikroschalter zur Manipulationserkennung
    • ggf. Hinterleuchtung der Taster mit Mini-LEDs


    Schuld an dem ganzen gebe ich Gira, da das System 106 ewig nicht verfügbar war!

    Hallo zusammen,


    hier ein Anleitung, wie DoorPi bei mir mit pulseaudio echo cancellation funktioniert.


    Nach Fertigstellung der DoorPi-Hardware hat mich das Echo doch so genervt, dass ich etwas Zeit investiert habe, eine Lösung zu finden.
    Ich konnte die Außenseite gut verstehen, die Person vor der Tür hat mich einwandfrei verstanden, aber das Echo am Hörer war dabei zum Teil so heftig und laut, dass ein Gespräch unmöglich war.
    Da die linphone echo cancellation nichts gebracht hat und auch eine Trennwand zwischen Mikrofon und Lautsprecher überhaupt keine Wirkung zeigte, und auch für meine Cirrus Audio Card kein AEC-DSP-Code zu finden war, blieb noch Pulseaudio. Mit einem für DoorPi eigentlich überdimensionierten Raspberry Pi 3B und seinen 4 Kernen sollte doch was machbar sein!


    Hardware:
    Raspberry Pi 3B, Cirrus Audio Card, onboard Mic (DMIC) und Visaton Lautsprecher (Mono).
    Angebunden per ethernet (LAN) an Fritzbox 6360 Cable.
    Clients: FritzFon C5 (Dect) und Tablet mit DoorPi App (WLAN)
    Software:
    pi@rpi3:~$lsb_release -a
    No LSB modules are available.
    DistributorID: Raspbian
    Description:Raspbian GNU/Linux 9.4 (stretch)
    Release: 9.4
    Codename:stretch
    pi@rpi3:~$uname -a
    Linux rpi3 4.14.62-v7+ #1134 SMP Tue Aug 14 17:10:10BST 2018 armv7l GNU/Linux
    pi@rpi3:~$dpkg -l | grep pulseaudio
    ii pulseaudio 10.0-1+deb9u1armhf PulseAudio sound server
    pi@rpi3:~$ doorpi_cli --version
    VoIP Door-Intercomstation withRaspberry Pi 2.5.1


    Installation Pulseaudio:
    sudo apt install pulseaudio pulseaudio-utils
    sudo adduser pulse audio
    sudo adduser pulse pulse-access
    sudo adduser pi pulse-access
    <- hier euren Benutzer hinzufügen, um mit pactl auf pulseaudio zugreifen zu können
    sudo adduser root pulse-access <- wichtig wenn pulseaudio als system daemon läuft. Ohne wird kein device "pulse" zu alsa hinzugefügt!


    Konfiguration Pulseaudio daemon:


    Code: /etc/pulse/daemon.conf
    allow-exit = no
    system-instance = yes
    enable-shm = no
    cpu-limit = no
    high-priority = yes
    nice-level = -15
    realtime-scheduling = no
    default-sample-rate = 16000
    default-sample-channels = 1
    default-fragment-size-msec = 50
    • realtime-scheduling musste ich deaktivieren, da ansonsten pulseaudio kurz nach dem laden des moduls-echo-cancel mit aec_method=webrtc einfach abgeschmiert ist (aec_method=adrian hat mit realtime-scheduling geladen, aber lieferte keine gute Echounterdrückung)
    • default-sample-rate und channels reduziert, um die CPU-Last zu senken.
    • Die restlichen Optionen sind nach wildem testen übrig geblieben. Hier gibt es evtl. noch weiteres Potential z.B. bei default-fragment und default-fragment-size-msec


    Konfiguration Pulseaudio Startup Skript:

    Code: /etc/pulse/system.pa
    ...
    
    
    ### echo cancellation
    load-module module-echo-cancel aec_method=webrtc sink_name=doorpisink source_name=doorpisource sink_master=alsa_output.platform-soc_sound.analog-stereo source_master=alsa_input.platform-soc_sound.analog-stereo use_master_format=true aec_args="analog_gain_control=0 digital_gain_control=0 noise_suppression=0 high_pass_filter=0 mobile=1 routing_mode=loud-speakerphone comfort_noise=0"
    
    
    set-default-sink doorpisink
    set-default-source doorpisource

    einfach am Ende hinzugefügt.


    Achtung: sink_master und source_master auf eure Soundkarte anpassen. "pactl list short sinks" und "pactl list short sources" zum anzeigen was Pulseaudio anbietet.


    Die Optionen für das module echo cancel (aec_args) zielen darauf ab, die CPU-Last zu minimieren und haben so bei mir am besten funktioniert. Vielleicht gibt es hier auch noch Potential.



    Systemd service für Pulseaudio (autostart):

    sudo systemctl daemon-reload


    sudo systemctl enable pulseaudio.service
    manuell starten (oder reboot):
    sudo systemctl start pulseaudio



    Hinweise:

    • Im log (journalctl -e) sind trotzdem noch ein paar Einträge "Playback after capture", "Doing resync", "Playback too far ahead" vor allem zu beginn eines Gesprächs vorhanden. Dort ist auch noch etwas Echo vorhanden.
      Das gibt sich aber nach kurzer Zeit und es ist während eines Gesprächs in Ordnung.
    • Mit anderen Einstellung hatte ich entweder ein Knacksen im Lautsprecher oder abgehackte Gespräche. Viel Spass beim ausprobieren aller Optionen ;)
    • In der doorpi.ini echo cancellation mit "echo_cancellation_enabled = False" deaktiviert. Hat aber ehrlich gesagt keinen Unterschied gemacht.
    • Lautstärke in Pulseaudio überall auf 100% (default) bei mir. Einstellung weiterhin über alsamixer (Soundkarte mit F6 auswählen).
    • Bei anderer Netzwerkkonfiguration kann evtl. auch Paket-Priorisierung / QoS / wondershaper oder ähnliches helfen.
      Insb. wenn DoorPi per Wlan am Netz hängt.
    • Doorpi bleibt weiterhin auf ALSA: default device.
      aplay -l sollte mit aktivem Pulseaudio per default auf das pulse device zeigen:
      default
      Playback/recording through the PulseAudio sound serve
      r
    • Kontrolle ob das module-echo-cancel richtig geladen wurde mit pactl list modules und Anzeige Standardgeräte mit pactl info

    Mein Testskript, da ich nicht immer neu starten wollte zum testen anderer Optionen: