Linux Foundation launches linux.com

Today, the community website linux.com was (re-)launched by the Linux Foundation. I've already created an account there and I'm checking out now.

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!

Hello World!

This is my new weblog. I will blog about topics that matter for me.