# Software Defined Radio Interface (SDR)

# Experimental

This is an experimental interface and may change in the future.

SDR is an abbreviation of Software Defined Radio, the radio device which uses application software for modulation or demodulation. This interface is intended for controlling and data streaming of such devices.

SDR devices are accessed through character device special files named `/dev/swradio0` to `/dev/swradio255` with major number 81 and dynamically allocated minor numbers 0 to 255.

# Querying Capabilities

Devices supporting the SDR receiver interface set the `V4L2_CAP_SDR_CAPTURE` and `V4L2_CAP_TUNER` flag in the capabilities field of &v4l2-capability; returned by the &VIDIOC-QUERYCAP; ioctl. That flag means the device has an Analog to Digital Converter (ADC), which is a mandatory element for the SDR receiver. At least one of the read/write, streaming or asynchronous I/O methods must be supported.

# Supplemental Functions

SDR devices can support controls, and must support the tuner ioctls. Tuner ioctls are used for setting the ADC sampling rate (sampling frequency) and the possible RF tuner frequency.

The `V4L2_TUNER_ADC` tuner type is used for ADC tuners, and the `V4L2_TUNER_RF` tuner type is used for RF tuners. The tuner index of the RF tuner (if any) must always follow the ADC tuner index. Normally the ADC tuner is #0 and the RF tuner is #1.

The &VIDIOC-S-HW-FREQ-SEEK; ioctl is not supported.

# Data Format Negotiation

The SDR capture device uses the format ioctls to select the capture format. Both the sampling resolution and the data streaming format are bound to that selectable format. In addition to the basic format ioctls, the &VIDIOC-ENUM-FMT; ioctl must be supported as well.

To use the format ioctls applications set the type field of a &v4l2-format; to `V4L2_BUF_TYPE_SDR_CAPTURE` and use the &v4l2-sdr-format; sdr member of the fmt union as needed per the desired operation. Currently only the pixelformat field of &v4l2-sdr-format; is used. The content of that field is the V4L2 fourcc code of the data format.

## struct v4l2_sdr_format

&cs-str;
__u32 | pixelformat | The data format or type of compression, set by the application. This is a little endian four character code. V4L2 defines SDR formats in .
__u8 | reserved[28] | This array is reserved for future extensions. Drivers and applications must set it to zero.

An SDR device may support read/write and/or streaming (memory mapping or user pointer) I/O.