media updates for v5.8-rc1

-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEE+QmuaPwR3wnBdVwACF8+vY7k4RUFAl7XUmwACgkQCF8+vY7k
 4RU4zg//fT32wiVAPHCCp+pDZVnWNeipXE1gnpqghd/qZXfzBPiLEC9sPS74VVkA
 jf1hhR33VZpKAKTPg/b074qhRZBywEOdHZnT/0CEE1oNB61shVOnyDYzLGSq95cO
 6V55ovbi5IOkrg0QEJbHpG5YHzt+pq5XeWOkqGNsHwla7N7iMGMVYfHepVVDWPnZ
 0wGYFF9cAJP+X/uxqkZLDVMA/K1I+QKh6vrj/qx53/eRt8VID3+i8ig3guk4PlUq
 7RLw5w/CywtNaGE5zaz7T3i2eoED71JHOTXi6RxdP1z8IDvELZ9mT95GQ+enlwqt
 AS6Ju1sV40wviHMv5prJWQjJkrrtYH3S907lIjwBpQLNGbh2+5crCd/6CwumkGgv
 1cCZ1dVmXpCe++9mU9AXmSkjsjGPStNcmHMOpc1Pwn9jUV3LQOOSDp8+RYdt1WHU
 Iw9cyM8NOpz5Mv/B1/ZPQ1gPb9lr1gE09XyUekxtAI/nl4nNHGWO8QDuX7Odfrv9
 8nfo14lk/p6XCTA8dsWJCgI5B1fgnqD4frHKWO9Uctppc/KBW41c8JpQUjBNlG/T
 MhtlGwYMVgSQxpQ6wK018JUAFoWkn1Sr0zMKRayqCnMjMLHsaMwE6kq+LgmRBqbB
 ersKV/9ZLYqCU1d6PhEVG6xUs6GsWdLcyhALlmHsddPSdpFXdf8=
 =KNAo
 -----END PGP SIGNATURE-----

Merge tag 'media/v5.8-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media

Pull media updates from Mauro Carvalho Chehab:

 - Media documentation is now split into admin-guide, driver-api and
   userspace-api books (a longstanding request from Jon);

 - The media Kconfig was reorganized, in order to make easier to select
   drivers and their dependencies;

 - The testing drivers now has a separate directory;

 - added a new driver for Rockchip Video Decoder IP;

 - The atomisp staging driver was resurrected. It is meant to work with
   4 generations of cameras on Atom-based laptops, tablets and cell
   phones. So, it seems worth investing time to cleanup this driver and
   making it in good shape.

 - Added some V4L2 core ancillary routines to help with h264 codecs;

 - Added an ov2740 image sensor driver;

 - The si2157 gained support for Analog TV, which, in turn, added
   support for some cx231xx and cx23885 boards to also support analog
   standards;

 - Added some V4L2 controls (V4L2_CID_CAMERA_ORIENTATION and
   V4L2_CID_CAMERA_SENSOR_ROTATION) to help identifying where the camera
   is located at the device;

 - VIDIOC_ENUM_FMT was extended to support MC-centric devices;

 - Lots of drivers improvements and cleanups.

* tag 'media/v5.8-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (503 commits)
  media: Documentation: media: Refer to mbus format documentation from CSI-2 docs
  media: s5k5baf: Replace zero-length array with flexible-array
  media: i2c: imx219: Drop <linux/clk-provider.h> and <linux/clkdev.h>
  media: i2c: Add ov2740 image sensor driver
  media: ov8856: Implement sensor module revision identification
  media: ov8856: Add devicetree support
  media: dt-bindings: ov8856: Document YAML bindings
  media: dvb-usb: Add Cinergy S2 PCIe Dual Port support
  media: dvbdev: Fix tuner->demod media controller link
  media: dt-bindings: phy: phy-rockchip-dphy-rx0: move rockchip dphy rx0 bindings out of staging
  media: staging: dt-bindings: phy-rockchip-dphy-rx0: remove non-used reg property
  media: atomisp: unify the version for isp2401 a0 and b0 versions
  media: atomisp: update TODO with the current data
  media: atomisp: adjust some code at sh_css that could be broken
  media: atomisp: don't produce errs for ignored IRQs
  media: atomisp: print IRQ when debugging
  media: atomisp: isp_mmu: don't use kmem_cache
  media: atomisp: add a notice about possible leak resources
  media: atomisp: disable the dynamic and reserved pools
  media: atomisp: turn on camera before setting it
  ...
This commit is contained in:
Linus Torvalds 2020-06-03 20:59:38 -07:00
commit a98f670e41
1698 changed files with 161922 additions and 7301 deletions

View File

@ -37,4 +37,4 @@ when changes are made.
The following CEC error injection implementations exist:
- Documentation/media/uapi/cec/cec-pin-error-inj.rst
- Documentation/userspace-api/media/cec/cec-pin-error-inj.rst

View File

