Creative Labs X-Fi Source Code Released for Linux

Questions about hardware,drivers and peripherals
Forum rules
Before you post please read how to get help
Level 1
Level 1
Posts: 2
Joined: Mon Nov 24, 2008 10:49 am

Creative Labs X-Fi Source Code Released for Linux

Postby jyoungxxxx » Mon Nov 24, 2008 11:27 am

Creative Labs has open sourced their drivers for linux, but it won't work with your IO Console. That is pretty reasonable though compared to no driver at all and not open sourced.

This is the forum location at Creative where the central updates seem to be about the driver that was released Nov. 7'th. ... .id=132288

Now these are the correct steps according to what I have found, if anybody has anything else to add please do. I have had my card working in Ubuntu perfectly, but I have installed Mint and I crashed and couldn't boot up after I rebooted. You can always sudo make uninstall if you get an error during the installation, but don't reboot if you get an error.

These are the steps that I did in Ubuntu as well and I got it to work for the X-Fi Titanium PCI Express card.

1. Download the driver from ... adId=10792
2. Extract it to ~/Downloads
3. Open up Terminal and "cd ~/Downloads/XFiDrv_Linux_Public_US_1.00"
4. Now your ready to compile the driver.

Note: You gotta change the subsystem ID in the code though because it isn't the correct subsystem ID.

Procedure for fixing the subsystem ID:

5. sudo lspci -xvvv

This is how the device looks with 2.6.24 kernel (I noticed on 8.10 with Ubuntu which is using 2.6.27-7 that it doesn't say unknown after "Creative Labs")
Update: I saw in the forums that somebody had to update to 2.6.27 for this to work so I would make sure you got 2.6.27 first!!!

04:00.0 Audio device: Creative Labs Unknown device 000b (rev 03)
Subsystem: Creative Labs Unknown device 0043 <--- This is your subsystem ID; This could be different!
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0, Cache Line Size: 4 bytes
Interrupt: pin A routed to IRQ 11
Region 0: Memory at c7ff0000 (64-bit, non-prefetchable) [size=64K]
Region 2: Memory at c7c00000 (64-bit, non-prefetchable) [size=2M]
Region 4: Memory at c0000000 (64-bit, non-prefetchable) [size=64M]
Capabilities: [40] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [48] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable-
Address: 0000000000000000 Data: 0000
Capabilities: [58] Express Endpoint IRQ 0
Device: Supported: MaxPayload 128 bytes, PhantFunc 0, ExtTag-
Device: Latency L0s <64ns, L1 <1us
Device: AtnBtn- AtnInd- PwrInd-
Device: Errors: Correctable- Non-Fatal- Fatal- Unsupported-
Device: RlxdOrd+ ExtTag- PhantFunc- AuxPwr+ NoSnoop+
Device: MaxPayload 128 bytes, MaxReadReq 512 bytes
Link: Supported Speed 2.5Gb/s, Width x1, ASPM L0s L1, Port 0
Link: Latency L0s <64ns, L1 <1us
Link: ASPM Disabled RCB 64 bytes CommClk- ExtSynch-
Link: Speed 2.5Gb/s, Width x1
00: 02 11 0b 00 06 00 10 00 03 00 03 04 01 00 00 00
10: 04 00 ff c7 00 00 00 00 04 00 c0 c7 00 00 00 00
20: 04 00 00 c0 00 00 00 00 00 00 00 00 02 11 43 00
30: 00 00 00 00 40 00 00 00 00 00 00 00 0b 01 00 00

6. lspci -nv
This is my output.
04:00.0 0403: 1102:000b (rev 03)
Subsystem: 1102:0043
Flags: bus master, fast devsel, latency 0, IRQ 11
Memory at c7ff0000 (64-bit, non-prefetchable) [size=64K]
Memory at c7c00000 (64-bit, non-prefetchable) [size=2M]
Memory at c0000000 (64-bit, non-prefetchable) [size=64M]
Capabilities: [40] Power Management version 3
Capabilities: [48] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable-
Capabilities: [58] Express Endpoint IRQ 0

Notice how "Subsystem: 1102:0043" is not the same as the define from the ctdrv.h file "#define PCI_SUBSYS_CREATIVE_SB0880 0x0041"

This is what it looks like in ctdrv.h
#define PCI_VENDOR_CREATIVE 0x1102
#define PCI_DEVICE_CREATIVE_20K1 0x0005
#define PCI_DEVICE_CREATIVE_20K2 0x000B
#define PCI_SUBSYS_CREATIVE_SB0760 0x0024
#define PCI_SUBSYS_CREATIVE_SB0880 0x0041 <--- change to your subsystem ID of which you can see when you run lspci -xvvv

7. nano ctdrv.h and change the ID like above and save the file.
8. inside the Terminal type:
a. make
b. sudo make install

9. If you mess up and need to redo the compile:
a. sudo make uninstall
b. make clean and then repeat step 8 A through B.
Last edited by jyoungxxxx on Tue Nov 25, 2008 4:09 pm, edited 2 times in total.

Level 1
Level 1
Posts: 12
Joined: Thu Nov 20, 2008 7:22 pm
Location: Sweden

Re: Creative Labs X-Fi Source Code Released for Linux

Postby BlindGuineaPig » Tue Nov 25, 2008 3:34 pm

Nice guide, been meaning to check this out for quite a while but never gotten around to it. Maybe this time I might actually do it :)
Eager to learn, quick to forget.

Return to “Hardware Support”

Who is online

Users browsing this forum: jglen490, skjones007 and 9 guests