diff -BurN ivtv-0.3.6u/doc/README.radio ivtv-0.3.6u.new/doc/README.radio
--- ivtv-0.3.6u/doc/README.radio	2004-07-01 20:35:50.000000000 -0500
+++ ivtv-0.3.6u.new/doc/README.radio	2005-06-28 04:57:44.000000000 -0500
@@ -1,9 +1,7 @@
 README for the IVTV Radio Support
 
 Hans Verkuil (hverkuil@xs4all.nl)
-
-[FIX: the usage of the radio util has been much improved lately. Update
- this doc to reflect this.]
+Usage info for new version added by Adam Forsyth (agforsyth@gmail.com)
 
 Introduction
 ============
@@ -16,33 +14,42 @@
 with several of the radio applications is that they are either too old (i.e.
 they only support v4l), cannot do the simplest task (scanning for stations)
 properly, or tend to crash a lot. I've added a very simple radio utility
-that at least supports v4l2 and doesn't crash. The scanning of stations
-should be optimized: it should only report the frequency with the best
-reception. Some proper command line options and presets would also be nice :-)
-
-A quick usage for the radio utility:
-
-        radio <ivtv radio device> <scan|frequency>
-
-So: 'radio /dev/radio0 scan' will scan the frequency range and prints the
-frequencies with a reception quality above a certain threshold.
-'radio /dev/radio0 103.19' selects that frequency and will sleep until you
-press Ctrl-C. While the radio utility is sleeping you can read from device
-/dev/video24 a PCM stream (normally signed 16 bit Little Endian, 48000 Hz,
-stereo) which is the audio from the radio. I use the ALSA tool aplay:
+that at least supports v4l2 and doesn't crash.
 
-        aplay -f dat </dev/video24
+Usage: ivtv-radio <options>
+Possible options are:
+    -d <device>    Radio control device (default: /dev/radio0)
+    -s             Scan for channels
+    -a             Scan for frequencies
+                   Use if Scan for channels is missing stuff
+                   If e.g. 90.9, 91.1, 91.3 all exist use this
+    -f <freq>      Tune to a specific frequency
+    -j             Just tune (don't try to play the audio)
+                   You'll have to play the audio yourself (see README.radio)
+    -P             Use passthrough mode of card
+    -g             Enable channel changing for passthrough mode
+    -h             Display this help message
+    -i <device>    PCM audio capture device (default: /dev/video24)
+    -c <command>   Command to play audio.  This will be processed by
+                   the shell, after substituting %s with the audio device.
+                   Default: "aplay -f dat < %s"
+
+Some examples:
+
+ivtv-radio -s                  Scans for channels.
+ivtv-radio -f 93.1             Plays the specified frequency with aplay.
+ivtv-radio -f 93.1 -P -g       Outputs the sound through the card audio out
+                               and give you a prompt allowing you to change
+                               frequencies.
+ivtv-radio -f 93.1 -j -g       Gives you a prompt allowing you to change
+                               frequencies, but lets you play the sound
+                               with whatever program you want to use.
 
 When you press Ctrl-C to stop the radio utility you will get the sound of
 the current TV channel instead. On rare occasions I've seen read errors
 when trying to read from /dev/video24. Using 'cat </dev/video0 >/dev/video16'
 for a few seconds seems to fix the problem and I can use /dev/video24 again.
 
-The radio utility is just a proof-of-concept utility that shows the basic
-code you need. Feel free to turn it into a really useful program.
-
-
-
 Driver Implementation Details
 =============================
 
@@ -70,8 +77,8 @@
    are swapped or not? If they are, then the PCM stream must also use do byte
    swapping like the MPG and VBI streams.
 
-2) PCM output. There is YUV output, so is PCM output also possible? This
-   needs some experimenting.
+2) Is it possible to get RBDS / RDS data? If so, add functionality to display
+   that.
 
 3) Perhaps the 'video24' device should be turned into a ALSA driver with
    mixer support, etc. I'm not sure if this is possible or desirable.
diff -BurN ivtv-0.3.6u/utils/radio.c ivtv-0.3.6u.new/utils/radio.c
--- ivtv-0.3.6u/utils/radio.c	2005-06-27 17:40:45.000000000 -0500
+++ ivtv-0.3.6u.new/utils/radio.c	2005-06-28 04:20:19.000000000 -0500
@@ -8,6 +8,9 @@
     Added -c option:
     Copyright (C) 2004  Mark Rafn
 
+    Added more options and functionality:
+    Copyright (C) 2005  Adam Forsyth  <agforsyth@gmail.com>
+
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
     the Free Software Foundation; either version 2 of the License, or
@@ -128,6 +131,7 @@
 		if (cfg.tuner.signal > 16384) {
 			printedfreq = cfg.freq.frequency;
 			freqstrength =cfg.tuner.signal;
+			//print long freq info if wanted
 			if(allfreqs == 1) {
 				printf("%3.2f, %4.0f: %d \n", printedfreq / 16.0, printedfreq, freqstrength);	
 			} 
@@ -162,13 +166,14 @@
 					freqstrength = freqs[2][1];
 				break;
 				}
-				if(printedfreq > 1392 && printedfreq < 1728)
-				if((((int)printedfreq) % 16) == 12) {
-					printf("STATION: %3.1fFM\n", (printedfreq / 16.0) - 0.01);				
-				} else if((((int)printedfreq) % 16) == 4) {
-					printf("STATION: %3.1fFM\n", (printedfreq / 16.0) + 0.01);
-				} else {
-					printf("STATION: %3.1fFM\n", (printedfreq / 16.0));				
+				if(printedfreq > 1392 && printedfreq < 1728) {
+					if((((int)printedfreq) % 16) == 12) {
+						printf("STATION: %3.1fFM\n", (printedfreq / 16.0) - 0.01);				
+					} else if((((int)printedfreq) % 16) == 4) {
+						printf("STATION: %3.1fFM\n", (printedfreq / 16.0) + 0.01);
+					} else {
+						printf("STATION: %3.1fFM\n", (printedfreq / 16.0));				
+					}
 				}
 			}	
 			isafreq = 0;
@@ -272,11 +277,11 @@
 	/* if they want us to just tune, do that and wait, otherwise we
 	   play the output with aplay */
 	if (cfg.just_tune) {
+		//allow in-program channel changing for passthru mode / just tune mode
 		if(cfg.channelchange) {
-		double newfreq;
 		char newfreqs[8];
 		while (1) {
-			printf("Enter the frequency to change to: ");
+			printf("Enter the frequency to change to: ");
 			scanf("%s",newfreqs);
 			cfg.freq.tuner = 0;
 			cfg.freq.frequency = 16 * atof(newfreqs);
