1
0
Fork 0

Add README, add license statement.

This commit is contained in:
Joris van Rantwijk 2013-12-31 22:19:19 +01:00
parent f6b0d2b546
commit e650df4bc2
3 changed files with 96 additions and 2 deletions

81
README Normal file
View File

@ -0,0 +1,81 @@
SoftFM - Software decoder for FM broadcast radio with RTL-SDR
---------------------------------------------------------------
SoftFM is a software-defined radio receiver for FM broadcast radio.
It is written in C++ and uses RTL-SDR to interface with RTL2832-based
hardware.
This program is mostly an experiment rather than a useful tool.
The purposes of SoftFM are
* experimenting with digital signal processing and software radio;
* investigating the stability of the 19 kHz pilot;
* doing the above while listening to my favorite radio station.
Having said that, SoftFM actually produces pretty good stereo sound
when receiving a strong radio station. Weak stations are noisy,
but SoftFM gets much better results than rtl_fm (bundled with RTL-SDR)
and the few GNURadio-based FM receivers I have seen.
SoftFM provides:
* mono or stereo decoding of FM broadcasting stations
* real-time playback to soundcard or dumping to file
* command-line interface (no GUI, no visualization, nothing fancy)
SoftFM requires:
* Linux
* C++11
* RTL-SDR library (http://sdr.osmocom.org/trac/wiki/rtl-sdr)
* supported DVB-T receiver
* medium-fast computer (SoftFM takes 25% CPU time on my 1.6 GHz Core i3)
* medium-strong FM radio signal
For the latest version, see https://github.com/jorisvr/SoftFM
Installing
----------
The Osmocom RTL-SDR library must be installed before you can build SoftFM.
See http://sdr.osmocom.org/trac/wiki/rtl-sdr for more information.
To install SoftFM, download and unpack the source code and go to the
top level directory. Then do like this:
$ mkdir build
$ cd build
$ cmake ..
# CMake tries to find librtlsdr. If this fails, you need to specify
# the location of the library in one the following ways:
#
# $ cmake .. -DCMAKE_INSTALL_PREFIX=/path/rtlsdr
# $ cmake .. -DRTLSDR_INCLUDE_DIR=/path/rtlsdr/include -DRTLSDR_LIBRARY_PATH=/path/rtlsdr/lib/librtlsdr.a
# $ PKG_CONFIG_PATH=/path/rtlsdr/lib/pkgconfig cmake ..
$ make
$ ./softfm -f <radio-frequency-in-Hz>
# ( enjoy music )
License
-------
SoftFM, copyright (C) 2013, Joris van Rantwijk
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
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, see http://www.gnu.org/licenses/gpl-2.0.html
--

View File

@ -1,9 +1,9 @@
* write README.txt
* push to github
* implement WAV file writing
* implement stereo pilot PPS
* implement RDS decoding
* figure out why we sometimes lose stereo lock
* it looks like IF level sometimes varies so much that it saturates the receiver; perhaps this can be solved by dynamically managing the hardware gain in response to level measurements
* investigate problem at low IF sample rates; apparently librtlsdr is not telling the truth about the actual sample rate.
* look at I/Q balance to improve weak stations
* look at hardware gain settings to improve weak stations

15
main.cc
View File

@ -1,7 +1,20 @@
/*
* SoftFM - Software decoder for FM broadcast radio with RTL-SDR
*
* Joris van Rantwijk, 2013.
* Copyright (C) 2013, Joris van Rantwijk.
*
* 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
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, see http://www.gnu.org/licenses/gpl-2.0.html
*/
#include <cstdlib>