diff -ur nautilus.17c/unix.c nautilus.17c.1/unix.c
--- nautilus.17c/unix.c	Mon Jan 18 08:32:05 1999
+++ nautilus.17c.1/unix.c	Mon Jan  8 22:25:38 2001
@@ -680,7 +680,7 @@
  *
  */
 
-    int mixer_fd, devmask, stereod, lcval, rcval;
+    int mixer_fd, devmask, stereod, lcval, rcval, rcsrc, rcsrc1;
 
     if ((a_port = open(AUDIO_DEVICE, O_RDWR)) < 0) {
         return FAIL;
@@ -719,7 +719,55 @@
     if (ioctl(mixer_fd, SOUND_MIXER_WRITE_MIC, &lcval))
         perror("mixer_write(mic)");
 
+    /* set recording source (Microphone) */
+
+    rcsrc1= SOUND_MASK_MIC; 
+
+    if (params.verbose == TRUE)
+	printf ("Mixer RECSRC: will write %d\n",rcsrc1); 
+
+    if ( ioctl(mixer_fd, SOUND_MIXER_WRITE_RECSRC, &rcsrc1) )
+	perror("mixer_write_recsrc(mix) " );
+
+    if ( ioctl(mixer_fd, SOUND_MIXER_WRITE_RECSRC, &rcsrc1) )
+	perror("mixer_write_recsrc(mix) " );
+
+    if (params.verbose == TRUE)
+	printf ("Mixer RECSRC: recsrc after writing %d\n",rcsrc1); 
+
+
+    if ( ioctl(mixer_fd, SOUND_MIXER_READ_RECSRC,  &rcsrc) )
+        perror("mixer_read_recsrc(mix) " );
+
+    if (params.verbose == TRUE)
+	printf ("Mixer RECSRC: wrote %d, read back %d\n",rcsrc1,rcsrc); 
+
+
+    if ( rcsrc != rcsrc1 ) 
+        perror("Could not set recording source (mix) ");
+
+    /* set Speaker volume to 60% */
+
+        lcval = 60;	
+    if (stereod & SOUND_MASK_PCM) {
+        rcval = lcval;
+        lcval |= (rcval << 8);
+    }
+    if (ioctl(mixer_fd, SOUND_MIXER_WRITE_SPEAKER, &lcval))
+        perror("mixer_write(speaker)");
+
+    /* set Igain volume to 100% */
+
+        lcval = 100;	
+    if (stereod & SOUND_MASK_PCM) {
+        rcval = lcval;
+        lcval |= (rcval << 8);
+    }
+    if (ioctl(mixer_fd, SOUND_MIXER_WRITE_IGAIN, &lcval))
+        perror("mixer_write(igain)");
+
     /* set output volume */
+
     if (!strcasecmp(params.audio.out_volume, "low"))
         lcval = 40;
     else if (!strcasecmp(params.audio.out_volume, "medium"))
@@ -739,7 +777,6 @@
 
     return SUCCESS;
 }
-
 
 
 /*
