fmtools is a pair of simple command-line utilities for “video4linux” radio tuner cards under Linux. It includes fm for power control, tuning, and volume and fmscan for scanning for stations. They are quite simple and only implement the basic functions needed to control your devices. Other programs exist with much nicer interfaces. If you want simplicity, this is where to look.
fm handles basic on/off, tuning, and volume changes for v4l radio cards. There is also a quiet mode to allow it to run inside IRC scripts and other programs without disrupting the display.
fmscan by default scans from 87.9 to 107.9 MHz in 0.2 MHz increments, looking for stations that have an average signal strength of 50% or greater.
This code should be useful to coders who want to implement scanning functions in other v4l tuner programs. This is only really useful if your driver uses VIDEO_TUNER_LOW for 1/16000 MHz increments. Otherwise, rounding errors will undoubtedly keep the card from locking on to anything.
These programs are supposed to provide a simple and consistent interface to the v4l radio cards. They are used here during the debugging process of radio card driver hacking, for what it's worth. All of the code is covered under the GNU GPL v2, so you can use it as a base in other GPL projects.
fmtools and most of the text of this webpage was written by Russell Kroll. It is currently maintained by Ben Pfaff.
1.0.2: source, signature.
Fix version number reported by fm and fmscan, and version number in manpages. No functional changes. Released 23 Nov 2006. (Note: the links here incorrectly pointed to fmtools 1.0.1 until 7 July 2007.)
1.0.1: source, signature.
Makes fm able to sleep for a user-specified time, or forever, after applying settings. This makes fm usable with radio tuner drivers that turn off the radio after the fd used for tuning is closed. Idea and patch from Dave Ulrick. Released 7 Oct 2006.
1.0: source, signature.
Integrates Debian packaging. Makes fmscan threshold configurable from command line. Uses videodev.h header detached from kernel to avoid including kernel headers. First release by Ben Pfaff. Released 3 Sept 2004.
0.99.1: source.
Adds man pages. Volume balancing fixes. Improved Makefile. Fixed rounding. Minor code tidying. Released 16 Aug 2002.
0.99.0: source.
Code cleanups. Supports multiple radio cards. Reworked fmscan logic and made easier to change via #defines. Released 3 Feb 2001.
0.2.5: source.
Adds tuner selection with -t option for ADS Cadet AM tuning. Released 12 Apr 1999.
0.2.4: source.
Added devices target in Makefile. Set default radio device to /dev/radio0. Added fmscan. Small code cleanups. Released 3 Feb 1999.
tkradio: source.
Matt Willis contributed this Tcl/Tk wrapper for fmtools. The stations are currently hard coded, but it is easy to change with a simple text editor. The code is released under the GPL, so go ahead and hack on it to make it do other neat things if you feel like it.
tkradio-mute: source.
James Smith sent along this patched version of tkradio that adds a mute feature.
fmcontrol: Adrian Lester created this script that tunes by name and looks up both the station's frequency and an offset volume value from a config file.
QRadio: Peter van Eerten's toos that uses fmtools to control things in a graphical manner.
Web-based interface for fmtools by Vital Man'ko.
Cajun: The underlying FM tuner in Cajun is also derived from fmtools.
LinuxCar: Uses fmtools for radio control.