ioctl VIDIOC_ENUM_FREQ_BANDS
&manvol;

# VIDIOC_ENUM_FREQ_BANDS

Enumerate supported frequency bands

    	int ioctl
    	int fd
    	int request
    	struct v4l2_frequency_band
    *argp

## Arguments

`fd`

  &fd;

`request`

  VIDIOC_ENUM_FREQ_BANDS

`argp`

## Description

### Experimental

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

Enumerates the frequency bands that a tuner or modulator supports. To do this applications initialize the tuner, type and index fields, and zero out the reserved array of a &v4l2-frequency-band; and call the `VIDIOC_ENUM_FREQ_BANDS` ioctl with a pointer to this structure.

This ioctl is supported if the `V4L2_TUNER_CAP_FREQ_BANDS` capability of the corresponding tuner/modulator is set.

### struct v4l2_frequency_band

&cs-str;
__u32 | tuner | The tuner or modulator index number. This is the same value as in the &v4l2-input; tuner field and the &v4l2-tuner; index field, or the &v4l2-output; modulator field and the &v4l2-modulator; index field.
__u32 | type | The tuner type. This is the same value as in the &v4l2-tuner; type field. The type must be set to `V4L2_TUNER_RADIO` for `/dev/radioX` device nodes, and to `V4L2_TUNER_ANALOG_TV` for all others. Set this field to `V4L2_TUNER_RADIO` for modulators (currently only radio modulators are supported). See
__u32 | index | Identifies the frequency band, set by the application.
__u32 | capability | The tuner/modulator capability flags for this frequency band, see . The `V4L2_TUNER_CAP_LOW` or `V4L2_TUNER_CAP_1HZ` capability must be the same for all frequency bands of the selected tuner/modulator. So either all bands have that capability set, or none of them have that capability.
__u32 | rangelow | The lowest tunable frequency in units of 62.5 kHz, or if the capability flag `V4L2_TUNER_CAP_LOW` is set, in units of 62.5 Hz, for this frequency band. A 1 Hz unit is used when the capability flag `V4L2_TUNER_CAP_1HZ` is set.
__u32 | rangehigh | The highest tunable frequency in units of 62.5 kHz, or if the capability flag `V4L2_TUNER_CAP_LOW` is set, in units of 62.5 Hz, for this frequency band. A 1 Hz unit is used when the capability flag `V4L2_TUNER_CAP_1HZ` is set.
__u32 | modulation | The supported modulation systems of this frequency band. See . Note that currently only one modulation system per frequency band is supported. More work will need to be done if multiple modulation systems are possible. Contact the linux-media mailing list (&v4l-ml;) if you need that functionality.
__u32 | reserved[9] | Reserved for future extensions. Applications and drivers must set the array to zero.

### Band Modulation Systems

&cs-def;
`V4L2_BAND_MODULATION_VSB` | 0x02 | Vestigial Sideband modulation, used for analog TV.
`V4L2_BAND_MODULATION_FM` | 0x04 | Frequency Modulation, commonly used for analog radio.
`V4L2_BAND_MODULATION_AM` | 0x08 | Amplitude Modulation, commonly used for analog radio.

&return-value;

EINVAL

  The tuner or index is out of bounds or the type field is wrong.