Turtle Beach Classic/Monterey/Tahiti/Pinnacle/Fiji Linux Driver
This is a unified driver for the Turtle Beach Pinnacle or Fiji,
"Classic", Tahiti and Monterey soundcards under Linux. Only
digital audio and the mixer is supported at the moment, MIDI
support is being worked on. I have a Pinnacle revision F, so
most testing is done on this card. It requires a development
version of Linux (this will also work with 2.0.34
modular sound).
MultiSound firmware is no longer included, but instructions are
provided to obtain the firmware (see the MultiSound text file
for information on how to obtain these).
Compiling this driver generates two modules The first,
msnd_pinnacle.o, operates with the MultiSound Pinnacle and Fiji
cards. The first, called msnd_classic.o, should work with the
MultiSound Classic, Monterey and Tahiti cards.
There are some utilities for the Pinnacle and Fiji cards. These
are found by unpacking the shell archive MultiSound, and include
conv, setdigital and pinnaclecfg (configure the Pinnacle or Fiji
in non-PnP mode). The pinnaclecfg program is not necessary
since the msnd_pinnacle module can configure the card, including
the additional peripherals. However, it can be used later to
reconfigure or disable particular peripherals, such as the
joystick on the Pinnacle.
Memory mapping isn't supported yet (i.e. Quake), but I'm able to
do some neat floating point real-time stereo effects using a
multithreaded DSP pipeline, with simultaneous read and write
threads. Using POSIX 1b soft real-time scheduling and memory
locking also reduces dropouts significantly (almost none on my
P200MMX).
Usage
Both drivers only operate as loadable modules, and have six
parameters, three of which are required (the driver does not do
any actual detection, yet):
- io [Required] the I/O address, i.e. io=0x210
- irq [Required] the IRQ, i.e. irq=5
- mem [Required] the shared memory area,
i.e. mem=0xd8000
- fifosize (Optional) the digital audio FIFOs, in
kilobytes. If not specified, the default will be used.
- calibrate_signal (Optional) setting this to one
calibrates the ADCs to the signal, zero calibrates to the card
(default card)
- digital (Optional, Pinnacle/Fiji with S/PDIF only)
setting this to one enables the DIGITAL1 input in the mixer.
Enable if you have the S/PDIF daughterboard connected (note I've
experienced highly accelerated playback when DIGITAL1 is
connected, possibly due to me not having a digital source
connected; this is being looked at).
- cfg (Optional, Pinnacle/Fiji in non-PnP mode) If
specified, will configure the Pinnacle or Fiji in non-PnP
mode, i.e. it will program the card's resources. Typical
values are 0x250, 0x260 or 0x270. The following are values
you can use with the Pinnacle to configure additional hardware
(not specifying any values for a particular device just skips
it during configuration):
- mpu_io
I/O port of the MPU (Kurzweil synth)
- mpu_irq
IRQ port of the MPU
- ide_io0
First I/O port of IDE controller
- ide_io1
Second I/O port of IDE controller
- ide_irq
IRQ port of IDE controller
- joystick_io
I/O port of joystick port
For example, you might use something like the following for PnP
mode:
insmod soundcore
insmod msnd
isapnp mypinnacle.conf
insmod msnd_pinnacle.o io=0x210 irq=5 mem=0xd8000 digital=1
Or in non-PnP mode:
insmod soundcore
insmod msnd
insmod msnd_pinnacle.o cfg=0x250 io=0x220 irq=7 mem=0xd0000 digital=1 joystick_io=0x200
To remove the module, use:
rmmod msnd_pinnacle
rmmod msnd
rmmod soundcore
Note that after loading, all the mixer volumes are set to
zero (use a program like aumix to preset volumes).
Current status: 5/13/98 [Beta] Last release: 9/10/98
- Source archive:
pinlinux-0.8.2.tar.gz
- Requires Linux 2.1.x or 2.0.34 with Alan Cox' modular
sound patch.
- A pinnaclecfg is now included! You can use the joystick
port (with a suitable Linux joystick driver :-). Identical
functionality is now included as well in msnd_pinnacle.
- There is now a base module of exported driver functions,
msnd, which must be loaded before the primary modules.
- Firmware is no longer included, see the MultiSound text file
for details.
- MIDI hooks are now in place (the external MIDI port works
here but there are some issues I want to clarify
- Starting from version 4b, a unifed model is presented
and two modules are created, one for the pinnacle/fiji and
another for classic/monterey/tahiti.
- Partial success reports reported from users with MultiSound
Classic and Monterey
- Most mixer support is implemented (master volume, pcm, line
in, aux in, record select)
- Digital audio play and record at any sample rate works (both
8 and 16 bit, mono and stereo, including full-duplex)
- Some compatibility OSS/Free ioctls are implemented
To Do
- Possibly create a version for ALSA
- Audio (maybe memory mapping for Quake)
- MIDI support: Kurzweil, daughterboard header, and external port
- Auto resource detection routine
If you have any improvements or bug fixes, please let me know so I
can incorporate them into the next release.
Andrew Veliath
<andrewtv@usa.net>,
<veliaa@rpi.edu>