^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) .. SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) The ivtv driver
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) ===============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) Author: Hans Verkuil <hverkuil@xs4all.nl>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) This is a v4l2 device driver for the Conexant cx23415/6 MPEG encoder/decoder.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) The cx23415 can do both encoding and decoding, the cx23416 can only do MPEG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) encoding. Currently the only card featuring full decoding support is the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) Hauppauge PVR-350.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) .. note::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #) This driver requires the latest encoder firmware (version 2.06.039, size
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) 376836 bytes). Get the firmware from here:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) https://linuxtv.org/downloads/firmware/#conexant
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) #) 'normal' TV applications do not work with this driver, you need
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) an application that can handle MPEG input such as mplayer, xine, MythTV,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) etc.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) The primary goal of the IVTV project is to provide a "clean room" Linux
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) Open Source driver implementation for video capture cards based on the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) iCompression iTVC15 or Conexant CX23415/CX23416 MPEG Codec.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) Features
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) --------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) * Hardware mpeg2 capture of broadcast video (and sound) via the tuner or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) S-Video/Composite and audio line-in.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) * Hardware mpeg2 capture of FM radio where hardware support exists
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) * Supports NTSC, PAL, SECAM with stereo sound
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) * Supports SAP and bilingual transmissions.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) * Supports raw VBI (closed captions and teletext).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) * Supports sliced VBI (closed captions and teletext) and is able to insert
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) this into the captured MPEG stream.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) * Supports raw YUV and PCM input.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) Additional features for the PVR-350 (CX23415 based)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) ---------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) * Provides hardware mpeg2 playback
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) * Provides comprehensive OSD (On Screen Display: ie. graphics overlaying the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) video signal)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) * Provides a framebuffer (allowing X applications to appear on the video
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) device)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) * Supports raw YUV output.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) IMPORTANT: In case of problems first read this page:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) https://help.ubuntu.com/community/Install_IVTV_Troubleshooting
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) See also
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) --------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) https://linuxtv.org
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) IRC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) ---
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) irc://irc.freenode.net/#v4l
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) ----------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) Devices
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) -------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) A maximum of 12 ivtv boards are allowed at the moment.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) Cards that don't have a video output capability (i.e. non PVR350 cards)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) lack the vbi8, vbi16, video16 and video48 devices. They also do not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) support the framebuffer device /dev/fbx for OSD.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) The radio0 device may or may not be present, depending on whether the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) card has a radio tuner or not.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) Here is a list of the base v4l devices:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) .. code-block:: none
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) crw-rw---- 1 root video 81, 0 Jun 19 22:22 /dev/video0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) crw-rw---- 1 root video 81, 16 Jun 19 22:22 /dev/video16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) crw-rw---- 1 root video 81, 24 Jun 19 22:22 /dev/video24
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) crw-rw---- 1 root video 81, 32 Jun 19 22:22 /dev/video32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) crw-rw---- 1 root video 81, 48 Jun 19 22:22 /dev/video48
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) crw-rw---- 1 root video 81, 64 Jun 19 22:22 /dev/radio0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) crw-rw---- 1 root video 81, 224 Jun 19 22:22 /dev/vbi0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) crw-rw---- 1 root video 81, 228 Jun 19 22:22 /dev/vbi8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) crw-rw---- 1 root video 81, 232 Jun 19 22:22 /dev/vbi16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) Base devices
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) ------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) For every extra card you have the numbers increased by one. For example,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) /dev/video0 is listed as the 'base' encoding capture device so we have:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) - /dev/video0 is the encoding capture device for the first card (card 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) - /dev/video1 is the encoding capture device for the second card (card 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) - /dev/video2 is the encoding capture device for the third card (card 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) Note that if the first card doesn't have a feature (eg no decoder, so no
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) video16, the second card will still use video17. The simple rule is 'add
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) the card number to the base device number'. If you have other capture
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) cards (e.g. WinTV PCI) that are detected first, then you have to tell
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) the ivtv module about it so that it will start counting at 1 (or 2, or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) whatever). Otherwise the device numbers can get confusing. The ivtv
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 'ivtv_first_minor' module option can be used for that.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) - /dev/video0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) The encoding capture device(s).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) Read-only.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) Reading from this device gets you the MPEG1/2 program stream.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) Example:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) .. code-block:: none
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) cat /dev/video0 > my.mpg (you need to hit ctrl-c to exit)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) - /dev/video16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) The decoder output device(s)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) Write-only. Only present if the MPEG decoder (i.e. CX23415) exists.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) An mpeg2 stream sent to this device will appear on the selected video
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) display, audio will appear on the line-out/audio out. It is only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) available for cards that support video out. Example:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) .. code-block:: none
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) cat my.mpg >/dev/video16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) - /dev/video24
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) The raw audio capture device(s).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) Read-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) The raw audio PCM stereo stream from the currently selected
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) tuner or audio line-in. Reading from this device results in a raw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) (signed 16 bit Little Endian, 48000 Hz, stereo pcm) capture.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) This device only captures audio. This should be replaced by an ALSA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) device in the future.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) Note that there is no corresponding raw audio output device, this is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) not supported in the decoder firmware.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) - /dev/video32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) The raw video capture device(s)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) Read-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) The raw YUV video output from the current video input. The YUV format
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) is non-standard (V4L2_PIX_FMT_HM12).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) Note that the YUV and PCM streams are not synchronized, so they are of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) limited use.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) - /dev/video48
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) The raw video display device(s)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) Write-only. Only present if the MPEG decoder (i.e. CX23415) exists.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) Writes a YUV stream to the decoder of the card.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) - /dev/radio0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) The radio tuner device(s)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) Cannot be read or written.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) Used to enable the radio tuner and tune to a frequency. You cannot
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) read or write audio streams with this device. Once you use this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) device to tune the radio, use /dev/video24 to read the raw pcm stream
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) or /dev/video0 to get an mpeg2 stream with black video.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) - /dev/vbi0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) The 'vertical blank interval' (Teletext, CC, WSS etc) capture device(s)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) Read-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) Captures the raw (or sliced) video data sent during the Vertical Blank
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) Interval. This data is used to encode teletext, closed captions, VPS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) widescreen signalling, electronic program guide information, and other
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) services.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) - /dev/vbi8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) Processed vbi feedback device(s)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) Read-only. Only present if the MPEG decoder (i.e. CX23415) exists.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) The sliced VBI data embedded in an MPEG stream is reproduced on this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) device. So while playing back a recording on /dev/video16, you can
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) read the embedded VBI data from /dev/vbi8.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) - /dev/vbi16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) The vbi 'display' device(s)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) Write-only. Only present if the MPEG decoder (i.e. CX23415) exists.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) Can be used to send sliced VBI data to the video-out connector.