Zajos USB audio

Fórumok

Udv,

a kovetkezo a felallas:

Ubuntu 18.04 beta, Dell 9370, Thunderbolt 3 porton keresztul egy Razer Core eGPU enclosure csatlakoztatva. A Core-ban van USB hub. Annak a vegen log az eger, billentyuzet, es egy kulso USB -> AES/EBU interfesz (nem DAC). Az AES/EBU hang megy kozvetlenul a hangfalakba. 24 biten hasznalom a Pulseaudiot-t, hogy a digitalis hangeroszalyozas mellett is maradjon eleg dinamika (ez nem relevans a problema szempontjabol, de a hangfalak gain-je -36 dB-re van allitva, ezert ha 96 dB dinamika megmarad a zenebol, akkor is van 84 dB-nyi halkitasi lehetosegem a max. hangerohoz kepest). A konverter egy XMOS-alapu eszkoz

A problema: Linux alatt recseg a zene, ha terheles alatt van a gep es hasznalom az USB-s billt/egeret. (Windows alatt nem.) Foleg akkor, ha Slack-ben gepelek (tenyleg).

Amit kiprobaltam:
- tsched=0
- mas mintaveteli frekvencia es bitmelyseg
- mas fragment_size es fragment_count

Otletek?

lsusb:

Bus 008 Device 002: ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet
Bus 008 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 007 Device 003: ID 1532:0215 Razer USA, Ltd
Bus 007 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 003: ID 22d4:130c
Bus 005 Device 002: ID 04d9:0146 Holtek Semiconductor, Inc.
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 002: ID 20b1:000a XMOS Ltd
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 0489:e0a2 Foxconn / Hon Hai
Bus 001 Device 002: ID 0bda:58f4 Realtek Semiconductor Corp.
Bus 001 Device 004: ID 27c6:5385
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

lspci:

00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers (rev 08)
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620 (rev 07)
00:04.0 Signal processing controller: Intel Corporation Skylake Processor Thermal Subsystem (rev 08)
00:14.0 USB controller: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller (rev 21)
00:14.2 Signal processing controller: Intel Corporation Sunrise Point-LP Thermal subsystem (rev 21)
00:15.0 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #0 (rev 21)
00:15.1 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #1 (rev 21)
00:16.0 Communication controller: Intel Corporation Sunrise Point-LP CSME HECI #1 (rev 21)
00:1c.0 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port (rev f1)
00:1c.2 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port (rev f1)
00:1c.4 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #5 (rev f1)
00:1d.0 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #9 (rev f1)
00:1f.0 ISA bridge: Intel Corporation Device 9d4e (rev 21)
00:1f.2 Memory controller: Intel Corporation Sunrise Point-LP PMC (rev 21)
00:1f.3 Audio device: Intel Corporation Sunrise Point-LP HD Audio (rev 21)
00:1f.4 SMBus: Intel Corporation Sunrise Point-LP SMBus (rev 21)
01:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS525A PCI Express Card Reader (rev 01)
02:00.0 Network controller: Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter (rev 32)
03:00.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
04:00.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
04:01.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
04:02.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
04:04.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
05:00.0 System peripheral: Intel Corporation JHL6540 Thunderbolt 3 NHI (C step) [Alpine Ridge 4C 2016] (rev 02)
3a:00.0 PCI bridge: Intel Corporation DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015]
3b:01.0 PCI bridge: Intel Corporation DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015]
3b:04.0 PCI bridge: Intel Corporation DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015]
3c:00.0 VGA compatible controller: NVIDIA Corporation GP102 [GeForce GTX 1080 Ti] (rev a1)
3c:00.1 Audio device: NVIDIA Corporation GP102 HDMI Audio Controller (rev a1)
3d:00.0 PCI bridge: Intel Corporation DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015]
3e:00.0 PCI bridge: Intel Corporation DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015]
3e:01.0 PCI bridge: Intel Corporation DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015]
3e:02.0 PCI bridge: Intel Corporation DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015]
3f:00.0 USB controller: ASMedia Technology Inc. ASM1142 USB 3.1 Host Controller
40:00.0 USB controller: ASMedia Technology Inc. ASM1142 USB 3.1 Host Controller
41:00.0 USB controller: ASMedia Technology Inc. ASM1142 USB 3.1 Host Controller
6e:00.0 Non-Volatile memory controller: Toshiba America Info Systems Device 0116

Hozzászólások

Előre szólok, szinte biztos, hogy nem tudok segíteni. Az jár a fejemben, hogy egyszer találtam olyat neten - nem könyvjelzőztem, s azóta sincs meg -, hogy a kernel elböki az USB hangkezelést, de talán valamikor 4.9 és 4.14 között javították. A router-emen 4.9.87-es kernel van, s ott tényleg szörnyen képes recsegni, a desktop Fedora 28-amon 4.16.0-rc7 fut, s hibátlan a hang. Egy Panasonic SA-PMX80 - hangfalakkal együtt SC-PMX80 a neve - fogadja USB-n a hangot.

