GRadio 0.9.8 by Keith Wesolowski (wesolows@cs.unr.edu)
October 1998

GRadio is distributed under the terms of the GNU General Public License.
Read COPYING for more details.

What is GRadio?

GRadio is a (very) graphical interface to a certain fairly common type of
FM radio tuner cards for PCs running Linux. It is written in C with GTK+
and supports both the 2.1 series kernel driver and the old-style direct
port access. It features consistent volume and frequency tracking,
8-station memory, type-to-set frequency, fine-tuning, mute, and a large,
colorful LCD-ish display. It is designed to be easy to use and pleasing to
look at. 

What is missing?

The only thing missing is a man page. Better support for multiple
v4l-supported cards is planned for the near future (ie VIDIOCGCAP and so
forth).

Who deserves special thanks?

Definitely Gideon LaGrange, who is originally responsible for figuring out
most of the lowlevel calls for port i/o. Frans Brinkman also deserves
credit for some of the lowlevel routines. Thomas Lehmann, author of the
XRadio program, deserves credit for providing the inspiration for GRadio,
and possibly for a few of the lowlevel port i/o calls. Matthew
Kirkwood, Alan Cox, and Russell Kroll for writing the current kernel
driver, and the entire GTK team for the GUI libraries. Last but not least,
Ben Pfaff for his small-step tuning patch I should have done myself, and
Roman Hodek for calling me on my foolish version handling scheme.

Requirements
------------

1) A RadioTrack or RadioReveal FM tuner card installed in your machine,
   or a card of any type supported by your video4linux kernel driver.

2) Linux >=2.1.106 for the kernel driver, or any version for the direct
   i/o interface.

3) GTK+ 1.0 or greater libraries and headers.

4) Root access, if you do not have a driver compiled into your kernel.

Installation
------------

1) Untar the source code:

	$ tar xzvf gradio-VERSION-src.tar.gz

2) Edit the makefile to suit your tastes. The options available are:

	a) Display colors. You can choose standard or nonstandard. If you
	   choose nonstandard, you may wish to edit the colors themselves
	   in pixmaps.h. Tinker with it. :)
	b) Setuid-ness. This is off by default. If your kernel version is
	   less than 2.1.106, then setuidness should be turned on. If you
	   have an appropriate kernel but have not compiled in support
	   (why?), then you will need to turn this option on. Finally, try
	   it with this off, and if you get a "No interface found" or
	   segmentation fault message, try turning it on. Confused? :)
	c) Install location. The binary will be placed here. . works,
	   although it will cause complaints.

3) Compile:

	$ make

4) Install:

	$ make install

Using GRadio
------------

1) Run the program:

	$ gradio &

2) Take care of first-time inits:

	GRadio is smart enough to detect whether you have a kernel driver
	for radiocards set up. If you have it, it will use it, unless
	GRadio was compiled on a system with older kernel headers, in which 
	case it will not even look for it. If you are using the kernel
	interface, there is nothing you will need to do here; the radio
	should work out of the box (hopefully). If not, GRadio will try to
	autodetect your card's i/o port (either 0x20c or 0x30c). Failing
	that, it will ask you for it. Select the port your card is at. You
	will not have to do this more than once. NOTE: I am told that
	[23]0f works as well as [23]0c. If your card's documentation says
	to use the f address, try the corresponding c address. I am
	interested in hearing whether this works.

3) Enjoy!:

	GRadio is designed to have a very simple and intuitive interface.
	For the most part, functions are obvious. The following hints will
	make using GRadio easier:

	Clicking the display brings up a menu which allows you to set the
	frequency to pretty much anything by typing in the value. This
	saves clicking the tune buttons a million times.

	To fine-tune the frequency (for odd stations, or in case of poor
	reception), right-click the tuning buttons.

	To set a memory button to the current frequency, right-click the
	appropriate button. To recall it, left-click.

	The left part of the display gives data about the radio's state.
	At the top, the volume is indicated on a scale 0-100. On the
	bottom, up to 3 letters may be displayed. They stand for:

		T	tuned (this is somewhat suspect)
		M	muted
		D	using direct interface
		K	using kernel driver interface 
	
	At the lower right, the current memory selection is indicated, if
	you have made one.

	(New in 0.9.7) There is now a _working_ set of commandline
	options. I wanted to get them in as quickly as possible so that
	GRadio can be more of an all-in-one package. Run it from crontabs!
	Put it in your .login! Endless uses for this miracle feature!!!
	
	To use these options, use the -nw runtime option, followed by one
	or more of:

		v n		Set volume to n, where 0<=n<=11
		f n		Set frequency to n MHz
		+		Turn on/unmute card
		-		Turn off/mute card

	The volume setting should actually work if you patch your kernel
	to properly keep track of volume when setting to zero, or if you
	don't have Russell Kroll's muting patch.

Reporting a bug
---------------

	GRadio has bugs. I am especially interested in hearing about how
	the kernel driver interface works for people who have installed
	an appropriate kernel, since this is the only GUI radio I know of
	that supports this new (as of 2.1.105) interface. Report any and
	all bugs to wesolows@cs.unr.edu. Please provide as much 
	information as you can.

NOTES
-----

	UPDATE: As of 2.1.105 the kernel driver has indeed been replaced. 
	You'll want to get the 2.1.106 or better version, however, as the
	2.1.105 driver is not quite there. I have tested GRadio with
	2.1.106 and a RadioReveal card. I am interested in finding
	out whether GRadio works with other kernel-supported radio cards.
	It should, but it'd be nice to know for sure. 

	UPDATE: I have at least one report of success with an Aztech card
	+ video4linux. Probably you will be able to get GRadio to work
	with other cards if you have video4linux support for them in your
	kernel.
