So I'm thinking it has something to do with the Sound Overlay kernel which is currently

If you open the /dev/audio without the O_SYNC flag, there is no difference in the way how the audio is outputted.

Assuming the WAV file isn't silence, I should get sound output when I run that dd command, right? There's no ioctl's I have to call to change the volume or select PCM source, are there?

There are multiple. And if you try this so that the player application is not running, it's likely that the soft audio mute is enabled.

After you've opened /dev/audio, try this:

int iMixer = open( "/dev/mixer", O_RDONLY );
int iSource = SOUND_MASK_PCM;
int iFlags = 0; // source not muted
int iSAM = 0; // SAM is off
int iVolume = 100 | (100 << 8);
ioctl( iMixer, _IOW( 'm', 0, int ), &iSource ); // set source
ioctl( iMixer, _IOW( 'm', 1, int ), &iFlags ); // set flags
ioctl( iMixer, _IOW( 'm', 15, int ), &iSAM ); // set Soft Audio Mute
ioctl( iMixer, MIXER_WRITE( SOUND_MIXER_VOLUME ), &iVolume );
close( iMixer );


Kim