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.
Subscribe
Notify of
guest

3 Comments
Inline Feedbacks
View all comments
Alexander

It would be nice if this ports can be directly de/activated by sdr software (plugin)
sdr# for example

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)

DE8MSH

UFB job!