There are a few problems with how the TV adapter tab is implemented today

  • It cannot handle a large amount of services. With DVB-S you can easily hit >1k services. Ticket #100
  • It's hard (but possible via sorting) to see which services that is transmitted on which mux.
  • The DVB satconf solution is a bit cumbersome
  • Updates to the quality meter indicator refreshed the grid in a way that is bad UX. Ticket #108
  • If a DVB adapter is renamed by the kernel after boot (/dev/dvb/adapterX -> /dev/dvb/adapterY) the user must do a lot of work
  • Inter-adapter dependencies are not handled (adapters with both analog and digital receivers, etc)

Therefore the plan is to totally redesign how Tvheadend interacts with hardware.

Device tree

This tree will present the available devices to the user

  + DVB Adapter #1
  | + DVB-C Frontend
  |
  + DVB Adapter #2
  | + DVB-T Frontend
  | + DVB-C Frontend
  |
  + DVB Adapter #3
  | + DVB-S Frontend
  | | + Switchport 1
  | | + Switchport 2
  | | + Switchport 3
  | | + Switchport 4
  | | + Switchport n
  | + DVB-T Frontend
  |
  + V4L Adapter #1
    + Tuner
    + Composite
    + S-Video

Pressing on a node will present the user with information about the entry and a few configuration options as follows:

DVB / ATSC Adapter

Info part

Various information about the hardware

Config part

  • Enable/Disable adapter

DVB-C / DVB-T / ATSC Frontends

Info part

TBD

Config part

  • Network the frontend is attached to
  • If this device may update network configuration

DVB-S Frontends

Info part

TBD

Config part

  • Number of Diseqc switchports
    or
  • Network the frontend is attached to
  • If this device may update network configuration
  • LnB configuration

Switchport

Info part

TBD

Config part

  • Network the switchport is attached to
  • If this device may update network configuration
  • LnB configuration

V4L adpater

Info part

Various information about the hardware

Config part

  • Enable/Disable adapter

V4L frontends

Info part

Various information about the hardware

Config

  • TV system type (PAL, NTSC, etc) (for tuners)
  • Network the frontend is attached to

DVB Networks

  + DVB Network #1 (Comhem Stockholm)   <- network
  | + 290 MHz                           <- mux
  |   + SVT 1                           <- service
  |   | + Video MPEG2 768*576i          <- elementary stream
  |   | | Audio MPEG2 Stereo
  |   + SVT 2
  |   | + Video MPEG2 768*576i
  |   | | Audio MPEG2 Stereo
  | + 298 MHz
  |   |...

The DVB networks can then be attached to one or more adapters (DVB-C and DVB-S case)

For DVB-S adapters a network could be attached directly to the adapter or to a switchport, etc. This depends a bit on how the adapter is configured.

Device mapper

Upon startup Tvheadend will try to map the available hardware to the adapters as good as it can.

  • device type AND device name AND bus-id AND device path
  • device type AND device name AND bus-id
  • device type AND device name
  • device type AND bus-id
  • device type
device path Path in filesystem /dev/dvb/...
bus-id Hardware address Bus 001 Device 004: ID 0ccd:0038 TerraTec Electronic GmbH Cinergy T2 DVB-T Receiver
device-name Name of device(vendor) as reported via DVB API ST STV0297 DVB-C
device-type Frontend type(s) DVB-T, DVB-C, etc

It will start will all devices and try rule 1 then all devices that could not be mapped and rule 2, and so on.
This will mitigate problems when USB controllers probe devices in different order, etc
Also you can swap your DVB hardware to a new one (different vendor) and still have tvheadend map it correctly.

If the mapper cannot find a hardware device using the first rule the adapter info/configuration will highlight this
and the user will be able to "nail" the configuration to the detected hardware. Ie. to acknowledge to Tvheadend
that: "Yes, this is the correct hardware. I've changed/moved it" or whatever