diff --git a/README b/README new file mode 100644 index 0000000..4b4f219 --- /dev/null +++ b/README @@ -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 + + # ( 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 + +-- diff --git a/TODO.txt b/TODO.txt index 95079fd..a0c1099 100644 --- a/TODO.txt +++ b/TODO.txt @@ -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 diff --git a/main.cc b/main.cc index 9199385..5aa9c33 100644 --- a/main.cc +++ b/main.cc @@ -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