@ -55,15 +55,15 @@ I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
loop_cmd = $(echo-cmd) $(cmd_$(1)) || exit;
# $2 sphinx builder e.g. "html"
# $3 name of the build subfolder / e.g. "media", used as:
# $3 name of the build subfolder / e.g. "userspace-api/media", used as:
# * dest folder relative to $(BUILDDIR) and
# * cache folder relative to $(BUILDDIR)/.doctrees
# $4 dest subfolder e.g. "man" for man pages at media/man
# $4 dest subfolder e.g. "man" for man pages at userspace-api/media/man
# $5 reST source folder relative to $(srctree)/$(src),
# e.g. "media" for the linux-tv book-set at ./Documentation/media
# e.g. "userspace-api/media" for the linux-tv book-set at ./Documentation/userspace-api/media
quiet_cmd_sphinx = SPHINX $@ --> file://$(abspath $(BUILDDIR)/$3/$4)
cmd_sphinx = $(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=Documentation/media $2 && \
cmd_sphinx = $(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=Documentation/userspace-api/media $2 && \
PYTHONDONTWRITEBYTECODE=1 \
BUILDDIR=$(abspath $(BUILDDIR)) SPHINX_CONF=$(abspath $(srctree)/$(src)/$5/$(SPHINX_CONF)) \
$(PYTHON) $(srctree)/scripts/jobserver-exec \
@ -124,7 +124,7 @@ refcheckdocs:
cleandocs:
$(Q)rm -rf $(BUILDDIR)
$(Q)$(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=Documentation/media clean
$(Q)$(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=Documentation/userspace-api/media clean
dochelp:
@echo ' Linux kernel internal documentation in different formats from ReST:'

View File

@ -93,6 +93,7 @@ configure specific aspects of kernel behavior to your liking.
lockup-watchdogs
LSM/index
md
media/index
mm/index
module-signing
mono

View File

@ -458,7 +458,7 @@
bttv.card= [HW,V4L] bttv (bt848 + bt878 based grabber cards)
bttv.radio= Most important insmod options are available as
kernel args too.
bttv.pll= See Documentation/media/v4l-drivers/bttv.rst
bttv.pll= See Documentation/admin-guide/media/bttv.rst
bttv.tuner=
bulk_remove=off [PPC] This parameter disables the use of the pSeries
@ -2746,7 +2746,7 @@
See Documentation/admin-guide/pm/sleep-states.rst.
meye.*= [HW] Set MotionEye Camera parameters
See Documentation/media/v4l-drivers/meye.rst.
See Documentation/admin-guide/media/meye.rst.
mfgpt_irq= [IA-32] Specify the IRQ to use for the
Multi-Function General Purpose Timers on AMD Geode

View File

@ -0,0 +1,94 @@
.. SPDX-License-Identifier: GPL-2.0
======================================
Avermedia DVB-T on BT878 Release Notes
======================================
February 14th 2006
.. note::
Several other Avermedia devices are supported. For a more
broader and updated content about that, please check:
https://linuxtv.org/wiki/index.php/AVerMedia
The Avermedia DVB-T
~~~~~~~~~~~~~~~~~~~
The Avermedia DVB-T is a budget PCI DVB card. It has 3 inputs:
* RF Tuner Input
* Composite Video Input (RCA Jack)
* SVIDEO Input (Mini-DIN)
The RF Tuner Input is the input to the tuner module of the
card. The Tuner is otherwise known as the "Frontend" . The
Frontend of the Avermedia DVB-T is a Microtune 7202D. A timely
post to the linux-dvb mailing list ascertained that the
Microtune 7202D is supported by the sp887x driver which is
found in the dvb-hw CVS module.
The DVB-T card is based around the BT878 chip which is a very
common multimedia bridge and often found on Analogue TV cards.
There is no on-board MPEG2 decoder, which means that all MPEG2
decoding must be done in software, or if you have one, on an
MPEG2 hardware decoding card or chipset.
Getting the card going
~~~~~~~~~~~~~~~~~~~~~~
At this stage, it has not been able to ascertain the
functionality of the remaining device nodes in respect of the
Avermedia DVBT. However, full functionality in respect of
tuning, receiving and supplying the MPEG2 data stream is
possible with the currently available versions of the driver.
It may be possible that additional functionality is available
from the card (i.e. viewing the additional analogue inputs
that the card presents), but this has not been tested yet. If
I get around to this, I'll update the document with whatever I
find.
To power up the card, load the following modules in the
following order:
* modprobe bttv (normally loaded automatically)
* modprobe dvb-bt8xx (or place dvb-bt8xx in /etc/modules)
Insertion of these modules into the running kernel will
activate the appropriate DVB device nodes. It is then possible
to start accessing the card with utilities such as scan, tzap,
dvbstream etc.
The frontend module sp887x.o, requires an external firmware.
Please use the command "get_dvb_firmware sp887x" to download
it. Then copy it to /usr/lib/hotplug/firmware or /lib/firmware/
(depending on configuration of firmware hotplug).
Known Limitations
~~~~~~~~~~~~~~~~~
At present I can say with confidence that the frontend tunes
via /dev/dvb/adapter{x}/frontend0 and supplies an MPEG2 stream
via /dev/dvb/adapter{x}/dvr0. I have not tested the
functionality of any other part of the card yet. I will do so
over time and update this document.
There are some limitations in the i2c layer due to a returned
error message inconsistency. Although this generates errors in
dmesg and the system logs, it does not appear to affect the
ability of the frontend to function correctly.
Further Update
~~~~~~~~~~~~~~
dvbstream and VideoLAN Client on windows works a treat with
DVB, in fact this is currently serving as my main way of
viewing DVB-T at the moment. Additionally, VLC is happily
decoding HDTV signals, although the PC is dropping the odd
frame here and there - I assume due to processing capability -
as all the decoding is being done under windows in software.
Many thanks to Nigel Pearson for the updates to this document
since the recent revision of the driver.

View File

@ -0,0 +1,156 @@
.. SPDX-License-Identifier: GPL-2.0
==================================
How to get the bt8xx cards working
==================================
Authors:
Richard Walker,
Jamie Honan,
Michael Hunold,
Manu Abraham,
Uwe Bugla,
Michael Krufky
General information
-------------------
This class of cards has a bt878a as the PCI interface, and require the bttv driver
for accessing the i2c bus and the gpio pins of the bt8xx chipset.
Please see :doc:`bttv-cardlist` for a complete list of Cards based on the
Conexant Bt8xx PCI bridge supported by the Linux Kernel.
In order to be able to compile the kernel, some config options should be
enabled::
./scripts/config -e PCI
./scripts/config -e INPUT
./scripts/config -m I2C
./scripts/config -m MEDIA_SUPPORT
./scripts/config -e MEDIA_PCI_SUPPORT
./scripts/config -e MEDIA_ANALOG_TV_SUPPORT
./scripts/config -e MEDIA_DIGITAL_TV_SUPPORT
./scripts/config -e MEDIA_RADIO_SUPPORT
./scripts/config -e RC_CORE
./scripts/config -m VIDEO_BT848
./scripts/config -m DVB_BT8XX
If you want to automatically support all possible variants of the Bt8xx
cards, you should also do::
./scripts/config -e MEDIA_SUBDRV_AUTOSELECT
.. note::
Please use the following options with care as deselection of drivers which
are in fact necessary may result in DVB devices that cannot be tuned due
to lack of driver support.
If your goal is to just support an specific board, you may, instead,
disable MEDIA_SUBDRV_AUTOSELECT and manually select the frontend drivers
required by your board. With that, you can save some RAM.
You can do that by calling make xconfig/qconfig/menuconfig and look at
the options on those menu options (only enabled if
``Autoselect ancillary drivers`` is disabled:
#) ``Device drivers`` => ``Multimedia support`` => ``Customize TV tuners``
#) ``Device drivers`` => ``Multimedia support`` => ``Customize DVB frontends``
Then, on each of the above menu, please select your card-specific
frontend and tuner modules.
Loading Modules
---------------
Regular case: If the bttv driver detects a bt8xx-based DVB card, all
frontend and backend modules will be loaded automatically.
Exceptions are:
- Old TV cards without EEPROMs, sharing a common PCI subsystem ID;
- Old TwinHan DST cards or clones with or without CA slot and not
containing an Eeprom.
In the following cases overriding the PCI type detection for bttv and
for dvb-bt8xx drivers by passing modprobe parameters may be necessary.
Running TwinHan and Clones
~~~~~~~~~~~~~~~~~~~~~~~~~~
As shown at :doc:`bttv-cardlist`, TwinHan and
clones use ``card=113`` modprobe parameter. So, in order to properly
detect it for devices without EEPROM, you should use::
$ modprobe bttv card=113
$ modprobe dst
Useful parameters for verbosity level and debugging the dst module::
verbose=0: messages are disabled
1: only error messages are displayed
2: notifications are displayed
3: other useful messages are displayed
4: debug setting
dst_addons=0: card is a free to air (FTA) card only
0x20: card has a conditional access slot for scrambled channels
dst_algo=0: (default) Software tuning algorithm
1: Hardware tuning algorithm
The autodetected values are determined by the cards' "response string".
In your logs see f. ex.: dst_get_device_id: Recognize [DSTMCI].
For bug reports please send in a complete log with verbose=4 activated.
Please also see :doc:`ci`.
Running multiple cards
~~~~~~~~~~~~~~~~~~~~~~
See :doc:`bttv-cardlist` for a complete list of
Card ID. Some examples:
=========================== ===
Brand name ID
=========================== ===
Pinnacle PCTV Sat 94
Nebula Electronics Digi TV 104
pcHDTV HD-2000 TV 112
Twinhan DST and clones 113
Avermedia AverTV DVB-T 77: 123
Avermedia AverTV DVB-T 761 124
DViCO FusionHDTV DVB-T Lite 128
DViCO FusionHDTV 5 Lite 135
=========================== ===
.. note::
When you have multiple cards, the order of the card ID should
match the order where they're detected by the system. Please notice
that removing/inserting other PCI cards may change the detection
order.
Example::
$ modprobe bttv card=113 card=135
In case of further problems please subscribe and send questions to
the mailing list: linux-media@vger.kernel.org.
Probing the cards with broken PCI subsystem ID
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
There are some TwinHan cards whose EEPROM has become corrupted for some
reason. The cards do not have a correct PCI subsystem ID.
Still, it is possible to force probing the cards with::
$ echo 109e 0878 $subvendor $subdevice > \
/sys/bus/pci/drivers/bt878/new_id
The two numbers there are::
109e: PCI_VENDOR_ID_BROOKTREE
0878: PCI_DEVICE_ID_BROOKTREE_878

View File

@ -12,7 +12,7 @@ BTTV cards list
* - Card number
- Card name
- PCI IDs
- PCI subsystem IDs
* - 0
- *** UNKNOWN/GENERIC ***

View File

@ -1,48 +1,64 @@
.. SPDX-License-Identifier: GPL-2.0
===============
The bttv driver
===============
Release notes for bttv
----------------------
You'll need at least these config options for bttv:
You'll need at least these config options for bttv::
.. code-block:: none
./scripts/config -e PCI
./scripts/config -m I2C
./scripts/config -m INPUT
./scripts/config -m MEDIA_SUPPORT
./scripts/config -e MEDIA_PCI_SUPPORT
./scripts/config -e MEDIA_ANALOG_TV_SUPPORT
./scripts/config -e MEDIA_DIGITAL_TV_SUPPORT
./scripts/config -e MEDIA_RADIO_SUPPORT
./scripts/config -e RC_CORE
./scripts/config -m VIDEO_BT848
CONFIG_I2C=m
CONFIG_I2C_ALGOBIT=m
CONFIG_VIDEO_DEV=m
If your board has digital TV, you'll also need::
The latest bttv version is available from http://bytesex.org/bttv/
./scripts/config -m DVB_BT8XX
In this case, please see :doc:`bt8xx` for additional notes.
Make bttv work with your card
-----------------------------
Just try "modprobe bttv" and see if that works.
If you have bttv compiled and installed, just booting the Kernel
should be enough for it to try probing it. However, depending
on the model, the Kernel may require additional information about
the hardware, as the device may not be able to provide such info
directly to the Kernel.
If it doesn't bttv likely could not autodetect your card and needs some
insmod options. The most important insmod option for bttv is "card=n"
to select the correct card type. If you get video but no sound you've
very likely specified the wrong (or no) card type. A list of supported
cards is in CARDLIST.bttv
cards is in :doc:`bttv-cardlist`.
If bttv takes very long to load (happens sometimes with the cheap
cards which have no tuner), try adding this to your modules.conf:
.. code-block:: none
cards which have no tuner), try adding this to your modules configuration
file (usually, it is either ``/etc/modules.conf`` or some file at
``/etc/modules-load.d/``, but the actual place depends on your
distribution)::
options i2c-algo-bit bit_test=1
For the WinTV/PVR you need one firmware file from the driver CD:
hcwamc.rbf. The file is in the pvr45xxx.exe archive (self-extracting
zip file, unzip can unpack it). Put it into the /etc/pvr directory or
use the firm_altera=<path> insmod option to point the driver to the
location of the file.
Some cards may require an extra firmware file to work. For example,
for the WinTV/PVR you need one firmware file from its driver CD,
called: ``hcwamc.rbf``. It is inside a self-extracting zip file
called ``pvr45xxx.exe``. Just placing it at the ``/etc/firmware``
directory should be enough for it to be autoload during the driver's
probing mode (e. g. when the Kernel boots or when the driver is
manually loaded via ``modprobe`` command).
If your card isn't listed in CARDLIST.bttv or if you have trouble making
audio work, you should read the Sound-FAQ.
If your card isn't listed in :doc:`bttv-cardlist` or if you have
trouble making audio work, please read :ref:`still_doesnt_work`.
Autodetecting cards
@ -61,16 +77,19 @@ the Subsystem ID in the second line, looks like this:
only bt878-based cards can have a subsystem ID (which does not mean
that every card really has one). bt848 cards can't have a Subsystem
ID and therefore can't be autodetected. There is a list with the ID's
in bttv-cards.c (in case you are intrested or want to mail patches
with updates).
at :doc:`bttv-cardlist` (in case you are intrested or want to mail
patches with updates).
.. _still_doesnt_work:
Still doesn't work?
-------------------
I do NOT have a lab with 30+ different grabber boards and a
PAL/NTSC/SECAM test signal generator at home, so I often can't
reproduce your problems. This makes debugging very difficult for me.
If you have some knowledge and spare time, please try to fix this
yourself (patches very welcome of course...) You know: The linux
slogan is "Do it yourself".
@ -92,102 +111,103 @@ at least the country you are living in).
Modprobe options
----------------
Note: "modinfo <module>" prints various information about a kernel
module, among them a complete and up-to-date list of insmod options.
This list tends to be outdated because it is updated manually ...
.. note::
==========================================================================
bttv.o
The following argument list can be outdated, as we might add more
options if ever needed. In case of doubt, please check with
``modinfo <module>``.
.. code-block:: none
This command prints various information about a kernel
module, among them a complete and up-to-date list of insmod options.
the bt848/878 (grabber chip) driver
insmod args:
card=n card type, see CARDLIST for a list.
tuner=n tuner type, see CARDLIST for a list.
radio=0/1 card supports radio
pll=0/1/2 pll settings
0: don't use PLL
1: 28 MHz crystal installed
2: 35 MHz crystal installed
triton1=0/1 for Triton1 (+others) compatibility
vsfx=0/1 yet another chipset bug compatibility bit
see README.quirks for details on these two.
bttv
The bt848/878 (grabber chip) driver
bigendian=n Set the endianness of the gfx framebuffer.
Default is native endian.
fieldnr=0/1 Count fields. Some TV descrambling software
needs this, for others it only generates
50 useless IRQs/sec. default is 0 (off).
autoload=0/1 autoload helper modules (tuner, audio).
default is 1 (on).
bttv_verbose=0/1/2 verbose level (at insmod time, while
looking at the hardware). default is 1.
bttv_debug=0/1 debug messages (for capture).
default is 0 (off).
irq_debug=0/1 irq handler debug messages.
default is 0 (off).
gbuffers=2-32 number of capture buffers for mmap'ed capture.
default is 4.
gbufsize= size of capture buffers. default and
maximum value is 0x208000 (~2MB)
no_overlay=0 Enable overlay on broken hardware. There
are some chipsets (SIS for example) which
are known to have problems with the PCI DMA
push used by bttv. bttv will disable overlay
by default on this hardware to avoid crashes.
With this insmod option you can override this.
no_overlay=1 Disable overlay. It should be used by broken
hardware that doesn't support PCI2PCI direct
transfers.
automute=0/1 Automatically mutes the sound if there is
no TV signal, on by default. You might try
to disable this if you have bad input signal
quality which leading to unwanted sound
dropouts.
chroma_agc=0/1 AGC of chroma signal, off by default.
adc_crush=0/1 Luminance ADC crush, on by default.
i2c_udelay= Allow reduce I2C speed. Default is 5 usecs
(meaning 66,67 Kbps). The default is the
maximum supported speed by kernel bitbang
algorithm. You may use lower numbers, if I2C
messages are lost (16 is known to work on
all supported cards).
insmod args::
bttv_gpio=0/1
gpiomask=
audioall=
audiomux=
See Sound-FAQ for a detailed description.
card=n card type, see CARDLIST for a list.
tuner=n tuner type, see CARDLIST for a list.
radio=0/1 card supports radio
pll=0/1/2 pll settings
0: don't use PLL
1: 28 MHz crystal installed
2: 35 MHz crystal installed
triton1=0/1 for Triton1 (+others) compatibility
vsfx=0/1 yet another chipset bug compatibility bit
see README.quirks for details on these two.
bigendian=n Set the endianness of the gfx framebuffer.
Default is native endian.
fieldnr=0/1 Count fields. Some TV descrambling software
needs this, for others it only generates
50 useless IRQs/sec. default is 0 (off).
autoload=0/1 autoload helper modules (tuner, audio).
default is 1 (on).
bttv_verbose=0/1/2 verbose level (at insmod time, while
looking at the hardware). default is 1.
bttv_debug=0/1 debug messages (for capture).
default is 0 (off).
irq_debug=0/1 irq handler debug messages.
default is 0 (off).
gbuffers=2-32 number of capture buffers for mmap'ed capture.
default is 4.
gbufsize= size of capture buffers. default and
maximum value is 0x208000 (~2MB)
no_overlay=0 Enable overlay on broken hardware. There
are some chipsets (SIS for example) which
are known to have problems with the PCI DMA
push used by bttv. bttv will disable overlay
by default on this hardware to avoid crashes.
With this insmod option you can override this.
no_overlay=1 Disable overlay. It should be used by broken
hardware that doesn't support PCI2PCI direct
transfers.
automute=0/1 Automatically mutes the sound if there is
no TV signal, on by default. You might try
to disable this if you have bad input signal
quality which leading to unwanted sound
dropouts.
chroma_agc=0/1 AGC of chroma signal, off by default.
adc_crush=0/1 Luminance ADC crush, on by default.
i2c_udelay= Allow reduce I2C speed. Default is 5 usecs
(meaning 66,67 Kbps). The default is the
maximum supported speed by kernel bitbang
algorithm. You may use lower numbers, if I2C
messages are lost (16 is known to work on
all supported cards).
bttv_gpio=0/1
gpiomask=
audioall=
audiomux=
See Sound-FAQ for a detailed description.
remap, card, radio and pll accept up to four comma-separated arguments
(for multiple boards).
tuner.o
.. code-block:: none
tuner
The tuner driver. You need this unless you want to use only
with a camera or external tuner ...
with a camera or the board doesn't provide analog TV tuning.
insmod args::
insmod args:
debug=1 print some debug info to the syslog
type=n type of the tuner chip. n as follows:
see CARDLIST for a complete list.
pal=[bdgil] select PAL variant (used for some tuners
only, important for the audio carrier).
tvaudio.o
tvaudio
Provide a single driver for all simple i2c audio control
chips (tda/tea*).
.. code-block:: none
insmod args::
new, experimental module which is supported to provide a single
driver for all simple i2c audio control chips (tda/tea*).
insmod args:
tda8425 = 1 enable/disable the support for the
tda9840 = 1 various chips.
tda9850 = 1 The tea6300 can't be autodetected and is
@ -200,45 +220,12 @@ tvaudio.o
the wrong one.
debug = 1 print debug messages
insmod args for tda9874a:
tda9874a_SIF=1/2 select sound IF input pin (1 or 2)
(default is pin 1)
tda9874a_AMSEL=0/1 auto-mute select for NICAM (default=0)
Please read note 3 below!
tda9874a_STD=n select TV sound standard (0..8):
0 - A2, B/G
1 - A2, M (Korea)
2 - A2, D/K (1)
3 - A2, D/K (2)
4 - A2, D/K (3)
5 - NICAM, I
6 - NICAM, B/G
7 - NICAM, D/K (default)
8 - NICAM, L
Note 1: tda9874a supports both tda9874h (old) and tda9874a (new) chips.
Note 2: tda9874h/a and tda9875 (which is supported separately by
tda9875.o) use the same i2c address so both modules should not be
used at the same time.
Note 3: Using tda9874a_AMSEL option depends on your TV card design!
AMSEL=0: auto-mute will switch between NICAM sound
and the sound on 1st carrier (i.e. FM mono or AM).
AMSEL=1: auto-mute will switch between NICAM sound
and the analog mono input (MONOIN pin).
If tda9874a decoder on your card has MONOIN pin not connected, then
use only tda9874_AMSEL=0 or don't specify this option at all.
For example:
card=65 (FlyVideo 2000S) - set AMSEL=1 or AMSEL=0
card=72 (Prolink PV-BT878P rev.9B) - set AMSEL=0 only
msp3400.o
.. code-block:: none
msp3400
The driver for the msp34xx sound processor chips. If you have a
stereo card, you probably want to insmod this one.
insmod args:
insmod args::
debug=1/2 print some debug info to the syslog,
2 is more verbose.
simple=1 Use the "short programming" method. Newer
@ -252,40 +239,6 @@ msp3400.o
should improve things for french people, the
carrier autoscan seems to work with FM only...
tea6300.o - OBSOLETE (use tvaudio instead)
.. code-block:: none
The driver for the tea6300 fader chip. If you have a stereo
card and the msp3400.o doesn't work, you might want to try this
one. This chip is seen on most STB TV/FM cards (usually from
Gateway OEM sold surplus on auction sites).
insmod args:
debug=1 print some debug info to the syslog.
tda8425.o - OBSOLETE (use tvaudio instead)
.. code-block:: none
The driver for the tda8425 fader chip. This driver used to be
part of bttv.c, so if your sound used to work but does not
anymore, try loading this module.
insmod args:
debug=1 print some debug info to the syslog.
tda985x.o - OBSOLETE (use tvaudio instead)
.. code-block:: none
The driver for the tda9850/55 audio chips.
insmod args:
debug=1 print some debug info to the syslog.
chip=9850/9855 set the chip type.
If the box freezes hard with bttv
---------------------------------
@ -306,15 +259,15 @@ bug. It is very helpful if you can tell where exactly it broke
With a hard freeze you probably doesn't find anything in the logfiles.
The only way to capture any kernel messages is to hook up a serial
console and let some terminal application log the messages. /me uses
screen. See Documentation/admin-guide/serial-console.rst for details on setting
screen. See :doc:`/admin-guide/serial-console` for details on setting
up a serial console.
Read Documentation/admin-guide/bug-hunting.rst to learn how to get any useful
Read :doc:`/admin-guide/bug-hunting` to learn how to get any useful
information out of a register+stack dump printed by the kernel on
protection faults (so-called "kernel oops").
If you run into some kind of deadlock, you can try to dump a call trace
for each process using sysrq-t (see Documentation/admin-guide/sysrq.rst).
for each process using sysrq-t (see :doc:`/admin-guide/sysrq`).
This way it is possible to figure where *exactly* some process in "D"
state is stuck.
@ -438,134 +391,12 @@ parking, thus lowering arbitration performance. The Bt879 drivers must
query for these non-compliant devices, and set the EN_VSFX bit only if
required.
bttv and sound mini howto
-------------------------
There are a lot of different bt848/849/878/879 based boards available.
Making video work often is not a big deal, because this is handled
completely by the bt8xx chip, which is common on all boards. But
sound is handled in slightly different ways on each board.
To handle the grabber boards correctly, there is a array tvcards[] in
bttv-cards.c, which holds the information required for each board.
Sound will work only, if the correct entry is used (for video it often
makes no difference). The bttv driver prints a line to the kernel
log, telling which card type is used. Like this one:
.. code-block:: none
bttv0: model: BT848(Hauppauge old) [autodetected]
You should verify this is correct. If it isn't, you have to pass the
correct board type as insmod argument, "insmod bttv card=2" for
example. The file CARDLIST has a list of valid arguments for card.
If your card isn't listed there, you might check the source code for
new entries which are not listed yet. If there isn't one for your
card, you can check if one of the existing entries does work for you
(just trial and error...).
Some boards have an extra processor for sound to do stereo decoding
and other nice features. The msp34xx chips are used by Hauppauge for
example. If your board has one, you might have to load a helper
module like msp3400.o to make sound work. If there isn't one for the
chip used on your board: Bad luck. Start writing a new one. Well,
you might want to check the video4linux mailing list archive first...
Of course you need a correctly installed soundcard unless you have the
speakers connected directly to the grabber board. Hint: check the
mixer settings too. ALSA for example has everything muted by default.
How sound works in detail
~~~~~~~~~~~~~~~~~~~~~~~~~
Still doesn't work? Looks like some driver hacking is required.
Below is a do-it-yourself description for you.
The bt8xx chips have 32 general purpose pins, and registers to control
these pins. One register is the output enable register
(BT848_GPIO_OUT_EN), it says which pins are actively driven by the
bt848 chip. Another one is the data register (BT848_GPIO_DATA), where
you can get/set the status if these pins. They can be used for input
and output.
Most grabber board vendors use these pins to control an external chip
which does the sound routing. But every board is a little different.
These pins are also used by some companies to drive remote control
receiver chips. Some boards use the i2c bus instead of the gpio pins
to connect the mux chip.
As mentioned above, there is a array which holds the required
information for each known board. You basically have to create a new
line for your board. The important fields are these two:
.. code-block:: c
struct tvcard
{
[ ... ]
u32 gpiomask;
u32 audiomux[6]; /* Tuner, Radio, external, internal, mute, stereo */
};
gpiomask specifies which pins are used to control the audio mux chip.
The corresponding bits in the output enable register
(BT848_GPIO_OUT_EN) will be set as these pins must be driven by the
bt848 chip.
The audiomux\[\] array holds the data values for the different inputs
(i.e. which pins must be high/low for tuner/mute/...). This will be
written to the data register (BT848_GPIO_DATA) to switch the audio
mux.
What you have to do is figure out the correct values for gpiomask and
the audiomux array. If you have Windows and the drivers four your
card installed, you might to check out if you can read these registers
values used by the windows driver. A tool to do this is available
from ftp://telepresence.dmem.strath.ac.uk/pub/bt848/winutil, but it
doesn't work with bt878 boards according to some reports I received.
Another one with bt878 support is available from
http://btwincap.sourceforge.net/Files/btspy2.00.zip
You might also dig around in the \*.ini files of the Windows applications.
You can have a look at the board to see which of the gpio pins are
connected at all and then start trial-and-error ...
Starting with release 0.7.41 bttv has a number of insmod options to
make the gpio debugging easier:
.. code-block:: none
bttv_gpio=0/1 enable/disable gpio debug messages
gpiomask=n set the gpiomask value
audiomux=i,j,... set the values of the audiomux array
audioall=a set the values of the audiomux array (one
value for all array elements, useful to check
out which effect the particular value has).
The messages printed with bttv_gpio=1 look like this:
.. code-block:: none
bttv0: gpio: en=00000027, out=00000024 in=00ffffd8 [audio: off]
en = output _en_able register (BT848_GPIO_OUT_EN)
out = _out_put bits of the data register (BT848_GPIO_DATA),
i.e. BT848_GPIO_DATA & BT848_GPIO_OUT_EN
in = _in_put bits of the data register,
i.e. BT848_GPIO_DATA & ~BT848_GPIO_OUT_EN
Other elements of the tvcards array
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If you are trying to make a new card work you might find it useful to
know what the other elements in the tvcards array are good for:
.. code-block:: none
know what the other elements in the tvcards array are good for::
video_inputs - # of video inputs the card has
audio_inputs - historical cruft, not used any more.
@ -798,7 +629,9 @@ Typhoon TV card series:
~~~~~~~~~~~~~~~~~~~~~~~
These can be CPH, Flyvideo, Pixelview or KNC1 series.
Typhoon is the brand of Anubis.
Model 50680 got re-used, some model no. had different contents over time.
Models:
@ -950,12 +783,13 @@ is wrong. If it doesn't work, send me email.
on their server are the full data-sheets, but don't ask how I found it.
To use the driver I use the following options, the tuner and pll settings might
be different in your country
be different in your country. You can force it via modprobe parameters.
For example::
insmod videodev
insmod i2c scan=1 i2c_debug=0 verbose=0
insmod tuner type=1 debug=0
insmod bttv pll=1 radio=1 card=17
modprobe bttv tuner=1 pll=28 radio=1 card=17
Sets tuner type 1 (Philips PAL_I), PLL with a 28 MHz crystal, enables
FM radio and selects bttv card ID 17 (Leadtek WinView 601).
KNC One
@ -974,15 +808,16 @@ KNC One
Provideo
~~~~~~~~
- PV951 or PV-951 (also are sold as:
- PV951 or PV-951, now named PV-951T
(also are sold as:
Boeder TV-FM Video Capture Card,
Titanmedia Supervision TV-2400,
Provideo PV951 TF,
3DeMon PV951,
MediaForte TV-Vision PV951,
Yoko PV951,
Vivanco Tuner Card PCI Art.-Nr.: 68404,
) now named PV-951T
Vivanco Tuner Card PCI Art.-Nr.: 68404
)
- Surveillance Series:

View File

@ -0,0 +1,357 @@
.. SPDX-License-Identifier: GPL-2.0
===================================
Building support for a media device
===================================
The first step is to download the Kernel's source code, either via a
distribution-specific source file or via the Kernel's main git tree\ [1]_.
Please notice, however, that, if:
- you're a braveheart and want to experiment with new stuff;
- if you want to report a bug;
- if you're developing new patches
you should use the main media development tree ``master`` branch:
https://git.linuxtv.org/media_tree.git/
In this case, you may find some useful information at the
`LinuxTv wiki pages <https://linuxtv.org/wiki>`_:
https://linuxtv.org/wiki/index.php/How_to_Obtain,_Build_and_Install_V4L-DVB_Device_Drivers
.. [1] The upstream Linux Kernel development tree is located at
https://git.kernel.org/pub/scm/li nux/kernel/git/torvalds/linux.git/
Configuring the Linux Kernel
============================
You can access a menu of Kernel building options with::
$ make menuconfig
Then, select all desired options and exit it, saving the configuration.
The changed configuration will be at the ``.config`` file. It would
look like::
...
# CONFIG_RC_CORE is not set
# CONFIG_CEC_CORE is not set
CONFIG_MEDIA_SUPPORT=m
CONFIG_MEDIA_SUPPORT_FILTER=y
...
The media subsystem is controlled by those menu configuration options::
Device Drivers --->
<M> Remote Controller support --->
[ ] HDMI CEC RC integration
[ ] Enable CEC error injection support
[*] HDMI CEC drivers --->
<*> Multimedia support --->
The ``Remote Controller support`` option enables the core support for
remote controllers\ [2]_.
The ``HDMI CEC RC integration`` option enables integration of HDMI CEC
with Linux, allowing to receive data via HDMI CEC as if it were produced
by a remote controller directly connected to the machine.
The ``HDMI CEC drivers`` option allow selecting platform and USB drivers
that receives and/or transmits CEC codes via HDMI interfaces\ [3]_.
The last option (``Multimedia support``) enables support for cameras,
audio/video grabbers and TV.
The media subsystem support can either be built together with the main
Kernel or as a module. For most use cases, it is preferred to have it
built as modules.
.. note::
Instead of using a menu, the Kernel provides a script with allows
enabling configuration options directly. To enable media support
and remote controller support using Kernel modules, you could use::
$ scripts/config -m RC_CORE
$ scripts/config -m MEDIA_SUPPORT
.. [2] ``Remote Controller support`` should also be enabled if you
want to use some TV card drivers that may depend on the remote
controller core support.
.. [3] Please notice that the DRM subsystem also have drivers for GPUs
that use the media HDMI CEC support.
Those GPU-specific drivers are selected via the ``Graphics support``
menu, under ``Device Drivers``.
When a GPU driver supports supports HDMI CEC, it will automatically
enable the CEC core support at the media subsystem.
Media dependencies
------------------
It should be noticed that enabling the above from a clean config is
usually not enough. The media subsystem depends on several other Linux
core support in order to work.
For example, most media devices use a serial communication bus in
order to talk with some peripherals. Such bus is called I²C
(Inter-Integrated Circuit). In order to be able to build support
for such hardware, the I²C bus support should be enabled, either via
menu or with::
./scripts/config -m I2C
Another example: the remote controller core requires support for
input devices, with can be enabled with::
./scripts/config -m INPUT
Other core functionality may also be needed (like PCI and/or USB support),
depending on the specific driver(s) you would like to enable.
Enabling Remote Controller Support
----------------------------------
The remote controller menu allows selecting drivers for specific devices.
It's menu looks like this::
--- Remote Controller support
<M> Compile Remote Controller keymap modules
[*] LIRC user interface
[*] Support for eBPF programs attached to lirc devices
[*] Remote controller decoders --->
[*] Remote Controller devices --->
The ``Compile Remote Controller keymap modules`` option creates key maps for
several popular remote controllers.
The ``LIRC user interface`` option adds enhanced functionality when using the
``lirc`` program, by enabling an API that allows userspace to receive raw data
from remote controllers.
The ``Support for eBPF programs attached to lirc devices`` option allows
the usage of special programs (called eBPF) that would allow aplications
to add extra remote controller decoding functionality to the Linux Kernel.
The ``Remote controller decoders`` option allows selecting the
protocols that will be recognized by the Linux Kernel. Except if you
want to disable some specific decoder, it is suggested to keep all
sub-options enabled.
The ``Remote Controller devices`` allows you to select the drivers
that would be needed to support your device.
The same configuration can also be set via the ``script/config``
script. So, for instance, in order to support the ITE remote controller
driver (found on Intel NUCs and on some ASUS x86 desktops), you could do::
$ scripts/config -e INPUT
$ scripts/config -e ACPI
$ scripts/config -e MODULES
$ scripts/config -m RC_CORE
$ scripts/config -e RC_DEVICES
$ scripts/config -e RC_DECODERS
$ scripts/config -m IR_RC5_DECODER
$ scripts/config -m IR_ITE_CIR
Enabling HDMI CEC Support
-------------------------
The HDMI CEC support is set automatically when a driver requires it. So,
all you need to do is to enable support either for a graphics card
that needs it or by one of the existing HDMI drivers.
The HDMI-specific drivers are available at the ``HDMI CEC drivers``
menu\ [4]_::
--- HDMI CEC drivers
< > ChromeOS EC CEC driver
< > Amlogic Meson AO CEC driver
< > Amlogic Meson G12A AO CEC driver
< > Generic GPIO-based CEC driver
< > Samsung S5P CEC driver
< > STMicroelectronics STiH4xx HDMI CEC driver
< > STMicroelectronics STM32 HDMI CEC driver
< > Tegra HDMI CEC driver
< > SECO Boards HDMI CEC driver
[ ] SECO Boards IR RC5 support
< > Pulse Eight HDMI CEC
< > RainShadow Tech HDMI CEC
.. [4] The above contents is just an example. The actual options for
HDMI devices depends on the system's architecture and may vary
on new Kernels.
Enabling Media Support
----------------------
The Media menu has a lot more options than the remote controller menu.
Once selected, you should see the following options::
--- Media support
[ ] Filter media drivers
[*] Autoselect ancillary drivers
Media device types --->
Media core support --->
Video4Linux options --->
Media controller options --->
Digital TV options --->
HDMI CEC options --->
Media drivers --->
Media ancillary drivers --->
Except if you know exactly what you're doing, or if you want to build
a driver for a SoC platform, it is strongly recommended to keep the
``Autoselect ancillary drivers`` option turned on, as it will auto-select
the needed I²C ancillary drivers.
There are now two ways to select media device drivers, as described
below.
``Filter media drivers`` menu
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This menu is meant to easy setup for PC and Laptop hardware. It works
by letting the user to specify what kind of media drivers are desired,
with those options::
[ ] Cameras and video grabbers
[ ] Analog TV
[ ] Digital TV
[ ] AM/FM radio receivers/transmitters
[ ] Software defined radio
[ ] Platform-specific devices
[ ] Test drivers
So, if you want to add support to a camera or video grabber only,
select just the first option. Multiple options are allowed.
Once the options on this menu are selected, the building system will
auto-select the needed core drivers in order to support the selected
functionality.
.. note::
Most TV cards are hybrid: they support both Analog TV and Digital TV.
If you have an hybrid card, you may need to enable both ``Analog TV``
and ``Digital TV`` at the menu.
When using this option, the defaults for the the media support core
functionality are usually good enough to provide the basic functionality
for the driver. Yet, you could manually enable some desired extra (optional)
functionality using the settings under each of the following
``Media support`` sub-menus::
Media core support --->
Video4Linux options --->
Media controller options --->
Digital TV options --->
HDMI CEC options --->
Once you select the desired filters, the drivers that matches the filtering
criteria will be available at the ``Media support->Media drivers`` sub-menu.
``Media Core Support`` menu without filtering
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
If you disable the ``Filter media drivers`` menu, all drivers available
for your system whose dependencies are met should be shown at the
``Media drivers`` menu.
Please notice, however, that you should first ensure that the
``Media Core Support`` menu has all the core functionality your drivers
would need, as otherwise the corresponding device drivers won't be shown.
Example
-------
In order to enable modular support for one of the boards listed on
:doc:`this table <cx231xx-cardlist>`, with modular media core modules, the
``.config`` file should contain those lines::
CONFIG_MODULES=y
CONFIG_USB=y
CONFIG_I2C=y
CONFIG_INPUT=y
CONFIG_RC_CORE=m
CONFIG_MEDIA_SUPPORT=m
CONFIG_MEDIA_SUPPORT_FILTER=y
CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
CONFIG_MEDIA_USB_SUPPORT=y
CONFIG_VIDEO_CX231XX=y
CONFIG_VIDEO_CX231XX_DVB=y
Building and installing a new Kernel
====================================
Once the ``.config`` file has everything needed, all it takes to build
is to run the ``make`` command::
$ make
And then install the new Kernel and its modules::
$ sudo make modules_install
$ sudo make install
Building just the new media drivers and core
============================================
Running a new development Kernel from the development tree is usually risky,
because it may have experimental changes that may have bugs. So, there are
some ways to build just the new drivers, using alternative trees.
There is the `Linux Kernel backports project
<https://backports.wiki.kernel.org/index.php/Main_Page>`_, with contains
newer drivers meant to be compiled against stable Kernels.
The LinuxTV developers, with are responsible for maintaining the media
subsystem also maintains a backport tree, with just the media drivers
daily updated from the newest kernel. Such tree is available at:
https://git.linuxtv.org/media_build.git/
It should be noticed that, while it should be relatively safe to use the
``media_build`` tree for testing purposes, there are not warranties that
it would work (or even build) on a random Kernel. This tree is maintained
using a "best-efforts" principle, as time permits us to fix issues there.
If you notice anything wrong on it, feel free to submit patches at the
Linux media subsystem's mailing list: media@vger.kernel.org. Please
add ``[PATCH media-build]`` at the e-mail's subject if you submit a new
patch for the media-build.
Before using it, you should run::
$ ./build
.. note::
1) you may need to run it twice if the ``media-build`` tree gets
updated;
2) you may need to do a ``make distclean`` if you had built it
in the past for a different Kernel version than the one you're
currently using;
3) by default, it will use the same config options for media as
the ones defined on the Kernel you're running.
In order to select different drivers or different config options,
use::
$ make menuconfig
Then, you can build and install the new drivers::
$ make && sudo make install
This will override the previous media drivers that your Kernel were
using.

