Turtle Beach MultiSound Pinnacle
Okay, here comes something tricky, just to warn you.
I have been trying to get a Turtle Beach MultiSound Pinnacle board to work under Linux. It's a revision F model, and it works under Windows 98SE.
[Disclaimer]Yes, I know it's an ISA sound card that's more than ten years old, made in 1997. But this thing wipes the floor with any SoundBlaster unless you're a gamer, or you need surround sound. It's actually a Kurzweil music workstation including its own sampler with an ISA connector. And no, I don't want to replace it with something newer. This particular computer has been built around this very card, so this card is the reason why the machine exists in the first place.[/Disclaimer]
Before anyone asks me whether I searched the forum: I searched the whole Web for solutions. If there was anything useful enough for me already discussed here, the card would be working under Linux now. Besides, I believe that only few people here even still run computers (other than servers and Intel Atom machines) with single-core CPUs, let alone with an ISA slot on the mainboard (ISA for consumers is practically as dead as SCSI and has been for almost a decade), let alone with an actual device in that slot.
Now back to getting it to run. Before ALSA 1.0.20, the ALSA driver (module snd-msnd-pinnacle) was apparently broken. I managed to compile and install it (I had to compile it with settings adapted to my own card since I turned off PnP), but when I inserted the module into the kernel, I got nothing but a kernel oops, and under Ubuntu I was not even able to unload it again. I tested it with various Ubuntu versions and Fedora 10, by the way. I wrote the original maintainer, never got a reply, wrote some people at ALSA (to not have to file an official bug complete with all those procedures necessary just to get to work what may be the one single remaining Pinnacle in a Linux machine worldwide), no reply again, but they worked on snd-msnd-pinnacle before 1.0.20 and 1.0.21 were released.
So I decided to once again build ALSA from sources entirely, now under Ubuntu 9.04. The latter comes with ALSA 1.0.18 which is useless for my needs (snd-msnd-pinnacle not repaired yet and so on), besides, snd-msnd-pinnacle didn't come with it as a binary (what for anyway, for one card or what). I got me the latest sources and began to build it according to ALSA's own manual, starting with the driver. The config line read as follows with all the options I got from Windows and the card's own jumper settings:
Code:
./configure --with-cards=msnd-pinnacle io=0x290 irq=10 mem=0xd8000 cfg=0x270 mpu_io=0x330 mpu_irq=9 isapnp=0 index=0 --with-isapnp=no --with-sequencer=yes
Yes, this was necessary for a non-PnP ISA device.
- io = The Pinnacle's I/O port
- irq = The Pinnacle's IRQ
- mem = The Pinnacle's memory array
- cfg = The Pinnacle's control I/O port (needed when it's jumpered to non-PnP)
- mpu_io = The Kurzweil MA-1 synth's I/O port
- mpu_irq = The Kurzweil MA-1 synth's IRQ (this beast takes up up to three IRQs and six I/O ports when you're also using stuff like the on-board IDE controller for a CD-ROM drive)
- isapnp/with-isapnp = ISA PnP mode (turned off, it's a Plug 'n Pray card anyway, manual configuration was the only way to get it to work under Windows, and I think rejumpering it according to what OS I'm booting is ridiculous)
- index = it's my primary (and only) piece of sound hardware on this machine
- with-sequencer = MIDI sequencer support, turned on to be safe
Well, I built it, I even got me the necessary firmware files from Turtle Beach and put them into the respective folders.
I made an /etc/modprobe.d/alsa-base.conf from scratch which reads like this:
Code:
options snd slots=snd-msnd-pinnacle
alias snd-card-0 snd-msnd-pinnacle
options snd-msnd-pinnacle cfg=0x270 io=0x290 irq=10 mem=0xd8000 mpu_io=0x330 mpu_irq=9 isapnp=0 index=0
However, snd-msnd-pinnacle is not loaded at startup. There is no error message at all, but this appears in dmesg:
Code:
[ 94.366286] snd_msnd_pinnacle: Non-PnP mode: configuring at port 0x270
[ 94.366303] snd_msnd_pinnacle: snd_msnd_write_cfg: I/O error
[ 94.366327] msnd-pinnacle: probe of msnd-pinnacle.0 failed with error -5
The only line I agree with is the first line.
The German UbuntuUsers forum recommends a few lines to check certain things:
Code:
martin(at)DerNeueAlte:~$ lsb_release -d
Description: Ubuntu 9.04
martin(at)DerNeueAlte:~$ uname -r
2.6.28-15-generic
martin(at)DerNeueAlte:~$ cat /proc/asound/cards
--- no soundcards ---
martin(at)DerNeueAlte:~$ aplay -l
aplay: device_list:223: keine Soundkarten gefunden ...
martin(at)DerNeueAlte:~$ aplay /usr/share/sounds/alsa/Noise.wav
ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
ALSA lib conf.c:4154:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4154:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
ALSA lib conf.c:4154:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4633:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2211:(snd_pcm_open_noupdate) Unknown PCM default
aplay: main:608: Fehler beim Öffnen des Gerätes: No such file or directory
martin(at)DerNeueAlte:~$ lspci | grep -i audio
martin(at)DerNeueAlte:~$ ps -C esd
PID TTY TIME CMD
martin(at)DerNeueAlte:~$ ps -C arts
PID TTY TIME CMD
martin(at)DerNeueAlte:~$ ps -C pulseaudio
PID TTY TIME CMD
3501 ? 00:00:00 pulseaudio
martin(at)DerNeueAlte:~$ grep "^audio" /etc/group | grep "$USER" | wc -l
0
martin(at)DerNeueAlte:~$ lsmod | grep "snd"
snd_msnd_pinnacle 25228 0
snd_msnd_lib 22148 1 snd_msnd_pinnacle
snd_mpu401_uart 15360 1 snd_msnd_pinnacle
snd_rawmidi 29984 2 snd_msnd_lib,snd_mpu401_uart
snd_seq_device 15372 1 snd_rawmidi
snd_pcm_oss 45984 0
snd_mixer_oss 22912 1 snd_pcm_oss
snd_pcm 83716 3 snd_msnd_pinnacle,snd_msnd_lib,snd_pcm_oss
snd_timer 29192 1 snd_pcm
snd 62244 9 snd_msnd_pinnacle,snd_msnd_lib,snd_mpu401_uart,snd_rawmidi,snd_seq_device,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_timer
snd_page_alloc 17032 1 snd_pcm
soundcore 15200 1 snd
martin(at)DerNeueAlte:~$ head -n 3 /proc/asound/card0/codec#0
head: „/proc/asound/card0/codec#0“ kann nicht zum Lesen geöffnet werden: No such file or directory
martin(at)DerNeueAlte:~$ head -n 3 /proc/asound/card0/codec97#0/ac97#0-0
head: „/proc/asound/card0/codec97#0/ac97#0-0“ kann nicht zum Lesen geöffnet werden: No such file or directory
martin(at)DerNeueAlte:~$ head -n 3 /proc/asound/card0/codec97#0/ac97#0-0+regs
head: „/proc/asound/card0/codec97#0/ac97#0-0+regs“ kann nicht zum Lesen geöffnet werden: No such file or directory
martin(at)DerNeueAlte:~$ asoundconf list
Names of available sound cards:
martin(at)DerNeueAlte:~$ cat ~/.asoundrc
cat: /home/martin/.asoundrc: No such file or directory
martin(at)DerNeueAlte:~$ cat ~/.asoundrc.asoundconf
cat: /home/martin/.asoundrc.asoundconf: No such file or directory
I apologize for the German, but I am German. By the way, there has never been a /proc/asound/card0 at all. Besides, I'm wondering why it's looking for something AC '97-like.
A bit of information about the (successfully built) module snd-msnd-pinnacle, since you folks might not see it every day:
Code:
martin(at)DerNeueAlte:/~$ modinfo snd-msnd-pinnacle
filename: /lib/modules/2.6.28-15-generic/kernel/sound/isa/msnd/snd-msnd-pinnacle.ko
firmware: turtlebeach/pndsperm.bin
firmware: turtlebeach/pndspini.bin
license: GPL
description: Turtle Beach MultiSound (Pinnacle/Fiji) Linux Driver
author: Karsten Wiese <###(address of maintainer)###>
srcversion: 7E1D1FF6894B0D5D14A1898
alias: acpi*:TBS0001:*
alias: pnp:dTBS0001*
alias: acpi*:TBS0000:*
alias: pnp:dTBS0000*
depends: snd-msnd-lib,snd-pcm,snd,snd-mpu401-uart
vermagic: 2.6.28-15-generic SMP mod_unload modversions 586
parm: index:Index value for msnd_pinnacle soundcard. (array of int)
parm: id:ID string for msnd_pinnacle soundcard. (array of charp)
parm: isapnp:ISA PnP detection for specified soundcard. (array of bool)
parm: io:IO port # (array of long)
parm: irq:array of int
parm: mem:array of long
parm: write_ndelay:array of int
parm: calibrate_signal:int
parm: digital:array of int
parm: cfg:array of long
parm: reset:array of int
parm: mpu_io:array of long
parm: mpu_irq:array of int
parm: ide_io0:array of long
parm: ide_io1:array of long
parm: ide_irq:array of int
parm: joystick_io:array of long
These are the first two hwinfo entries (the rest has got nothing to do with the Pinnie):
Code:
martin(at)DerNeueAlte:/proc$ hwinfo --isapnp
09: ISA(PnP) 01.1: 0000 Unclassified device
[Created at isapnp.142]
UDI: /org/freedesktop/Hal/devices/pnp_TBS0001
Unique ID: u9pt.HJ8b5IkvLf0
SysFS ID: /devices/pnp1/01:01/01:01.01
SysFS BusID: 01:01.01
Hardware Class: unknown
Model: "Turtle Beach Pinnacle"
Vendor: TBS
Device: eisa 0x2002 "Turtle Beach Pinnacle"
SubVendor: TBS
SubDevice: eisa 0x0001
Config Status: cfg=new, avail=yes, need=no, active=unknown
10: ISA(PnP) 01.0: 0000 Unclassified device
[Created at isapnp.142]
UDI: /org/freedesktop/Hal/devices/pnp_TBS0000
Unique ID: R_Yp.mhY9+SljT2D
SysFS ID: /devices/pnp1/01:01/01:01.00
SysFS BusID: 01:01.00
Hardware Class: unknown
Model: "Turtle Beach Pinnacle"
Vendor: TBS
Device: eisa 0x2002 "Turtle Beach Pinnacle"
SubVendor: TBS
SubDevice: eisa 0x0000
Config Status: cfg=new, avail=yes, need=no, active=unknown
(snip)
Please note "Hardware Class: unknown". Ubuntu does not know this is a sound card.
Talking about ISA PnP:
Code:
martin(at)DerNeueAlte:~$ dmesg | grep isapnp
[ 1.653083] isapnp: Scanning for PnP cards...
[ 1.783316] isapnp: 1 Plug & Play card detected total
It found an ISA PnP card—despite the fact that the Pinnacle is explicitly jumpered non-ISA PnP. There isn't any other ISA hardware in this computer, in fact, there is even only one ISA slot on the mainboard.
The resources chosen for the Pinnacle are all vacant:
Code:
martin(at)DerNeueAlte:~$ cat /proc/ioports
0000-001f : dma1
0020-0021 : pic1
0040-0043 : timer0
0050-0053 : timer1
0060-0060 : keyboard
0064-0064 : keyboard
0070-0073 : rtc0
0080-008f : dma page reg
00a0-00a1 : pic2
00c0-00df : dma2
00f0-00ff : fpu
0170-0177 : 0000:00:07.1
0170-0177 : pata_via
01f0-01f7 : 0000:00:07.1
01f0-01f7 : pata_via
0213-0213 : ISAPnP
02f8-02ff : serial
0376-0376 : 0000:00:07.1
0376-0376 : pata_via
0378-037a : parport0
037b-037f : parport0
03c0-03df : vga+
03f2-03f5 : floppy
03f6-03f6 : 0000:00:07.1
03f6-03f6 : pata_via
03f7-03f7 : floppy DIR
03f8-03ff : serial
04d0-04d1 : pnp 00:02
0a79-0a79 : isapnp write
0cf8-0cff : PCI conf1
4000-4003 : ACPI PM1a_EVT_BLK
4008-400b : ACPI PM_TMR
4010-4015 : ACPI CPU throttle
4020-4023 : ACPI GPE0_BLK
40f0-40f1 : ACPI PM1a_CNT_BLK
5000-500f : 0000:00:07.4
5000-5007 : vt596_smbus
6000-607f : via686a
6000-607f : 0000:00:07.4
6000-607f : via686a
e000-e00f : 0000:00:07.1
e000-e00f : pata_via
e400-e41f : 0000:00:07.2
e400-e41f : uhci_hcd
e800-e81f : 0000:00:07.3
e800-e81f : uhci_hcd
martin(at)DerNeueAlte:~$ cat /proc/interrupts
CPU0
0: 1421123 XT-PIC-XT timer
1: 15586 XT-PIC-XT i8042
2: 0 XT-PIC-XT cascade
5: 386512 XT-PIC-XT nvidia
6: 4 XT-PIC-XT floppy
7: 4 XT-PIC-XT parport0
8: 0 XT-PIC-XT rtc0
11: 72673 XT-PIC-XT acpi, uhci_hcd:usb1, uhci_hcd:usb2, 0000:00:0f.0
12: 131461 XT-PIC-XT i8042
14: 28293 XT-PIC-XT pata_via
15: 65663 XT-PIC-XT pata_via
NMI: 0 Non-maskable interrupts
LOC: 0 Local timer interrupts
RES: 0 Rescheduling interrupts
CAL: 0 Function call interrupts
TLB: 0 TLB shootdowns
SPU: 0 Spurious interrupts
ERR: 0
MIS: 0
martin(at)DerNeueAlte:~$ cat /proc/iomem
00000000-00001fff : System RAM
00002000-00005fff : reserved
00006000-00006fff : System RAM
00007000-0000ffff : reserved
00010000-00092bff : System RAM
0009fc00-0009ffff : reserved
000a0000-000bffff : Video RAM area
000c0000-000cf7ff : Video ROM
000cf800-000cffff : pnp 00:00
000f0000-000fffff : reserved
000f0000-000fffff : System ROM
00100000-1ffeffff : System RAM
00100000-005050fe : Kernel code
005050ff-0072ae5f : Kernel data
007b8000-008780ab : Kernel bss
01402000-01402fff : Local APIC
1fff0000-1fff2fff : ACPI Non-volatile Storage
1fff3000-1fffffff : ACPI Tables
e0000000-e7ffffff : PCI Bus 0000:01
e0000000-e7ffffff : 0000:01:00.0
e8000000-ebffffff : 0000:00:00.0
ec000000-edffffff : PCI Bus 0000:01
ec000000-ecffffff : 0000:01:00.0
ec000000-ecffffff : nvidia
ed000000-ed01ffff : 0000:01:00.0
ee000000-ee007fff : 0000:00:0f.0
ee000000-ee007fff : 0000:00:0f.0
fee00000-fee00fff : pnp 00:00
ffff0000-ffffffff : reserved
ffff0000-ffffffff : pnp 00:00
And snd-msnd-pinnacle isn't a Legacy Non-PnP ISA Driver either. Error messages from alsaconf:
Code:
(snip)
modinfo: could not find module snd-opl3sa2
modinfo: could not find module snd-cs4236
modinfo: could not find module snd-cs4232
modinfo: could not find module snd-cs4231
modinfo: could not find module snd-es18xx
modinfo: could not find module snd-es1688
modinfo: could not find module snd-sb16
modinfo: could not find module snd-sb8
(snip)
↑These↑ are the Legacy Non-PnP ISA Drivers.
It's not that I'm in dire need of help with this card, it's just that it would be nice if I got it to work. Furthermore, I'm not at this particular computer that often, so it's normal if I cannot give you detailed answers for two, three, or four weeks.