Gartenzerg
Anmeldungsdatum: 21. November 2006
Beiträge: 47
|
Liebe Gemeinschaft, ich habe mir das genannte Audiointerface zugelegt und hatte zu Beginn auch meine helle Freude damit, weil es out-of-the-box lief. Leider bin ich hin und wieder gezwungen, das interne Routing des Kopfhörerausgangs umzustellen, um das interne Monitoring zu nutzen (Abhören der XLR-Eingänge via Kopfhörer). Seitdem ich dies (gezwungenermaßen unter Windows) getan habe - mittlerweile wieder zurückgestellt - knackst die Ausgabe unter Linux. Ich muss zugeben, ich habe der Versuchung nicht widerstanden mit der Abtastrate herumzuspielen und hatte sie zwischendurch mal auf 192kHz hochgeschraubt. Jetzt ist sie aber wieder unten auf 44,1kHz. Es ist ein leises und unregelmäßiges, aber sehr störendes Knacksen. Es tritt nur unter Linux auf, nicht aber unter windows. Es widerstrebt mir ganz enorm, es unter windows einzusetzen, da ich die Freiheiten beim Routing unter Jack und Ardour nicht mehr missen möchte. Unsaubere Dateien sind sicher auszuschließen, glasklarer Knacksernachweis ist mit Audacity und einem Sinuston erfolgt. Das Knacksen tritt sowohl auf dem Laptop als auch auf dem Desktoprechner auf. DANKE im Voraus. Möglicherweise erforderliche Daten: lsb_release -d
Description: Ubuntu 18.04.4 LTS
uname -r
4.15.0-101-lowlatency
cat /proc/asound/cards
0 [PCH ]: HDA-Intel - HDA Intel PCH
HDA Intel PCH at 0xf2530000 irq 32
1 [USB ]: USB-Audio - Scarlett 4i4 USB
Focusrite Scarlett 4i4 USB at usb-0000:00:1a.0-1.2, high speed
aplay -l
**** Liste der Hardware-Geräte (PLAYBACK) ****
Karte 0: PCH [HDA Intel PCH], Gerät 0: ALC3202 Analog [ALC3202 Analog]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 0: PCH [HDA Intel PCH], Gerät 3: HDMI 0 [HDMI 0]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 0: PCH [HDA Intel PCH], Gerät 7: HDMI 1 [HDMI 1]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 0: PCH [HDA Intel PCH], Gerät 8: HDMI 2 [HDMI 2]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 1: USB [Scarlett 4i4 USB], Gerät 0: USB Audio [USB Audio]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
aplay /usr/share/sounds/alsa/Noise.wav
Wiedergabe: WAVE '/usr/share/sounds/alsa/Noise.wav' : Signed 16 bit Little Endian, Rate: 48000 Hz, mono
lspci -nnk | grep -iA2 audio
00:1b.0 Audio device [0403]: Intel Corporation 7 Series/C216 Chipset Family High Definition Audio Controller [8086:1e20] (rev 04)
Subsystem: Lenovo 7 Series/C216 Chipset Family High Definition Audio Controller [17aa:21f3]
Kernel driver in use: snd_hda_intel
Kernel modules: snd_hda_intel
ps -C esd
PID TTY TIME CMD
ps -C arts
ebenso
ps -C pulseaudio
PID TTY TIME CMD
1634 ? 00:00:03 pulseaudio
grep "^audio" /etc/group | grep "$USER" | wc -l
1
dpkg -l | tr -s " " | grep " alsa-"
ii alsa-base 1.0.25+dfsg-0ubuntu5 all ALSA driver configuration files
ii alsa-utils 1.1.3-1ubuntu1 amd64 Utilities for configuring and using ALSA
lsmod | grep "snd"
snd_hrtimer 16384 1
snd_hda_codec_hdmi 49152 1
snd_hda_codec_realtek 106496 1
snd_hda_codec_generic 73728 1 snd_hda_codec_realtek
snd_usb_audio 204800 2
snd_usbmidi_lib 32768 1 snd_usb_audio
snd_hda_intel 45056 3
snd_hda_codec 126976 4 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek
snd_hda_core 81920 5 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek
snd_hwdep 20480 2 snd_usb_audio,snd_hda_codec
snd_pcm 98304 5 snd_hda_codec_hdmi,snd_hda_intel,snd_usb_audio,snd_hda_codec,snd_hda_core
snd_seq_midi 16384 0
snd_seq_midi_event 16384 1 snd_seq_midi
snd_rawmidi 32768 2 snd_seq_midi,snd_usbmidi_lib
snd_seq 65536 3 snd_seq_midi,snd_seq_midi_event
snd_seq_device 16384 3 snd_seq,snd_seq_midi,snd_rawmidi
snd_timer 32768 3 snd_seq,snd_hrtimer,snd_pcm
snd 81920 25 snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_usb_audio,snd_usbmidi_lib,snd_hda_codec,snd_hda_codec_realtek,snd_timer,thinkpad_acpi,snd_pcm,snd_rawmidi
soundcore 16384 1 snd
head -n 3 /proc/asound/card0/codec#0
Codec: Realtek ALC3202
Address: 0
AFG Function Id: 0x1 (unsol 1)
head -n 3 /proc/asound/card0/codec97#0/ac97#0-0
head: '/proc/asound/card0/codec97#0/ac97#0-0' kann nicht zum Lesen geöffnet werden: Datei oder Verzeichnis nicht gefunden
head -n 3 /proc/asound/card0/codec97#0/ac97#0-0+regs
head: '/proc/asound/card0/codec97#0/ac97#0-0+regs' kann nicht zum Lesen geöffnet werden: Datei oder Verzeichnis nicht gefunden
cat ~/.asoundrc
cat: /home/martin/.asoundrc: Datei oder Verzeichnis nicht gefunden
cat ~/.asoundrc.asoundconf
ebenso
cat /etc/asound.conf
ebenso
|
Gartenzerg
(Themenstarter)
Anmeldungsdatum: 21. November 2006
Beiträge: 47
|
Nächster Versuch: Upgrade auf Version 20.04, natürlich als full install. Ich berichte. edit: keine Änderung. Symptome sind unverändert.
|
Gartenzerg
(Themenstarter)
Anmeldungsdatum: 21. November 2006
Beiträge: 47
|
Alles klar, hab es gelöst, danke!
|
sprock
Anmeldungsdatum: 19. Dezember 2013
Beiträge: 595
|
Verrätst du, woran es gelegen hat?
|
Gartenzerg
(Themenstarter)
Anmeldungsdatum: 21. November 2006
Beiträge: 47
|
Ah, es liest ja doch jemand. Das Gerät synchronisiert mithilfe eines impliziten Feedbacks, ALSA erwartet aber offensichtlich explizites Feedback. Auf linuxmusicians.com gibt es einen sehr interessanten Thread: https://linuxmusicians.com/viewtopic.php?f=6&t=21163
Der User puglegot stellt eine Lösung in Form einer diff-Datei (Kernelpatch) für /sound/usb/pcm.c bereit: diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c
index bd258f1ec2dd..4f6709dc8b9f 100644
--- a/sound/usb/pcm.c
+++ b/sound/usb/pcm.c
@@ -365,6 +365,10 @@ static int set_sync_ep_implicit_fb_quirk(struct snd_usb_substream *subs,
ep = 0x81;
ifnum = 2;
goto add_sync_ep_from_ifnum;
+ case USB_ID(0x1235, 0x8212): /* Focusrite Scarlett 4i4 3rd Gen */
+ ep = 0x81;
+ ifnum = 2;
+ goto add_sync_ep_from_ifnum;
case USB_ID(0x0582, 0x01d8): /* BOSS Katana */
/* BOSS Katana amplifiers do not need quirks */
return 0;
@@ -387,10 +391,11 @@ static int set_sync_ep_implicit_fb_quirk(struct snd_usb_substream *subs,
add_sync_ep_from_ifnum:
iface = usb_ifnum_to_if(dev, ifnum);
- if (!iface || iface->num_altsetting < 2)
+ if (!iface || subs->altset_idx == 0 ||
+ subs->altset_idx >= iface->num_altsetting)
return -EINVAL;
- alts = &iface->altsetting[1];
+ alts = &iface->altsetting[subs->altset_idx];
add_sync_ep:
subs->sync_endpoint = snd_usb_add_endpoint(subs->stream->chip, Dieser Patch soll sehr gut funtkionieren. Gestern abend habe ich einen 5.4.42er händisch gepatcht und kompiliert, aber irgendwie ist der Patch wieder verschwunden, oder aber der kompilierte Kernel ist verschwunden. Darf ich hier Hilfe zum Kernelpatch erwarten? Ich benötige einen lowlatency-Kernel. Am 2.6. muss das Audiointerface laufen (leider beruflich), zur Not muss ich dafür eben Windows installieren. Die Anleitung im Wiki habe ich schon ein paar Mal durchgearbeitet, spätestens make-kpkg steigt mit Fehlermeldungen (Datei nicht gefunden) aus.
|
pepre
Supporter
Anmeldungsdatum: 31. Oktober 2005
Beiträge: 6462
Wohnort: Erlangen
|
Welche Fehlermeldungen beim kompilieren? Und, was heißt: aber irgendwie ist der Patch wieder verschwunden, oder aber der kompilierte Kernel ist verschwunden.
Du hast zwei Möglichkeiten: entweder den Ubuntu-Kernel patchen (s. https://www.howtoforge.com/kernel_compilation_ubuntu), oder nachsehen, ob evtl der Vanilla-Kernel das bereits integriert hat, scheint aber (noch) nicht so zu sein.
|
Gartenzerg
(Themenstarter)
Anmeldungsdatum: 21. November 2006
Beiträge: 47
|
Danke ☺ Ich habe von kernel.org die Datei linux-5.6.14.tar.xz nach /home heruntergeladen. Mit 'patch' den oben angeführten Code in die pcm.c eingefügt, kontrolliert,w ar drin. Dann bin ich dieser Anleitung im Wiki (https://wiki.ubuntuusers.de/Kernel/Kompilierung/) folgend bei "Konfiguration" eingestiegen, und bin bis "Bauen" 'make-kpkg --initrd buildpackage ' gekommen. Das läuft eine Minute oder so durch und steigt mit der Fehlermeldung make[1]: Verzeichnis „/home/martin/kernel/linux-5.6.14“ wird verlassen
dpkg-source -b .
dpkg-source: Fehler: Datei linux-5.6.14/debian/changelog kann nicht geöffnet werden: No such file or directory
dpkg-buildpackage: Fehler: Unterprozess dpkg-source -b . lieferte Exitstatus 255
make: *** [debian/ruleset/targets/common.mk:407: debian/stamp/build/buildpackage] Fehler 255 aus. Was mache ich falsch? edit: 'make' scheint durchzulaufen.
|
pepre
Supporter
Anmeldungsdatum: 31. Oktober 2005
Beiträge: 6462
Wohnort: Erlangen
|
Was mache ich falsch?
Gute Frage 😀 Ist die Datei denn vorhanden? Erwartet wird sie in
~/kernel/linux-5.6.14/debian/changelog
Evtl in einem anderem Verzeichnis unterhalb von kernel? Dann kannst du sie einfach an die passende Stelle kopieren. Offiziell richtig wäre natürlich bei dpkg-source die Übergabe der "-l" Option, s. manpage von dpkg-source.
-lChangelog-Datei
Bestimmt die »changelog«-Datei, aus der Informationen ausgelesen werden sollen.
Der Standardwert ist debian/changelog. Falls der Pfadname relativ ist, wird dieser relativ
zum obersten Verzeichnis des Quellbaums interpretiert. Aber dann müsstest du wohl ins Script reinfassen. Wenn die Datei dort liegt: "dpkg-source -b .". Der Punkt bedeutet: "suche ab dem ggw Directory". Wenn das also nicht "kernel" ist, dann findet er das nicht.
Ich benötige einen lowlatency-Kernel.
Sind die Optionen im Vanilla-Kernel schon standardmäßig gesetzt? (Hab schon laaaange keinen Kernel mehr kompiliert 😉 )
|
Gartenzerg
(Themenstarter)
Anmeldungsdatum: 21. November 2006
Beiträge: 47
|
Hm, nein, der vanilla ist kein lowlatency... Ich habe zwei changelog gefunden, eines in /arch/arm/nwfpe und eines in /fs/befs Beide habe ich (nacheinander) nach /kernel kopiert, beide Male Ausstieg mit der obigen Fehlermeldung. Eines habe ich spaßeshalber nach kernel/debian kopiert, dafür musste ich das Verzeichnis debian/ erstmal erstellen. Nach Durchgang (obige Fehlermeldung) war der wieder verschwunden. 😐 Heut vormittag ließ ich das einfache 'make' durchlaufen und mit 'make modules_install install' , konnte den kernel aber nicht im Grub anmelden. 'update-grub' hat ihn nicht gefunden.
|
Gartenzerg
(Themenstarter)
Anmeldungsdatum: 21. November 2006
Beiträge: 47
|
Ok, neuer Anlauf. War ja eh kein lowlatency, daher eh für die Tonne. Aber learning by doing. Gestern habe ich ein RT-Patch für 5.4.40 gefunden, und den entsprechenden kernel auch. Heute morgen dann der neue Anlauf: RT-Patch auf neuen Kernel angewendet, pcm.c gepatcht, Wiedereinstieg in Wiki-Artikel bei Konfiguration make-kpkg läuft nun anscheinend durch, ich bin gespannt ☺
|
Gartenzerg
(Themenstarter)
Anmeldungsdatum: 21. November 2006
Beiträge: 47
|
pepre schrieb: Was mache ich falsch?
Gute Frage 😀 Ist die Datei denn vorhanden? Erwartet wird sie in
~/kernel/linux-5.6.14/debian/changelog
Evtl in einem anderem Verzeichnis unterhalb von kernel? Dann kannst du sie einfach an die passende Stelle kopieren. Offiziell richtig wäre natürlich bei dpkg-source die Übergabe der "-l" Option, s. manpage von dpkg-source.
-lChangelog-Datei
Bestimmt die »changelog«-Datei, aus der Informationen ausgelesen werden sollen.
Der Standardwert ist debian/changelog. Falls der Pfadname relativ ist, wird dieser relativ
zum obersten Verzeichnis des Quellbaums interpretiert. Aber dann müsstest du wohl ins Script reinfassen. Wenn die Datei dort liegt: "dpkg-source -b .". Der Punkt bedeutet: "suche ab dem ggw Directory". Wenn das also nicht "kernel" ist, dann findet er das nicht.
Ich benötige einen lowlatency-Kernel.
Sind die Optionen im Vanilla-Kernel schon standardmäßig gesetzt? (Hab schon laaaange keinen Kernel mehr kompiliert 😉 )
Ich glaube ich habe es verstanden: Mein im OS verwandter Kernel war ein Echtzeitkernel, der zu kompilierende nicht. Ich vermute stark, dass ich durch cp /boot/config-`uname -r` .config für den Vanilla-Kernel ungültige Daten herüberkopiert habe. Nachdem ich den RT-Patch auf den 5.4.40 angewendet habe, erschien kernel/debian/changelog, und deswegen lächelt make-kpkg auch so zufrieden.
|
pepre
Supporter
Anmeldungsdatum: 31. Oktober 2005
Beiträge: 6462
Wohnort: Erlangen
|
❗ Realtime ungleich low-latency ❗ Aber macht ja erstmal nix. Ggf gehen halt so Dinge wie Virtualbox/Nvidia nicht mehr. Ich hab den 5.6.15 gerade mal kompilieren lassen (unter Debian 10). Ich bin allerdings diesem Weg gefolgt. Nach
make -j8 deb-pkg LOCALVERSION=-custom KDEB_PKGVERSION=1 wurde .debian/ und die Dateien darunter ordnungsgemäß angelegt, natürlich auch changelog . Das scheint bei dir ja nicht zu klappen, warum auch immer.
Edit: oh, ah! Ja, die .config einfach vom Ubuntu auf einen Vanilla zu propfen dürfte Probleme verursachen 😉 Ubuntu frickelt da einfach zu sehr rein.
|
Gartenzerg
(Themenstarter)
Anmeldungsdatum: 21. November 2006
Beiträge: 47
|
pepre schrieb: ❗ Realtime ungleich low-latency ❗ Aber macht ja erstmal nix. Ggf gehen halt so Dinge wie Virtualbox/Nvidia nicht mehr. Ich hab den 5.6.15 gerade mal kompilieren lassen (unter Debian 10). Ich bin allerdings diesem Weg gefolgt. Nach
make -j8 deb-pkg LOCALVERSION=-custom KDEB_PKGVERSION=1 wurde .debian/ und die Dateien darunter ordnungsgemäß angelegt, natürlich auch changelog . Das scheint bei dir ja nicht zu klappen, warum auch immer.
Edit: oh, ah! Ja, die .config einfach vom Ubuntu auf einen Vanilla zu propfen dürfte Probleme verursachen 😉 Ubuntu frickelt da einfach zu sehr rein.
Ok, dein Weg lief ohne Fehlermeldung durch, und das überraschend schnell. Leider trägt sich der gute neue Kernel nicht im Bootlader ein, weder automatisch, noch über update-grub. Ich habe ihn mit dem grub-customizer spaßeshalber eingetragen, da meckert er beim starten 'cant allocate initrd' und verweigert. Hab aber die UUID hinter root nicht angepasst. Wie trage ich den Kernel ein?
|
pepre
Supporter
Anmeldungsdatum: 31. Oktober 2005
Beiträge: 6462
Wohnort: Erlangen
|
Oje, ist das alles lange her, bestimmt min 10 Jahre keinen Kernel mehr kompiliert. Es gäbe da den Befehl mkinitrd, aber dann geht's ans Eingemachte. Bevor wir uns hier völlig verzetteln und die Baustellen B, C und D eröffnen, könnten wir den Blick wieder auf das ursprüngliche Problem richten. Da böte sich als nächster Weg an: https://askubuntu.com/questions/163298/whats-a-simple-way-to-recompile-the-kernel, letzter Post, ff. D.h.: gewünschten Kernel installieren, damit booten, mit apt-get source die Sourcen installieren, deinen Patch anwenden, und kompilieren. Vllt geht ja das einfach. Bedenke: bei jedem Kernel-Update wirst du neu kompilieren müssen. (Du kannst ihn natürlich auch auf "hold" setzen.)
Noch zum realtime- vs low-latency-Kernel: ich hab hier über USB2 eine 32_Kanal-Soundkarte bei 10ms Latenz mit dem low-latency-Kernel ohne Probleme mit jack am Laufen. X-runs bekomme ich nur, wenn Google-Chrome oder ähnliche Monster via PulseAudio damit sprechen wollen (jedoch unter Debian 10). Es muss also nicht unbedingt die Echtzeit-Variante sein.
|
Gartenzerg
(Themenstarter)
Anmeldungsdatum: 21. November 2006
Beiträge: 47
|
Ok. Ein Fall für Ebay-Kleinanzeigen: Ich tausche es gegen eines der zweiten Generation. Aber ich habe viel gelernt. Danke!
|