View File

@ -0,0 +1,29 @@
.. SPDX-License-Identifier: GPL-2.0
==========
Cards List
==========
The media subsystem provide support for lots of PCI and USB drivers, plus
platform-specific drivers. It also contains several ancillary I²C drivers.
The platform-specific drivers are usually present on embedded systems,
or are supported by the main board. Usually, setting them is done via
OpenFirmware or ACPI.
The PCI and USB drivers, however, are independent of the system's board,
and may be added/removed by the user.
You may also take a look at
https://linuxtv.org/wiki/index.php/Hardware_Device_Information
for more details about supported cards.
.. toctree::
:maxdepth: 2
usb-cardlist
pci-cardlist
platform-cardlist
radio-cardlist
i2c-cardlist
misc-cardlist

View File

@ -0,0 +1,10 @@
.. SPDX-License-Identifier: GPL-2.0
=================================
CEC driver-specific documentation
=================================
.. toctree::
:maxdepth: 2
pulse8-cec

View File

@ -0,0 +1,77 @@
.. SPDX-License-Identifier: GPL-2.0
Digital TV Conditional Access Interface
=======================================
.. note::
This documentation is outdated.
This document describes the usage of the high level CI API as
in accordance to the Linux DVB API. This is a not a documentation for the,
existing low level CI API.
.. note::
For the Twinhan/Twinhan clones, the dst_ca module handles the CI
hardware handling. This module is loaded automatically if a CI
(Common Interface, that holds the CAM (Conditional Access Module)
is detected.
ca_zap
~~~~~~
A userspace application, like ``ca_zap`` is required to handle encrypted
MPEG-TS streams.
The ``ca_zap`` userland application is in charge of sending the
descrambling related information to the Conditional Access Module (CAM).
This application requires the following to function properly as of now.
a) Tune to a valid channel, with szap.
eg: $ szap -c channels.conf -r "TMC" -x
b) a channels.conf containing a valid PMT PID
eg: TMC:11996:h:0:27500:278:512:650:321
here 278 is a valid PMT PID. the rest of the values are the
same ones that szap uses.
c) after running a szap, you have to run ca_zap, for the
descrambler to function,
eg: $ ca_zap channels.conf "TMC"
d) Hopefully enjoy your favourite subscribed channel as you do with
a FTA card.
.. note::
Currently ca_zap, and dst_test, both are meant for demonstration
purposes only, they can become full fledged applications if necessary.
Cards that fall in this category
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
At present the cards that fall in this category are the Twinhan and its
clones, these cards are available as VVMER, Tomato, Hercules, Orange and
so on.
CI modules that are supported
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The CI module support is largely dependent upon the firmware on the cards
Some cards do support almost all of the available CI modules. There is
nothing much that can be done in order to make additional CI modules
working with these cards.
Modules that have been tested by this driver at present are
(1) Irdeto 1 and 2 from SCM
(2) Viaccess from SCM
(3) Dragoncam

View File

@ -51,7 +51,7 @@ available at compile time.
Setup
~~~~~
Use 'modprobe cpia2' to load and 'modprobe -r cpia2' to unload. This
Use ``modprobe cpia2`` to load and ``modprobe -r cpia2`` to unload. This
may be done automatically by your distribution.
Driver options
@ -79,16 +79,12 @@ Setting the options
~~~~~~~~~~~~~~~~~~~
If you are using modules, edit /etc/modules.conf and add an options
line like this:
.. code-block:: none
line like this::
options cpia2 num_buffers=3 buffer_size=65535
If the driver is compiled into the kernel, at boot time specify them
like this:
.. code-block:: none
like this::
cpia2.num_buffers=3 cpia2.buffer_size=65535
@ -147,49 +143,3 @@ We are providing a modified gqcam application to view the output. In
order to avoid confusion, here it is called mview. There is also the qx5view
program which can also control the lights on the qx5 microscope. MJPEG Tools
(http://mjpeg.sourceforge.net) can also be used to record from the camera.
Notes to developers
~~~~~~~~~~~~~~~~~~~
- This is a driver version stripped of the 2.4 back compatibility
and old MJPEG ioctl API. See cpia2.sf.net for 2.4 support.
Programmer's overview of cpia2 driver
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Cpia2 is the second generation video coprocessor from VLSI Vision Ltd (now a
division of ST Microelectronics). There are two versions. The first is the
STV0672, which is capable of up to 30 frames per second (fps) in frame sizes
up to CIF, and 15 fps for VGA frames. The STV0676 is an improved version,
which can handle up to 30 fps VGA. Both coprocessors can be attached to two
CMOS sensors - the vvl6410 CIF sensor and the vvl6500 VGA sensor. These will
be referred to as the 410 and the 500 sensors, or the CIF and VGA sensors.
The two chipsets operate almost identically. The core is an 8051 processor,
running two different versions of firmware. The 672 runs the VP4 video
processor code, the 676 runs VP5. There are a few differences in register
mappings for the two chips. In these cases, the symbols defined in the
header files are marked with VP4 or VP5 as part of the symbol name.
The cameras appear externally as three sets of registers. Setting register
values is the only way to control the camera. Some settings are
interdependant, such as the sequence required to power up the camera. I will
try to make note of all of these cases.
The register sets are called blocks. Block 0 is the system block. This
section is always powered on when the camera is plugged in. It contains
registers that control housekeeping functions such as powering up the video
processor. The video processor is the VP block. These registers control
how the video from the sensor is processed. Examples are timing registers,
user mode (vga, qvga), scaling, cropping, framerates, and so on. The last
block is the video compressor (VC). The video stream sent from the camera is
compressed as Motion JPEG (JPEGA). The VC controls all of the compression
parameters. Looking at the file cpia2_registers.h, you can get a full view
of these registers and the possible values for most of them.
One or more registers can be set or read by sending a usb control message to
the camera. There are three modes for this. Block mode requests a number
of contiguous registers. Random mode reads or writes random registers with
a tuple structure containing address/value pairs. The repeat mode is only
used by VP4 to load a firmware patch. It contains a starting address and
a sequence of bytes to be written into a gpio port.

View File

@ -0,0 +1,17 @@
.. SPDX-License-Identifier: GPL-2.0
CX18 cards list
===============
Those cards are supported by cx18 driver:
- Hauppauge HVR-1600 (ESMT memory)
- Hauppauge HVR-1600 (Samsung memory)
- Compro VideoMate H900
- Yuan MPC718 MiniPCI DVB-T/Analog
- Conexant Raptor PAL/SECAM
- Toshiba Qosmio DVB-T/Analog
- Leadtek WinFast PVR2100
- Leadtek WinFast DVR3100
- GoTView PCI DVD3 Hybrid
- Hauppauge HVR-1600 (s5h1411/tda18271)

View File

@ -0,0 +1,99 @@
.. SPDX-License-Identifier: GPL-2.0
cx231xx cards list
==================
.. tabularcolumns:: |p{1.4cm}|p{10.0cm}|p{6.5cm}|
.. flat-table::
:header-rows: 1
:widths: 2 12 19
:stub-columns: 0
* - Card number
- Card name
- USB IDs
* - 0
- Unknown CX231xx video grabber
- 0572:5A3C
* - 1
- Conexant Hybrid TV - CARRAERA
- 0572:58A2
* - 2
- Conexant Hybrid TV - SHELBY
- 0572:58A1
* - 3
- Conexant Hybrid TV - RDE253S
- 0572:58A4
* - 4
- Conexant Hybrid TV - RDU253S
- 0572:58A5
* - 5
- Conexant VIDEO GRABBER
- 0572:58A6, 07ca:c039
* - 6
- Conexant Hybrid TV - rde 250
- 0572:589E
* - 7
- Conexant Hybrid TV - RDU 250
- 0572:58A0
* - 8
- Hauppauge EXETER
- 2040:b120, 2040:b140
* - 9
- Hauppauge USB Live 2
- 2040:c200
* - 10
- Pixelview PlayTV USB Hybrid
- 4000:4001
* - 11
- Pixelview Xcapture USB
- 1D19:6109, 4000:4001
* - 12
- Kworld UB430 USB Hybrid
- 1b80:e424
* - 13
- Iconbit Analog Stick U100 FM
- 1f4d:0237
* - 14
- Hauppauge WinTV USB2 FM (PAL)
- 2040:b110
* - 15
- Hauppauge WinTV USB2 FM (NTSC)
- 2040:b111
* - 16
- Elgato Video Capture V2
- 0fd9:0037
* - 17
- Geniatech OTG102
- 1f4d:0102
* - 18
- Kworld UB445 USB Hybrid
- 1b80:e421
* - 19
- Hauppauge WinTV 930C-HD (1113xx) / HVR-900H (111xxx) / PCTV QuatroStick 521e
- 2040:b130, 2040:b138, 2013:0259
* - 20
- Hauppauge WinTV 930C-HD (1114xx) / HVR-901H (1114xx) / PCTV QuatroStick 522e
- 2040:b131, 2040:b139, 2013:025e
* - 21
- Hauppauge WinTV-HVR-955Q (111401)
- 2040:b123, 2040:b124
* - 22
- Terratec Grabby
- 1f4d:0102
* - 23
- Evromedia USB Full Hybrid Full HD
- 1b80:d3b2
* - 24
- Astrometa T2hybrid
- 15f4:0135
* - 25
- The Imaging Source DFG/USB2pro
- 199e:8002
* - 26
- Hauppauge WinTV-HVR-935C
- 2040:b151
* - 27
- Hauppauge WinTV-HVR-975
- 2040:b150

View File

@ -12,7 +12,7 @@ cx23885 cards list
* - Card number
- Card name
- PCI IDs
- PCI subsystem IDs
* - 0
- UNKNOWN/GENERIC
@ -261,3 +261,7 @@ cx23885 cards list
* - 61
- Hauppauge WinTV-QuadHD-ATSC(885)
-
* - 62
- AVerMedia CE310B
- 1461:3100

View File

@ -12,7 +12,7 @@ CX88 cards list
* - Card number
- Card name
- PCI IDs
- PCI subsystem IDs
* - 0
- UNKNOWN/GENERIC
@ -377,3 +377,7 @@ CX88 cards list
* - 90
- Leadtek TV2000 XP Global (XC4100)
- 107d:6f43
* - 91
- NotOnlyTV LV3H
-

View File

@ -0,0 +1,58 @@
.. SPDX-License-Identifier: GPL-2.0
The cx88 driver
===============
Author: Gerd Hoffmann
This is a v4l2 device driver for the cx2388x chip.
Current status
--------------
video
- Works.
- Overlay isn't supported.
audio
- Works. The TV standard detection is made by the driver, as the
hardware has bugs to auto-detect.
- audio data dma (i.e. recording without loopback cable to the
sound card) is supported via cx88-alsa.
vbi
- Works.
How to add support for new cards
--------------------------------
The driver needs some config info for the TV cards. This stuff is in
cx88-cards.c. If the driver doesn't work well you likely need a new
entry for your card in that file. Check the kernel log (using dmesg)
to see whenever the driver knows your card or not. There is a line
like this one:
.. code-block:: none
cx8800[0]: subsystem: 0070:3400, board: Hauppauge WinTV \
34xxx models [card=1,autodetected]
If your card is listed as "board: UNKNOWN/GENERIC" it is unknown to
the driver. What to do then?
1) Try upgrading to the latest snapshot, maybe it has been added
meanwhile.
2) You can try to create a new entry yourself, have a look at
cx88-cards.c. If that worked, mail me your changes as unified
diff ("diff -u").
3) Or you can mail me the config information. We need at least the
following information to add the card:
- the PCI Subsystem ID ("0070:3400" from the line above,
"lspci -v" output is fine too).
- the tuner type used by the card. You can try to find one by
trial-and-error using the tuner=<n> insmod option. If you
know which one the card has you can also have a look at the
list in CARDLIST.tuner

View File

@ -3,38 +3,18 @@
The VPBE V4L2 driver design
===========================
File partitioning
-----------------
V4L2 display device driver
drivers/media/platform/davinci/vpbe_display.c
drivers/media/platform/davinci/vpbe_display.h
VPBE display controller
drivers/media/platform/davinci/vpbe.c
drivers/media/platform/davinci/vpbe.h
VPBE venc sub device driver
drivers/media/platform/davinci/vpbe_venc.c
drivers/media/platform/davinci/vpbe_venc.h
drivers/media/platform/davinci/vpbe_venc_regs.h
VPBE osd driver
drivers/media/platform/davinci/vpbe_osd.c
drivers/media/platform/davinci/vpbe_osd.h
drivers/media/platform/davinci/vpbe_osd_regs.h
Functional partitioning
-----------------------
Consists of the following (in the same order as the list under file
partitioning):
Consists of the following:
1. V4L2 display driver
Implements creation of video2 and video3 device nodes and
provides v4l2 device interface to manage VID0 and VID1 layers.
2. Display controller
Loads up VENC, OSD and external encoders such as ths8200. It provides
a set of API calls to V4L2 drivers to set the output/standards
in the VENC or external sub devices. It also provides
@ -54,6 +34,7 @@ partitioning):
encoders is not present, and would be a part of the next patch series.
3. VENC subdevice module
Responsible for setting outputs provided through internal DACs and also
setting timings at LCD controller port when external encoders are connected
at the port or LCD panel timings required. When external encoder/LCD panel
@ -72,6 +53,7 @@ partitioning):
patch series.
4. OSD module
OSD module implements all OSD layer management and hardware specific
features. The VPBE module interacts with the OSD for enabling and
disabling appropriate features of the OSD.
@ -81,17 +63,3 @@ Current status
A fully functional working version of the V4L2 driver is available. This
driver has been tested with NTSC and PAL standards and buffer streaming.
To be done
----------
vpbe display controller
- Add support for external encoders.
- add support for selecting external encoder as default at probe time.
vpbe venc sub device
- add timings for supporting ths8200
- add support for LogicPD LCD.
FB drivers
- Add support for fbdev drivers.- Ready and part of subsequent patches.

View File

@ -0,0 +1,16 @@
.. SPDX-License-Identifier: GPL-2.0
========================================
Digital TV driver-specific documentation
========================================
.. toctree::
:maxdepth: 2
avermedia
bt8xx
lmedm04
opera-firmware
technisat
ttusb-dec
zr364xx

View File

@ -0,0 +1,16 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-a800 cards list
=======================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - AVerMedia AverTV DVB-T USB 2.0 (A800)
- 07ca:a800, 07ca:a801

View File

@ -0,0 +1,20 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-af9005 cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - Afatech DVB-T USB1.1 stick
- 15a4:9020
* - Ansonic DVB-T USB1.1 stick
- 10b9:6000
* - TerraTec Cinergy T USB XE
- 0ccd:0055

View File

@ -0,0 +1,80 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-af9015 cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - AVerMedia A309
- 07ca:a309
* - AVerMedia AVerTV DVB-T Volar X
- 07ca:a815
* - Afatech AF9015 reference design
- 15a4:9015, 15a4:9016
* - AverMedia AVerTV Red HD+ (A850T)
- 07ca:850b
* - AverMedia AVerTV Volar Black HD (A850)
- 07ca:850a
* - AverMedia AVerTV Volar GPS 805 (A805)
- 07ca:a805
* - AverMedia AVerTV Volar M (A815Mac)
- 07ca:815a
* - Conceptronic USB2.0 DVB-T CTVDIGRCU V3.0
- 1b80:e397
* - DigitalNow TinyTwin
- 13d3:3226
* - DigitalNow TinyTwin v2
- 1b80:e402
* - DigitalNow TinyTwin v3
- 1f4d:9016
* - Fujitsu-Siemens Slim Mobile USB DVB-T
- 07ca:8150
* - Genius TVGo DVB-T03
- 0458:4012
* - KWorld Digital MC-810
- 1b80:c810
* - KWorld PlusTV DVB-T PCI Pro Card (DVB-T PC160-T)
- 1b80:c161
* - KWorld PlusTV Dual DVB-T PCI (DVB-T PC160-2T)
- 1b80:c160
* - KWorld PlusTV Dual DVB-T Stick (DVB-T 399U)
- 1b80:e399, 1b80:e400
* - KWorld USB DVB-T Stick Mobile (UB383-T)
- 1b80:e383
* - KWorld USB DVB-T TV Stick II (VS-DVB-T 395U)
- 1b80:e396, 1b80:e39b, 1b80:e395, 1b80:e39a
* - Leadtek WinFast DTV Dongle Gold
- 0413:6029
* - Leadtek WinFast DTV2000DS
- 0413:6a04
* - MSI DIGIVOX Duo
- 1462:8801
* - MSI Digi VOX mini III
- 1462:8807
* - Pinnacle PCTV 71e
- 2304:022b
* - Sveon STV20 Tuner USB DVB-T HDTV
- 1b80:e39d
* - Sveon STV22 Dual USB DVB-T Tuner HDTV
- 1b80:e401
* - Telestar Starstick 2
- 10b9:8000
* - TerraTec Cinergy T Stick Dual RC
- 0ccd:0099
* - TerraTec Cinergy T Stick RC
- 0ccd:0097
* - TerraTec Cinergy T USB XE
- 0ccd:0069
* - TrekStor DVB-T USB Stick
- 15a4:901b
* - TwinHan AzureWave AD-TU700(704J)
- 13d3:3237
* - Xtensions XD-380
- 1ae7:0381

View File

@ -0,0 +1,74 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-af9035 cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - AVerMedia AVerTV Volar HD/PRO (A835)
- 07ca:a835, 07ca:b835
* - AVerMedia HD Volar (A867)
- 07ca:1867, 07ca:a867, 07ca:0337
* - AVerMedia TD310 DVB-T2
- 07ca:1871
* - AVerMedia Twinstar (A825)
- 07ca:0825
* - Afatech AF9035 reference design
- 15a4:9035, 15a4:1000, 15a4:1001, 15a4:1002, 15a4:1003
* - Asus U3100Mini Plus
- 0b05:1779
* - Avermedia A835B(1835)
- 07ca:1835
* - Avermedia A835B(2835)
- 07ca:2835
* - Avermedia A835B(3835)
- 07ca:3835
* - Avermedia A835B(4835)
- 07ca:4835
* - Avermedia AverTV Volar HD 2 (TD110)
- 07ca:a110
* - Avermedia H335
- 07ca:0335
* - Digital Dual TV Receiver CTVDIGDUAL_V2
- 1b80:e410
* - EVOLVEO XtraTV stick
- 1f4d:a115
* - Hauppauge WinTV-MiniStick 2
- 2040:f900
* - ITE 9135 Generic
- 048d:9135
* - ITE 9135(9005) Generic
- 048d:9005
* - ITE 9135(9006) Generic
- 048d:9006
* - ITE 9303 Generic
- 048d:9306
* - Kworld UB499-2T T09
- 1b80:e409
* - Leadtek WinFast DTV Dongle Dual
- 0413:6a05
* - Logilink VG0022A
- 1d19:0100
* - PCTV AndroiDTV (78e)
- 2013:025a
* - PCTV microStick (79e)
- 2013:0262
* - Sveon STV22 Dual DVB-T HDTV
- 1b80:e411
* - TerraTec Cinergy T Stick
- 0ccd:0093
* - TerraTec Cinergy T Stick (rev. 2)
- 0ccd:00aa
* - TerraTec Cinergy T Stick Dual RC (rev. 2)
- 0ccd:0099
* - TerraTec Cinergy TC2 Stick
- 0ccd:10b2
* - TerraTec T1
- 0ccd:10ae

View File

@ -0,0 +1,16 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-anysee cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - Anysee
- 04b4:861f, 1c73:861f

View File

@ -0,0 +1,16 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-au6610 cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - Sigmatek DVB-110
- 058f:6610

View File

@ -0,0 +1,20 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-az6007 cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - Azurewave 6007
- 13d3:0ccd
* - Technisat CableStar Combo HD CI
- 14f7:0003
* - Terratec H7
- 0ccd:10b4, 0ccd:10a3

View File

@ -0,0 +1,24 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-az6027 cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - AZUREWAVE DVB-S/S2 USB2.0 (AZ6027)
- 13d3:3275
* - Elgato EyeTV Sat
- 0fd9:002a, 0fd9:0025, 0fd9:0036
* - TERRATEC S7
- 0ccd:10a4
* - TERRATEC S7 MKII
- 0ccd:10ac
* - Technisat SkyStar USB 2 HD CI
- 14f7:0001, 14f7:0002

View File

@ -0,0 +1,18 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-ce6230 cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - AVerMedia A310 USB 2.0 DVB-T tuner
- 07ca:a310
* - Intel CE9500 reference design
- 8086:9500

View File

@ -0,0 +1,16 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-cinergyT2 cards list
============================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - TerraTec/qanu USB2.0 Highspeed DVB-T Receiver
- 0ccd:0x0038

View File

@ -0,0 +1,40 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-cxusb cards list
========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - AVerMedia AVerTVHD Volar (A868R)
-
* - Conexant DMB-TH Stick
-
* - DViCO FusionHDTV DVB-T Dual Digital 2
-
* - DViCO FusionHDTV DVB-T Dual Digital 4
-
* - DViCO FusionHDTV DVB-T Dual Digital 4 (rev 2)
-
* - DViCO FusionHDTV DVB-T Dual USB
-
* - DViCO FusionHDTV DVB-T NANO2
-
* - DViCO FusionHDTV DVB-T USB (LGZ201)
-
* - DViCO FusionHDTV DVB-T USB (TH7579)
-
* - DViCO FusionHDTV5 USB Gold
-
* - DigitalNow DVB-T Dual USB
-
* - Medion MD95700 (MDUSBTV-HYBRID)
-
* - Mygica D689 DMB-TH
-

View File

