Main Content


Create receiver System object for radio hardware



rx = sdrrx(DeviceName) creates a receiver System object™ with default properties that receives data from the radio hardware specified by DeviceName. The object receives data over a USB communication connection.

The receiver System object connects to the radio hardware when you call the object. After creating a receiver radio object, use the info object function of comm.SDRRxPluto to verify host-hardware communication. The object stays connected until you call the release method.


Instead of using the step method to perform the operation defined by the System object, you can call the object with arguments, as if it were a function. For example, y = step(obj,x) and y = obj(x) perform equivalent operations.

rx = sdrrx(DeviceName,Name,Value) specifies additional properties using one or more Name,Value pair arguments. Unspecified properties take default values.


collapse all

Create a receiver System object for a ADALM-PLUTO radio.

rx = sdrrx('Pluto')
rx = 

  comm.SDRRxPluto with properties:

                DeviceName: 'Pluto'
                   RadioID: 'usb:0'
           CenterFrequency: 2.4000e+09
                GainSource: 'AGC Slow Attack'
            ChannelMapping: 1
        BasebandSampleRate: 1000000
            OutputDataType: 'int16'
           SamplesPerFrame: 20000
           EnableBurstMode: false
    ShowAdvancedProperties: false

  Show all properties

Input Arguments

collapse all

Name of radio hardware, specified as a character vector. Currently, 'Pluto' is the only valid input in this support package.

Example: 'Pluto'

Name-Value Arguments

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Before R2021a, use commas to separate each name and value, and enclose Name in quotes.

Example: GainSource','Manual','Gain',20 sets the receiver gain to 20 dB.

Radio identification number, specified as one of the following character vectors:

  • (recommended) A device-independent index, with the prefix usb:, such as 'usb:0', 'usb:1', 'usb:2', …, indicating the first, second, third, ..., attached ADALM-PLUTO radio, respectively

  • An IP address, with the prefix ip:, such as 'ip:'

  • A serial number, represented by a hexadecimal string with the prefix sn:, such as'sn:100000235523730700230031090216eaeb'


When working with multiple radios, if devices are inserted or removed, the host computer assignment of USB addresses might change. Any time an SDR device is inserted or removed from a USB port, the host computer polls all USB ports and assigns or reassigns the radio addresses associated with connected devices.

USB address assignment for multiple radios

When operating on Windows® keep these considerations in mind.

  • When running multiple radios on the same host in separate MATLAB® sessions, for each MATLAB session the first radio is assigned usb:0, and the ID number increments by one for subsequent radios.

  • Radios that are being used by one MATLAB are not seen by other MATLAB sessions. Use findPlutoRadio and check the reported serial number to identify the radios seen in a particular MATLAB session.

To ensure that all assigned radio identities remain static, do not connect or disconnect radios after SDR objects have been created. The best practice is to connect radios and create SDR objects in this order:

  1. Clear all SDR objects.

  2. Connect all radios.

  3. Check to confirm that the connected radios are recognized by running this command:


  4. Create SDR objects.

To interface with the radio hardware, the RadioID property of the radio object must match the radio ID of the radio hardware. Update the RadioID property, if necessary.

When running multiple radios on the same host, the host assigns each radio a different radio ID. When identifying the radio by USB ID, the first radio is assigned usb:0, and the ID number increments by one for subsequent radios. For example, to assign IDs to two radios connected on the same host computer, at the MATLAB command prompt, enter:

rx = sdrrx('Pluto','RadioID','usb:0'); 
tx = sdrtx('Pluto','RadioID','usb:1');

RF center frequency setting in Hz, specified as a scalar from 70.0e6 to 6.0e9.


Analog Devices® qualifies the PLUTO radio over a tuning range of 325 MHz to 3.8 GHz. This support package enables you to use the PLUTO radio outside the qualified tuning range by configuring the radio to operate using the AD9364 firmware. To extend the frequency range, at the MATLAB command prompt, enter configurePlutoRadio('AD9364').

Tunable: Yes

Data Types: double

This property is read-only.

The channel mapping is always set to 1.

Gain source, specified as one of the following:

  • 'AGC Slow Attack' — For signals with slowly changing power levels

  • 'AGC Fast Attack' — For signals with rapidly changing power levels

  • 'Manual' — For setting the gain manually with the Gain property

Data Types: char | string

Radio receiver gain in dB, specified as a scalar from -4 to 71.


The acceptable minimum and maximum gain setting depends on the center frequency. An incompatible gain and center frequency combination returns an error.

Tunable: Yes


To enable this property, set GainSource to 'Manual'.

Data Types: double

Baseband sampling rate in Hz, specified as a scalar from 65105 to 61.44e6 samples per second.


The actual computed value and your specified setting can have a small mismatch. To confirm that the actual computed value is close enough to your specified setting, call the info object function on the radio object.

Data Types: double

Output signal data type, specified as one of the following:

  • int16 — 16-bit signed integers

  • double — Double-precision floating point

  • single — Single-precision floating point

Number of samples per frame, specified as an even positive integer from 2 to 16,777,216. Using values less than 3660 can yield poor performance.

Data Types: double

Option for burst mode, specified as false or true. When set to true, this property produces a set of contiguous samples without overflow. This setting can help simulate models that cannot run in real time. When you enable burst mode, specify the amount of contiguous data using the property. For more information on how to use this property, see Burst Mode.

Data Types: logical

Number of frames in a contiguous burst, specified as a strictly positive integer.


To enable this property, set EnableBurstMode to true.

Data Types: double

Output Arguments

collapse all

Receiver for the specified hardware, returned as a System object.

Version History

Introduced in R2017a