HOWTO build X-Fi Modules with gcc 4, kernel 2.6.22 Sucessfull builds : - gcc version 4.2.1 (Debian 4.2.1-5) - Debian unstable - 2.6.22-amd64 (Debian) Asus P5B, Core 2 Duo 6420, Sound Blaster X-Fi Platinum - gcc version 4.1.2 (Gentoo 4.1.2) - gentoo - 2.6.22.8 (Vanilla) - gcc version 4.1.2 (Debian 4.1.2-16) - Debian testing - 2.6.21-amd64 (Debian) Asus M2N-E, AMD64, Sound Blaster X-Fi XtremeMusic - gcc version 4.1.2 (Gentoo 4.1.2) - gentoo - 2.6.22-gentoo-r5 (Gentoo) Dell Dimension 9200 (DXP061), Sound Blaster X-Fi XtremeMusic (D) Dell variant +------------------------------------------+ | Preparing the system | +------------------------------------------+ On Debian/Ubuntu, stock kernel : # apt-get install module-assistant # m-a prepare # m-a update Others distributions, check if you have the following options enabled: CONFIG_SND=m CONFIG_SND_TIMER=m CONFIG_SND_PCM=m CONFIG_SND_HWDEP=m CONFIG_SND_RAWMIDI=m CONFIG_SND_SEQUENCER=m CONFIG_SND_SEQ_DUMMY=m CONFIG_SND_OSSEMUL=y CONFIG_SND_MIXER_OSS=m CONFIG_SND_PCM_OSS=m CONFIG_SND_PCM_OSS_PLUGINS=y CONFIG_SND_SEQUENCER_OSS=y CONFIG_SND_RTCTIMER=m CONFIG_SND_SEQ_RTCTIMER_DEFAULT=y CONFIG_SND_SUPPORT_OLD_API=y CONFIG_SND_VIRMIDI=m CONFIG_SOUND_VMIDI=m CONFIG_SND_EMU10K1=m +------------------------------------------+ | Building the driver : | +------------------------------------------+ - download driver from creative : http://www.creative.com/language.asp?sDestUrl=/support/downloads - download http://olausson.de/x-fi/XFiDrv_Linux_US-1.04_all-in-one_v0.2.patch somewhere. http://blackbox.lostwave.net/x-fi/XFiDrv_Linux_US-1.04_all-in-one_v0.2.patch (mirror) - log as root # tar -xvzf XFiDrv_Linux_US-1.04.tar.gz XFiDrv_Linux_US-1.04/XFiDrv_Linux_US-1.04.tar.bz2 # tar -xvjf XFiDrv_Linux_US-1.04/XFiDrv_Linux_US-1.04.tar.bz2 # chmod -R 755 XFiDrv_Linux_US-1.04 # find XFiDrv_Linux_US-1.04/ -exec touch -c {} \; # patch -p0 < XFiDrv_Linux_US-1.04_all-in-one_v0.2.patch # cd XFiDrv_Linux_US-1.04 # ./configure # make # make install enjoy ! +------------------------------------------+ | FAQ : | +------------------------------------------+ Q: dmesg shows "ctalsa: Unknown symbol malloc_sizes" and the thing stops here. A: Your kernel is compiled with SLUB. But SLAB is required because of malloc_sizes which is not in SLUB. ---> Rebuild your Kernel with SLAB Q: dmesg shows "Unknown symbol __stack_chk_fail" and the thing stops here. A: you need -fno-stack-protector" to CFLAGS ---> edit Makefile.conf and add -fno-stack-protector" to CFLAGS Q: during "make install" I get: "./ctsound: 35: Syntax error: Bad substitution" A: If you are using Debian/ubuntu, your /bin/sh probably point to /bin/dash. ---> Edit ctsound and change #!/bin/sh to #!/bin/bash Last updated 27/09/2007 - 00:07