@ -0,0 +1,162 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-dib0700 cards list
==========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - ASUS My Cinema U3000 Mini DVBT Tuner
- 0b05:171f
* - ASUS My Cinema U3100 Mini DVBT Tuner
- 0b05:173f
* - AVerMedia AVerTV DVB-T Express
- 07ca:b568
* - AVerMedia AVerTV DVB-T Volar
- 07ca:a807, 07ca:b808
* - Artec T14BR DVB-T
- 05d8:810f
* - Asus My Cinema-U3000Hybrid
- 0b05:1736
* - Compro Videomate U500
- 185b:1e78, 185b:1e80
* - DiBcom NIM7090 reference design
- 10b8:1bb2
* - DiBcom NIM8096MD reference design
- 10b8:1fa8
* - DiBcom NIM9090MD reference design
- 10b8:2384
* - DiBcom STK7070P reference design
- 10b8:1ebc
* - DiBcom STK7070PD reference design
- 10b8:1ebe
* - DiBcom STK7700D reference design
- 10b8:1ef0
* - DiBcom STK7700P reference design
- 10b8:1e14, 10b8:1e78
* - DiBcom STK7770P reference design
- 10b8:1e80
* - DiBcom STK807xP reference design
- 10b8:1f90
* - DiBcom STK807xPVR reference design
- 10b8:1f98
* - DiBcom STK8096-PVR reference design
- 2013:1faa, 10b8:1faa
* - DiBcom STK8096GP reference design
- 10b8:1fa0
* - DiBcom STK9090M reference design
- 10b8:2383
* - DiBcom TFE7090PVR reference design
- 10b8:1bb4
* - DiBcom TFE7790P reference design
- 10b8:1e6e
* - DiBcom TFE8096P reference design
- 10b8:1f9C
* - Elgato EyeTV DTT
- 0fd9:0021
* - Elgato EyeTV DTT rev. 2
- 0fd9:003f
* - Elgato EyeTV Diversity
- 0fd9:0011
* - Elgato EyeTV Dtt Dlx PD378S
- 0fd9:0020
* - EvolutePC TVWay+
- 1e59:0002
* - Gigabyte U7000
- 1044:7001
* - Gigabyte U8000-RH
- 1044:7002
* - Hama DVB=T Hybrid USB Stick
- 147f:2758
* - Hauppauge ATSC MiniCard (B200)
- 2040:b200
* - Hauppauge ATSC MiniCard (B210)
- 2040:b210
* - Hauppauge Nova-T 500 Dual DVB-T
- 2040:9941, 2040:9950
* - Hauppauge Nova-T MyTV.t
- 2040:7080
* - Hauppauge Nova-T Stick
- 2040:7050, 2040:7060, 2040:7070
* - Hauppauge Nova-TD Stick (52009)
- 2040:5200
* - Hauppauge Nova-TD Stick/Elgato Eye-TV Diversity
- 2040:9580
* - Hauppauge Nova-TD-500 (84xxx)
- 2040:8400
* - Leadtek WinFast DTV Dongle H
- 0413:60f6
* - Leadtek Winfast DTV Dongle (STK7700P based)
- 0413:6f00, 0413:6f01
* - Medion CTX1921 DVB-T USB
- 1660:1921
* - Microsoft Xbox One Digital TV Tuner
- 045e:02d5
* - PCTV 2002e
- 2013:025c
* - PCTV 2002e SE
- 2013:025d
* - Pinnacle Expresscard 320cx
- 2304:022e
* - Pinnacle PCTV 2000e
- 2304:022c
* - Pinnacle PCTV 282e
- 2013:0248, 2304:0248
* - Pinnacle PCTV 340e HD Pro USB Stick
- 2304:023d
* - Pinnacle PCTV 72e
- 2304:0236
* - Pinnacle PCTV 73A
- 2304:0243
* - Pinnacle PCTV 73e
- 2304:0237
* - Pinnacle PCTV 73e SE
- 2013:0245, 2304:0245
* - Pinnacle PCTV DVB-T Flash Stick
- 2304:0228
* - Pinnacle PCTV Dual DVB-T Diversity Stick
- 2304:0229
* - Pinnacle PCTV HD Pro USB Stick
- 2304:023a
* - Pinnacle PCTV HD USB Stick
- 2304:023b
* - Pinnacle PCTV Hybrid Stick Solo
- 2304:023e
* - Prolink Pixelview SBTVD
- 1554:5010
* - Sony PlayTV
- 1415:0003
* - TechniSat AirStar TeleStick 2
- 14f7:0004
* - Terratec Cinergy DT USB XS Diversity/ T5
- 0ccd:0081, 0ccd:10a1
* - Terratec Cinergy DT XS Diversity
- 0ccd:005a
* - Terratec Cinergy HT Express
- 0ccd:0060
* - Terratec Cinergy HT USB XE
- 0ccd:0058
* - Terratec Cinergy T Express
- 0ccd:0062
* - Terratec Cinergy T USB XXS (HD)/ T3
- 0ccd:0078, 0ccd:10a0, 0ccd:00ab
* - Uniwill STK7700P based (Hama and others)
- 1584:6003
* - YUAN High-Tech DiBcom STK7700D
- 1164:1e8c
* - YUAN High-Tech MC770
- 1164:0871
* - YUAN High-Tech STK7700D
- 1164:1efc
* - YUAN High-Tech STK7700PH
- 1164:1f08
* - Yuan EC372S
- 1164:1edc
* - Yuan PD378S
- 1164:2edc

View File

@ -0,0 +1,42 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-dibusb-mb cards list
============================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - AVerMedia AverTV DVBT USB1.1
- 14aa:0001, 14aa:0002
* - Artec T1 USB1.1 TVBOX with AN2135
- 05d8:8105, 05d8:8106
* - Artec T1 USB1.1 TVBOX with AN2235
- 05d8:8107, 05d8:8108
* - Artec T1 USB1.1 TVBOX with AN2235 (faulty USB IDs)
- 0547:2235
* - Artec T1 USB2.0
- 05d8:8109, 05d8:810a
* - Compro Videomate DVB-U2000 - DVB-T USB1.1 (please confirm to linux-dvb)
- 185b:d000, 145f:010c, 185b:d001
* - DiBcom USB1.1 DVB-T reference design (MOD3000)
- 10b8:0bb8, 10b8:0bb9
* - Grandtec USB1.1 DVB-T
- 5032:0fa0, 5032:0bb8, 5032:0fa1, 5032:0bb9
* - KWorld V-Stream XPERT DTV - DVB-T USB1.1
- eb1a:17de, eb1a:17df
* - KWorld Xpert DVB-T USB2.0
- eb2a:17de
* - KWorld/ADSTech Instant DVB-T USB2.0
- 06e1:a333, 06e1:a334
* - TwinhanDTV USB-Ter USB1.1 / Magic Box I / HAMA USB1.1 DVB-T device
- 13d3:3201, 1822:3201, 13d3:3202, 1822:3202
* - Unknown USB1.1 DVB-T device ???? please report the name to the author
- 1025:005e, 1025:005f
* - VideoWalker DVB-T USB
- 0458:701e, 0458:701f

View File

@ -0,0 +1,30 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-dibusb-mc cards list
============================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - Artec T1 USB2.0 TVBOX (please check the warm ID)
- 05d8:8109, 05d8:810a
* - Artec T14 - USB2.0 DVB-T
- 05d8:810b, 05d8:810c
* - DiBcom USB2.0 DVB-T reference design (MOD3000P)
- 10b8:0bc6, 10b8:0bc7
* - GRAND - USB2.0 DVB-T adapter
- 5032:0bc6, 5032:0bc7
* - Humax/Coex DVB-T USB Stick 2.0 High Speed
- 10b9:5000, 10b9:5001
* - LITE-ON USB2.0 DVB-T Tuner
- 04ca:f000, 04ca:f001
* - Leadtek - USB2.0 Winfast DTV dongle
- 0413:6025, 0413:6026
* - MSI Digivox Mini SL
- eb1a:e360, eb1a:e361

View File

@ -0,0 +1,16 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-digitv cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - Nebula Electronics uDigiTV DVB-T USB2.0)
- 0547:0201

View File

@ -0,0 +1,22 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-dtt200u cards list
==========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - WideView WT-220U PenType Receiver (Miglia)
- 18f3:0220
* - WideView WT-220U PenType Receiver (Typhoon/Freecom)
- 14aa:0222, 14aa:0220, 14aa:0221, 14aa:0225, 14aa:0226
* - WideView WT-220U PenType Receiver (based on ZL353)
- 14aa:022a, 14aa:022b
* - WideView/Yuan/Yakumo/Hama/Typhoon DVB-T USB2.0 (WT-200U)
- 14aa:0201, 14aa:0301

View File

@ -0,0 +1,16 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-dtv5100 cards list
==========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - AME DTV-5100 USB2.0 DVB-T
- 0x06be:0xa232

View File

@ -0,0 +1,42 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-dvbsky cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - DVBSky S960/S860
- 0572:6831
* - DVBSky S960CI
- 0572:960c
* - DVBSky T330
- 0572:0320
* - DVBSky T680CI
- 0572:680c
* - MyGica Mini DVB-T2 USB Stick T230
- 0572:c688
* - MyGica Mini DVB-T2 USB Stick T230C
- 0572:c689
* - MyGica Mini DVB-T2 USB Stick T230C Lite
- 0572:c699
* - MyGica Mini DVB-T2 USB Stick T230C v2
- 0572:c68a
* - TechnoTrend TT-connect CT2-4650 CI
- 0b48:3012
* - TechnoTrend TT-connect CT2-4650 CI v1.1
- 0b48:3015
* - TechnoTrend TT-connect S2-4650 CI
- 0b48:3017
* - TechnoTrend TVStick CT2-4400
- 0b48:3014
* - Terratec Cinergy S2 Rev.4
- 0ccd:0105
* - Terratec H7 Rev.4
- 0ccd:10a5

View File

@ -0,0 +1,52 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-dw2102 cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - DVBWorld DVB-C 3101 USB2.0
- 04b4:3101
* - DVBWorld DVB-S 2101 USB2.0
- 04b4:0x2101
* - DVBWorld DVB-S 2102 USB2.0
- 04b4:2102
* - DVBWorld DW2104 USB2.0
- 04b4:2104
* - GOTVIEW Satellite HD
- 0x1FE1:5456
* - Geniatech T220 DVB-T/T2 USB2.0
- 0x1f4d:0xD220
* - SU3000HD DVB-S USB2.0
- 0x1f4d:0x3000
* - TeVii S482 (tuner 1)
- 0x9022:0xd483
* - TeVii S482 (tuner 2)
- 0x9022:0xd484
* - TeVii S630 USB
- 0x9022:d630
* - TeVii S650 USB2.0
- 0x9022:d650
* - TeVii S662
- 0x9022:d662
* - TechnoTrend TT-connect S2-4600
- 0b48:3011
* - TerraTec Cinergy S USB
- 0ccd:0064
* - Terratec Cinergy S2 USB BOX
- 0ccd:0x0105
* - Terratec Cinergy S2 USB HD
- 0ccd:00a8
* - Terratec Cinergy S2 USB HD Rev.2
- 0ccd:00b0
* - Terratec Cinergy S2 USB HD Rev.3
- 0ccd:0102
* - X3M TV SPC1400HD PCI
- 0x1f4d:0x3100

View File

@ -0,0 +1,16 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-ec168 cards list
========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - E3C EC168 reference design
- 18b4:1689, 18b4:fffa, 18b4:fffb, 18b4:1001, 18b4:1002

View File

@ -0,0 +1,20 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-gl861 cards list
========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - 774 Friio White ISDB-T USB2.0
- 7a69:0001
* - A-LINK DTU DVB-T USB2.0
- 05e3:f170
* - MSI Mega Sky 55801 DVB-T USB2.0
- 0db0:5581

View File

@ -0,0 +1,22 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-gp8psk cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - Genpix 8PSK-to-USB2 Rev.1 DVB-S receiver
- 09c0:0200, 09c0:0201
* - Genpix 8PSK-to-USB2 Rev.2 DVB-S receiver
- 09c0:0202
* - Genpix SkyWalker-1 DVB-S receiver
- 09c0:0203
* - Genpix SkyWalker-2 DVB-S receiver
- 09c0:0206

View File

@ -0,0 +1,20 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-lmedm04 cards list
==========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - DM04_LME2510C_DVB-S
- 3344:1120
* - DM04_LME2510C_DVB-S RS2000
- 3344:22f0
* - DM04_LME2510_DVB-S
- 3344:1122

View File

@ -0,0 +1,26 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-m920x cards list
========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - DTV-DVB UDTT7049
- 13d3:3219
* - Dposh DVB-T USB2.0
- 1498:9206, 1498:a090
* - LifeView TV Walker Twin DVB-T USB2.0
- 10fd:0514, 10fd:0513
* - MSI DIGI VOX mini II DVB-T USB2.0
- 10fd:1513
* - MSI Mega Sky 580 DVB-T USB2.0
- 0db0:5580
* - Pinnacle PCTV 310e
- 13d3:3211

View File

@ -0,0 +1,36 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-mxl111sf cards list
===========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - HCW 117xxx
- 2040:b702
* - HCW 126xxx
- 2040:c602, 2040:c60a
* - Hauppauge 117xxx ATSC+
- 2040:b700, 2040:b703, 2040:b753, 2040:b763, 2040:b757, 2040:b767
* - Hauppauge 117xxx DVBT
- 2040:b704, 2040:b764
* - Hauppauge 126xxx
- 2040:c612, 2040:c61a
* - Hauppauge 126xxx ATSC
- 2040:c601, 2040:c609, 2040:b701
* - Hauppauge 126xxx ATSC+
- 2040:c600, 2040:c603, 2040:c60b, 2040:c653, 2040:c65b
* - Hauppauge 126xxx DVBT
- 2040:c604, 2040:c60c
* - Hauppauge 138xxx DVBT
- 2040:d854, 2040:d864, 2040:d8d4, 2040:d8e4
* - Hauppauge Mercury
- 2040:d853, 2040:d863, 2040:d8d3, 2040:d8e3, 2040:d8ff
* - Hauppauge WinTV-Aero-M
- 2040:c613, 2040:c61b

View File

@ -0,0 +1,16 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-nova-t-usb2 cards list
==============================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - Hauppauge WinTV-NOVA-T usb2
- 2040:9300, 2040:9301

View File

@ -0,0 +1,16 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-opera1 cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - Opera1 DVB-S USB2.0
- 04b4:2830, 695c:3829

View File

@ -0,0 +1,20 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-pctv452e cards list
===========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - PCTV HDTV USB
- 2304:021f
* - Technotrend TT Connect S2-3600
- 0b48:3007
* - Technotrend TT Connect S2-3650-CI
- 0b48:300a

View File

@ -0,0 +1,80 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-rtl28xxu cards list
===========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - ASUS My Cinema-U3100Mini Plus V2
- 1b80:d3a8
* - Astrometa DVB-T2
- 15f4:0131
* - Compro VideoMate U620F
- 185b:0620
* - Compro VideoMate U650F
- 185b:0650
* - Crypto ReDi PC 50 A
- 1f4d:a803
* - Dexatek DK DVB-T Dongle
- 1d19:1101
* - Dexatek DK mini DVB-T Dongle
- 1d19:1102
* - DigitalNow Quad DVB-T Receiver
- 0413:6680
* - Freecom USB2.0 DVB-T
- 14aa:0160, 14aa:0161
* - G-Tek Electronics Group Lifeview LV5TDLX DVB-T
- 1f4d:b803
* - GIGABYTE U7300
- 1b80:d393
* - Genius TVGo DVB-T03
- 0458:707f
* - GoTView MasterHD 3
- 5654:ca42
* - Leadtek WinFast DTV Dongle mini
- 0413:6a03
* - Leadtek WinFast DTV2000DS Plus
- 0413:6f12
* - Leadtek Winfast DTV Dongle Mini D
- 0413:6f0f
* - MSI DIGIVOX Micro HD
- 1d19:1104
* - MaxMedia HU394-T
- 1b80:d394
* - PROlectrix DV107669
- 1f4d:d803
* - Peak DVB-T USB
- 1b80:d395
* - Realtek RTL2831U reference design
- 0bda:2831
* - Realtek RTL2832U reference design
- 0bda:2832, 0bda:2838
* - Sveon STV20
- 1b80:d39d
* - Sveon STV21
- 1b80:d3b0
* - Sveon STV27
- 1b80:d3af
* - TURBO-X Pure TV Tuner DTT-2000
- 1b80:d3a4
* - TerraTec Cinergy T Stick Black
- 0ccd:00a9
* - TerraTec Cinergy T Stick RC (Rev. 3)
- 0ccd:00d3
* - TerraTec Cinergy T Stick+
- 0ccd:00d7
* - TerraTec NOXON DAB Stick
- 0ccd:00b3
* - TerraTec NOXON DAB Stick (rev 2)
- 0ccd:00e0
* - TerraTec NOXON DAB Stick (rev 3)
- 0ccd:00b4
* - Trekstor DVB-T Stick Terres 2.0
- 1f4d:C803

View File

@ -0,0 +1,16 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-technisat-usb2 cards list
=================================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - Technisat SkyStar USB HD (DVB-S/S2)
- 14f7:0500

View File

@ -0,0 +1,24 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-ttusb2 cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - Pinnacle 400e DVB-S USB2.0
- 2304:020f
* - Pinnacle 450e DVB-S USB2.0
- 2304:0222
* - Technotrend TT-connect CT-3650
- 0b48:300d
* - Technotrend TT-connect S-2400
- 0b48:3006
* - Technotrend TT-connect S-2400 (8kB EEPROM)
- 0b48:3009

View File

@ -0,0 +1,16 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-umt-010 cards list
==========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - Hanftek UMT-010 DVB-T USB2.0
- 15f4:0001, 15f4:0015

View File

@ -0,0 +1,16 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-vp702x cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - TwinhanDTV StarBox DVB-S USB2.0 (VP7021)
- 13d3:3207

View File

@ -0,0 +1,18 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-vp7045 cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - DigitalNow TinyUSB 2 DVB-t Receiver
- 13d3:3223, 13d3:3224
* - Twinhan USB2.0 DVB-T receiver (TwinhanDTV Alpha/MagicBox II)
- 13d3:3205, 13d3:3206

View File

@ -0,0 +1,16 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-zd1301 cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - ZyDAS ZD1301 reference design
- 0ace:13a1

View File

@ -0,0 +1,12 @@
.. SPDX-License-Identifier: GPL-2.0
==========
Digital TV
==========
.. toctree::
dvb_intro
ci
faq
dvb_references

View File

