Find the answer to your Linux question:
Results 1 to 6 of 6
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, ...
Enjoy an ad free experience by logging in. Not a member yet? Register.
  1. #1
    Just Joined!
    Join Date
    Oct 2009
    Location
    Hamburg, Germany
    Posts
    5

    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.

  2. #2
    Just Joined!
    Join Date
    Nov 2009
    Posts
    1
    You are not alone ... I also have a TB Pinnacle card (currently in a little used 100MHz Pentium 1 W95 m/c). I would like to install it in a Ubuntu 9.10 m/c (1GHz dual pentium III, GigaByte 6UXD7 motherboard). I really like this soundcard for the Kurz synth. I look forward to following your progress. Good Luck!

  3. #3
    Just Joined!
    Join Date
    Oct 2009
    Location
    Hamburg, Germany
    Posts
    5
    Well, I hoped someone else would have a clue or could make something out of the messages I posted. But I guess installing obscure 1990s ISA hardware has fallen into oblivion, as have the error messages.

    The situation might change, though. I'm going to reinstall both Windows (I'll try 7 first, and if that fails, XP) and Ubuntu, and while doing that, I'm going to jumper the Pinnacle to PnP mode. I hope it will work as a PnP card then (I heard installing it under XP was a lot easier than under 98SE).

    If everything else fails, I might try to build my own kernel. The kernel might be a troublemaker actually. The thing is that support for all sorts of stuff is compiled into the Ubuntu kernel; I haven't looked at the config for years, but I believe this includes the Fiji/Pinnacle driver. Since it can be built in a number of configurations, my guess is that it is configured for PnP.


    Edit: Stupid me. The card had been jumpered for PnP all the time. I should take a look at my hardware every now and then...

  4. #4
    Just Joined!
    Join Date
    Oct 2009
    Location
    Hamburg, Germany
    Posts
    5
    Okay, new approach.

    The Pinnacle is now jumpered non-PnP with 0x250 being the config port (will be required to make that thing run under Windows XP which doesn't support ISA PnP anymore, making non-PnP ISA necessary *sigh*, but those troubles with sudden BSODs and stuff are an entirely different story).

    The module has been built accordingly using Ubuntu's own alsa-source (1.0.20, in case you're curious). I installed alsa-source with all corresponding tools to build it with module-assistant. I configured alsa-source with
    Code:
    sudo dpkg-reconfigure alsa-source
    That didn't offer me all settings I needed, so I went to edit /etc/alsa/alsa-source manually and changed the line starting with ALSA_CARD_OPTIONS to
    Code:
    ALSA_CARD_OPTIONS="io=0x290 irq=10 mem=0xd8000 cfg=0x250 mpu_io=0x330 mpu_irq=9 isapnp=0"
    Then I built it.
    Code:
    sudo m-a a-i alsa-source
    According to Ubuntu, this command also installed the driver. Well, as it appears, so it did. The module snd-msnd-pinnacle was built, and I can check it with modinfo.

    To be safe, I edited /etc/modprobe.d/alsa-base.conf and added these two lines:
    Code:
    alias sound-card0 snd-msnd-pinnacle
    options snd-msnd-pinnacle irq=10 io=0x290 mem=0xd8000 mpu_irq=9 mpu_io=0x330 cfg=0x250 isapnp=0 index=0
    I found out that the system tries to load the module assuming ISA PnP mode unless one explicitly states it's non-PnP ISA (isapnp=0) wherever possible.

    However, as of now, it refuses to be loaded at system startup (mind you that Legacy as in non-PnP ISA drivers need special precautions to be loaded; I'm still working on finding all this out). And probing it manually doesn't work either. My first attempts added lines like these to /var/sys/syslog:
    Code:
    Dec 24 16:47:25 DerNeueAlte kernel: [  130.607027] snd_msnd_pinnacle: Non-PnP mode: configuring at port 0x250
    Dec 24 16:47:25 DerNeueAlte kernel: [  130.607120] snd_msnd_pinnacle: Configuring MPU to I/O 0x330 IRQ 9
    Dec 24 16:47:25 DerNeueAlte kernel: [  130.620050] snd_msnd_pinnacle: TB Pinnacle revision F, Xilinx version 1.4, I/O 0x290-0x297, IRQ 10, memory mapped to 0xD8000-0xDFFFF
    Dec 24 16:47:25 DerNeueAlte kernel: [  130.664059] msnd-pinnacle msnd-pinnacle.0: firmware: requesting turtlebeach/pndspini.bin
    Dec 24 16:47:25 DerNeueAlte kernel: [  130.672556] snd_msnd_pinnacle: Error loading turtlebeach/pndspini.bin
    Dec 24 16:47:25 DerNeueAlte kernel: [  130.672568] snd_msnd_pinnacle: Cannot upload DSP code
    Dec 24 16:47:25 DerNeueAlte kernel: [  130.672571] snd_msnd_pinnacle: DSP reset failed
    Dec 24 16:47:25 DerNeueAlte kernel: [  130.672600] snd_msnd_pinnacle: Attach failed
    Dec 24 16:47:25 DerNeueAlte kernel: [  130.672626] msnd-pinnacle: probe of msnd-pinnacle.0 failed with error -2
    Dec 24 16:47:25 DerNeueAlte firmware.sh[1995]: Cannot find  firmware file 'turtlebeach/pndspini.bin'
    Okay. It needed the Turtle Beach firmware files pndspini.bin and pndsperm.bin, the same files that used to go to /etc/sound in the good ol' OSS days. I happen to be in possession of these files—don't ask me where they're from, I'm working on remembering this, too. I don't think I've got them from Turtle Beach, they only supply you with the Assembler code to build them). At least I know now that they're required for loading the module. They might also be needed for building them, but they seem to come with the source. What I don't understand, though, is how you can require these files for inserting the module, and at the same time, they're rm -rfed automatically after building (I read it somewhere in source code)?

    Somehow I had figured out earlier that the directory "turtlebeach" means the path "/lib/firmware/turtlebeach" and has to be created unless you've already had a Turtle Beach card running on that system. I created the directory, copied the files in, modprobed, and
    Code:
    Dec 24 16:51:35 DerNeueAlte kernel: [  381.053866] snd_msnd_pinnacle: Configuring MPU to I/O 0x330 IRQ 9
    Dec 24 16:51:35 DerNeueAlte kernel: [  381.072107] snd_msnd_pinnacle: TB Pinnacle revision F, Xilinx version 1.4, I/O 0x290-0x297, IRQ 10, memory mapped to 0xD8000-0xDFFFF
    Dec 24 16:51:35 DerNeueAlte kernel: [  381.128086] msnd-pinnacle msnd-pinnacle.0: firmware: requesting turtlebeach/pndspini.bin
    Dec 24 16:51:35 DerNeueAlte kernel: [  381.138353] msnd-pinnacle msnd-pinnacle.0: firmware: requesting turtlebeach/pndsperm.bin
    Dec 24 16:51:36 DerNeueAlte kernel: [  381.181783] ALSA /usr/src/modules/alsa-driver/isa/msnd/../../alsa-kernel/isa/msnd/msnd.c:130: msnd: Upload host data not multiple of 3!
    Dec 24 16:51:36 DerNeueAlte kernel: [  381.181796] snd_msnd_pinnacle: Error uploading to DSP
    Dec 24 16:51:36 DerNeueAlte kernel: [  381.181817] snd_msnd_pinnacle: Cannot upload DSP code
    Dec 24 16:51:36 DerNeueAlte kernel: [  381.181819] snd_msnd_pinnacle: DSP reset failed
    Dec 24 16:51:36 DerNeueAlte kernel: [  381.181847] snd_msnd_pinnacle: Attach failed
    "Upload host data not multiple of 3!" Great. Now I seem to have reached a point at which only the developers can help me out, for the only references to this which can be found on the web are copies of the source code of alsa-driver.

    Or can anyone here make something of this?

  5. #5
    Just Joined!
    Join Date
    May 2010
    Posts
    1

    Three already

    Hi,

    my TB Pinnacle has been sleeping in a box for a while (kids could make You hobbies disappear however my newer computer is broken now so I use old one, one of the last QDI boards equipped with ISA slot.

    So I have simply plugged the card in and awaiting the "whoila", however after booting Debian Squeeze, nothing happened, no card detected, so I was kind of disappointed. Then I found this forum.

    I positively know, that I used this card with PnP ON with some Debian version, probably the Etch. The card worked well. The Etch was of kernel version 2.6.18. So anything has happened to the driver, it should have been after 2.6.18.

    I also have long standing problems with even older from Turtle Beach - the Tropez. This is quite old piece of hardware, no PnP available, however it worked with Debian Woody somehow, and I don't know whether I simply forgot how to make it work (I was even not quite sure of the right parameters), or something has broken later in kernel so that I couldn't start it anymore. The Tropez was an exceptional piece of soundcard with such a sound quality that no Soundblaster could have matched for 10 years forward...


    Back to the Pinnacle. I know that the pndsp*.bin files I must have compiled from TB source files, I might even be able to find the manual page if necessarry.

    After the effort You have shown, I really think that the only way to go is thru kernel developers. I don't have so much time to do it myself, but I will be glad to hear of any accomplishment of Yours.

  6. #6
    Just Joined!
    Join Date
    Oct 2009
    Location
    Hamburg, Germany
    Posts
    5
    I MADE IT!

    I finally brought the big old Pinnacle to life under Linux! It works quite well so far. Usual crystal-clear sound, even PulseAudio detects it up to its three different inputs (Line, Aux, Microphone).

    Things I still need to test are the on-board synth (looks like its MIDI connectors are there, though). The digital I/O board looks like it doesn't work, but then again, it had its issues under Windows already in my case.

    Probably the two most important things to do: get and install firmware files so that the kernel module works, and properly edit alsa-base.conf so that ALSA finds the card in the first place.


    INSTALLATION INSTRUCTIONS FOR TURTLE BEACH MULTISOUND CARDS

    NOTE: This has been tested with a Turtle Beach MultiSound Pinnacle Rev. F unter Ubuntu 12.04.

    Step 1: Prepare the card itself.

    If you're dual-booting with a Windows install under which the card is already running, go on with step 3. Otherwise continue here.

    With your GNU/Linux system running, check which hardware ports are still available.

    Code:
    $ cat /proc/ioports
    Classic, Tahiti and Monterey users

    There's a switch jumper on the card (SW1) which sets the I/O port. See the possible combinations for the eight available ports here (stason.org/TULARC/pc/sound-cards-multimedia/TURTLE-BEACH-SYSTEMS-INC-Sound-Card-MULTISOUND-MON.html).

    Don't forget which I/O port you've chosen.

    Fiji and Pinnacle users

    There's a double jumper on the card (JP9) which sets the configuration port or PnP. It's usually jumpered for PnP by default. Set it to a configuration port. ISA PnP is deprecated in pretty much all halfway recent operating systems. Ubuntu, for example, phased out the ISA PnP packages quite early (they would work today, but don't even try, it's not worth it), and Windows discontinued ISA PnP after 98SE.

    The ports 0x250, 0x260 and 0x270 are available. 0x250 is usually a safe bet unless it's already taken by the system.

    Both jumpers open set the card to PnP. The upper jumper (the upper end of the card is the far side from the ISA connector) sets it to 0x250, the lower one to 0x260 and both to 0x270.

    Don't forget which configuration port you've chosen.

    The I/O port will be selected by the driver.


    Step 2: Configure the BIOS.

    Reboot your machine. Or shut it down completely and take the downtime to install the card.

    Enter the BIOS and find where to configure the IRQs for PnP. Classic, Monterey and Pinnacle require two Legacy ISA IRQs due to their on-board romplers, as does the Tahiti with a Rio daughterboard mounted, the "naked" Tahiti and the Fiji need only one. The behemoth of MultiSounds, a Pinnacle with a daughterboard, would require three Legacy ISA IRQs, but the Linux driver can't access the daughterboard. If you plan on using the on-board CD-ROM IDE connector, you'll need yet another IRQ.

    Valid IRQs for MultiSound cards are 5, 7, 9, 10, 11 and 12; the IRQs 9 through 11 are preferred. An IRQ known to work for the IDE connector is 15.

    Switch the required number of ports from ISA PnP/PCI to Legacy ISA.

    Boot into GNU/Linux. If the system runs, check whether the IRQs you've chosen are free; they should.

    Code:
    $ cat /proc/interrupts
    If anything went haywire, go back to the BIOS and change the Legacy ISA IRQ(s) again. Make sure to switch the old one(s) back to ISA PnP/PCI.


    Step 3: See if the kernel module is there in the first place.

    It can be found under /lib/modules/<your kernel>/kernel/sound/isa/msnd. If snd-msnd-classic.ko (for Classic/Tahiti/Monterey) or snd-msnd-pinnacle.ko (for Fiji/Pinnacle) is there, take the next step. It usually is.

    If not, you'll have to install the ALSA sources and compile the driver yourself. You don't need any further card-specific options, by the way, as the options are set later on. --with-sequencer=yes is recommended.


    Step 4: Obtain the firmware.

    This is actually the most complicated part, at least for Fiji/Pinnacle users. The Turtle Beach MultiSound cards require proprietary firmware files to run, and they're not always (that is, usually not) delivered within the distribution. Ubuntu, for example, does not add this particular firmware, not even in a special package (probably because there are next to no MultiSound ISA cards alive in Linux machines).

    Go to www . turtlebeach . com, head for the Support section, then Support Home / Downloads / Discontinued Products (Unsupported) / Sound Cards / Pinnacle / Documentation.

    Classic, Tahiti and Monterey owners:

    Download the file named msndvkit.zip (tarbomb, you might want to put it into a separate folder). Unpack it, then unpack MsndFiles.zip (another tarbomb).

    Now copy the firmware files to /etc/sound (the old OSS locations):

    Code:
    # cp DSPCODE/MSNDINIT.BIN /etc/sound/msndinit.bin
    # cp DSPCODE/MSNDPERM.REB /etc/sound/msndperm.bin
    Link firmware files to /lib/firmware/turtlebeach for ALSA:

    Code:
    # mkdir /lib/firmware/turtlebeach
    # ln -s /etc/sound/msndinit.bin /lib/firmware/turtlebeach
    # ln -s /etc/sound/msndperm.bin /lib/firmware/turtlebeach
    Fiji and Pinnacle owners:

    Download the file named pnddk100.zip (tarbomb, but contains only one folder). Unpack it. You'll get a PINNDDK folder.

    You don't get ready-to-run firmware files, though; you have to convert the existing ones. But that can be done.

    Install flex from the package management (given you have one). Current versions work, you don't need any old ones.

    Create a file named conv.l with the following content:

    Code:
    %%
    [ \n\t,\r]
    \;.*
    DB
    [0-9A-Fa-f]+H	{ int n; sscanf(yytext, "%xH", &n); printf("%c", n); }
    Compile conv.l:

    Code:
    $ make LEX=flex LOADLIBES=-lfl conv
    Convert and copy the firmware files to /etc/sound (the old OSS locations):

    Code:
    # ./conv < PINNDDK/dspcode/pndspini.asm > /etc/sound/pndspini.bin
    # ./conv < PINNDDK/dspcode/pndsperm.asm > /etc/sound/pndsperm.bin
    Link firmware files to /lib/firmware/turtlebeach for ALSA:

    Code:
    # mkdir /lib/firmware/turtlebeach
    # ln -s /etc/sound/pndspini.bin /lib/firmware/turtlebeach
    # ln -s /etc/sound/pndsperm.bin /lib/firmware/turtlebeach

    Step 5: Configure the kernel module.

    Necessary to tell the kernel what to do with a piece of non-PnP hardware which the system doesn't even detect.

    First of all, don't even think about trying ISA PnP. It's deprecated. Ubuntu, for example, discontinued the ISA PnP packages long ago. Besides, if you dual-boot with Windows (which is often the case with cards like these to get the best out of them), releases after 98SE don't support ISA PnP anymore anyway, and you don't want to rejumper the card prior to choosing the OS in your bootloader.

    Classic, Tahiti and Monterey users:

    Add to /etc/modprobe.d/alsa-base.conf at the end:

    Code:
    options snd-msnd-pinnacle <options>
    alias snd-card-0 snd-msnd-classic
    alias sound-slot-0 snd-msnd-classic
    Options:

    • isapnp — Required. Enables ISA PnP mode. That is, ISA PnP mode is enabled by default. Disable it (isapnp=0).
    • io — Required. The card's I/O port. Valid ports are 0x210, 0x220, 0x230, 0x240, 0x250, 0x260, 0x290, 0x3E0. Enter the port jumpered on the card.
    • irq — Required. The card's IRQ. Valid IRQs are 5, 7, 9, 10, 11, 12. Actually valid are the ones you've set to Legacy ISA in the BIOS.
    • mem — Required. The card's memory address. Valid addresses are 0xB0000, 0xC8000, 0xD0000, 0xD8000, 0xE0000, 0xE8000. Check free ones with $ cat /proc/iomem.
    • write_ndelay — Enables write ndelay (enabled by default).
    • calibrate_signal — Calibrates the signal (disabled by default).


    You might want to try the kernel driver now.

    Code:
    # modprobe snd-msnd-classic
    To make sure the module is really loaded at boot, add to /etc/modules:

    Code:
    snd-msnd-classic
    If you want to find out if anything went wrong:

    Code:
    $ dmesg | grep msnd
    Fiji and Pinnacle users:

    Add to /etc/modprobe.d/alsa-base.conf at the end:

    Code:
    options snd-msnd-pinnacle <options>
    alias snd-card-0 snd-msnd-pinnacle
    alias sound-slot-0 snd-msnd-pinnacle
    Options:

    • isapnp — Required. Enables ISA PnP mode. That is, ISA PnP mode is enabled by default. Disable it (isapnp=0).
    • cfg — (Fiji/Pinnacle) Required. The card's configuration port. Valid ports are 0x250, 0x260, 0x270. The correct one is jumpered on your board.
    • io — Required. The card's I/O port. Valid ports are 0x140, 0x150, 0x160, 0x210, 0x230, 0x280, 0x290, 0x3E0. Check free ones with $ cat /proc/ioports.
    • irq — Required. The card's IRQ. Valid IRQs are 5, 7, 9, 10, 11, 12. Actually valid are the ones you've set to Legacy ISA in the BIOS.
    • mem — Required. The card's memory address. Valid addresses are 0xB0000, 0xC8000, 0xD0000, 0xD8000, 0xE0000, 0xE8000. Check free ones with $ cat /proc/iomem.
    • write_ndelay — Enables write ndelay (enabled by default).
    • calibrate_signal — Set whether the analog/digital converters on the inputs are calibrated to the signal (disabled by default which means they're calibrated to the card).
    • reset — Resets all devices.
    • digital — (Fiji/Pinnacle) Enable this if there's a digital I/O board mounted on the card.
    • mpu_io — (Pinnacle) The Kurzweil MA-1 on-board synth's I/O port. Valid ports are 0x300, 0x310, 0x320, 0x330. Check free ones with $ cat /proc/ioports.
    • mpu_irq — (Pinnacle) The Kurzweil MA-1 on-board synth's IRQ. Pick from the same range as the card's IRQ (that is, those you've set to Legacy ISA).
    • ide_io0 — The CD-ROM IDE connector's #0 I/O port. 0x170 should work. (The IDE connector is disabled in ISA PnP mode.)
    • ide_io1 — The CD-ROM IDE connector's #1 I/O port. 0x376 should work.
    • ide_irq — The CD-ROM IDE connector's IRQ. 15 should work. Only set if it's switched to Legacy ISA in the BIOS.
    • joystick_io The joystick connector's I/O port. 0x200 should work. (The joystick connector is disabled in ISA PnP mode.)


    You might want to try the kernel driver now.

    Code:
    # modprobe snd-msnd-pinnacle
    To make sure the module is really loaded at boot, add to /etc/modules:

    Code:
    snd-msnd-pinnacle
    If you want to find out if anything went wrong:

    Code:
    $ dmesg | grep msnd

    See also here:
    www . kernel . org/doc/Documentation/sound/oss/MultiSound
    www . kernel . org/doc/Documentation/sound/alsa/ALSA-Configuration.txt (caution, the module options are messed up)
    web.mit.edu/linux/kernel/linux-2.1/linux-2.1.122/Documentation/sound/MultiSound

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •