Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Czy ktoś mógłby mi pomóc rozwiązać zagadkę znaczenia nazw urządzeń w /dev/snd/ ? Dla przykładu, mój laptop ma coś takiego:
# ls -al /dev/snd total 0 drwxr-xr-x 3 root root 220 2018-11-04 11:02:40 ./ drwxr-xr-x 20 root root 3.8K 2018-11-05 05:56:58 ../ drwxr-xr-x 2 root root 60 2018-11-04 11:02:40 by-path/ crw-rw----+ 1 root audio 116, 7 2018-11-04 11:02:40 controlC0 crw-rw----+ 1 root audio 116, 5 2018-11-04 11:02:40 hwC0D0 crw-rw----+ 1 root audio 116, 6 2018-11-04 11:02:40 hwC0D3 crw-rw----+ 1 root audio 116, 3 2018-11-05 11:54:33 pcmC0D0c crw-rw----+ 1 root audio 116, 2 2018-11-05 14:06:26 pcmC0D0p crw-rw----+ 1 root audio 116, 4 2018-11-04 11:04:08 pcmC0D3p crw-rw----+ 1 root audio 116, 1 2018-11-04 11:02:39 seq crw-rw----+ 1 root audio 116, 33 2018-11-04 11:02:40 timer
Co oznaczają w skrócie te urządzenia? Czyli co się dzieje, gdy jakiś proces próbuje je odczytać lub zapisać (ewentualnie coś innego z nimi zrobić)? Z tego co póki co znalazłem, to C0, to card0, D0 to device0, no i chyba ten pcm z "c", to jest mikrofon? A pozostałe? xD
Offline
Co tu masz do nierozumienia?
mpv 22518 pacjent mem CHR 116,18 2259 /dev/snd/pcmC3D8p mpv 22518 pacjent 22r CHR 116,33 0t0 2183 /dev/snd/timer mpv 22518 pacjent 23u CHR 116,18 0t0 2259 /dev/snd/pcmC3D8p mate-sett 25859 pacjent 14u CHR 116,4 0t0 2188 /dev/snd/controlC0 mate-sett 25859 pacjent 15u CHR 116,9 0t0 2196 /dev/snd/controlC1 mate-sett 25859 pacjent 16u CHR 116,15 0t0 2239 /dev/snd/controlC2 mate-sett 25859 pacjent 17u CHR 116,20 0t0 2264 /dev/snd/controlC3 mate-volu 25943 pacjent 10u CHR 116,4 0t0 2188 /dev/snd/controlC0 mate-volu 25943 pacjent 11u CHR 116,9 0t0 2196 /dev/snd/controlC1 mate-volu 25943 pacjent 12u CHR 116,15 0t0 2239 /dev/snd/controlC2 mate-volu 25943 pacjent 13u CHR 116,20 0t0 2264 /dev/snd/controlC3
Po odpaleniu, MPV gada z timerem (potrzebne, dzięki temu wszystkie karty grają w jednym czasie, np kernel dostosowuje się z dźwiękiem do input_lagu ekranu).
W ten sposób nie ma efektu że strzelam, a odgłos wystrzału jest przez efektem na obrazie.
MPV posyła dźwięk przez cyfrowe wyjście HW 3:8 (HDMI), to też jest chyba zrozumiałe.
seq to sekwencer.
[url]https://pl.wikipedia.org/wiki/Sekwencer_(muzyka)[/url]
Reszta to urządzenia in, out albo control kart.
W ten sposób sterowniki mapują interfejsy poszczególnych kart dźwiękowych.
Pozdro
Ostatnio edytowany przez Jacekalex (2018-11-05 16:36:16)
Offline
Co mam do rozumienia? No ostatnio chyba się coś zmieniło w zarządzaniu dźwiękiem i appki zaczęły żądać praw do niektórych z tych urządzeń i się zastanawiam dlaczego akurat teraz i czemu działały wcześniej, bo moja abstrakcja audio-strict nie miała żadnych urządzeń wypisanych. xD
To może tak:
-- co oznacza ta literka "p" na końcu w urządzeniach pcm? Jeśli dobrze rozumiem to "c" jest od "capture" a "p"? xD
-- czym się różni urządzenie hw od pcm?
-- czemu jest kilka pcm z "p", no bo jest jedno z "c", gdzieś indziej widziałem, że mieli kilka urządzeń pcm z "c"
-- za co odpowiada ten cały control?
Takie pytania mi przychodzą do głowy na teraz. xD
Ostatnio edytowany przez morfik (2018-11-05 16:54:41)
Offline
capture to mikrofon a p - play to do grania, tak to rozumiem.
Np karta HDMI Nvidia nie ma mikrofonu:
/dev/snd/controlC3 /dev/snd/hwC3D0 /dev/snd/pcmC3D3p /dev/snd/pcmC3D7p /dev/snd/pcmC3D8p
natomiast karta Intel owszem, ma takowe:
/dev/snd/controlC2 /dev/snd/hwC2D2 /dev/snd/pcmC2D0c /dev/snd/pcmC2D0p /dev/snd/pcmC2D1p /dev/snd/pcmC2D2c
Urządzenia /dev/snd/hw* to pewnie jakaś diagnostyka.
Ostatnio edytowany przez Jacekalex (2018-11-05 17:02:03)
Offline
RTFM:
https://www.tldp.org/HOWTO/Alsa-sound.html#toc6
https://www.tldp.org/HOWTO/Alsa-sound-6.html
Ostatnio edytowany przez Jacekalex (2018-11-05 17:10:37)
Offline
[quote=morfik]Znalazłem ten artykuł ździebko wcześniej ale chyba tam nie ma tego info co szukam. xD[/quote]
Jak gra,to chyba nie musisz zbyt wiele szukać...xD
Poza tym zawsze możesz wypakować źródełka kernela i zajrzeć do kodu modułów SND.
Masz tam też np:
/usr/src/linux/Documentation/sound/[b]kernel-api[/b][/quote]
Ostatnio edytowany przez Jacekalex (2018-11-05 17:15:32)
W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem para bellum ;) | Pozdrawiam :)
Offline
Jeżeli Alsa to jakaś magia, to pobaw się Xorgiem. :D
Moim zdaniem alsa jest na tyle logiczna, na ile to możliwe, przy czym dysk ma jedną głowicę i kilka partycji, a karta dźwiękowa PCI ma dużo więcej portów komunikacyjnych,
które trzeba jakoś ponazywać.
Dodatkowo hw to tyle co sda, ale pcm to urządzenie dźwiękowe typu RAW.
W dyskach się takowych raczej nie używa.
Urządzenie control to są potencjometry (dyzie nie wiedzą, co to jest),
seq i timer już przemieliliśmy wcześniej.
Czego jeszcze nie wiesz?
Ostatnio edytowany przez Jacekalex (2018-11-05 17:27:38)
Offline
Znalazłem to:
https://alsa.opensrc.org/Proc_asound_documentation
A tam:
# cat /proc/asound/devices 2: [ 0- 0]: digital audio playback 3: [ 0- 0]: digital audio capture 4: [ 0- 3]: digital audio playback 5: [ 0- 0]: hardware dependent 6: [ 0- 3]: hardware dependent 7: [ 0] : control 33: : timer
No to pytanie czemu te numerki nie są po kolei? W sensie 0-0, 0-1 itd. tylko 0-3 jest następny. No i pewnie ten "hardware dependent" to jest to urządzenie z hw, cokolwiek ono oznacza. xD
Ok już wiem po co są dwa pcm
# cat /proc/asound/pcm 00-00: ALC270 Analog : ALC270 Analog : playback 1 : capture 1 00-03: HDMI 0 : HDMI 0 : playback 1
Czyli jeden jest od głośników w laptopie + mikrofon, a drugi jest od HDMI.
Ostatnio edytowany przez morfik (2018-11-05 17:29:34)
Offline
Bo to pewnie zależy od typu karty dźwiękowej, a to zależy, jak się Kitajcom udała dana karta.
~> cat /proc/asound/devices 1: : sequencer 2: [ 0- 0]: digital audio playback 3: [ 0- 0]: digital audio capture 4: [ 0] : control 5: [ 1- 0]: digital audio playback 6: [ 1- 0]: digital audio capture 7: [ 1- 1]: digital audio playback 8: [ 1- 1]: digital audio capture 9: [ 1] : control 10: [ 2- 0]: digital audio playback 11: [ 2- 0]: digital audio capture 12: [ 2- 1]: digital audio playback 13: [ 2- 2]: digital audio capture 14: [ 2- 2]: hardware dependent 15: [ 2] : control 16: [ 3- 3]: digital audio playback 17: [ 3- 7]: digital audio playback 18: [ 3- 8]: digital audio playback 19: [ 3- 0]: hardware dependent 20: [ 3] : control 33: : timer
U mnie się mniej więcej zgadzają numerki.
0 [Dummy ]: Dummy - Dummy Dummy 1 1 [Loopback ]: Loopback - Loopback Loopback 1 2 [Intel ]: HDA-Intel - HDA Intel HDA Intel at 0xf3420000 irq 26 3 [NVidia ]: HDA-Intel - HDA NVidia HDA NVidia at 0xf3000000 irq 17
Tylko dziwne w devices są te digital przy analogowych wyjściach.
W czasach cyfrowych i analogowych wyjść mogą być mocno mylące.
EDIT:
PCM u mnie:
00-00: Dummy PCM : Dummy PCM : playback 8 : capture 8 01-00: Loopback PCM : Loopback PCM : playback 8 : capture 8 01-01: Loopback PCM : Loopback PCM : playback 8 : capture 8 02-00: ALC262 Analog : ALC262 Analog : playback 1 : capture 1 02-01: ALC262 Digital : ALC262 Digital : playback 1 02-02: ALC262 Alt Analog : ALC262 Alt Analog : capture 2 03-03: HDMI 0 : HDMI 0 : playback 1 03-07: HDMI 1 : HDMI 1 : playback 1 03-08: HDMI 2 : HDMI 2 : playback 1
Pozdro
Ostatnio edytowany przez Jacekalex (2018-11-05 17:36:56)
Offline
No pewnie ten numerek jest jak ten z lspci, w sensie zależy od tego co tam w karcie siedzi i temu pokazuje tak a nie inaczej. xD
A takie pytanie jeszcze: linux może obsłużyć max 8 kart dźwiękowych?
Offline
[quote=morfik]No pewnie ten numerek jest jak ten z lspci, w sensie zależy od tego co tam w karcie siedzi i temu pokazuje tak a nie inaczej. xD
A takie pytanie jeszcze: linux może obsłużyć max 8 kart dźwiękowych?[/quote]
Tu już zapytaj na LKML albo jakiejś liście Alsy.
Nie widziałem w życiu kompa, w którym byłoby więcej niż 6 kart dźwiękowych,
więc trudno mi się wypowiedzieć w tej kwestii.
Jak przypadkowo w domu miałem łącznie 6 kart dźwiękowych, to nic nie wybuchło.
Tutaj coś piszą,ze to zależy od numerologii 32 albo 64 bity:
https://stackoverflow.com/questions/14201551/need-more-than-32-usb-sound-cards-on-my-system
Z treści wynika, że udało się zapiąć 32 karty USB, ale jak tego ktoś dokonał, pojęcia nie mam.
Z drugiej strony, jeśli np w jakimś potworze siedzi Linux z Asteriskiem i ma podłączone
np 256 linii analogowych, to każda linia to przecież równocześnie karta dźwiękowa.
Także nie traktowałbym tych limitów zbyt dosłownie.
Jeżeli Linux potrafi równocześnie obrabiać 4096 procesorów i nie zwariować,
to pewnie z innymi urządzeniami też potrafi sobie radzić w znacznie większej skali.
EDIT:
Praktycznie w dowolnej skali, jak to w Linuxie:
zgrep -i CONFIG_SND_MAX_CARDS /proc/config.gz
[b]CONFIG_SND_MAX_CARDS=32[/b][/quote]
xD
PozdroOstatnio edytowany przez Jacekalex (2018-11-05 18:12:55)
W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem para bellum ;) | Pozdrawiam :)
Offline
To czemu tu piszą:
Generally the device files are named in the form aaaCxDy
aaa is the service name
x is the card number (0-7)
y the device number (0-?)[/quote]
I tu też piszą to samo:
https://www.kernel.org/doc/html/v4.17/sound/designs/procfile.htmlOstatnio edytowany przez morfik (2018-11-05 18:18:18)
Offline
Zależy,kiedy to pisali, np przed powstaniem USB mobo miały tylko kilka portów ISA/PCI.
Wtedy penie 8 kart starczało, potem doszło USB, w jaju domyślnie jest 32, ale już dodali parametr kernela na wypadek, gdyby kompy kiedyś miały np 1024 karty. xD
Kiedyś się przekonałem na własne oczy, że moduły PPPOE w jaju 3.2 zostały napisane w roku 1998.
Pewnie do tej pory się nie zmieniły.
W innych miejscach mogą być podobne kfiatki. xD
Jajka 4.17 raczej nie pisali od zera, tworzenie kernela to proces ewolucyjny.
Już i tak był płacz, jak wyleciała architektura i386, chociaż ostatnie procki z tej
architektury powstały w czasach, kiedy o istnieniu Linuxa jeszcze nie wiedziałem.
Ostatnio edytowany przez Jacekalex (2018-11-05 18:27:05)
Offline
Z tego co kojarze to roznica pomiedzy [i]hw...[/i] a [i]pcm...[/i] jest taka, ze pierwsze to jest bezposredni dostep do hardware'owych buforow karty dzwiekowej, a drugi to poprzez dodatkowy blokowy cache. Ma to zapewnic bardziej plynne odtwarzanie/nagrywanie.
Offline
a drugi to poprzez dodatkowy blokowy cache. Ma to zapewnic bardziej plynne odtwarzanie/nagrywanie.[/quote]
Obecnie nie tyle płynne, tylko równe.
Jeżeli np chcesz pograć w Quake, a kernel się dowiaduje od sterownika GPU,
że monitor ma input_lag na poziomie 280ms, to o te 280 ms przestawia timer alsy,
żeby się obraz z dźwiękiem nie rozjeżdżał.
Kilka lat temu, jak podłączyłem LCD przez HDMI a dźwięk szedł na głośniki z karty HDA
na mobo, to się praktycznie grać nie dało.
Obecnie ten problem nie występuje, a zastosowanie cache w /dev/snd/pcm to już jest bezwzględna konieczność.Ostatnio edytowany przez Jacekalex (2018-11-06 19:48:11)
W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem para bellum ;) | Pozdrawiam :)
Offline
Time (s) | Query |
---|---|
0.00019 | SET CHARSET latin2 |
0.00008 | SET NAMES latin2 |
0.00168 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.118.184.237' WHERE u.id=1 |
0.00152 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.118.184.237', 1713526097) |
0.00094 | SELECT * FROM punbb_online WHERE logged<1713525797 |
0.00108 | DELETE FROM punbb_online WHERE ident='3.15.4.244' |
0.00102 | DELETE FROM punbb_online WHERE ident='54.36.149.95' |
0.00073 | SELECT topic_id FROM punbb_posts WHERE id=321810 |
0.00091 | SELECT id FROM punbb_posts WHERE topic_id=30709 ORDER BY posted |
0.00089 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=30709 AND t.moved_to IS NULL |
0.00006 | SELECT search_for, replace_with FROM punbb_censoring |
0.00125 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=30709 ORDER BY p.id LIMIT 0,25 |
0.00083 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=30709 |
Total query time: 0.01118 s |