@ -0,0 +1,616 @@
.. SPDX-License-Identifier: GPL-2.0
==============================
Using the Digital TV Framework
==============================
Introduction
~~~~~~~~~~~~
One significant difference between Digital TV and Analogue TV that the
unwary (like myself) should consider is that, although the component
structure of DVB-T cards are substantially similar to Analogue TV cards,
they function in substantially different ways.
The purpose of an Analogue TV is to receive and display an Analogue
Television signal. An Analogue TV signal (otherwise known as composite
video) is an analogue encoding of a sequence of image frames (25 frames
per second in Europe) rasterised using an interlacing technique.
Interlacing takes two fields to represent one frame. Therefore, an
Analogue TV card for a PC has the following purpose:
* Tune the receiver to receive a broadcast signal
* demodulate the broadcast signal
* demultiplex the analogue video signal and analogue audio
signal.
.. note::
some countries employ a digital audio signal
embedded within the modulated composite analogue signal -
using NICAM signaling.)
* digitize the analogue video signal and make the resulting datastream
available to the data bus.
The digital datastream from an Analogue TV card is generated by
circuitry on the card and is often presented uncompressed. For a PAL TV
signal encoded at a resolution of 768x576 24-bit color pixels over 25
frames per second - a fair amount of data is generated and must be
processed by the PC before it can be displayed on the video monitor
screen. Some Analogue TV cards for PCs have onboard MPEG2 encoders which
permit the raw digital data stream to be presented to the PC in an
encoded and compressed form - similar to the form that is used in
Digital TV.
The purpose of a simple budget digital TV card (DVB-T,C or S) is to
simply:
* Tune the received to receive a broadcast signal. * Extract the encoded
digital datastream from the broadcast signal.
* Make the encoded digital datastream (MPEG2) available to the data bus.
The significant difference between the two is that the tuner on the
analogue TV card spits out an Analogue signal, whereas the tuner on the
digital TV card spits out a compressed encoded digital datastream. As
the signal is already digitised, it is trivial to pass this datastream
to the PC databus with minimal additional processing and then extract
the digital video and audio datastreams passing them to the appropriate
software or hardware for decoding and viewing.
Getting the card going
~~~~~~~~~~~~~~~~~~~~~~
The Device Driver API for DVB under Linux will the following
device nodes via the devfs filesystem:
* /dev/dvb/adapter0/demux0
* /dev/dvb/adapter0/dvr0
* /dev/dvb/adapter0/frontend0
The ``/dev/dvb/adapter0/dvr0`` device node is used to read the MPEG2
Data Stream and the ``/dev/dvb/adapter0/frontend0`` device node is used
to tune the frontend tuner module. The ``/dev/dvb/adapter0/demux0`` is
used to control what programs will be received.
Depending on the card's feature set, the Device Driver API could also
expose other device nodes:
* /dev/dvb/adapter0/ca0
* /dev/dvb/adapter0/audio0
* /dev/dvb/adapter0/net0
* /dev/dvb/adapter0/osd0
* /dev/dvb/adapter0/video0
The ``/dev/dvb/adapter0/ca0`` is used to decode encrypted channels. The
other device nodes are found only on devices that use the av7110
driver, with is now obsoleted, together with the extra API whose such
devices use.
Receiving a digital TV channel
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This section attempts to explain how it works and how this affects the
configuration of a Digital TV card.
On this example, we're considering tuning into DVB-T channels in
Australia, at the Melbourne region.
The frequencies broadcast by Mount Dandenong transmitters are,
currently:
Table 1. Transponder Frequencies Mount Dandenong, Vic, Aus.
=========== ===========
Broadcaster Frequency
=========== ===========
Seven 177.500 Mhz
SBS 184.500 Mhz
Nine 191.625 Mhz
Ten 219.500 Mhz
ABC 226.500 Mhz
Channel 31 557.625 Mhz
=========== ===========
The digital TV Scan utilities (like dvbv5-scan) have use a set of
compiled-in defaults for various countries and regions. Those are
currently provided as a separate package, called dtv-scan-tables. It's
git tree is located at LinuxTV.org:
https://git.linuxtv.org/dtv-scan-tables.git/
If none of the tables there suit, you can specify a data file on the
command line which contains the transponder frequencies. Here is a
sample file for the above channel transponders, in the old "channel"
format::
# Data file for DVB scan program
#
# C Frequency SymbolRate FEC QAM
# S Frequency Polarisation SymbolRate FEC
# T Frequency Bandwidth FEC FEC2 QAM Mode Guard Hier
T 177500000 7MHz AUTO AUTO QAM64 8k 1/16 NONE
T 184500000 7MHz AUTO AUTO QAM64 8k 1/8 NONE
T 191625000 7MHz AUTO AUTO QAM64 8k 1/16 NONE
T 219500000 7MHz AUTO AUTO QAM64 8k 1/16 NONE
T 226500000 7MHz AUTO AUTO QAM64 8k 1/16 NONE
T 557625000 7MHz AUTO AUTO QPSK 8k 1/16 NONE
Nowadays, we prefer to use a newer format, with is more verbose and easier
to understand. With the new format, the "Seven" channel transponder's
data is represented by::
[Seven]
DELIVERY_SYSTEM = DVBT
FREQUENCY = 177500000
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = AUTO
CODE_RATE_LP = AUTO
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
INVERSION = AUTO
For an updated version of the complete table, please see:
https://git.linuxtv.org/dtv-scan-tables.git/tree/dvb-t/au-Melbourne
When the Digital TV scanning utility runs, it will output a file
containing the information for all the audio and video programs that
exists into each channel's transponders which the card's frontend can
lock onto. (i.e. any whose signal is strong enough at your antenna).
Here's the output of the dvbv5 tools from a channel scan took from
Melburne::
[ABC HDTV]
SERVICE_ID = 560
VIDEO_PID = 2307
AUDIO_PID = 0
DELIVERY_SYSTEM = DVBT
FREQUENCY = 226500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 3/4
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[ABC TV Melbourne]
SERVICE_ID = 561
VIDEO_PID = 512
AUDIO_PID = 650
DELIVERY_SYSTEM = DVBT
FREQUENCY = 226500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 3/4
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[ABC TV 2]
SERVICE_ID = 562
VIDEO_PID = 512
AUDIO_PID = 650
DELIVERY_SYSTEM = DVBT
FREQUENCY = 226500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 3/4
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[ABC TV 3]
SERVICE_ID = 563
VIDEO_PID = 512
AUDIO_PID = 650
DELIVERY_SYSTEM = DVBT
FREQUENCY = 226500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 3/4
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[ABC TV 4]
SERVICE_ID = 564
VIDEO_PID = 512
AUDIO_PID = 650
DELIVERY_SYSTEM = DVBT
FREQUENCY = 226500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 3/4
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[ABC DiG Radio]
SERVICE_ID = 566
VIDEO_PID = 0
AUDIO_PID = 2311
DELIVERY_SYSTEM = DVBT
FREQUENCY = 226500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 3/4
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[TEN Digital]
SERVICE_ID = 1585
VIDEO_PID = 512
AUDIO_PID = 650
DELIVERY_SYSTEM = DVBT
FREQUENCY = 219500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 1/2
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[TEN Digital 1]
SERVICE_ID = 1586
VIDEO_PID = 512
AUDIO_PID = 650
DELIVERY_SYSTEM = DVBT
FREQUENCY = 219500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 1/2
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[TEN Digital 2]
SERVICE_ID = 1587
VIDEO_PID = 512
AUDIO_PID = 650
DELIVERY_SYSTEM = DVBT
FREQUENCY = 219500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 1/2
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[TEN Digital 3]
SERVICE_ID = 1588
VIDEO_PID = 512
AUDIO_PID = 650
DELIVERY_SYSTEM = DVBT
FREQUENCY = 219500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 1/2
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[TEN Digital]
SERVICE_ID = 1589
VIDEO_PID = 512
AUDIO_PID = 650
DELIVERY_SYSTEM = DVBT
FREQUENCY = 219500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 1/2
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[TEN Digital 4]
SERVICE_ID = 1590
VIDEO_PID = 512
AUDIO_PID = 650
DELIVERY_SYSTEM = DVBT
FREQUENCY = 219500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 1/2
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[TEN Digital]
SERVICE_ID = 1591
VIDEO_PID = 512
AUDIO_PID = 650
DELIVERY_SYSTEM = DVBT
FREQUENCY = 219500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 1/2
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[TEN HD]
SERVICE_ID = 1592
VIDEO_PID = 514
AUDIO_PID = 0
DELIVERY_SYSTEM = DVBT
FREQUENCY = 219500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 1/2
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[TEN Digital]
SERVICE_ID = 1593
VIDEO_PID = 512
AUDIO_PID = 650
DELIVERY_SYSTEM = DVBT
FREQUENCY = 219500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 1/2
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[Nine Digital]
SERVICE_ID = 1072
VIDEO_PID = 513
AUDIO_PID = 660
DELIVERY_SYSTEM = DVBT
FREQUENCY = 191625000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 1/2
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[Nine Digital HD]
SERVICE_ID = 1073
VIDEO_PID = 512
AUDIO_PID = 0
DELIVERY_SYSTEM = DVBT
FREQUENCY = 191625000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 1/2
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[Nine Guide]
SERVICE_ID = 1074
VIDEO_PID = 514
AUDIO_PID = 670
DELIVERY_SYSTEM = DVBT
FREQUENCY = 191625000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 1/2
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[7 Digital]
SERVICE_ID = 1328
VIDEO_PID = 769
AUDIO_PID = 770
DELIVERY_SYSTEM = DVBT
FREQUENCY = 177500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 2/3
CODE_RATE_LP = 2/3
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/8
HIERARCHY = NONE
[7 Digital 1]
SERVICE_ID = 1329
VIDEO_PID = 769
AUDIO_PID = 770
DELIVERY_SYSTEM = DVBT
FREQUENCY = 177500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 2/3
CODE_RATE_LP = 2/3
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/8
HIERARCHY = NONE
[7 Digital 2]
SERVICE_ID = 1330
VIDEO_PID = 769
AUDIO_PID = 770
DELIVERY_SYSTEM = DVBT
FREQUENCY = 177500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 2/3
CODE_RATE_LP = 2/3
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/8
HIERARCHY = NONE
[7 Digital 3]
SERVICE_ID = 1331
VIDEO_PID = 769
AUDIO_PID = 770
DELIVERY_SYSTEM = DVBT
FREQUENCY = 177500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 2/3
CODE_RATE_LP = 2/3
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/8
HIERARCHY = NONE
[7 HD Digital]
SERVICE_ID = 1332
VIDEO_PID = 833
AUDIO_PID = 834
DELIVERY_SYSTEM = DVBT
FREQUENCY = 177500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 2/3
CODE_RATE_LP = 2/3
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/8
HIERARCHY = NONE
[7 Program Guide]
SERVICE_ID = 1334
VIDEO_PID = 865
AUDIO_PID = 866
DELIVERY_SYSTEM = DVBT
FREQUENCY = 177500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 2/3
CODE_RATE_LP = 2/3
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/8
HIERARCHY = NONE
[SBS HD]
SERVICE_ID = 784
VIDEO_PID = 102
AUDIO_PID = 103
DELIVERY_SYSTEM = DVBT
FREQUENCY = 536500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 2/3
CODE_RATE_LP = 2/3
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/8
HIERARCHY = NONE
[SBS DIGITAL 1]
SERVICE_ID = 785
VIDEO_PID = 161
AUDIO_PID = 81
DELIVERY_SYSTEM = DVBT
FREQUENCY = 536500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 2/3
CODE_RATE_LP = 2/3
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/8
HIERARCHY = NONE
[SBS DIGITAL 2]
SERVICE_ID = 786
VIDEO_PID = 162
AUDIO_PID = 83
DELIVERY_SYSTEM = DVBT
FREQUENCY = 536500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 2/3
CODE_RATE_LP = 2/3
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/8
HIERARCHY = NONE
[SBS EPG]
SERVICE_ID = 787
VIDEO_PID = 163
AUDIO_PID = 85
DELIVERY_SYSTEM = DVBT
FREQUENCY = 536500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 2/3
CODE_RATE_LP = 2/3
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/8
HIERARCHY = NONE
[SBS RADIO 1]
SERVICE_ID = 798
VIDEO_PID = 0
AUDIO_PID = 201
DELIVERY_SYSTEM = DVBT
FREQUENCY = 536500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 2/3
CODE_RATE_LP = 2/3
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/8
HIERARCHY = NONE
[SBS RADIO 2]
SERVICE_ID = 799
VIDEO_PID = 0
AUDIO_PID = 202
DELIVERY_SYSTEM = DVBT
FREQUENCY = 536500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 2/3
CODE_RATE_LP = 2/3
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/8
HIERARCHY = NONE

View File

@ -0,0 +1,29 @@
.. SPDX-License-Identifier: GPL-2.0
References
==========
The main development site and GIT repository for Digital TV
drivers is https://linuxtv.org.
The DVB mailing list linux-dvb is hosted at vger. Please see
http://vger.kernel.org/vger-lists.html#linux-media for details.
There are also some other old lists hosted at:
https://linuxtv.org/lists.php. If you're insterested on that for historic
reasons, please check the archive at https://linuxtv.org/pipermail/linux-dvb/.
The media subsystem Wiki is hosted at https://linuxtv.org/wiki/.
There, you'll find lots of information, from both development and usage
of media boards. Please check it before asking newbie questions on the
mailing list or IRC channels.
The API documentation is documented at the Kernel tree. You can find it
in both html and pdf formats, together with other useful documentation at:
- https://linuxtv.org/docs.php.
You may also find useful material at https://linuxtv.org/downloads/.
In order to get the needed firmware for some drivers to work, there's
a script at the kernel tree, at scripts/get_dvb_firmware.

View File

@ -393,7 +393,7 @@ EM28xx cards list
* - 94
- PCTV tripleStick (292e)
- em28178
- 2013:025f, 2013:0264, 2040:0264, 2040:8264, 2040:8268, 2040:8268
- 2013:025f, 2013:0264, 2040:0264, 2040:8264, 2040:8268
* - 95
- Leadtek VC100
- em2861
@ -426,3 +426,11 @@ EM28xx cards list
- :ZOLID HYBRID TV STICK
- em2882
-
* - 103
- Magix USB Videowandler-2
- em2861
- 1b80:e349
* - 104
- PCTV DVB-S2 Stick (461e v2)
- em28178
- 2013:0461, 2013:0259

View File

