diff --git a/README_improvements.md b/README_improvements.md new file mode 100644 index 0000000..dd05082 --- /dev/null +++ b/README_improvements.md @@ -0,0 +1,132 @@ + +# improvements, compared to the osmocom sources + + +## versions + +comparing osmocom's git git://git.osmocom.org/rtl-sdr.git dated from 2020-08-19 +against librtlsdr's development branch (same date) + + +## "Driver" Library Features + +* added support for special USB (vendor) VID 0x1209 (product) PID 0x2832: "Generic RTL2832U": + * A special USB vendor/product id got reserved at http://pid.codes/1209/2832/ + * for such devices the linux kernel's DVB modules are not loaded automatically, thus can be used without blacklisting dvb_usb_rtl28xxu below /etc/modprobe.d/ + * this allows to use a second RTL dongle for use with DVB in parallel + * the IDs can be programmed with 'rtl_eeprom -n' or 'rtl_eeprom -g realtek_sdr' + * see https://www.rtl-sdr.com/watching-dvb-t-tv-and-using-sdr-mode-at-the-same-time-with-two-rtl-sdrs/ + +* added support for using RTLSDR-Dongle from remote - see rtl_rpcd + +* improvements for R820T/2 tuner + also see https://codingspirit.de/librtlsdr-driver.pdf + * added better bandwidth support + * added smaller bandwidths, improving selectivity: + 290, 375, 420, 470, 600, 860, 950, 1100, 1300, 1500, 1600, 1750, 1950 kHz. + These are coarse measured values .. which might get adjusted in future. + * bandwidth filters utilize tuner's low- and highpass filters at IF + * added spectrum flipping (inside tuner) - and back in RTL2832 + * the band edges (low/high-pass) have different steepness; + the steeper edge can be selected with the mixer sideband (rtlsdr_set_tuner_sideband()), + to achieve better attenuation depending on signal scenario + * added (automatic) control over VGA (variable gain amplifier) + * VGA gain (besides LNA and Mixer) can be utilized and set to automatic, + letting it controlled from RTL2832U. + Having all automatic (AGC) including activation of digital AGC in RTL2832 + (rtlsdr_set_agc_mode()), oversteering effects got reduced (a lot). + * gain range now up to 100 dB + * deactivated "Filter extension under weak signal" for a stable filter characteristic + * added shifting of IF-center, to receive away from DC. See rtlsdr_set_tuner_band_center() + +* probably some more: it's highly probable, that this list is incomplete + + +## "Driver" Library API + +* added rtlsdr_set_and_get_tuner_bandwidth(), which also delivers the bandwidth. + [ with rtlsdr_set_tuner_bandwidth() does not deliver the bandwidth ] + +* added rtlsdr_set_tuner_band_center(), to set center of the filtered tuner band + +* added rtlsdr_set_tuner_sideband(), to set mixer sideband + +* added rtlsdr_set_tuner_gain_ext(), special for R820T/2 tuner + +* added rtlsdr_set_tuner_if_mode(), sets AGC modes in detail + +* added rtlsdr_set_ds_mode() including threshold frequency + +* added rtlsdr_ir_query() + +* added rtlsdr_set_opt_string() and rtlsdr_get_opt_help() + for configuration of 'driver' - especially from command line + +* added rtlsdr_set_tuner_i2c_register(), rtlsdr_get_tuner_i2c_register() + and rtlsdr_set_tuner_i2c_override() + exposing hacking of tuner-specific I2C registers + +* added rtlsdr_get_ver_id(), + to allow discrimination between osmocom library - or this fork + +* added rtlsdr_get_version() + + +## Tools + +* added rtl_ir: + print received IR signals. + * requires the IR diode of an RTL-SDR - which might not exist! + +* added rtl_rpcd: + a Remote Procedure Call server for RTL-SDR dongles. + * for use, set environment variable "RTLSDR_RPC_IS_ENABLED" + * optionally set environment varibales "RTLSDR_RPC_SERV_ADDR" + and "RTLSDR_RPC_SERV_PORT". These default to "127.0.0.1" and "40000". + * requires cmake option WITH_RPC + +* added rtl_raw2wav: + save rtl_sdr or rtl_fm's output (pipe) into a wave file, + including some meta information like timestamp and frequency + +* added rtl_udp: + same as rtl_tcp - just using UDP instead of TCP + +* added rtl_wavestat: + display wave file meta information + +* added rtl_wavestream: + stream raw data (in specified format) + + + +## "Driver" Library's UDP-Server - only on Windows + +* enabled by cmake option PROVIDE_UDP_SERVER for tests. OFF by default + +* activated by rtlsdr_set_opt_string(): "port=1" or "port=", + default port number: 32323 + +* purpose is to allow configuration at runtime with a simple text protocol, e.g. with netcat + +* for detailed protocol, see comment section in parse() of librtlsdr.c. + or look for sections with '#ifdef WITH_UDP_SERVER' + + + +## RTL_TCP TCP-PROTOCOL + +* allows non-GPL programs, e.g. QIRX, to utilize the RTLSDR stuff in a license compliant way + +* added several control functions in rtl_tcp, not existing in osmocom release: + UDP_ESTABLISH, UDP_TERMINATE, SET_I2C_TUNER_REGISTER, SET_I2C_TUNER_OVERRIDE, + SET_TUNER_BW_IF_CENTER, SET_TUNER_IF_MODE, SET_SIDEBAND, REPORT_I2C_REGS + +* control functions documented in rtl_tcp.h + +* (by default) control port number 1234, configurable via command-line-interface (CLI) + +* response(s) at +1 of control port: 1235, configurable via CLI + +* protocol details in protocol_rtl_tcp.txt +