Using the GPIO Ports on the RTL2832U Chip

The RTL-SDR uses the RTL2832U chip as its ADC and USB interface processing chip. It also has 8 GPIO (General Purpose IO) ports available which are by default unused by the original DVB-T dongle application. However, which the right modifications to the SDR drivers, these GPIO ports can be activated and potentially used for applications such as antenna, filter, pre-amplifier and attenuator switching.

Over on his web site S57UUU has been experimenting with these GPIO ports and has put up a short tutorial/set of notes on how to connect to the ports and how to modify the RTL-SDR drivers to set the state of each pin. You will need basic programming and compilation knowledge to understand how to activate these pins in the drivers, as well as good surface mount soldering skills to be able to connect wires to the pins.

Connecting to the GPIO ports requires good SMT soldering skills.
Connecting to the GPIO ports requires good SMT soldering skills.

3 comments

  1. Bryan Cattle

    If anyone wants to play with this, I created a fork of the driver and added a command line script to it that can set and read these pins. Get it from https://github.com/bcattle/rtl-sdr.

    To use, run it with `-s pin=val`. Running it without args just prints the value of the register.

    $ ./rtl_gpio
    Found 1 device(s):
    0: Realtek, RTL2838UHIDIR, SN: 00000001

    Using device 0: Generic RTL2832U OEM
    Found Rafael Micro R820T tuner
    GPIO byte is set to: 0x8 (0b1000)

    $ ./rtl_gpio -s 1=1
    Found 1 device(s):
    0: Realtek, RTL2838UHIDIR, SN: 00000001

    Using device 0: Generic RTL2832U OEM
    Found Rafael Micro R820T tuner
    Setting pin 1 to 0b1
    GPIO byte is set to: 0xa (0b1010)

Post a comment

You may use the following HTML:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>