How to use a Creative Sound Blaster X-Fi Titanium under Linux

In 2008, Creative has released its X-Fi driver for Linux under the GPL. The driver is not complete, but it lets you use the basic features of your card. You can obtain it from Creative's support website. The driver is called "Creative Sound Blaster X-Fi and X-Fi Titanium Series Linux 32-bit / 64-bit Driver Source Release ", version 1.00, published on November 6 2008.

Sadly, it isn't compliant with newer boards like the PCI-E Titanium version. To use incompliant cards under linux, you have to edit the driver's source code.

First, you need to know the subsystem ID of your card. In this case it is 0x0042.

chorse@aquila:~$ lspci -v
[...]
02:00.0 Audio device: Creative Labs [X-Fi Titanium series] EMU20k2 (rev 03)
	Subsystem: Creative Labs Device 0042
	Flags: bus master, fast devsel, latency 0, IRQ 19
	Memory at fcff0000 (64-bit, non-prefetchable) [size=64K]
	Memory at fcc00000 (64-bit, non-prefetchable) [size=2M]
	Memory at fb000000 (64-bit, non-prefetchable) [size=16M]
	Capabilities: <access denied>
	Kernel driver in use: CTALSA
	Kernel modules: ctxfi
[...]

Now enter the directory where you have extracted the driver's source code into. Open
ctdrv.h with a text editor.

  1. /**
  2.  * Copyright (C) 2008, Creative Technology Ltd. All Rights Reserved.
  3.  *
  4.  * This source file is released under GPL v2 license (no other versions).
  5.  * See the COPYING file included in the main directory of this source
  6.  * distribution for the license terms and conditions.
  7.  *
  8.  * @file ctdrv.h
  9.  *
  10.  * @breaf
  11.  * This file contains the definition of the programming interfaces that
  12.  * provided by the driver module.
  13.  *
  14.  * @author Liu Chun
  15.  *
  16.  */
  17.  
  18. #ifndef CTDRV_H
  19. #define CTDRV_H
  20.  
  21. #define PCI_VENDOR_CREATIVE 0x1102
  22. #define PCI_DEVICE_CREATIVE_20K1 0x0005
  23. #define PCI_DEVICE_CREATIVE_20K2 0x000B
  24. #define PCI_SUBVENDOR_CREATIVE 0x1102
  25. #define PCI_SUBSYS_CREATIVE_SB0760 0x0024
  26. #define PCI_SUBSYS_CREATIVE_SB0880 0x0041
  27. #define PCI_SUBSYS_CREATIVE_HENDRIX 0x6000
  28.  
  29. #define CT_XFI_DMA_MASK 0xffffffffUL /* 32 bits */
  30.  
  31. #endif /* CTDRV_H */
  32.  

Now change the definition of PCI_SUBSYS_CREATIVE_SB0880 to the value you have detected before

  1. #define PCI_SUBSYS_CREATIVE_SB0880 0x0042

and build the driver as described in the README document.

Update 2009-05-19: Finally ALSA support has arrived!

2 Comments

  1. jsimons
    Posted July 22, 2009 at 12:32 UTC | Permalink

    I was glad to find your webpage and followed the instructions nevertheless
    vlc gives next results:
    ALSA lib confmisc.c:768:(parse_card) cannot find card ‘0′
    ALSA lib conf.c:3513:(_snd_config_evaluate) function snd_func_card_driver returned error: Bestand of map bestaat niet
    ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
    ALSA lib conf.c:3513:(_snd_config_evaluate) function snd_func_concat returned error: Bestand of map bestaat niet
    ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
    ALSA lib conf.c:3513:(_snd_config_evaluate) function snd_func_refer returned error: Bestand of map bestaat niet
    ALSA lib conf.c:3985:(snd_config_expand) Evaluate error: Bestand of map bestaat niet
    ALSA lib pcm.c:2211:(snd_pcm_open_noupdate) Unknown PCM default
    [00000453] oss audio output error: cannot open audio device (/dev/dsp)
    I: caps.c: Limited capabilities successfully to CAP_SYS_NICE.
    I: caps.c: Dropping root privileges.
    I: caps.c: Limited capabilities successfully to CAP_SYS_NICE.
    [00000453] pulse audio output error: Failed to connect to server: Connection refused
    [00000453] pulse audio output error: Pulse initialization failed

    I have ubuntu yauty installed upon Dell PowerEdge T105
    Is there any solution of the problem? Thanks in advance
    yours sincerely
    Joop Simons

  2. Louis Bos
    Posted July 27, 2009 at 21:26 UTC | Permalink

    Works perfect

Post a Comment

Your email is never shared. Required fields are marked *

*
*