First post, by unix_junkie
- Rank
- Newbie
Hi everyone.
I'm trying to set up a non-PnP ISA CT2230 board under Solaris 8. All the jumpers are in their default positions (IRQ 5, IO address 0x220, 8-bit DMA channel 1, 16-bit DMA channel 5):
The sound card proved 100% operational and capable of playing 16-bit PCM samples under a modern Linux as well as Windows 2000 (I had to previously dedicate IRQ5 to Legacy ISA in BIOS, which is Award 6.00PG).
Technically, Solaris 8 supports Sound Blaster 16 and clones using the sbpro driver:
- https://docs.oracle.com/cd/E19455-01/806-1054 … 8656/index.html
- https://docs.oracle.com/cd/E19455-01/806-1053 … o6bb/index.html
- https://docs.oracle.com/cd/E19455-01/806-1053 … o6bc/index.html
- https://docs.oracle.com/cd/E19455-01/806-1053 … o6bd/index.html
The Device Configuration Assistant (DCA), which is effectively the DOS kernel running in real-mode, mis-detected my board as "ADS Sound Blaster" (Analog Devices ADS7180), most probably because the card is non-PnP, and ADS7180 is just the 1st matching line in /boot/solaris/devicedb/master:
ADS7180 sbpro oth all sbpro.bef "ADS Sound Blaster"
prtconf -p:
Node 0x194b08
compatible: 'ADS7180'
dma-channels: 00000001.00000005
interrupts: 00000005
model: 'ADS Sound Blaster'
name: 'sbpro'
reg: 00000001.00000220.00000014.00000001.00000388.00000004.00000001.00000330.00000002
unit-address: '1,220'
prtconf -D:
sbpro, instance #0 (driver name: sbpro)
Driver properties:
name <chosen-interrupt> length <8>
value <0x050000006e660000>.
Register Specifications:
Bus Type=0x1, Address=0x220, Size=0x14
Bus Type=0x1, Address=0x388, Size=0x4
Bus Type=0x1, Address=0x330, Size=0x2
Interrupt Specifications:
Interrupt Priority=0x5 (ipl 5), vector=0x5 (5)
Now, the problem.
Despite /dev/audio and /dev/audioctl devices got created just fine and, judging from the prtconf -D output, the sbpro driver got attached to the device, I'm only able to send an 8-bit PCM data to the card. This means that, for example, XMMS must be told to programmatically "downsample" the data (from 16-bit to 8-bit PCM) before sending it to the hardware, slightly increasing CPU usage and greatly reducing sound quality (rendering the card useless for MP3 playback), while other applications simply produce no sound (they simply block while trying to play anything).
I tried to install the OSS package ([1], [2]), but out of the 3 versions tested (3.9.8b, 3.99.4e, and 4.2-2004), only version 3.99.4e proved to be working (tested with the on-board C-Media CMI8738), and that very OSS version literally crashes my system when trying to set up the SB16 ISA card in question (it warmed my heart when, during the next boot time, Solaris told me it was saving the kernel crash dump under /var/crash).
Besides, OSS and Sun Audio are two separate hardware interfaces and, since CDE and OpenWindows applications only work with Sun Audio, I'd rather stick with this HW interface -- this is the reason I haven't ordered an OSS license yet.
Solaris' mixerctl produces the following output:
Device /dev/audioctl:
Name = SUNW,sb16
Version = 4.13
Config = SB16
/dev/audioctl doesn't support the audio mixer function
Sample Rate
Play 8000
Record 8000
Channels
Play 1
Record 1
Precision
Play 8
Record 8
Encoding
Play 1 (u-law)
Record 1 (u-law)
Gain
Play 191
Record 191
Balance
Play 32
Record 32
Port
Play 0x00000002 (HDPHONE)
Record 0x00000004 (CD)
Avail Ports
Play 0x00000002 (HDPHONE)
Record 0x00000007 (MIC|LINE|CD)
Mod Ports
Play 0x00000002 (HDPHONE)
Record 0x00000007 (MIC|LINE|CD)
Samples
Play 0
Record 0
Active
Play 0
Record 0
Pause
Play 0
Record 0
Error
Play 0
Record 0
EOF Count
Play 0
Waiting
Play 0
Record 0
Open
Play 0
Record 0
HW Features 0x00000018
PLAY
RECORD
SW Features 0x00000000
SW Features Enabled 0x00000000
I also tried to diagnose my hardware using the javax.sound API, and it looks like the card (from the Solaris perspective) does support 16-bit sound:
/dev/audio (SB16), version 4.13
Name: /dev/audio (SB16)
Description: Direct Audio Device: Solaris Mixer
Vendor: SUNW,sb16
Version: 4.13
Source lines:
interface SourceDataLine supporting 8 audio formats, and buffers of at least 32 bytes
PCM_SIGNED 44100.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian (default)
PCM_SIGNED unknown sample rate, 8 bit, mono, 1 bytes/frame,
PCM_UNSIGNED unknown sample rate, 8 bit, mono, 1 bytes/frame,
PCM_SIGNED unknown sample rate, 16 bit, mono, 2 bytes/frame, little-endian
PCM_SIGNED unknown sample rate, 16 bit, mono, 2 bytes/frame, big-endian
PCM_SIGNED unknown sample rate, 8 bit, stereo, 2 bytes/frame,
PCM_UNSIGNED unknown sample rate, 8 bit, stereo, 2 bytes/frame,
PCM_SIGNED unknown sample rate, 16 bit, stereo, 4 bytes/frame, little-endian
PCM_SIGNED unknown sample rate, 16 bit, stereo, 4 bytes/frame, big-endian
interface Clip supporting 8 audio formats, and buffers of at least 32 bytes
PCM_SIGNED 44100.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian (default)
PCM_SIGNED unknown sample rate, 8 bit, mono, 1 bytes/frame,
PCM_UNSIGNED unknown sample rate, 8 bit, mono, 1 bytes/frame,
PCM_SIGNED unknown sample rate, 16 bit, mono, 2 bytes/frame, little-endian
PCM_SIGNED unknown sample rate, 16 bit, mono, 2 bytes/frame, big-endian
PCM_SIGNED unknown sample rate, 8 bit, stereo, 2 bytes/frame,
PCM_UNSIGNED unknown sample rate, 8 bit, stereo, 2 bytes/frame,
PCM_SIGNED unknown sample rate, 16 bit, stereo, 4 bytes/frame, little-endian
PCM_SIGNED unknown sample rate, 16 bit, stereo, 4 bytes/frame, big-endian
Target lines:
interface TargetDataLine supporting 8 audio formats, and buffers of at least 32 bytes
PCM_SIGNED 44100.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian (default)
PCM_SIGNED unknown sample rate, 8 bit, mono, 1 bytes/frame,
PCM_UNSIGNED unknown sample rate, 8 bit, mono, 1 bytes/frame,
PCM_SIGNED unknown sample rate, 16 bit, mono, 2 bytes/frame, little-endian
PCM_SIGNED unknown sample rate, 16 bit, mono, 2 bytes/frame, big-endian
PCM_SIGNED unknown sample rate, 8 bit, stereo, 2 bytes/frame,
PCM_UNSIGNED unknown sample rate, 8 bit, stereo, 2 bytes/frame,
PCM_SIGNED unknown sample rate, 16 bit, stereo, 4 bytes/frame, little-endian
PCM_SIGNED unknown sample rate, 16 bit, stereo, 4 bytes/frame, big-endian
Port /dev/audio (SB16), version 4.13
Name: Port /dev/audio (SB16)
Description: Solaris Ports
Vendor: SUNW,sb16
Version: 4.13
Source lines:
MICROPHONE source port
LINE_IN source port
COMPACT_DISC source port
Target lines:
HEADPHONE target port
What else can I do in order to make my SB16 card work properly?
Update
I ended up buying an AWE64 (CT4380) card, it got successfully detected by Solaris and turned out capable of playing 16-bit sounds.
So I can consider my Solaris/x86 build complete.