@ -0,0 +1,216 @@
.. SPDX-License-Identifier: GPL-2.0
FAQ
===
.. note::
1. With Digital TV, a single physical channel may have different
contents inside it. The specs call each one as a *service*.
This is what a TV user would call "channel". So, in order to
avoid confusion, we're calling *transponders* as the physical
channel on this FAQ, and *services* for the logical channel.
2. The LinuxTV community maintains some Wiki pages with contain
a lot of information related to the media subsystem. If you
don't find an answer for your needs here, it is likely that
you'll be able to get something useful there. It is hosted
at:
https://www.linuxtv.org/wiki/
Some very frequently asked questions about Linux Digital TV support
1. The signal seems to die a few seconds after tuning.
It's not a bug, it's a feature. Because the frontends have
significant power requirements (and hence get very hot), they
are powered down if they are unused (i.e. if the frontend device
is closed). The ``dvb-core`` module parameter ``dvb_shutdown_timeout``
allow you to change the timeout (default 5 seconds). Setting the
timeout to 0 disables the timeout feature.
2. How can I watch TV?
Together with the Linux Kernel, the Digital TV developers support
some simple utilities which are mainly intended for testing
and to demonstrate how the DVB API works. This is called DVB v5
tools and are grouped together with the ``v4l-utils`` git repository:
https://git.linuxtv.org/v4l-utils.git/
You can find more information at the LinuxTV wiki:
https://www.linuxtv.org/wiki/index.php/DVBv5_Tools
The first step is to get a list of services that are transmitted.
This is done by using several existing tools. You can use
for example the ``dvbv5-scan`` tool. You can find more information
about it at:
https://www.linuxtv.org/wiki/index.php/Dvbv5-scan
There are some other applications like ``w_scan`` [#]_ that do a
blind scan, trying hard to find all possible channels, but
those consumes a large amount of time to run.
.. [#] https://www.linuxtv.org/wiki/index.php/W_scan
Also, some applications like ``kaffeine`` have their own code
to scan for services. So, you don't need to use an external
application to obtain such list.
Most of such tools need a file containing a list of channel
transponders available on your area. So, LinuxTV developers
maintain tables of Digital TV channel transponders, receiving
patches from the community to keep them updated.
This list is hosted at:
https://git.linuxtv.org/dtv-scan-tables.git
And packaged on several distributions.
Kaffeine has some blind scan support for some terrestrial standards.
It also relies on DTV scan tables, although it contains a copy
of it internally (and, if requested by the user, it will download
newer versions of it).
If you are lucky you can just use one of the supplied channel
transponders. If not, you may need to seek for such info at
the Internet and create a new file. There are several sites with
contains physical channel lists. For cable and satellite, usually
knowing how to tune into a single channel is enough for the
scanning tool to identify the other channels. On some places,
this could also work for terrestrial transmissions.
Once you have a transponders list, you need to generate a services
list with a tool like ``dvbv5-scan``.
Almost all modern Digital TV cards don't have built-in hardware
MPEG-decoders. So, it is up to the application to get a MPEG-TS
stream provided by the board, split it into audio, video and other
data and decode.
3. Which Digital TV applications exist?
Several media player applications are capable of tuning into
digital TV channels, including Kaffeine, Vlc, mplayer and MythTV.
Kaffeine aims to be very user-friendly, and it is maintained
by one of the Kernel driver developers.
A comprehensive list of those and other apps can be found at:
https://www.linuxtv.org/wiki/index.php/TV_Related_Software
Some of the most popular ones are linked below:
https://kde.org/applications/multimedia/org.kde.kaffeine
KDE media player, focused on Digital TV support
https://www.linuxtv.org/vdrwiki/index.php/Main_Page
Klaus Schmidinger's Video Disk Recorder
https://linuxtv.org/downloads and https://git.linuxtv.org/
Digital TV and other media-related applications and
Kernel drivers. The ``v4l-utils`` package there contains
several swiss knife tools for using with Digital TV.
http://sourceforge.net/projects/dvbtools/
Dave Chapman's dvbtools package, including
dvbstream and dvbtune
http://www.dbox2.info/
LinuxDVB on the dBox2
http://www.tuxbox.org/
the TuxBox CVS many interesting DVB applications and the dBox2
DVB source
http://www.nenie.org/misc/mpsys/
MPSYS: a MPEG2 system library and tools
https://www.videolan.org/vlc/index.pt.html
Vlc
http://mplayerhq.hu/
MPlayer
http://xine.sourceforge.net/ and http://xinehq.de/
Xine
http://www.mythtv.org/
MythTV - analog TV and digital TV PVR
http://dvbsnoop.sourceforge.net/
DVB sniffer program to monitor, analyze, debug, dump
or view dvb/mpeg/dsm-cc/mhp stream information (TS,
PES, SECTION)
4. Can't get a signal tuned correctly
That could be due to a lot of problems. On my personal experience,
usually TV cards need stronger signals than TV sets, and are more
sensitive to noise. So, perhaps you just need a better antenna or
cabling. Yet, it could also be some hardware or driver issue.
For example, if you are using a Technotrend/Hauppauge DVB-C card
*without* analog module, you might have to use module parameter
adac=-1 (dvb-ttpci.o).
Please see the FAQ page at linuxtv.org, as it could contain some
valuable information:
https://www.linuxtv.org/wiki/index.php/FAQ_%26_Troubleshooting
If that doesn't work, check at the linux-media ML archives, to
see if someone else had a similar problem with your hardware
and/or digital TV service provider:
https://lore.kernel.org/linux-media/
If none of this works, you can try sending an e-mail to the
linux-media ML and see if someone else could shed some light.
The e-mail is linux-media AT vger.kernel.org.
5. The dvb_net device doesn't give me any packets at all
Run ``tcpdump`` on the ``dvb0_0`` interface. This sets the interface
into promiscuous mode so it accepts any packets from the PID
you have configured with the ``dvbnet`` utility. Check if there
are any packets with the IP addr and MAC addr you have
configured with ``ifconfig`` or with ``ip addr``.
If ``tcpdump`` doesn't give you any output, check the statistics
which ``ifconfig`` or ``netstat -ni`` outputs. (Note: If the MAC
address is wrong, ``dvb_net`` won't get any input; thus you have to
run ``tcpdump`` before checking the statistics.) If there are no
packets at all then maybe the PID is wrong. If there are error packets,
then either the PID is wrong or the stream does not conform to
the MPE standard (EN 301 192, http://www.etsi.org/). You can
use e.g. ``dvbsnoop`` for debugging.
6. The ``dvb_net`` device doesn't give me any multicast packets
Check your routes if they include the multicast address range.
Additionally make sure that "source validation by reversed path
lookup" is disabled::
$ "echo 0 > /proc/sys/net/ipv4/conf/dvb0/rp_filter"
7. What are all those modules that need to be loaded?
In order to make it more flexible and support different hardware
combinations, the media subsystem is written on a modular way.
So, besides the Digital TV hardware module for the main chipset,
it also needs to load a frontend driver, plus the Digital TV
core. If the board also has remote controller, it will also
need the remote controller core and the remote controller tables.
The same happens if the board has support for analog TV: the
core support for video4linux need to be loaded.
The actual module names are Linux-kernel version specific, as,
from time to time, things change, in order to make the media
support more flexible.

View File

@ -38,26 +38,6 @@ Not currently supported
- LCD writeback input
- per frame clock gating (mem-to-mem)
Files partitioning
------------------
- media device driver
drivers/media/platform/exynos4-is/media-dev.[ch]
- camera capture video device driver
drivers/media/platform/exynos4-is/fimc-capture.c
- MIPI-CSI2 receiver subdev
drivers/media/platform/exynos4-is/mipi-csis.[ch]
- video post-processor (mem-to-mem)
drivers/media/platform/exynos4-is/fimc-core.c
- common files
drivers/media/platform/exynos4-is/fimc-core.h
drivers/media/platform/exynos4-is/fimc-reg.h
drivers/media/platform/exynos4-is/regs-fimc.h
User space interfaces
---------------------
@ -74,6 +54,7 @@ connections of the MIPI-CSIS device(s) to the FIMC entities.
The media device interface allows to configure the SoC for capturing image
data from the sensor through more than one FIMC instance (e.g. for simultaneous
viewfinder and still capture setup).
Reconfiguration is done by enabling/disabling media links created by the driver
during initialization. The internal device topology can be easily discovered
through media entity and links enumeration.
@ -116,6 +97,7 @@ sensor subdev -> mipi-csi subdev -> fimc subdev -> video node
When we configure these devices through sub-device API at user space, the
configuration flow must be from left to right, and the video node is
configured as last one.
When we don't use sub-device user space API the whole configuration of all
devices belonging to the pipeline is done at the video node driver.
The sysfs entry allows to instruct the capture node driver not to configure

View File

@ -0,0 +1,226 @@
.. SPDX-License-Identifier: GPL-2.0
================
Frontend drivers
================
.. note::
#) There is no guarantee that every frontend driver works
out of the box with every card, because of different wiring.
#) The demodulator chips can be used with a variety of
tuner/PLL chips, and not all combinations are supported. Often
the demodulator and tuner/PLL chip are inside a metal box for
shielding, and the whole metal box has its own part number.
Common Interface (EN50221) controller drivers
=============================================
============== =========================================================
Driver Name
============== =========================================================
cxd2099 Sony CXD2099AR Common Interface driver
sp2 CIMaX SP2
============== =========================================================
ATSC (North American/Korean Terrestrial/Cable DTV) frontends
============================================================
============== =========================================================
Driver Name
============== =========================================================
au8522_dig Auvitek AU8522 based DTV demod
au8522_decoder Auvitek AU8522 based ATV demod
bcm3510 Broadcom BCM3510
lg2160 LG Electronics LG216x based
lgdt3305 LG Electronics LGDT3304 and LGDT3305 based
lgdt3306a LG Electronics LGDT3306A based
lgdt330x LG Electronics LGDT3302/LGDT3303 based
nxt200x NxtWave Communications NXT2002/NXT2004 based
or51132 Oren OR51132 based
or51211 Oren OR51211 based
s5h1409 Samsung S5H1409 based
s5h1411 Samsung S5H1411 based
============== =========================================================
DVB-C (cable) frontends
=======================
============== =========================================================
Driver Name
============== =========================================================
stv0297 ST STV0297 based
tda10021 Philips TDA10021 based
tda10023 Philips TDA10023 based
ves1820 VLSI VES1820 based
============== =========================================================
DVB-S (satellite) frontends
===========================
============== =========================================================
Driver Name
============== =========================================================
cx24110 Conexant CX24110 based
cx24116 Conexant CX24116 based
cx24117 Conexant CX24117 based
cx24120 Conexant CX24120 based
cx24123 Conexant CX24123 based
ds3000 Montage Tehnology DS3000 based
mb86a16 Fujitsu MB86A16 based
mt312 Zarlink VP310/MT312/ZL10313 based
s5h1420 Samsung S5H1420 based
si21xx Silicon Labs SI21XX based
stb6000 ST STB6000 silicon tuner
stv0288 ST STV0288 based
stv0299 ST STV0299 based
stv0900 ST STV0900 based
stv6110 ST STV6110 silicon tuner
tda10071 NXP TDA10071
tda10086 Philips TDA10086 based
tda8083 Philips TDA8083 based
tda8261 Philips TDA8261 based
tda826x Philips TDA826X silicon tuner
ts2020 Montage Tehnology TS2020 based tuners
tua6100 Infineon TUA6100 PLL
cx24113 Conexant CX24113/CX24128 tuner for DVB-S/DSS
itd1000 Integrant ITD1000 Zero IF tuner for DVB-S/DSS
ves1x93 VLSI VES1893 or VES1993 based
zl10036 Zarlink ZL10036 silicon tuner
zl10039 Zarlink ZL10039 silicon tuner
============== =========================================================
DVB-T (terrestrial) frontends
=============================
============== =========================================================
Driver Name
============== =========================================================
af9013 Afatech AF9013 demodulator
cx22700 Conexant CX22700 based
cx22702 Conexant cx22702 demodulator (OFDM)
cxd2820r Sony CXD2820R
cxd2841er Sony CXD2841ER
cxd2880 Sony CXD2880 DVB-T2/T tuner + demodulator
dib3000mb DiBcom 3000M-B
dib3000mc DiBcom 3000P/M-C
dib7000m DiBcom 7000MA/MB/PA/PB/MC
dib7000p DiBcom 7000PC
dib9000 DiBcom 9000
drxd Micronas DRXD driver
ec100 E3C EC100
l64781 LSI L64781
mt352 Zarlink MT352 based
nxt6000 NxtWave Communications NXT6000 based
rtl2830 Realtek RTL2830 DVB-T
rtl2832 Realtek RTL2832 DVB-T
rtl2832_sdr Realtek RTL2832 SDR
s5h1432 Samsung s5h1432 demodulator (OFDM)
si2168 Silicon Labs Si2168
sp8870 Spase sp8870 based
sp887x Spase sp887x based
stv0367 ST STV0367 based
tda10048 Philips TDA10048HN based
tda1004x Philips TDA10045H/TDA10046H based
zd1301_demod ZyDAS ZD1301
zl10353 Zarlink ZL10353 based
============== =========================================================
Digital terrestrial only tuners/PLL
===================================
============== =========================================================
Driver Name
============== =========================================================
dvb-pll Generic I2C PLL based tuners
dib0070 DiBcom DiB0070 silicon base-band tuner
dib0090 DiBcom DiB0090 silicon base-band tuner
============== =========================================================
ISDB-S (satellite) & ISDB-T (terrestrial) frontends
===================================================
============== =========================================================
Driver Name
============== =========================================================
mn88443x Socionext MN88443x
tc90522 Toshiba TC90522
============== =========================================================
ISDB-T (terrestrial) frontends
==============================
============== =========================================================
Driver Name
============== =========================================================
dib8000 DiBcom 8000MB/MC
mb86a20s Fujitsu mb86a20s
s921 Sharp S921 frontend
============== =========================================================
Multistandard (cable + terrestrial) frontends
=============================================
============== =========================================================
Driver Name
============== =========================================================
drxk Micronas DRXK based
mn88472 Panasonic MN88472
mn88473 Panasonic MN88473
si2165 Silicon Labs si2165 based
tda18271c2dd NXP TDA18271C2 silicon tuner
============== =========================================================
Multistandard (satellite) frontends
===================================
============== =========================================================
Driver Name
============== =========================================================
m88ds3103 Montage Technology M88DS3103
mxl5xx MaxLinear MxL5xx based tuner-demodulators
stb0899 STB0899 based
stb6100 STB6100 based tuners
stv090x STV0900/STV0903(A/B) based
stv0910 STV0910 based
stv6110x STV6110/(A) based tuners
stv6111 STV6111 based tuners
============== =========================================================
SEC control devices for DVB-S
=============================
============== =========================================================
Driver Name
============== =========================================================
a8293 Allegro A8293
af9033 Afatech AF9033 DVB-T demodulator
ascot2e Sony Ascot2E tuner
atbm8830 AltoBeam ATBM8830/8831 DMB-TH demodulator
drx39xyj Micronas DRX-J demodulator
helene Sony HELENE Sat/Ter tuner (CXD2858ER)
horus3a Sony Horus3A tuner
isl6405 ISL6405 SEC controller
isl6421 ISL6421 SEC controller
isl6423 ISL6423 SEC controller
ix2505v Sharp IX2505V silicon tuner
lgs8gl5 Silicon Legend LGS-8GL5 demodulator (OFDM)
lgs8gxx Legend Silicon LGS8913/LGS8GL5/LGS8GXX DMB-TH demodulator
lnbh25 LNBH25 SEC controller
lnbh29 LNBH29 SEC controller
lnbp21 LNBP21/LNBH24 SEC controllers
lnbp22 LNBP22 SEC controllers
m88rs2000 M88RS2000 DVB-S demodulator and tuner
tda665x TDA665x tuner
============== =========================================================
Tools to develop new frontends
==============================
============== =========================================================
Driver Name
============== =========================================================
dvb_dummy_fe Dummy frontend driver
============== =========================================================

View File

@ -0,0 +1,290 @@
.. SPDX-License-Identifier: GPL-2.0
I²C drivers
===========
The I²C (Inter-Integrated Circuit) bus is a three-wires bus used internally
at the media cards for communication between different chips. While the bus
is not visible to the Linux Kernel, drivers need to send and receive
commands via the bus. The Linux Kernel driver abstraction has support to
implement different drivers for each component inside an I²C bus, as if
the bus were visible to the main system board.
One of the problems with I²C devices is that sometimes the same device may
work with different I²C hardware. This is common, for example, on devices
that comes with a tuner for North America market, and another one for
Europe. Some drivers have a ``tuner=`` modprobe parameter to allow using a
different tuner number in order to address such issue.
The current supported of I²C drivers (not including staging drivers) are
listed below.
Audio decoders, processors and mixers
-------------------------------------
============ ==========================================================
Driver Name
============ ==========================================================
cs3308 Cirrus Logic CS3308 audio ADC
cs5345 Cirrus Logic CS5345 audio ADC
cs53l32a Cirrus Logic CS53L32A audio ADC
msp3400 Micronas MSP34xx audio decoders
sony-btf-mpx Sony BTF's internal MPX
tda1997x NXP TDA1997x HDMI receiver
tda7432 Philips TDA7432 audio processor
tda9840 Philips TDA9840 audio processor
tea6415c Philips TEA6415C audio processor
tea6420 Philips TEA6420 audio processor
tlv320aic23b Texas Instruments TLV320AIC23B audio codec
tvaudio Simple audio decoder chips
uda1342 Philips UDA1342 audio codec
vp27smpx Panasonic VP27's internal MPX
wm8739 Wolfson Microelectronics WM8739 stereo audio ADC
wm8775 Wolfson Microelectronics WM8775 audio ADC with input mixer
============ ==========================================================
Audio/Video compression chips
-----------------------------
============ ==========================================================
Driver Name
============ ==========================================================
saa6752hs Philips SAA6752HS MPEG-2 Audio/Video Encoder
============ ==========================================================
Camera sensor devices
---------------------
============ ==========================================================
Driver Name
============ ==========================================================
et8ek8 ET8EK8 camera sensor
hi556 Hynix Hi-556 sensor
imx214 Sony IMX214 sensor
imx219 Sony IMX219 sensor
imx258 Sony IMX258 sensor
imx274 Sony IMX274 sensor
imx290 Sony IMX290 sensor
imx319 Sony IMX319 sensor
imx355 Sony IMX355 sensor
m5mols Fujitsu M-5MOLS 8MP sensor
mt9m001 mt9m001
mt9m032 MT9M032 camera sensor
mt9m111 mt9m111, mt9m112 and mt9m131
mt9p031 Aptina MT9P031
mt9t001 Aptina MT9T001
mt9t112 Aptina MT9T111/MT9T112
mt9v011 Micron mt9v011 sensor
mt9v032 Micron MT9V032 sensor
mt9v111 Aptina MT9V111 sensor
noon010pc30 Siliconfile NOON010PC30 sensor
ov13858 OmniVision OV13858 sensor
ov2640 OmniVision OV2640 sensor
ov2659 OmniVision OV2659 sensor
ov2680 OmniVision OV2680 sensor
ov2685 OmniVision OV2685 sensor
ov5640 OmniVision OV5640 sensor
ov5645 OmniVision OV5645 sensor
ov5647 OmniVision OV5647 sensor
ov5670 OmniVision OV5670 sensor
ov5675 OmniVision OV5675 sensor
ov5695 OmniVision OV5695 sensor
ov6650 OmniVision OV6650 sensor
ov7251 OmniVision OV7251 sensor
ov7640 OmniVision OV7640 sensor
ov7670 OmniVision OV7670 sensor
ov772x OmniVision OV772x sensor
ov7740 OmniVision OV7740 sensor
ov8856 OmniVision OV8856 sensor
ov9640 OmniVision OV9640 sensor
ov9650 OmniVision OV9650/OV9652 sensor
rj54n1cb0c Sharp RJ54N1CB0C sensor
s5c73m3 Samsung S5C73M3 sensor
s5k4ecgx Samsung S5K4ECGX sensor
s5k5baf Samsung S5K5BAF sensor
s5k6a3 Samsung S5K6A3 sensor
s5k6aa Samsung S5K6AAFX sensor
smiapp SMIA++/SMIA sensor
sr030pc30 Siliconfile SR030PC30 sensor
vs6624 ST VS6624 sensor
============ ==========================================================
Flash devices
-------------
============ ==========================================================
Driver Name
============ ==========================================================
adp1653 ADP1653 flash
lm3560 LM3560 dual flash driver
lm3646 LM3646 dual flash driver
============ ==========================================================
IR I2C driver
-------------
============ ==========================================================
Driver Name
============ ==========================================================
ir-kbd-i2c I2C module for IR
============ ==========================================================
Lens drivers
------------
============ ==========================================================
Driver Name
============ ==========================================================
ad5820 AD5820 lens voice coil
ak7375 AK7375 lens voice coil
dw9714 DW9714 lens voice coil
dw9807-vcm DW9807 lens voice coil
============ ==========================================================
Miscellaneous helper chips
--------------------------
============ ==========================================================
Driver Name
============ ==========================================================
video-i2c I2C transport video
m52790 Mitsubishi M52790 A/V switch
st-mipid02 STMicroelectronics MIPID02 CSI-2 to PARALLEL bridge
ths7303 THS7303/53 Video Amplifier
============ ==========================================================
RDS decoders
------------
============ ==========================================================
Driver Name
============ ==========================================================
saa6588 SAA6588 Radio Chip RDS decoder
============ ==========================================================
SDR tuner chips
---------------
============ ==========================================================
Driver Name
============ ==========================================================
max2175 Maxim 2175 RF to Bits tuner
============ ==========================================================
Video and audio decoders
------------------------
============ ==========================================================
Driver Name
============ ==========================================================
cx25840 Conexant CX2584x audio/video decoders
saa717x Philips SAA7171/3/4 audio/video decoders
============ ==========================================================
Video decoders
--------------
============ ==========================================================
Driver Name
============ ==========================================================
adv7180 Analog Devices ADV7180 decoder
adv7183 Analog Devices ADV7183 decoder
adv748x Analog Devices ADV748x decoder
adv7604 Analog Devices ADV7604 decoder
adv7842 Analog Devices ADV7842 decoder
bt819 BT819A VideoStream decoder
bt856 BT856 VideoStream decoder
bt866 BT866 VideoStream decoder
ks0127 KS0127 video decoder
ml86v7667 OKI ML86V7667 video decoder
saa7110 Philips SAA7110 video decoder
saa7115 Philips SAA7111/3/4/5 video decoders
tc358743 Toshiba TC358743 decoder
tvp514x Texas Instruments TVP514x video decoder
tvp5150 Texas Instruments TVP5150 video decoder
tvp7002 Texas Instruments TVP7002 video decoder
tw2804 Techwell TW2804 multiple video decoder
tw9903 Techwell TW9903 video decoder
tw9906 Techwell TW9906 video decoder
tw9910 Techwell TW9910 video decoder
vpx3220 vpx3220a, vpx3216b & vpx3214c video decoders
============ ==========================================================
Video encoders
--------------
============ ==========================================================
Driver Name
============ ==========================================================
ad9389b Analog Devices AD9389B encoder
adv7170 Analog Devices ADV7170 video encoder
adv7175 Analog Devices ADV7175 video encoder
adv7343 ADV7343 video encoder
adv7393 ADV7393 video encoder
adv7511-v4l2 Analog Devices ADV7511 encoder
ak881x AK8813/AK8814 video encoders
saa7127 Philips SAA7127/9 digital video encoders
saa7185 Philips SAA7185 video encoder
ths8200 Texas Instruments THS8200 video encoder
============ ==========================================================
Video improvement chips
-----------------------
============ ==========================================================
Driver Name
============ ==========================================================
upd64031a NEC Electronics uPD64031A Ghost Reduction
upd64083 NEC Electronics uPD64083 3-Dimensional Y/C separation
============ ==========================================================
Tuner drivers
-------------
============ ==================================================
Driver Name
============ ==================================================
e4000 Elonics E4000 silicon tuner
fc0011 Fitipower FC0011 silicon tuner
fc0012 Fitipower FC0012 silicon tuner
fc0013 Fitipower FC0013 silicon tuner
fc2580 FCI FC2580 silicon tuner
it913x ITE Tech IT913x silicon tuner
m88rs6000t Montage M88RS6000 internal tuner
max2165 Maxim MAX2165 silicon tuner
mc44s803 Freescale MC44S803 Low Power CMOS Broadband tuners
msi001 Mirics MSi001
mt2060 Microtune MT2060 silicon IF tuner
mt2063 Microtune MT2063 silicon IF tuner
mt20xx Microtune 2032 / 2050 tuners
mt2131 Microtune MT2131 silicon tuner
mt2266 Microtune MT2266 silicon tuner
mxl301rf MaxLinear MxL301RF tuner
mxl5005s MaxLinear MSL5005S silicon tuner
mxl5007t MaxLinear MxL5007T silicon tuner
qm1d1b0004 Sharp QM1D1B0004 tuner
qm1d1c0042 Sharp QM1D1C0042 tuner
qt1010 Quantek QT1010 silicon tuner
r820t Rafael Micro R820T silicon tuner
si2157 Silicon Labs Si2157 silicon tuner
tuner-types Simple tuner support
tda18212 NXP TDA18212 silicon tuner
tda18218 NXP TDA18218 silicon tuner
tda18250 NXP TDA18250 silicon tuner
tda18271 NXP TDA18271 silicon tuner
tda827x Philips TDA827X silicon tuner
tda8290 TDA 8290/8295 + 8275(a)/18271 tuner combo
tda9887 TDA 9885/6/7 analog IF demodulator
tea5761 TEA 5761 radio tuner
tea5767 TEA 5767 radio tuner
tua9001 Infineon TUA9001 silicon tuner
tuner-xc2028 XCeive xc2028/xc3028 tuners
xc4000 Xceive XC4000 silicon tuner
xc5000 Xceive XC5000 silicon tuner
============ ==================================================
.. toctree::
:maxdepth: 1
tuner-cardlist
frontend-cardlist

View File

@ -102,6 +102,35 @@ Some of the features of this driver include:
problems with the ADV718x video decoders.
Topology
--------
The following shows the media topologies for the i.MX6Q SabreSD and
i.MX6Q SabreAuto. Refer to these diagrams in the entity descriptions
in the next section.
The i.MX5/6 topologies can differ upstream from the IPUv3 CSI video
multiplexers, but the internal IPUv3 topology downstream from there
is common to all i.MX5/6 platforms. For example, the SabreSD, with the
MIPI CSI-2 OV5640 sensor, requires the i.MX6 MIPI CSI-2 receiver. But
the SabreAuto has only the ADV7180 decoder on a parallel bt.656 bus, and
therefore does not require the MIPI CSI-2 receiver, so it is missing in
its graph.
.. _imx6q_topology_graph:
.. kernel-figure:: imx6q-sabresd.dot
:alt: Diagram of the i.MX6Q SabreSD media pipeline topology
:align: center
Media pipeline graph on i.MX6Q SabreSD
.. kernel-figure:: imx6q-sabreauto.dot
:alt: Diagram of the i.MX6Q SabreAuto media pipeline topology
:align: center
Media pipeline graph on i.MX6Q SabreAuto
Entities
--------
@ -191,14 +220,7 @@ or unqualified interlaced). The capture interface will enforce the same
field order as the source pad field order (interlaced-bt if source pad
is seq-bt, interlaced-tb if source pad is seq-tb).
This subdev can generate the following event when enabling the second
IDMAC source pad:
- V4L2_EVENT_IMX_FRAME_INTERVAL_ERROR
The user application can subscribe to this event from the ipuX_csiY
subdev node. This event is generated by the Frame Interval Monitor
(see below for more on the FIM).
For events produced by ipuX_csiY, see ref:`imx_api_ipuX_csiY`.
Cropping in ipuX_csiY
---------------------
@ -247,84 +269,7 @@ rate by half at the IDMAC output source pad:
Frame Interval Monitor in ipuX_csiY
-----------------------------------
The adv718x decoders can occasionally send corrupt fields during
NTSC/PAL signal re-sync (too little or too many video lines). When
this happens, the IPU triggers a mechanism to re-establish vertical
sync by adding 1 dummy line every frame, which causes a rolling effect
from image to image, and can last a long time before a stable image is
recovered. Or sometimes the mechanism doesn't work at all, causing a
permanent split image (one frame contains lines from two consecutive
captured images).
From experiment it was found that during image rolling, the frame
intervals (elapsed time between two EOF's) drop below the nominal
value for the current standard, by about one frame time (60 usec),
and remain at that value until rolling stops.
While the reason for this observation isn't known (the IPU dummy
line mechanism should show an increase in the intervals by 1 line
time every frame, not a fixed value), we can use it to detect the
corrupt fields using a frame interval monitor. If the FIM detects a
bad frame interval, the ipuX_csiY subdev will send the event
V4L2_EVENT_IMX_FRAME_INTERVAL_ERROR. Userland can register with
the FIM event notification on the ipuX_csiY subdev device node.
Userland can issue a streaming restart when this event is received
to correct the rolling/split image.
The ipuX_csiY subdev includes custom controls to tweak some dials for
FIM. If one of these controls is changed during streaming, the FIM will
be reset and will continue at the new settings.
- V4L2_CID_IMX_FIM_ENABLE
Enable/disable the FIM.
- V4L2_CID_IMX_FIM_NUM
How many frame interval measurements to average before comparing against
the nominal frame interval reported by the sensor. This can reduce noise
caused by interrupt latency.
- V4L2_CID_IMX_FIM_TOLERANCE_MIN
If the averaged intervals fall outside nominal by this amount, in
microseconds, the V4L2_EVENT_IMX_FRAME_INTERVAL_ERROR event is sent.
- V4L2_CID_IMX_FIM_TOLERANCE_MAX
If any intervals are higher than this value, those samples are
discarded and do not enter into the average. This can be used to
discard really high interval errors that might be due to interrupt
latency from high system load.
- V4L2_CID_IMX_FIM_NUM_SKIP
How many frames to skip after a FIM reset or stream restart before
FIM begins to average intervals.
- V4L2_CID_IMX_FIM_ICAP_CHANNEL
- V4L2_CID_IMX_FIM_ICAP_EDGE
These controls will configure an input capture channel as the method
for measuring frame intervals. This is superior to the default method
of measuring frame intervals via EOF interrupt, since it is not subject
to uncertainty errors introduced by interrupt latency.
Input capture requires hardware support. A VSYNC signal must be routed
to one of the i.MX6 input capture channel pads.
V4L2_CID_IMX_FIM_ICAP_CHANNEL configures which i.MX6 input capture
channel to use. This must be 0 or 1.
V4L2_CID_IMX_FIM_ICAP_EDGE configures which signal edge will trigger
input capture events. By default the input capture method is disabled
with a value of IRQ_TYPE_NONE. Set this control to IRQ_TYPE_EDGE_RISING,
IRQ_TYPE_EDGE_FALLING, or IRQ_TYPE_EDGE_BOTH to enable input capture,
triggered on the given signal edge(s).
When input capture is disabled, frame intervals will be measured via
EOF interrupt.
See ref:`imx_api_FIM`.
ipuX_vdic
---------
@ -461,8 +406,8 @@ The following are specific usage notes for the Sabre* reference
boards:
SabreLite with OV5642 and OV5640
--------------------------------
i.MX6Q SabreLite with OV5642 and OV5640
---------------------------------------
This platform requires the OmniVision OV5642 module with a parallel
camera interface, and the OV5640 module with a MIPI CSI-2
@ -631,44 +576,108 @@ used to select any supported YUV pixelformat on /dev/video2.
This platform accepts Composite Video analog inputs to the ADV7180 on
Ain1 (connector J42).
SabreSD with MIPI CSI-2 OV5640
------------------------------
i.MX6Q SabreSD with MIPI CSI-2 OV5640
-------------------------------------
Similarly to SabreLite, the SabreSD supports a parallel interface
OV5642 module on IPU1 CSI0, and a MIPI CSI-2 OV5640 module. The OV5642
connects to i2c bus 1 and the OV5640 to i2c bus 2.
Similarly to i.MX6Q SabreLite, the i.MX6Q SabreSD supports a parallel
interface OV5642 module on IPU1 CSI0, and a MIPI CSI-2 OV5640
module. The OV5642 connects to i2c bus 1 and the OV5640 to i2c bus 2.
The device tree for SabreSD includes OF graphs for both the parallel
OV5642 and the MIPI CSI-2 OV5640, but as of this writing only the MIPI
CSI-2 OV5640 has been tested, so the OV5642 node is currently disabled.
The OV5640 module connects to MIPI connector J5 (sorry I don't have the
compatible module part number or URL).
The OV5640 module connects to MIPI connector J5. The NXP part number
for the OV5640 module that connects to the SabreSD board is H120729.
The following example configures a direct conversion pipeline to capture
from the OV5640, transmitting on MIPI CSI-2 virtual channel 1. $sensorfmt
can be any format supported by the OV5640. $sensordim is the frame
dimension part of $sensorfmt (minus the mbus pixel code). $outputfmt can
be any format supported by the ipu1_ic_prpenc entity at its output pad:
The following example configures unprocessed video capture pipeline to
capture from the OV5640, transmitting on MIPI CSI-2 virtual channel 0:
.. code-block:: none
# Setup links
media-ctl -l "'ov5640 1-003c':0 -> 'imx6-mipi-csi2':0[1]"
media-ctl -l "'imx6-mipi-csi2':2 -> 'ipu1_csi1':0[1]"
media-ctl -l "'ipu1_csi1':1 -> 'ipu1_ic_prp':0[1]"
media-ctl -l "'imx6-mipi-csi2':1 -> 'ipu1_csi0_mux':0[1]"
media-ctl -l "'ipu1_csi0_mux':2 -> 'ipu1_csi0':0[1]"
media-ctl -l "'ipu1_csi0':2 -> 'ipu1_csi0 capture':0[1]"
# Configure pads
media-ctl -V "'ov5640 1-003c':0 [fmt:UYVY2X8/640x480]"
media-ctl -V "'imx6-mipi-csi2':1 [fmt:UYVY2X8/640x480]"
media-ctl -V "'ipu1_csi0_mux':0 [fmt:UYVY2X8/640x480]"
media-ctl -V "'ipu1_csi0':0 [fmt:AYUV32/640x480]"
Streaming can then begin on "ipu1_csi0 capture" node. The v4l2-ctl
tool can be used to select any supported pixelformat on the capture
device node.
To determine what is the /dev/video node correspondent to
"ipu1_csi0 capture":
.. code-block:: none
media-ctl -e "ipu1_csi0 capture"
/dev/video0
/dev/video0 is the streaming element in this case.
Starting the streaming via v4l2-ctl:
.. code-block:: none
v4l2-ctl --stream-mmap -d /dev/video0
Starting the streaming via Gstreamer and sending the content to the display:
.. code-block:: none
gst-launch-1.0 v4l2src device=/dev/video0 ! kmssink
The following example configures a direct conversion pipeline to capture
from the OV5640, transmitting on MIPI CSI-2 virtual channel 0. It also
shows colorspace conversion and scaling at IC output.
.. code-block:: none
# Setup links
media-ctl -l "'ov5640 1-003c':0 -> 'imx6-mipi-csi2':0[1]"
media-ctl -l "'imx6-mipi-csi2':1 -> 'ipu1_csi0_mux':0[1]"
media-ctl -l "'ipu1_csi0_mux':2 -> 'ipu1_csi0':0[1]"
media-ctl -l "'ipu1_csi0':1 -> 'ipu1_ic_prp':0[1]"
media-ctl -l "'ipu1_ic_prp':1 -> 'ipu1_ic_prpenc':0[1]"
media-ctl -l "'ipu1_ic_prpenc':1 -> 'ipu1_ic_prpenc capture':0[1]"
# Configure pads
media-ctl -V "'ov5640 1-003c':0 [fmt:$sensorfmt field:none]"
media-ctl -V "'imx6-mipi-csi2':2 [fmt:$sensorfmt field:none]"
media-ctl -V "'ipu1_csi1':1 [fmt:AYUV32/$sensordim field:none]"
media-ctl -V "'ipu1_ic_prp':1 [fmt:AYUV32/$sensordim field:none]"
media-ctl -V "'ipu1_ic_prpenc':1 [fmt:$outputfmt field:none]"
media-ctl -V "'ov5640 1-003c':0 [fmt:UYVY2X8/640x480]"
media-ctl -V "'imx6-mipi-csi2':1 [fmt:UYVY2X8/640x480]"
media-ctl -V "'ipu1_csi0_mux':2 [fmt:UYVY2X8/640x480]"
media-ctl -V "'ipu1_csi0':1 [fmt:AYUV32/640x480]"
media-ctl -V "'ipu1_ic_prp':1 [fmt:AYUV32/640x480]"
media-ctl -V "'ipu1_ic_prpenc':1 [fmt:ARGB8888_1X32/800x600]"
# Set a format at the capture interface
v4l2-ctl -d /dev/video1 --set-fmt-video=pixelformat=RGB3
Streaming can then begin on "ipu1_ic_prpenc capture" node. The v4l2-ctl
tool can be used to select any supported YUV or RGB pixelformat on the
capture device node.
Streaming can then begin on "ipu1_ic_prpenc capture" node.
To determine what is the /dev/video node correspondent to
"ipu1_ic_prpenc capture":
.. code-block:: none
media-ctl -e "ipu1_ic_prpenc capture"
/dev/video1
/dev/video1 is the streaming element in this case.
Starting the streaming via v4l2-ctl:
.. code-block:: none
v4l2-ctl --stream-mmap -d /dev/video1
Starting the streaming via Gstreamer and sending the content to the display:
.. code-block:: none
gst-launch-1.0 v4l2src device=/dev/video1 ! kmssink
Known Issues
------------

View File

@ -0,0 +1,51 @@
digraph board {
rankdir=TB
n00000001 [label="{{<port0> 0} | ipu1_csi0\n/dev/v4l-subdev0 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n00000001:port2 -> n00000005 [style=dashed]
n00000001:port1 -> n0000000f:port0 [style=dashed]
n00000001:port1 -> n0000000b:port0 [style=dashed]
n00000005 [label="ipu1_csi0 capture\n/dev/video0", shape=box, style=filled, fillcolor=yellow]
n0000000b [label="{{<port0> 0 | <port1> 1} | ipu1_vdic\n/dev/v4l-subdev1 | {<port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000000b:port2 -> n0000000f:port0 [style=dashed]
n0000000f [label="{{<port0> 0} | ipu1_ic_prp\n/dev/v4l-subdev2 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000000f:port1 -> n00000013:port0 [style=dashed]
n0000000f:port2 -> n0000001c:port0 [style=dashed]
n00000013 [label="{{<port0> 0} | ipu1_ic_prpenc\n/dev/v4l-subdev3 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n00000013:port1 -> n00000016 [style=dashed]
n00000016 [label="ipu1_ic_prpenc capture\n/dev/video1", shape=box, style=filled, fillcolor=yellow]
n0000001c [label="{{<port0> 0} | ipu1_ic_prpvf\n/dev/v4l-subdev4 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n0000001c:port1 -> n0000001f [style=dashed]
n0000001f [label="ipu1_ic_prpvf capture\n/dev/video2", shape=box, style=filled, fillcolor=yellow]
n0000002f [label="{{<port0> 0} | ipu1_csi1\n/dev/v4l-subdev5 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000002f:port2 -> n00000033 [style=dashed]
n0000002f:port1 -> n0000000f:port0 [style=dashed]
n0000002f:port1 -> n0000000b:port0 [style=dashed]
n00000033 [label="ipu1_csi1 capture\n/dev/video3", shape=box, style=filled, fillcolor=yellow]
n0000003d [label="{{<port0> 0} | ipu2_csi0\n/dev/v4l-subdev6 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000003d:port2 -> n00000041 [style=dashed]
n0000003d:port1 -> n0000004b:port0 [style=dashed]
n0000003d:port1 -> n00000047:port0 [style=dashed]
n00000041 [label="ipu2_csi0 capture\n/dev/video4", shape=box, style=filled, fillcolor=yellow]
n00000047 [label="{{<port0> 0 | <port1> 1} | ipu2_vdic\n/dev/v4l-subdev7 | {<port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n00000047:port2 -> n0000004b:port0 [style=dashed]
n0000004b [label="{{<port0> 0} | ipu2_ic_prp\n/dev/v4l-subdev8 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000004b:port1 -> n0000004f:port0 [style=dashed]
n0000004b:port2 -> n00000058:port0 [style=dashed]
n0000004f [label="{{<port0> 0} | ipu2_ic_prpenc\n/dev/v4l-subdev9 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n0000004f:port1 -> n00000052 [style=dashed]
n00000052 [label="ipu2_ic_prpenc capture\n/dev/video5", shape=box, style=filled, fillcolor=yellow]
n00000058 [label="{{<port0> 0} | ipu2_ic_prpvf\n/dev/v4l-subdev10 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n00000058:port1 -> n0000005b [style=dashed]
n0000005b [label="ipu2_ic_prpvf capture\n/dev/video6", shape=box, style=filled, fillcolor=yellow]
n0000006b [label="{{<port0> 0} | ipu2_csi1\n/dev/v4l-subdev11 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000006b:port2 -> n0000006f [style=dashed]
n0000006b:port1 -> n0000004b:port0 [style=dashed]
n0000006b:port1 -> n00000047:port0 [style=dashed]
n0000006f [label="ipu2_csi1 capture\n/dev/video7", shape=box, style=filled, fillcolor=yellow]
n00000079 [label="{{<port0> 0 | <port1> 1} | ipu1_csi0_mux\n/dev/v4l-subdev12 | {<port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n00000079:port2 -> n00000001:port0 [style=dashed]
n0000007d [label="{{<port0> 0 | <port1> 1} | ipu2_csi1_mux\n/dev/v4l-subdev13 | {<port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000007d:port2 -> n0000006b:port0 [style=dashed]
n00000081 [label="{{} | adv7180 3-0021\n/dev/v4l-subdev14 | {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
n00000081:port0 -> n00000079:port1 [style=dashed]
}

View File

@ -0,0 +1,56 @@
digraph board {
rankdir=TB
n00000001 [label="{{<port0> 0} | ipu1_csi0\n/dev/v4l-subdev0 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n00000001:port2 -> n00000005 [style=dashed]
n00000001:port1 -> n0000000f:port0 [style=dashed]
n00000001:port1 -> n0000000b:port0 [style=dashed]
n00000005 [label="ipu1_csi0 capture\n/dev/video0", shape=box, style=filled, fillcolor=yellow]
n0000000b [label="{{<port0> 0 | <port1> 1} | ipu1_vdic\n/dev/v4l-subdev1 | {<port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000000b:port2 -> n0000000f:port0 [style=dashed]
n0000000f [label="{{<port0> 0} | ipu1_ic_prp\n/dev/v4l-subdev2 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000000f:port1 -> n00000013:port0 [style=dashed]
n0000000f:port2 -> n0000001c:port0 [style=dashed]
n00000013 [label="{{<port0> 0} | ipu1_ic_prpenc\n/dev/v4l-subdev3 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n00000013:port1 -> n00000016 [style=dashed]
n00000016 [label="ipu1_ic_prpenc capture\n/dev/video1", shape=box, style=filled, fillcolor=yellow]
n0000001c [label="{{<port0> 0} | ipu1_ic_prpvf\n/dev/v4l-subdev4 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n0000001c:port1 -> n0000001f [style=dashed]
n0000001f [label="ipu1_ic_prpvf capture\n/dev/video2", shape=box, style=filled, fillcolor=yellow]
n0000002f [label="{{<port0> 0} | ipu1_csi1\n/dev/v4l-subdev5 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000002f:port2 -> n00000033 [style=dashed]
n0000002f:port1 -> n0000000f:port0 [style=dashed]
n0000002f:port1 -> n0000000b:port0 [style=dashed]
n00000033 [label="ipu1_csi1 capture\n/dev/video3", shape=box, style=filled, fillcolor=yellow]
n0000003d [label="{{<port0> 0} | ipu2_csi0\n/dev/v4l-subdev6 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000003d:port2 -> n00000041 [style=dashed]
n0000003d:port1 -> n0000004b:port0 [style=dashed]
n0000003d:port1 -> n00000047:port0 [style=dashed]
n00000041 [label="ipu2_csi0 capture\n/dev/video4", shape=box, style=filled, fillcolor=yellow]
n00000047 [label="{{<port0> 0 | <port1> 1} | ipu2_vdic\n/dev/v4l-subdev7 | {<port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n00000047:port2 -> n0000004b:port0 [style=dashed]
n0000004b [label="{{<port0> 0} | ipu2_ic_prp\n/dev/v4l-subdev8 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000004b:port1 -> n0000004f:port0 [style=dashed]
n0000004b:port2 -> n00000058:port0 [style=dashed]
n0000004f [label="{{<port0> 0} | ipu2_ic_prpenc\n/dev/v4l-subdev9 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n0000004f:port1 -> n00000052 [style=dashed]
n00000052 [label="ipu2_ic_prpenc capture\n/dev/video5", shape=box, style=filled, fillcolor=yellow]
n00000058 [label="{{<port0> 0} | ipu2_ic_prpvf\n/dev/v4l-subdev10 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n00000058:port1 -> n0000005b [style=dashed]
n0000005b [label="ipu2_ic_prpvf capture\n/dev/video6", shape=box, style=filled, fillcolor=yellow]
n0000006b [label="{{<port0> 0} | ipu2_csi1\n/dev/v4l-subdev11 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000006b:port2 -> n0000006f [style=dashed]
n0000006b:port1 -> n0000004b:port0 [style=dashed]
n0000006b:port1 -> n00000047:port0 [style=dashed]
n0000006f [label="ipu2_csi1 capture\n/dev/video7", shape=box, style=filled, fillcolor=yellow]
n00000079 [label="{{<port0> 0} | imx6-mipi-csi2\n/dev/v4l-subdev12 | {<port1> 1 | <port2> 2 | <port3> 3 | <port4> 4}}", shape=Mrecord, style=filled, fillcolor=green]
n00000079:port2 -> n0000002f:port0 [style=dashed]
n00000079:port3 -> n0000003d:port0 [style=dashed]
n00000079:port1 -> n0000007f:port0 [style=dashed]
n00000079:port4 -> n00000083:port0 [style=dashed]
n0000007f [label="{{<port0> 0 | <port1> 1} | ipu1_csi0_mux\n/dev/v4l-subdev13 | {<port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000007f:port2 -> n00000001:port0 [style=dashed]
n00000083 [label="{{<port0> 0 | <port1> 1} | ipu2_csi1_mux\n/dev/v4l-subdev14 | {<port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n00000083:port2 -> n0000006b:port0 [style=dashed]
n00000087 [label="{{} | ov5640 1-003c\n/dev/v4l-subdev15 | {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
n00000087:port0 -> n00000079:port0 [style=dashed]
}

View File

@ -0,0 +1,61 @@
.. SPDX-License-Identifier: GPL-2.0
.. include:: <isonum.txt>
====================================
Media subsystem admin and user guide
====================================
This section contains usage information about media subsystem and
its supported drivers.
Please see:
- :doc:`/userspace-api/media/index`
for the userspace APIs used on media devices.
- :doc:`/driver-api/media/index`
for driver development information and Kernel APIs used by
media devices;
The media subsystem
===================
.. only:: html
.. class:: toc-title
Table of Contents
.. toctree::
:maxdepth: 2
:numbered:
intro
building
remote-controller
dvb
cardlist
v4l-drivers
dvb-drivers
cec-drivers
**Copyright** |copy| 1999-2020 : LinuxTV Developers
::
This documentation is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option) any
later version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details.
For more details see the file COPYING in the source distribution of Linux.

View File

@ -0,0 +1,27 @@
.. SPDX-License-Identifier: GPL-2.0
============
Introduction
============
The media subsystem consists on Linux support for several different types
of devices:
- Audio and video grabbers;
- PC and Laptop Cameras;
- Complex cameras found on Embedded hardware;
- Analog and digital TV;
- HDMI Customer Electronics Control (CEC);
- Multi-touch input devices;
- Remote Controllers;
- Media encoders and decoders.
Due to the diversity of devices, the subsystem provides several different
APIs:
- Remote Controller API;
- HDMI CEC API;
- Video4Linux API;
- Media controller API;
- Video4Linux Request API (experimental);
- Digital TV API (also known as DVB API).

View File

@ -231,12 +231,32 @@ Configuring the Intel IPU3
The IPU3 ImgU pipelines can be configured using the Media Controller, defined at
:ref:`media_controller`.
Firmware binary selection
-------------------------
Running mode and firmware binary selection
------------------------------------------
ImgU works based on firmware, currently the ImgU firmware support run 2 pipes in
time-sharing with single input frame data. Each pipe can run at certain mode -
"VIDEO" or "STILL", "VIDEO" mode is commonly used for video frames capture, and
"STILL" is used for still frame capture. However, you can also select "VIDEO" to
capture still frames if you want to capture images with less system load and
power. For "STILL" mode, ImgU will try to use smaller BDS factor and output
larger bayer frame for further YUV processing than "VIDEO" mode to get high
quality images. Besides, "STILL" mode need XNR3 to do noise reduction, hence
"STILL" mode will need more power and memory bandwidth than "VIDEO" mode. TNR
will be enabled in "VIDEO" mode and bypassed by "STILL" mode. ImgU is running at
“VIDEO” mode by default, the user can use v4l2 control V4L2_CID_INTEL_IPU3_MODE
(currently defined in drivers/staging/media/ipu3/include/intel-ipu3.h) to query
and set the running mode. For user, there is no difference for buffer queueing
between the "VIDEO" and "STILL" mode, mandatory input and main output node
should be enabled and buffers need be queued, the statistics and the view-finder
queues are optional.
The firmware binary will be selected according to current running mode, such log
"using binary if_to_osys_striped " or "using binary if_to_osys_primary_striped"
could be observed if you enable the ImgU dynamic debug, the binary
if_to_osys_striped is selected for "VIDEO" and the binary
"if_to_osys_primary_striped" is selected for "STILL".
The firmware binary is selected using the V4L2_CID_INTEL_IPU3_MODE, currently
defined in drivers/staging/media/ipu3/include/intel-ipu3.h . "VIDEO" and "STILL"
modes are available.
Processing the image in raw Bayer format
----------------------------------------
@ -363,6 +383,19 @@ v4l2n --pipe=4 --load=/tmp/frame-#.bin --open=/dev/video4
--output=/tmp/frames.3A --fmt=type:META_CAPTURE,?
--reqbufs=count:1,type:META_CAPTURE --pipe=1,2,3,4 --stream=5
You can also use yavta [#f2]_ command to do same thing as above:
.. code-block:: none
yavta --data-prefix -Bcapture-mplane -c10 -n5 -I -s2592x1944 \
--file=frame-#.out-f NV12 /dev/video5 & \
yavta --data-prefix -Bcapture-mplane -c10 -n5 -I -s2592x1944 \
--file=frame-#.vf -f NV12 /dev/video6 & \
yavta --data-prefix -Bmeta-capture -c10 -n5 -I \
--file=frame-#.3a /dev/video7 & \
yavta --data-prefix -Boutput-mplane -c10 -n5 -I -s2592x1944 \
--file=/tmp/frame-in.cio2 -f IPU3_SGRBG10 /dev/video4
where /dev/video4, /dev/video5, /dev/video6 and /dev/video7 devices point to
input, output, viewfinder and 3A statistics video nodes respectively.
@ -429,16 +462,16 @@ set of parameters as input. The major stages of pipelines are shown here:
o [label="Total Color Correction"]
p [label="XNR3"]
q [label="TNR"]
r [label="DDR"]
r [label="DDR", style=filled, fillcolor=yellow, shape=cylinder]
s [label="YUV Downscaling"]
t [label="DDR", style=filled, fillcolor=yellow, shape=cylinder]
{ rank=same; a -> b -> c -> d -> e -> f }
{ rank=same; g -> h -> i -> j -> k -> l }
{ rank=same; m -> n -> o -> p -> q -> r }
{ rank=same; a -> b -> c -> d -> e -> f -> g -> h -> i }
{ rank=same; j -> k -> l -> m -> n -> o -> p -> q -> s -> t}
a -> g -> m [style=invis, weight=10]
f -> g
l -> m
a -> j [style=invis, weight=10]
i -> j
q -> r
}
The table below presents a description of the above algorithms.

View File

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 76 KiB

View File

@ -12,7 +12,7 @@ IVTV cards list
* - Card number
- Card name
- PCI IDs
- PCI subsystem IDs
* - 0
- Hauppauge WinTV PVR-250

View File

@ -87,47 +87,6 @@ Usage:
motioneye (<http://popies.net/meye/>)
for getting ppm or jpg snapshots, mjpeg video
Private API
-----------
The driver supports frame grabbing with the video4linux API,
so all video4linux tools (like xawtv) should work with this driver.
Besides the video4linux interface, the driver has a private interface
for accessing the Motion Eye extended parameters (camera sharpness,
agc, video framerate), the snapshot and the MJPEG capture facilities.
This interface consists of several ioctls (prototypes and structures
can be found in include/linux/meye.h):
MEYEIOC_G_PARAMS and MEYEIOC_S_PARAMS
Get and set the extended parameters of the motion eye camera.
The user should always query the current parameters with
MEYEIOC_G_PARAMS, change what he likes and then issue the
MEYEIOC_S_PARAMS call (checking for -EINVAL). The extended
parameters are described by the meye_params structure.
MEYEIOC_QBUF_CAPT
Queue a buffer for capture (the buffers must have been
obtained with a VIDIOCGMBUF call and mmap'ed by the
application). The argument to MEYEIOC_QBUF_CAPT is the
buffer number to queue (or -1 to end capture). The first
call to MEYEIOC_QBUF_CAPT starts the streaming capture.
MEYEIOC_SYNC
Takes as an argument the buffer number you want to sync.
This ioctl blocks until the buffer is filled and ready
for the application to use. It returns the buffer size.
MEYEIOC_STILLCAPT and MEYEIOC_STILLJCAPT
Takes a snapshot in an uncompressed or compressed jpeg format.
This ioctl blocks until the snapshot is done and returns (for
jpeg snapshot) the size of the image. The image data is
available from the first mmap'ed buffer.
Look at the 'motioneye' application code for an actual example.
Bugs / Todo
-----------

View File

@ -0,0 +1,28 @@
.. SPDX-License-Identifier: GPL-2.0
Firewire driver
===============
The media subsystem also provides a firewire driver for digital TV:
======= =====================
Driver Name
======= =====================
firedtv FireDTV and FloppyDTV
======= =====================
Test drivers
============
In order to test userspace applications, there's a number of virtual
drivers, with provide test functionality, simulating real hardware
devices:
======= ======================================
Driver Name
======= ======================================
vicodec Virtual Codec Driver
vim2m Virtual Memory-to-Memory Driver
vimc Virtual Media Controller Driver (VIMC)
vivid Virtual Video Test Driver
======= ======================================

View File

@ -0,0 +1,92 @@
.. SPDX-License-Identifier: GPL-2.0
.. include:: <isonum.txt>
OMAP 3 Image Signal Processor (ISP) driver
==========================================
Copyright |copy| 2010 Nokia Corporation
Copyright |copy| 2009 Texas Instruments, Inc.
Contacts: Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
Sakari Ailus <sakari.ailus@iki.fi>, David Cohen <dacohen@gmail.com>
Introduction
------------
This file documents the Texas Instruments OMAP 3 Image Signal Processor (ISP)
driver located under drivers/media/platform/omap3isp. The original driver was
written by Texas Instruments but since that it has been rewritten (twice) at
Nokia.
The driver has been successfully used on the following versions of OMAP 3:
- 3430
- 3530
- 3630
The driver implements V4L2, Media controller and v4l2_subdev interfaces.
Sensor, lens and flash drivers using the v4l2_subdev interface in the kernel
are supported.
Split to subdevs
----------------
The OMAP 3 ISP is split into V4L2 subdevs, each of the blocks inside the ISP
having one subdev to represent it. Each of the subdevs provide a V4L2 subdev
interface to userspace.
- OMAP3 ISP CCP2
- OMAP3 ISP CSI2a
- OMAP3 ISP CCDC
- OMAP3 ISP preview
- OMAP3 ISP resizer
- OMAP3 ISP AEWB
- OMAP3 ISP AF
- OMAP3 ISP histogram
Each possible link in the ISP is modelled by a link in the Media controller
interface. For an example program see [#]_.
Controlling the OMAP 3 ISP
--------------------------
In general, the settings given to the OMAP 3 ISP take effect at the beginning
of the following frame. This is done when the module becomes idle during the
vertical blanking period on the sensor. In memory-to-memory operation the pipe
is run one frame at a time. Applying the settings is done between the frames.
All the blocks in the ISP, excluding the CSI-2 and possibly the CCP2 receiver,
insist on receiving complete frames. Sensors must thus never send the ISP
partial frames.
Autoidle does have issues with some ISP blocks on the 3430, at least.
Autoidle is only enabled on 3630 when the omap3isp module parameter autoidle
is non-zero.
Technical reference manuals (TRMs) and other documentation
----------------------------------------------------------
OMAP 3430 TRM:
<URL:http://focus.ti.com/pdfs/wtbu/OMAP34xx_ES3.1.x_PUBLIC_TRM_vZM.zip>
Referenced 2011-03-05.
OMAP 35xx TRM:
<URL:http://www.ti.com/litv/pdf/spruf98o> Referenced 2011-03-05.
OMAP 3630 TRM:
<URL:http://focus.ti.com/pdfs/wtbu/OMAP36xx_ES1.x_PUBLIC_TRM_vQ.zip>
Referenced 2011-03-05.
DM 3730 TRM:
<URL:http://www.ti.com/litv/pdf/sprugn4h> Referenced 2011-03-06.
References
----------
.. [#] http://git.ideasonboard.org/?p=media-ctl.git;a=summary

View File

@ -0,0 +1,92 @@
.. SPDX-License-Identifier: GPL-2.0
Other USB cards list
====================
================ ====================================== =====================
Driver Card name USB IDs
================ ====================================== =====================
airspy Airspy 1d50:60a1
dvb-as102 Abilis Systems DVB-Titan 1BA6:0001
dvb-as102 PCTV Systems picoStick (74e) 2013:0246
dvb-as102 Elgato EyeTV DTT Deluxe 0fd9:002c
dvb-as102 nBox DVB-T Dongle 0b89:0007
dvb-as102 Sky IT Digital Key (green led) 2137:0001
b2c2-flexcop-usb Technisat/B2C2 FlexCop II/IIb/III 0af7:0101
Digital TV
cpia2 Vision's CPiA2 cameras 0553:0100, 0553:0140,
such as the Digital Blue QX5 0553:0151
go7007 WIS GO7007 MPEG encoder 1943:a250, 093b:a002,
093b:a004, 0eb1:6666,
0eb1:6668
hackrf HackRF Software Decoder Radio 1d50:6089
hdpvr Hauppauge HD PVR 2040:4900, 2040:4901,
2040:4902, 2040:4982,
2040:4903
msi2500 Mirics MSi3101 SDR Dongle 1df7:2500, 2040:d300
pvrusb2 Hauppauge WinTV-PVR USB2 2040:2900, 2040:2950,
2040:2400, 1164:0622,
1164:0602, 11ba:1003,
11ba:1001, 2040:7300,
2040:7500, 2040:7501,
0ccd:0039, 2040:7502,
2040:7510
pwc Creative Webcam 5 041E:400C
pwc Creative Webcam Pro Ex 041E:4011
pwc Logitech QuickCam 3000 Pro 046D:08B0
pwc Logitech QuickCam Notebook Pro 046D:08B1
pwc Logitech QuickCam 4000 Pro 046D:08B2
pwc Logitech QuickCam Zoom (old model) 046D:08B3
pwc Logitech QuickCam Zoom (new model) 046D:08B4
pwc Logitech QuickCam Orbit/Sphere 046D:08B5
pwc Logitech/Cisco VT Camera 046D:08B6
pwc Logitech ViewPort AV 100 046D:08B7
pwc Logitech QuickCam 046D:08B8
pwc Philips PCA645VC 0471:0302
pwc Philips PCA646VC 0471:0303
pwc Askey VC010 type 2 0471:0304
pwc Philips PCVC675K (Vesta) 0471:0307
pwc Philips PCVC680K (Vesta Pro) 0471:0308
pwc Philips PCVC690K (Vesta Pro Scan) 0471:030C
pwc Philips PCVC730K (ToUCam Fun), 0471:0310
PCVC830 (ToUCam II)
pwc Philips PCVC740K (ToUCam Pro), 0471:0311
PCVC840 (ToUCam II)
pwc Philips PCVC750K (ToUCam Pro Scan) 0471:0312
pwc Philips PCVC720K/40 (ToUCam XS) 0471:0313
pwc Philips SPC 900NC 0471:0329
pwc Philips SPC 880NC 0471:032C
pwc Sotec Afina Eye 04CC:8116
pwc Samsung MPC-C10 055D:9000
pwc Samsung MPC-C30 055D:9001
pwc Samsung SNC-35E (Ver3.0) 055D:9002
pwc Askey VC010 type 1 069A:0001
pwc AME Co. Afina Eye 06BE:8116
pwc Visionite VCS-UC300 0d81:1900
pwc Visionite VCS-UM100 0d81:1910
s2255drv Sensoray 2255 1943:2255, 1943:2257
stk1160 STK1160 USB video capture dongle 05e1:0408
stkwebcam Syntek DC1125 174f:a311, 05e1:0501
dvb-ttusb-budget Technotrend/Hauppauge Nova-USB devices 0b48:1003, 0b48:1004,
0b48:1005
dvb-ttusb_dec Technotrend/Hauppauge MPEG decoder 0b48:1006
DEC3000-s
dvb-ttusb_dec Technotrend/Hauppauge MPEG decoder 0b48:1007
dvb-ttusb_dec Technotrend/Hauppauge MPEG decoder 0b48:1008
DEC2000-t
dvb-ttusb_dec Technotrend/Hauppauge MPEG decoder
DEC2540-t 0b48:1009
usbtv Fushicai USBTV007 Audio-Video Grabber 1b71:3002, 1f71:3301,
1f71:3306
zr364xx USB ZR364XX Camera 08ca:0109, 041e:4024,
0d64:0108, 0546:3187,
0d64:3108, 0595:4343,
0bb0:500d, 0feb:2004,
055f:b500, 08ca:2062,
052b:1a18, 04c8:0729,
04f2:a208, 0784:0040,
06d6:0034, 0a17:0062,
06d6:003b, 0a17:004e,
041e:405d, 08ca:2102,
06d6:003d
================ ====================================== =====================

View File

@ -0,0 +1,107 @@
.. SPDX-License-Identifier: GPL-2.0
PCI drivers
===========
The PCI boards are identified by an identification called PCI ID. The PCI ID
is actually composed by two parts:
- Vendor ID and device ID;
- Subsystem ID and Subsystem device ID;
The ``lspci -nn`` command allows identifying the vendor/device PCI IDs:
.. code-block:: none
:emphasize-lines: 3
$ lspci -nn
...
00:0a.0 Multimedia controller [0480]: Philips Semiconductors SAA7131/SAA7133/SAA7135 Video Broadcast Decoder [1131:7133] (rev d1)
00:0b.0 Multimedia controller [0480]: Brooktree Corporation Bt878 Audio Capture [109e:0878] (rev 11)
01:00.0 Multimedia video controller [0400]: Conexant Systems, Inc. CX23887/8 PCIe Broadcast Audio and Video Decoder with 3D Comb [14f1:8880] (rev 0f)
02:01.0 Multimedia video controller [0400]: Internext Compression Inc iTVC15 (CX23415) Video Decoder [4444:0803] (rev 01)
02:02.0 Multimedia video controller [0400]: Conexant Systems, Inc. CX23418 Single-Chip MPEG-2 Encoder with Integrated Analog Video/Broadcast Audio Decoder [14f1:5b7a]
02:03.0 Multimedia video controller [0400]: Brooktree Corporation Bt878 Video Capture [109e:036e] (rev 11)
...
The subsystem IDs can be obtained using ``lspci -vn``
.. code-block:: none
:emphasize-lines: 4
$ lspci -vn
...
00:0a.0 0480: 1131:7133 (rev d1)
Subsystem: 1461:f01d
Flags: bus master, medium devsel, latency 32, IRQ 209
Memory at e2002000 (32-bit, non-prefetchable) [size=2K]
Capabilities: [40] Power Management version 2
...
At the above example, the first card uses the ``saa7134`` driver, and
has a vendor/device PCI ID equal to ``1131:7133`` and a PCI subsystem
ID equal to ``1461:f01d`` (see :doc:`Saa7134 card list<saa7134-cardlist>`).
Unfortunately, sometimes the same PCI subsystem ID is used by different
products. So, several media drivers allow passing a ``card=`` parameter,
in order to setup a card number that would match the correct settings for
an specific board.
The current supported PCI/PCIe cards (not including staging drivers) are
listed below\ [#]_.
.. [#] some of the drivers have sub-drivers, not shown at this table
================ ========================================================
Driver Name
================ ========================================================
altera-ci Altera FPGA based CI module
b2c2-flexcop-pci Technisat/B2C2 Air/Sky/Cable2PC PCI
bt878 DVB/ATSC Support for bt878 based TV cards
bttv BT8x8 Video For Linux
cobalt Cisco Cobalt
cx18 Conexant cx23418 MPEG encoder
cx23885 Conexant cx23885 (2388x successor)
cx25821 Conexant cx25821
cx88xx Conexant 2388x (bt878 successor)
ddbridge Digital Devices bridge
dm1105 SDMC DM1105 based PCI cards
dt3155 DT3155 frame grabber
dvb-ttpci AV7110 cards
earth-pt1 PT1 cards
earth-pt3 Earthsoft PT3 cards
hexium_gemini Hexium Gemini frame grabber
hexium_orion Hexium HV-PCI6 and Orion frame grabber
hopper HOPPER based cards
ipu3-cio2 Intel ipu3-cio2 driver
ivtv Conexant cx23416/cx23415 MPEG encoder/decoder
ivtvfb Conexant cx23415 framebuffer
mantis MANTIS based cards
meye Sony Vaio Picturebook Motion Eye
mxb Siemens-Nixdorf 'Multimedia eXtension Board'
netup-unidvb NetUP Universal DVB card
ngene Micronas nGene
pluto2 Pluto2 cards
saa7134 Philips SAA7134
saa7164 NXP SAA7164
smipcie SMI PCIe DVBSky cards
solo6x10 Bluecherry / Softlogic 6x10 capture cards (MPEG-4/H.264)
sta2x11_vip STA2X11 VIP Video For Linux
tw5864 Techwell TW5864 video/audio grabber and encoder
tw686x Intersil/Techwell TW686x
tw68 Techwell tw68x Video For Linux
================ ========================================================
Some of those drivers support multiple devices, as shown at the card
lists below:
.. toctree::
:maxdepth: 1
bttv-cardlist
cx18-cardlist
cx23885-cardlist
cx88-cardlist
ivtv-cardlist
saa7134-cardlist
saa7164-cardlist

View File

@ -0,0 +1,90 @@
.. SPDX-License-Identifier: GPL-2.0
Platform drivers
================
There are several drivers that are focused on providing support for
functionality that are already included at the main board, and don't
use neither USB nor PCI bus. Those drivers are called platform
drivers, and are very popular on embedded devices.
The current supported of platform drivers (not including staging drivers) are
listed below
================= ============================================================
Driver Name
================= ============================================================
am437x-vpfe TI AM437x VPFE
aspeed-video Aspeed AST2400 and AST2500
atmel-isc ATMEL Image Sensor Controller (ISC)
atmel-isi ATMEL Image Sensor Interface (ISI)
c8sectpfe SDR platform devices
c8sectpfe SDR platform devices
cafe_ccic Marvell 88ALP01 (Cafe) CMOS Camera Controller
cdns-csi2rx Cadence MIPI-CSI2 RX Controller
cdns-csi2tx Cadence MIPI-CSI2 TX Controller
coda-vpu Chips&Media Coda multi-standard codec IP
dm355_ccdc TI DM355 CCDC video capture
dm644x_ccdc TI DM6446 CCDC video capture
exynos-fimc-is EXYNOS4x12 FIMC-IS (Imaging Subsystem)
exynos-fimc-lite EXYNOS FIMC-LITE camera interface
exynos-gsc Samsung Exynos G-Scaler
exy Samsung S5P/EXYNOS4 SoC series Camera Subsystem
fsl-viu Freescale VIU
imx-pxp i.MX Pixel Pipeline (PXP)
isdf TI DM365 ISIF video capture
mmp_camera Marvell Armada 610 integrated camera controller
mtk_jpeg Mediatek JPEG Codec
mtk-mdp Mediatek MDP
mtk-vcodec-dec Mediatek Video Codec
mtk-vpu Mediatek Video Processor Unit
mx2_emmaprp MX2 eMMa-PrP
omap3-isp OMAP 3 Camera
omap-vout OMAP2/OMAP3 V4L2-Display
pxa_camera PXA27x Quick Capture Interface
qcom-camss Qualcomm V4L2 Camera Subsystem
rcar-csi2 R-Car MIPI CSI-2 Receiver
rcar_drif Renesas Digital Radio Interface (DRIF)
rcar-fcp Renesas Frame Compression Processor
rcar_fdp1 Renesas Fine Display Processor
rcar_jpu Renesas JPEG Processing Unit
rcar-vin R-Car Video Input (VIN)
renesas-ceu Renesas Capture Engine Unit (CEU)
rockchip-rga Rockchip Raster 2d Graphic Acceleration Unit
s3c-camif Samsung S3C24XX/S3C64XX SoC Camera Interface
s5p-csis S5P/EXYNOS MIPI-CSI2 receiver (MIPI-CSIS)
s5p-fimc S5P/EXYNOS4 FIMC/CAMIF camera interface
s5p-g2d Samsung S5P and EXYNOS4 G2D 2d graphics accelerator
s5p-jpeg Samsung S5P/Exynos3250/Exynos4 JPEG codec
s5p-mfc Samsung S5P MFC Video Codec
sh_veu SuperH VEU mem2mem video processing
sh_vou SuperH VOU video output
stm32-dcmi STM32 Digital Camera Memory Interface (DCMI)
sun4i-csi Allwinner A10 CMOS Sensor Interface Support
sun6i-csi Allwinner V3s Camera Sensor Interface
sun8i-di Allwinner Deinterlace
sun8i-rotate Allwinner DE2 rotation
ti-cal TI Memory-to-memory multimedia devices
ti-csc TI DVB platform devices
ti-vpe TI VPE (Video Processing Engine)
venus-enc Qualcomm Venus V4L2 encoder/decoder
via-camera VIAFB camera controller
video-mux Video Multiplexer
vpif_display TI DaVinci VPIF V4L2-Display
vpif_capture TI DaVinci VPIF video capture
vpss TI DaVinci VPBE V4L2-Display
vsp1 Renesas VSP1 Video Processing Engine
xilinx-tpg Xilinx Video Test Pattern Generator
xilinx-video Xilinx Video IP (EXPERIMENTAL)
xilinx-vtc Xilinx Video Timing Controller
================= ============================================================
MMC/SDIO DVB adapters
---------------------
======= ===========================================
Driver Name
======= ===========================================
smssdio Siano SMS1xxx based MDTV via SDIO interface
======= ===========================================

View File

@ -0,0 +1,44 @@
.. SPDX-License-Identifier: GPL-2.0
Radio drivers
=============
There is also support for pure AM/FM radio, and even for some FM radio
transmitters:
===================== =========================================================
Driver Name
===================== =========================================================
si4713 Silicon Labs Si4713 FM Radio Transmitter
radio-aztech Aztech/Packard Bell Radio
radio-cadet ADS Cadet AM/FM Tuner
radio-gemtek GemTek Radio card (or compatible)
radio-maxiradio Guillemot MAXI Radio FM 2000 radio
radio-miropcm20 miroSOUND PCM20 radio
radio-aimslab AIMSlab RadioTrack (aka RadioReveal)
radio-rtrack2 AIMSlab RadioTrack II
saa7706h SAA7706H Car Radio DSP
radio-sf16fmi SF16-FMI/SF16-FMP/SF16-FMD Radio
radio-sf16fmr2 SF16-FMR2/SF16-FMD2 Radio
radio-shark Griffin radioSHARK USB radio receiver
shark2 Griffin radioSHARK2 USB radio receiver
radio-si470x-common Silicon Labs Si470x FM Radio Receiver
radio-si476x Silicon Laboratories Si476x I2C FM Radio
radio-tea5764 TEA5764 I2C FM radio
tef6862 TEF6862 Car Radio Enhanced Selectivity Tuner
radio-terratec TerraTec ActiveRadio ISA Standalone
radio-timb Enable the Timberdale radio driver
radio-trust Trust FM radio card
radio-typhoon Typhoon Radio (a.k.a. EcoRadio)
radio-wl1273 Texas Instruments WL1273 I2C FM Radio
fm_drv ISA radio devices
fm_drv ISA radio devices
radio-zoltrix Zoltrix Radio
dsbr100 D-Link/GemTek USB FM radio
radio-keene Keene FM Transmitter USB
radio-ma901 Masterkit MA901 USB FM radio
radio-mr800 AverMedia MR 800 USB FM radio
radio-raremono Thanko's Raremono AM/FM/SW radio
radio-si470x-usb Silicon Labs Si470x FM Radio Receiver support with USB
radio-usb-si4713 Silicon Labs Si4713 FM Radio Transmitter support with USB
===================== =========================================================

View File

@ -1,12 +1,13 @@
.. SPDX-License-Identifier: GPL-2.0
======================================================
Infrared remote control support in video4linux drivers
======================================================
Authors: Gerd Hoffmann, Mauro Carvalho Chehab
Basics
------
======
Most analog and digital TV boards support remote controllers. Several of
them have a microprocessor that receives the IR carriers, convert into
@ -33,7 +34,7 @@ detected. However, for a few devices, you need to manually load the
ir-kbd-i2c module.
How it works
------------
============
The modules register the remote as keyboard within the linux input
layer, i.e. you'll see the keys of the remote as normal key strokes
@ -55,7 +56,7 @@ the keymaps, like the input kbd utility.
Using with lircd
================
----------------
The latest versions of the lircd daemon supports reading events from the
linux input layer (via event device). It also supports receiving IR codes
@ -63,7 +64,7 @@ in lirc mode.
Using without lircd
===================
-------------------
Xorg recognizes several IR keycodes that have its numerical value lower
than 247. With the advent of Wayland, the input driver got updated too,

View File

@ -12,7 +12,7 @@ SAA7134 cards list
* - Card number
- Card name
- PCI IDs
- PCI subsystem IDs
* - 0
- UNKNOWN/GENERIC

View File

@ -0,0 +1,88 @@
.. SPDX-License-Identifier: GPL-2.0
The saa7134 driver
==================
Author Gerd Hoffmann
This is a v4l2/oss device driver for saa7130/33/34/35 based capture / TV
boards.
Status
------
Almost everything is working. video, sound, tuner, radio, mpeg ts, ...
As with bttv, card-specific tweaks are needed. Check CARDLIST for a
list of known TV cards and saa7134-cards.c for the drivers card
configuration info.
Build
-----
Once you pick up a Kernel source, you should configure, build,
install and boot the new kernel. You'll need at least
these config options::
./scripts/config -e PCI
./scripts/config -e INPUT
./scripts/config -m I2C
./scripts/config -m MEDIA_SUPPORT
./scripts/config -e MEDIA_PCI_SUPPORT
./scripts/config -e MEDIA_ANALOG_TV_SUPPORT
./scripts/config -e MEDIA_DIGITAL_TV_SUPPORT
./scripts/config -e MEDIA_RADIO_SUPPORT
./scripts/config -e RC_CORE
./scripts/config -e MEDIA_SUBDRV_AUTOSELECT
./scripts/config -m VIDEO_SAA7134
./scripts/config -e SAA7134_ALSA
./scripts/config -e VIDEO_SAA7134_RC
./scripts/config -e VIDEO_SAA7134_DVB
./scripts/config -e VIDEO_SAA7134_GO7007
To build and install, you should run::
make && make modules_install && make install
Once the new Kernel is booted, saa7134 driver should be loaded automatically.
Depending on the card you might have to pass ``card=<nr>`` as insmod option.
If so, please check :doc:`saa7134-cardlist` for valid choices.
Once you have your card type number, you can pass a modules configuration
via a file (usually, it is either ``/etc/modules.conf`` or some file at
``/etc/modules-load.d/``, but the actual place depends on your
distribution), with this content::
options saa7134 card=13 # Assuming that your card type is #13
Changes / Fixes
---------------
Please mail to linux-media AT vger.kernel.org unified diffs against
the linux media git tree:
https://git.linuxtv.org/media_tree.git/
This is done by committing a patch at a clone of the git tree and
submitting the patch using ``git send-email``. Don't forget to
describe at the lots what it changes / which problem it fixes / whatever
it is good for ...
Known Problems
--------------
* The tuner for the flyvideos isn't detected automatically and the
default might not work for you depending on which version you have.
There is a ``tuner=`` insmod option to override the driver's default.
Credits
-------
andrew.stevens@philips.com + werner.leeb@philips.com for providing
saa7134 hardware specs and sample board.

View File

@ -12,7 +12,7 @@ SAA7164 cards list
* - Card number
- Card name
- PCI IDs
- PCI subsystem IDs
* - 0
- Unknown

View File

@ -0,0 +1,56 @@
.. SPDX-License-Identifier: GPL-2.0
Siano cards list
================
.. tabularcolumns:: p{13.3cm}|p{4.2cm}|
.. flat-table::
:header-rows: 1
:widths: 17 16
:stub-columns: 0
* - Card name
- USB IDs
* - Hauppauge Catamount
- 2040:1700
* - Hauppauge Okemo-A
- 2040:1800
* - Hauppauge Okemo-B
- 2040:1801
* - Hauppauge WinTV MiniCard
- 2040:2000, 2040:200a, 2040:2010, 2040:2011, 2040:2019
* - Hauppauge WinTV MiniCard
- 2040:2009
* - Hauppauge WinTV MiniStick
- 2040:5500, 2040:5510, 2040:5520, 2040:5530, 2040:5580, 2040:5590, 2040:b900, 2040:b910, 2040:b980, 2040:b990, 2040:c000, 2040:c010, 2040:c080, 2040:c090, 2040:c0a0, 2040:f5a0
* - Hauppauge microStick 77e
- 2013:0257
* - ONDA Data Card Digital Receiver
- 19D2:0078
* - Siano Denver (ATSC-M/H) Digital Receiver
- 187f:0800
* - Siano Denver (TDMB) Digital Receiver
- 187f:0700
* - Siano Ming Digital Receiver
- 187f:0310
* - Siano Nice Digital Receiver
- 187f:0202, 187f:0202
* - Siano Nova A Digital Receiver
- 187f:0200
* - Siano Nova B Digital Receiver
- 187f:0201
* - Siano Pele Digital Receiver
- 187f:0500
* - Siano Rio Digital Receiver
- 187f:0600, 3275:0080
* - Siano Stellar Digital Receiver
- 187f:0100
* - Siano Stellar Digital Receiver ROM
- 187f:0010
* - Siano Vega Digital Receiver
- 187f:0300
* - Siano Venice Digital Receiver
- 187f:0301, 187f:0301, 187f:0302
* - ZTE Data Card Digital Receiver
- 19D2:0086

Some files were not shown because too many files have changed in this diff Show More