132e2eae2SMauro Carvalho Chehab.. SPDX-License-Identifier: GPL-2.0
232e2eae2SMauro Carvalho Chehab
332e2eae2SMauro Carvalho ChehabThe ivtv driver
432e2eae2SMauro Carvalho Chehab===============
532e2eae2SMauro Carvalho Chehab
632e2eae2SMauro Carvalho ChehabAuthor: Hans Verkuil <hverkuil@xs4all.nl>
732e2eae2SMauro Carvalho Chehab
832e2eae2SMauro Carvalho ChehabThis is a v4l2 device driver for the Conexant cx23415/6 MPEG encoder/decoder.
932e2eae2SMauro Carvalho ChehabThe cx23415 can do both encoding and decoding, the cx23416 can only do MPEG
1032e2eae2SMauro Carvalho Chehabencoding. Currently the only card featuring full decoding support is the
1132e2eae2SMauro Carvalho ChehabHauppauge PVR-350.
1232e2eae2SMauro Carvalho Chehab
1332e2eae2SMauro Carvalho Chehab.. note::
1432e2eae2SMauro Carvalho Chehab
1532e2eae2SMauro Carvalho Chehab   #) This driver requires the latest encoder firmware (version 2.06.039, size
1632e2eae2SMauro Carvalho Chehab      376836 bytes). Get the firmware from here:
1732e2eae2SMauro Carvalho Chehab
1832e2eae2SMauro Carvalho Chehab      https://linuxtv.org/downloads/firmware/#conexant
1932e2eae2SMauro Carvalho Chehab
2032e2eae2SMauro Carvalho Chehab   #) 'normal' TV applications do not work with this driver, you need
2132e2eae2SMauro Carvalho Chehab      an application that can handle MPEG input such as mplayer, xine, MythTV,
2232e2eae2SMauro Carvalho Chehab      etc.
2332e2eae2SMauro Carvalho Chehab
2432e2eae2SMauro Carvalho ChehabThe primary goal of the IVTV project is to provide a "clean room" Linux
2532e2eae2SMauro Carvalho ChehabOpen Source driver implementation for video capture cards based on the
2632e2eae2SMauro Carvalho ChehabiCompression iTVC15 or Conexant CX23415/CX23416 MPEG Codec.
2732e2eae2SMauro Carvalho Chehab
2832e2eae2SMauro Carvalho ChehabFeatures
2932e2eae2SMauro Carvalho Chehab--------
3032e2eae2SMauro Carvalho Chehab
3132e2eae2SMauro Carvalho Chehab * Hardware mpeg2 capture of broadcast video (and sound) via the tuner or
3232e2eae2SMauro Carvalho Chehab   S-Video/Composite and audio line-in.
3332e2eae2SMauro Carvalho Chehab * Hardware mpeg2 capture of FM radio where hardware support exists
3432e2eae2SMauro Carvalho Chehab * Supports NTSC, PAL, SECAM with stereo sound
3532e2eae2SMauro Carvalho Chehab * Supports SAP and bilingual transmissions.
3632e2eae2SMauro Carvalho Chehab * Supports raw VBI (closed captions and teletext).
3732e2eae2SMauro Carvalho Chehab * Supports sliced VBI (closed captions and teletext) and is able to insert
3832e2eae2SMauro Carvalho Chehab   this into the captured MPEG stream.
3932e2eae2SMauro Carvalho Chehab * Supports raw YUV and PCM input.
4032e2eae2SMauro Carvalho Chehab
4132e2eae2SMauro Carvalho ChehabAdditional features for the PVR-350 (CX23415 based)
4232e2eae2SMauro Carvalho Chehab---------------------------------------------------
4332e2eae2SMauro Carvalho Chehab
4432e2eae2SMauro Carvalho Chehab * Provides hardware mpeg2 playback
4532e2eae2SMauro Carvalho Chehab * Provides comprehensive OSD (On Screen Display: ie. graphics overlaying the
4632e2eae2SMauro Carvalho Chehab   video signal)
4732e2eae2SMauro Carvalho Chehab * Provides a framebuffer (allowing X applications to appear on the video
4832e2eae2SMauro Carvalho Chehab   device)
4932e2eae2SMauro Carvalho Chehab * Supports raw YUV output.
5032e2eae2SMauro Carvalho Chehab
5132e2eae2SMauro Carvalho ChehabIMPORTANT: In case of problems first read this page:
5232e2eae2SMauro Carvalho Chehab	https://help.ubuntu.com/community/Install_IVTV_Troubleshooting
5332e2eae2SMauro Carvalho Chehab
5432e2eae2SMauro Carvalho ChehabSee also
5532e2eae2SMauro Carvalho Chehab--------
5632e2eae2SMauro Carvalho Chehab
5732e2eae2SMauro Carvalho Chehabhttps://linuxtv.org
5832e2eae2SMauro Carvalho Chehab
5932e2eae2SMauro Carvalho ChehabIRC
6032e2eae2SMauro Carvalho Chehab---
6132e2eae2SMauro Carvalho Chehab
6232e2eae2SMauro Carvalho Chehabirc://irc.freenode.net/#v4l
6332e2eae2SMauro Carvalho Chehab
6432e2eae2SMauro Carvalho Chehab----------------------------------------------------------
6532e2eae2SMauro Carvalho Chehab
6632e2eae2SMauro Carvalho ChehabDevices
6732e2eae2SMauro Carvalho Chehab-------
6832e2eae2SMauro Carvalho Chehab
6932e2eae2SMauro Carvalho ChehabA maximum of 12 ivtv boards are allowed at the moment.
7032e2eae2SMauro Carvalho Chehab
7132e2eae2SMauro Carvalho ChehabCards that don't have a video output capability (i.e. non PVR350 cards)
7232e2eae2SMauro Carvalho Chehablack the vbi8, vbi16, video16 and video48 devices. They also do not
7332e2eae2SMauro Carvalho Chehabsupport the framebuffer device /dev/fbx for OSD.
7432e2eae2SMauro Carvalho Chehab
7532e2eae2SMauro Carvalho ChehabThe radio0 device may or may not be present, depending on whether the
7632e2eae2SMauro Carvalho Chehabcard has a radio tuner or not.
7732e2eae2SMauro Carvalho Chehab
7832e2eae2SMauro Carvalho ChehabHere is a list of the base v4l devices:
7932e2eae2SMauro Carvalho Chehab
8032e2eae2SMauro Carvalho Chehab.. code-block:: none
8132e2eae2SMauro Carvalho Chehab
8232e2eae2SMauro Carvalho Chehab	crw-rw----    1 root     video     81,   0 Jun 19 22:22 /dev/video0
8332e2eae2SMauro Carvalho Chehab	crw-rw----    1 root     video     81,  16 Jun 19 22:22 /dev/video16
8432e2eae2SMauro Carvalho Chehab	crw-rw----    1 root     video     81,  24 Jun 19 22:22 /dev/video24
8532e2eae2SMauro Carvalho Chehab	crw-rw----    1 root     video     81,  32 Jun 19 22:22 /dev/video32
8632e2eae2SMauro Carvalho Chehab	crw-rw----    1 root     video     81,  48 Jun 19 22:22 /dev/video48
8732e2eae2SMauro Carvalho Chehab	crw-rw----    1 root     video     81,  64 Jun 19 22:22 /dev/radio0
8832e2eae2SMauro Carvalho Chehab	crw-rw----    1 root     video     81, 224 Jun 19 22:22 /dev/vbi0
8932e2eae2SMauro Carvalho Chehab	crw-rw----    1 root     video     81, 228 Jun 19 22:22 /dev/vbi8
9032e2eae2SMauro Carvalho Chehab	crw-rw----    1 root     video     81, 232 Jun 19 22:22 /dev/vbi16
9132e2eae2SMauro Carvalho Chehab
9232e2eae2SMauro Carvalho ChehabBase devices
9332e2eae2SMauro Carvalho Chehab------------
9432e2eae2SMauro Carvalho Chehab
9532e2eae2SMauro Carvalho ChehabFor every extra card you have the numbers increased by one. For example,
9632e2eae2SMauro Carvalho Chehab/dev/video0 is listed as the 'base' encoding capture device so we have:
9732e2eae2SMauro Carvalho Chehab
9832e2eae2SMauro Carvalho Chehab- /dev/video0  is the encoding capture device for the first card (card 0)
9932e2eae2SMauro Carvalho Chehab- /dev/video1  is the encoding capture device for the second card (card 1)
10032e2eae2SMauro Carvalho Chehab- /dev/video2  is the encoding capture device for the third card (card 2)
10132e2eae2SMauro Carvalho Chehab
10232e2eae2SMauro Carvalho ChehabNote that if the first card doesn't have a feature (eg no decoder, so no
10332e2eae2SMauro Carvalho Chehabvideo16, the second card will still use video17. The simple rule is 'add
10432e2eae2SMauro Carvalho Chehabthe card number to the base device number'. If you have other capture
10532e2eae2SMauro Carvalho Chehabcards (e.g. WinTV PCI) that are detected first, then you have to tell
10632e2eae2SMauro Carvalho Chehabthe ivtv module about it so that it will start counting at 1 (or 2, or
10732e2eae2SMauro Carvalho Chehabwhatever). Otherwise the device numbers can get confusing. The ivtv
10832e2eae2SMauro Carvalho Chehab'ivtv_first_minor' module option can be used for that.
10932e2eae2SMauro Carvalho Chehab
11032e2eae2SMauro Carvalho Chehab
11132e2eae2SMauro Carvalho Chehab- /dev/video0
11232e2eae2SMauro Carvalho Chehab
11332e2eae2SMauro Carvalho Chehab  The encoding capture device(s).
11432e2eae2SMauro Carvalho Chehab
11532e2eae2SMauro Carvalho Chehab  Read-only.
11632e2eae2SMauro Carvalho Chehab
11732e2eae2SMauro Carvalho Chehab  Reading from this device gets you the MPEG1/2 program stream.
11832e2eae2SMauro Carvalho Chehab  Example:
11932e2eae2SMauro Carvalho Chehab
12032e2eae2SMauro Carvalho Chehab  .. code-block:: none
12132e2eae2SMauro Carvalho Chehab
12232e2eae2SMauro Carvalho Chehab	cat /dev/video0 > my.mpg (you need to hit ctrl-c to exit)
12332e2eae2SMauro Carvalho Chehab
12432e2eae2SMauro Carvalho Chehab
12532e2eae2SMauro Carvalho Chehab- /dev/video16
12632e2eae2SMauro Carvalho Chehab
12732e2eae2SMauro Carvalho Chehab  The decoder output device(s)
12832e2eae2SMauro Carvalho Chehab
12932e2eae2SMauro Carvalho Chehab  Write-only. Only present if the MPEG decoder (i.e. CX23415) exists.
13032e2eae2SMauro Carvalho Chehab
13132e2eae2SMauro Carvalho Chehab  An mpeg2 stream sent to this device will appear on the selected video
13232e2eae2SMauro Carvalho Chehab  display, audio will appear on the line-out/audio out.  It is only
13332e2eae2SMauro Carvalho Chehab  available for cards that support video out. Example:
13432e2eae2SMauro Carvalho Chehab
13532e2eae2SMauro Carvalho Chehab  .. code-block:: none
13632e2eae2SMauro Carvalho Chehab
13732e2eae2SMauro Carvalho Chehab	cat my.mpg >/dev/video16
13832e2eae2SMauro Carvalho Chehab
13932e2eae2SMauro Carvalho Chehab
14032e2eae2SMauro Carvalho Chehab- /dev/video24
14132e2eae2SMauro Carvalho Chehab
14232e2eae2SMauro Carvalho Chehab  The raw audio capture device(s).
14332e2eae2SMauro Carvalho Chehab
14432e2eae2SMauro Carvalho Chehab  Read-only
14532e2eae2SMauro Carvalho Chehab
14632e2eae2SMauro Carvalho Chehab  The raw audio PCM stereo stream from the currently selected
14732e2eae2SMauro Carvalho Chehab  tuner or audio line-in.  Reading from this device results in a raw
14832e2eae2SMauro Carvalho Chehab  (signed 16 bit Little Endian, 48000 Hz, stereo pcm) capture.
14932e2eae2SMauro Carvalho Chehab  This device only captures audio. This should be replaced by an ALSA
15032e2eae2SMauro Carvalho Chehab  device in the future.
15132e2eae2SMauro Carvalho Chehab  Note that there is no corresponding raw audio output device, this is
15232e2eae2SMauro Carvalho Chehab  not supported in the decoder firmware.
15332e2eae2SMauro Carvalho Chehab
15432e2eae2SMauro Carvalho Chehab
15532e2eae2SMauro Carvalho Chehab- /dev/video32
15632e2eae2SMauro Carvalho Chehab
15732e2eae2SMauro Carvalho Chehab  The raw video capture device(s)
15832e2eae2SMauro Carvalho Chehab
15932e2eae2SMauro Carvalho Chehab  Read-only
16032e2eae2SMauro Carvalho Chehab
16132e2eae2SMauro Carvalho Chehab  The raw YUV video output from the current video input. The YUV format
162*78eee7b5SEzequiel Garcia  is a 16x16 linear tiled NV12 format (V4L2_PIX_FMT_NV12_16L16)
16332e2eae2SMauro Carvalho Chehab
16432e2eae2SMauro Carvalho Chehab  Note that the YUV and PCM streams are not synchronized, so they are of
16532e2eae2SMauro Carvalho Chehab  limited use.
16632e2eae2SMauro Carvalho Chehab
16732e2eae2SMauro Carvalho Chehab
16832e2eae2SMauro Carvalho Chehab- /dev/video48
16932e2eae2SMauro Carvalho Chehab
17032e2eae2SMauro Carvalho Chehab  The raw video display device(s)
17132e2eae2SMauro Carvalho Chehab
17232e2eae2SMauro Carvalho Chehab  Write-only. Only present if the MPEG decoder (i.e. CX23415) exists.
17332e2eae2SMauro Carvalho Chehab
17432e2eae2SMauro Carvalho Chehab  Writes a YUV stream to the decoder of the card.
17532e2eae2SMauro Carvalho Chehab
17632e2eae2SMauro Carvalho Chehab
17732e2eae2SMauro Carvalho Chehab- /dev/radio0
17832e2eae2SMauro Carvalho Chehab
17932e2eae2SMauro Carvalho Chehab  The radio tuner device(s)
18032e2eae2SMauro Carvalho Chehab
18132e2eae2SMauro Carvalho Chehab  Cannot be read or written.
18232e2eae2SMauro Carvalho Chehab
18332e2eae2SMauro Carvalho Chehab  Used to enable the radio tuner and tune to a frequency. You cannot
18432e2eae2SMauro Carvalho Chehab  read or write audio streams with this device.  Once you use this
18532e2eae2SMauro Carvalho Chehab  device to tune the radio, use /dev/video24 to read the raw pcm stream
18632e2eae2SMauro Carvalho Chehab  or /dev/video0 to get an mpeg2 stream with black video.
18732e2eae2SMauro Carvalho Chehab
18832e2eae2SMauro Carvalho Chehab
18932e2eae2SMauro Carvalho Chehab- /dev/vbi0
19032e2eae2SMauro Carvalho Chehab
19132e2eae2SMauro Carvalho Chehab  The 'vertical blank interval' (Teletext, CC, WSS etc) capture device(s)
19232e2eae2SMauro Carvalho Chehab
19332e2eae2SMauro Carvalho Chehab  Read-only
19432e2eae2SMauro Carvalho Chehab
19532e2eae2SMauro Carvalho Chehab  Captures the raw (or sliced) video data sent during the Vertical Blank
19632e2eae2SMauro Carvalho Chehab  Interval. This data is used to encode teletext, closed captions, VPS,
19732e2eae2SMauro Carvalho Chehab  widescreen signalling, electronic program guide information, and other
19832e2eae2SMauro Carvalho Chehab  services.
19932e2eae2SMauro Carvalho Chehab
20032e2eae2SMauro Carvalho Chehab
20132e2eae2SMauro Carvalho Chehab- /dev/vbi8
20232e2eae2SMauro Carvalho Chehab
20332e2eae2SMauro Carvalho Chehab  Processed vbi feedback device(s)
20432e2eae2SMauro Carvalho Chehab
20532e2eae2SMauro Carvalho Chehab  Read-only. Only present if the MPEG decoder (i.e. CX23415) exists.
20632e2eae2SMauro Carvalho Chehab
20732e2eae2SMauro Carvalho Chehab  The sliced VBI data embedded in an MPEG stream is reproduced on this
20832e2eae2SMauro Carvalho Chehab  device. So while playing back a recording on /dev/video16, you can
20932e2eae2SMauro Carvalho Chehab  read the embedded VBI data from /dev/vbi8.
21032e2eae2SMauro Carvalho Chehab
21132e2eae2SMauro Carvalho Chehab
21232e2eae2SMauro Carvalho Chehab- /dev/vbi16
21332e2eae2SMauro Carvalho Chehab
21432e2eae2SMauro Carvalho Chehab  The vbi 'display' device(s)
21532e2eae2SMauro Carvalho Chehab
21632e2eae2SMauro Carvalho Chehab  Write-only. Only present if the MPEG decoder (i.e. CX23415) exists.
21732e2eae2SMauro Carvalho Chehab
21832e2eae2SMauro Carvalho Chehab  Can be used to send sliced VBI data to the video-out connector.
219