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 0x194b08compatible: 'ADS7180'dma-channels: 00000001.00000005interrupts: 00000005model: 'ADS Sound Blaster'name: 'sbpro'reg: 00000001.00000220.00000014.00000001.00000388.00000004.00000001.00000330.00000002unit-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=0x14Bus Type=0x1, Address=0x388, Size=0x4Bus Type=0x1, Address=0x330, Size=0x2Interrupt 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,sb16Version = 4.13Config = SB16/dev/audioctl doesn't support the audio mixer functionSample RatePlay 8000Record 8000ChannelsPlay 1Record 1PrecisionPlay 8Record 8EncodingPlay 1 (u-law)Record 1 (u-law)GainPlay 191Record 191BalancePlay 32Record 32PortPlay 0x00000002 (HDPHONE)Record 0x00000004 (CD)Avail PortsPlay 0x00000002 (HDPHONE)Record 0x00000007 (MIC|LINE|CD)Mod PortsPlay 0x00000002 (HDPHONE)Record 0x00000007 (MIC|LINE|CD)SamplesPlay 0Record 0ActivePlay 0Record 0PausePlay 0Record 0ErrorPlay 0Record 0EOF CountPlay 0WaitingPlay 0Record 0OpenPlay 0Record 0HW Features 0x00000018PLAYRECORDSW Features 0x00000000SW 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.13Name: /dev/audio (SB16)Description: Direct Audio Device: Solaris MixerVendor: SUNW,sb16Version: 4.13Source lines:interface SourceDataLine supporting 8 audio formats, and buffers of at least 32 bytesPCM_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-endianPCM_SIGNED unknown sample rate, 16 bit, mono, 2 bytes/frame, big-endianPCM_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-endianPCM_SIGNED unknown sample rate, 16 bit, stereo, 4 bytes/frame, big-endianinterface Clip supporting 8 audio formats, and buffers of at least 32 bytesPCM_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-endianPCM_SIGNED unknown sample rate, 16 bit, mono, 2 bytes/frame, big-endianPCM_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-endianPCM_SIGNED unknown sample rate, 16 bit, stereo, 4 bytes/frame, big-endianTarget lines:interface TargetDataLine supporting 8 audio formats, and buffers of at least 32 bytesPCM_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-endianPCM_SIGNED unknown sample rate, 16 bit, mono, 2 bytes/frame, big-endianPCM_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-endianPCM_SIGNED unknown sample rate, 16 bit, stereo, 4 bytes/frame, big-endianPort /dev/audio (SB16), version 4.13Name: Port /dev/audio (SB16)Description: Solaris PortsVendor: SUNW,sb16Version: 4.13Source lines:MICROPHONE source portLINE_IN source portCOMPACT_DISC source portTarget 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.