X-Fi: o trochu dále

Včera večer jsem strávil dost dlouho prohledáváním archivů, mailing listu alsa driverů a konečně mám nějaký pozitivní výsledek. Při testu repráků přes speaker-test -Dplughw:0 -c6 je slyšet šum ze VŠECH kanálů. Co tomu předcházelo? Začneme popořádku.

Odstranit oficiální driver nainstalovaný podle předchozího návodu. Proč odstraňovat oficiální driver? Odpověď je nasnadě: další vývoj podle toho co jsem nalezl s největší pravděpodobností nebude, a tudíž zůstat na 2+0 je u karty typu X-Fi nemyslitelné. Odinstalace se provede takto: osobně mám zdrojáky oficiálního driveru v /usr/src/XFiDrv_Linux_Public_US_1.00. Takže jdeme na to

# cd /usr/src/XFiDrv_Linux_Public_US_1.00
# make uninstall

a je hotovo. Reboot to jistí

Druhý krok je stahnout unstable (opravdu se jedná o nestavbilní vývojovou verzi – práce je tedy na vlastní nebezpečí – ale výsledek za to stojí)

# cd /usr/src
# mkdir X-Fi
# wget ftp://ftp.kernel.org/pub/linux/kernel/people/tiwai/snapshot/alsa-driver-unstable-snapshot.tar.gz
# tar xzfv alsa-driver-unstable-snapshot.tar.gz

máme rozbalený archiv a otevřeme vytvořený adresář

# cd alsa-driver-unstable

Následuje vlastní kompilace – pro přeložení s podporou X-Fi je nutný přepínač –with-cards=ctxfi. Samozřejmě můžete zvolit –with-cards=all a budete mít k dispozici komplet vše, což je IMHO zbytečné 🙂 . Pro další detaily je zde oblíbené ./configure –help

# ./configure --with-cards=ctxfi

pokud vše dopadne OK, pak zkompilovat a instalovat.

# make
# make install

jestli vše dopadne bez problému, je (skoro) vyhráno. Někde doporučují unload (jak se to sakra řekne správně česky – odnahrát??) aktuálně natažené moduly snd_ přes rmmod – seznam získáte třeba přes

lsmod | grep snd_ | awk '{ print $1}'

ale stačí i vystoupit/nastoupit (reboot 🙂 ). Kernel většinou nový modul detekuje a nahraje ho automaticky. Není nutné „modprobe snd-ctxfi„.

Pokud máte pulseaudio je pro 5+1 zvuk potřeba mít v /etc/pulse/daemon.conf toto:

default-sample-channels = 6

Pak už jen zbývá vyzkoušet

mirek@vanion:~$ speaker-test -Dplughw:0 -c6

speaker-test 1.0.18

Zařízení pro přehrávání je plughw:0
Parametry proudu jsou: 48000Hz, S16_LE, 6 kanálů
Používám 16 oktáv z růžového šumu
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 86 to 10922
Period size range from 6 to 5461
Using max buffer size 10920
Periods = 4
bylo nastaveno period_size = 2730
bylo nastaveno buffer_size = 10920
 0 - Levý přední
 4 - Střední
 1 - Pravý přední
 3 - Pravý zadní
 2 - Levý zadní
 5 - LFE

a měli byste postupně slyšet šum ze všech repráků – což jsem slyšel. Pohled na mixer v Gnome, KDE nebo alsamixer bude také příjemný

Malý trik – u jezdce označeneho jako Center/LFE  rozdělte kanály. Levý jezdec ovládá hlasitost středního repráku, pravý subwoofer.

Až sem spokojenost. Kde je tedy problém? Při přehrávání musiky hraje jen 5 repráků. Ale bez toho nejdůležitějšího – subwooferu. S alsou se moc nekamarádím, pulseaudio také ne, a z toho co jsem zatím vygooglil nic nezabralo 🙁 Kdyby tedy někdo věděl, budu jen rád. Pokud se mi to povede vyřešit, bude další příspěvek.


Zdroje

  1. Forum Creative: vlákno1 + vlákno2
  2. Alsa-devel: květnový a červnový thread
  3. HOWTO: Surround sound in pulseaudio
  4. google.cz

Komentáře zakázány.


Fatal error: Uncaught Error: Call to undefined function is_user_logged_in() in /var/www/html/mzideknet/www/wp-content/plugins/wp-speed-of-light/inc/caches/file-page-cache.php:253 Stack trace: #0 [internal function]: wpsol_cache('<!DOCTYPE html ...', 9) #1 /var/www/html/mzideknet/www/wp-includes/functions.php(4212): ob_end_flush() #2 /var/www/html/mzideknet/www/wp-includes/class-wp-hook.php(286): wp_ob_end_flush_all('') #3 /var/www/html/mzideknet/www/wp-includes/class-wp-hook.php(310): WP_Hook->apply_filters('', Array) #4 /var/www/html/mzideknet/www/wp-includes/plugin.php(465): WP_Hook->do_action(Array) #5 /var/www/html/mzideknet/www/wp-includes/load.php(788): do_action('shutdown') #6 [internal function]: shutdown_action_hook() #7 {main} thrown in /var/www/html/mzideknet/www/wp-content/plugins/wp-speed-of-light/inc/caches/file-page-cache.php on line 253