A másik, amiről nem írtál, az a pulseaudio verziója. Nálam 11.1 fut. Gyakorlatilag biztos vagyok abban, hogy kezdettől fogva van koncepcionális, algoritmikus hiba a pulseaudio-ban, amelyet vélhetően igen nehéz végiggondolni, így senki sem teszi azt meg. Azt tapasztalom, hogy ha bármilyen oknál fogva viszonylag nagy a pulseaudio CPU futásidő igénye, akkor a vele kapcsolatban álló programé is az lesz, s akkor a hang recsegni fog. Szerintem a bufferek átadásakor, átvételekor egymásra várás van, s valahogy képes az egész szétcsúszni, s ez lesz belőle. Ezek amolyan sejtések, ha rájöttem volna, mi a baj, már rég blogot, bugreportot, akármit írtam volna erről a problémáról.

Most, hogy nálam jól működik a hang desktop gépről USB-n, a notebookról bluetooth-on - szintén Fedora 28 és pulseaudio 11.1, egy kis Acer ES1-132 a gép -, kevésbé érint a probléma.

Bár van egy Seren nevű VoIP kliens, amelyet használok, az nagyon recseg néha, de nem mindig. Ilyenkor a pavucontrol mixeren azt látom, hogy a kliens lezárja a streamet, újra nyitja, megint lezárja, mindezt beszélgetés közben néhány millisecundumonként. Ott vibrál a pavucontrolon, s ennek megfelelően szakadozik a hang. Ezt sem tudom, miért van. Ráadásul nem mindig van ez így.

Ami a dinamikát illeti, nem számoltad el magad? Mivel logaritmikus, összegezhető, a 96 dB + 84 dB az 180 dB, ami 1e9 nagyságrend. Ez 30 bitbe fér bele, 24 bitbe szerintem csak 138.47 dB teljes kivezérelhetőség.

Mondjuk nekem már a 96 dB is gyanús, mert azt sohasem értem, hogy egy jel pozitív és negatív félperiódusát miért számoljuk bele. Illetve tudom, marketing bullshit. Szóval 20*lg(32767) szerintem csak 90.3 dB. A fenti számolásomnál simán lehet 1 bites hiba éppen abból, hogy a teljes tartomány felét, vagy a teljes tartományt nézzük. Mivel te a teljes tartománnyal kezdtél számolni, én a felét találom indokoltnak, ebben nem voltam következetes. De nem azon a 6 dB-en fogunk összeveszni. :)

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Nekem hirtelen kellett, mert az elődje nagyjából 10 év után megadta magát. Ezt az újat 74990 Ft-ért vettem az edigitalnál hangfalakkal együtt. Ami miatt aggódtam, hogy Linuxon fog-e működni, vagy az analóg bemenetet kell-e használnom. Most már megvan a válasz, szabványos eszközként látszik, a Linux sima USB-s audio eszköznek látja, bedugtam, s a Pulseaudio már küldte is rá a hangot USB-n. A Bluetooth interface-e is megy Linuxról, legalább is Fedora 28-ról egészen biztosan.

Az elődje hasonló teljesítményű, kis lakásban élek, szilveszter alkalmával picit meghajtottam még azt, igen kellemes hangvihart képes kelteni. Szép hangja van, s szükség esetén nagy is. Doksi szerint csatornánként 60 W-ot tud 10 % THD mellett, számomra ez azt jelenti, hogy kb. 2x40 W-ig szép hangja van, annál több meg nem kell. Nem tudom kihasználni, ha nem süketülnék meg, akkor feljelentenének csendháborítás miatt. :) Mondjuk az is kérdés, ezen picike hangfal hangszórójának mikor szakad ki a membránja.

Amúgy érdemes kiszámolni a gyorsulásból az erőket, s olyan iszonyú számok jönnek ki, hogy én nagyjából azt sem értem, hogyan van anyag, ami azt egyáltalán kibírja. A hangszóróról beszélek.

Hasznos tulajdonsága, hogy kikapcsolja magát 20 perc elteltével, ha USB-n vagy Bluetooth-on nincs már kapcsolat, így nem kell foglalkozni azzal, hogy bekapcsolva maradt.

Mindent összevetve elégedett vagyok vele.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Nekem skype alatt ez szüntette meg a recsegést hátha segít

#!/bin/sh
env PULSE_LATENCY_MSEC=90 skypeforlinux

Erről a régi szép idők jutottak az eszembe, mikor a VIA-s alaplapban PCI hangkártyával összeveszett éppen vagy a TNT vagy a déli híd (686B talán) :). Ejj de rég is volt :)

Próbáltad már pulseaudio nélkül?
--
"Sose a gép a hülye."

Sőt, pulseaudioban az a zseniális, hogy miközben notebook-ról a az audacious bluteuth-on keresztül stream-el online rádiót az erősítőre, aközben mondjuk egy riport videót megnyitok böngészőben, s a hangja a noti lokális hangszóróján szólal meg. Olyan, mintha a rádió független lenne a notebook-tól. Persze nyilván a böngésző hangját is áttehetem az erősítőre, mindezt lejátszás közben.

Sok vonatkozásban jó a pulseaudio, de szerintem van a lelke mélyén valami csúnya végiggondolatlanság, bug.

off

Kb., mint én tegnap. Számtani közepet akartam számolni, összeadtam a két 16 bites számot, majd jobbra shifteltem. Milyen kár, hogy az eredmény az összeadás után már 17 bites, így nem shiftelni, hanem rotálni kell, a carry flag-et szépen be kell léptetni az MSB-be.

Nagyjából ilyen szintű benézésre gyanakszom, ezt meglehetősen nehéz kiszúrni. A példámban is logikusnak tűnik, hogy a 2-vel osztás az jobbra shiftelés...

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE