Skip to content

Commit

Permalink
Merge pull request #14 from librtlsdr/rtlsdr_blog_v3_biast
Browse files Browse the repository at this point in the history
Added Bias T Support from RTL-SDR Blog V3 Dongle
  • Loading branch information
racerxdl committed Aug 30, 2016
2 parents 54fdd42 + 9f55d76 commit fa438d5
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 3 deletions.
11 changes: 11 additions & 0 deletions include/rtl-sdr.h
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,17 @@ RTLSDR_API int rtlsdr_cancel_async(rtlsdr_dev_t *dev);
*/
RTLSDR_API int rtlsdr_ir_query(rtlsdr_dev_t *dev, uint8_t *buf, size_t buf_len);


/*!
* Enable or disable the bias tee on GPIO PIN 0. (Works for rtl-sdr.com v3 dongles)
* See: http://www.rtl-sdr.com/rtl-sdr-blog-v-3-dongles-user-guide/
*
* \param dev the device handle given by rtlsdr_open()
* \param on 1 for Bias T on. 0 for Bias T off.
* \return -1 if device is not initialized. 1 otherwise.
*/
RTLSDR_API int rtlsdr_set_bias_tee(rtlsdr_dev_t *dev, int on);

#ifdef __cplusplus
}
#endif
Expand Down
5 changes: 3 additions & 2 deletions include/rtl_tcp.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,12 @@ enum RTL_TCP_COMMANDS {
SET_RTL_CRYSTAL = 0x0B,
SET_TUNER_CRYSTAL = 0x0C,
SET_TUNER_GAIN_BY_INDEX = 0x0D,
SET_TUNER_BANDWIDTH = 0x0E
SET_TUNER_BANDWIDTH = 0x0E,
SET_BIAS_TEE = 0x0F
};

#ifdef __cplusplus
}
#endif

#endif
#endif
12 changes: 11 additions & 1 deletion src/librtlsdr.c
Original file line number Diff line number Diff line change
Expand Up @@ -636,7 +636,7 @@ void rtlsdr_set_gpio_output(rtlsdr_dev_t *dev, uint8_t gpio)
gpio = 1 << gpio;

r = rtlsdr_read_reg(dev, SYSB, GPD, 1);
rtlsdr_write_reg(dev, SYSB, GPO, r & ~gpio, 1);
rtlsdr_write_reg(dev, SYSB, GPD, r & ~gpio, 1); // CARL: Changed from rtlsdr_write_reg(dev, SYSB, GPO, r & ~gpio, 1); must be a bug in the old code
r = rtlsdr_read_reg(dev, SYSB, GPOE, 1);
rtlsdr_write_reg(dev, SYSB, GPOE, r | gpio, 1);
}
Expand Down Expand Up @@ -2435,4 +2435,14 @@ int rtlsdr_ir_query(rtlsdr_dev_t *d, uint8_t *buf, size_t buf_len)
err:
printf("failed=%d\n", ret);
return ret;
}

int rtlsdr_set_bias_tee(rtlsdr_dev_t *dev, int on) {
if (!dev)
return -1;

rtlsdr_set_gpio_output(dev, 0);
rtlsdr_set_gpio_bit(dev, 0, on);

return 1;
}
6 changes: 6 additions & 0 deletions src/rtl_fm.c
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,7 @@ void usage(void)
"\t[-p ppm_error (default: 0)]\n"
"\t[-E enable_option (default: none)]\n"
"\t use multiple -E to enable multiple options\n"
"\t biasT: enable bias-T on GPIO PIN 0 (works for rtl-sdr.com v3 dongles)\n"
"\t edge: enable lower edge tuning\n"
"\t rdc: enable dc blocking filter on raw I/Q data at capture rate\n"
"\t adc: enable dc blocking filter on demodulated audio\n"
Expand Down Expand Up @@ -1164,6 +1165,7 @@ int main(int argc, char **argv)
int r, opt;
int dev_given = 0;
int custom_ppm = 0;
int enable_biastee = 0;
int timeConstant = 75; /* default: U.S. 75 uS */
int rtlagc = 0;
dongle_init(&dongle);
Expand Down Expand Up @@ -1225,6 +1227,8 @@ int main(int argc, char **argv)
case 'E':
if (strcmp("edge", optarg) == 0) {
controller.edge = 1;}
if (strcmp("biasT", optarg) == 0 || strcmp("biast", optarg) == 0) {
enable_biastee = 1;}
if (strcmp("dc", optarg) == 0 || strcmp("adc", optarg) == 0) {
demod.dc_block_audio = 1;}
if (strcmp("rdc", optarg) == 0) {
Expand Down Expand Up @@ -1363,6 +1367,8 @@ int main(int argc, char **argv)
}

rtlsdr_set_agc_mode(dongle.dev, rtlagc);

rtlsdr_set_bias_tee(dongle.dev, enable_biastee);

verbose_ppm_set(dongle.dev, dongle.ppm_error);

Expand Down
4 changes: 4 additions & 0 deletions src/rtl_tcp.c
Original file line number Diff line number Diff line change
Expand Up @@ -376,6 +376,10 @@ static void *command_worker(void *arg)
printf("set tuner bandwidth to %i Hz\n", bandwidth);
verbose_set_bandwidth(dev, bandwidth);
break;
case SET_BIAS_TEE:
printf("setting bias-t to %d\n", ntohl(cmd.param));
rtlsdr_set_bias_tee(dev, ntohl(cmd.param));
break;
default:
break;
}
Expand Down

0 comments on commit fa438d5

Please sign in to comment.