1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Digital TV (DVB, ATSC) on FreeBSD: A small guide

Discussion in 'Howtos and FAQs (Moderated)' started by nox@, Oct 16, 2012.

  1. nox@

    nox@ New Member Developer

    Messages:
    75
    Thanks Received:
    38
    I just started writing this up, comments welcome! :)

    Drivers:

    There are at least three driver ports for digital TV providing the /dev/dvb api:

    - multimedia/cx88 provides the /dev/dvb api for a few CX2388x-based PCI(e) DVB-T and ATSC tuners, see http://corona.homeunix.net/cx88wiki

    - multimedia/sms1xxx-kmod provides the /dev/dvb api for a few Siano-based DVB tuners, see http://contribs.martymac.org

    - multimedia/webcamd runs Linux v4l/dvb drivers in FreeBSD userland to access a lot of different USB DVB-T/T2/C/S/S2 and ATSC tuners, see http://wiki.freebsd.org/WebcamCompat for tuners people tested on FreeBSD and the linuxtv wiki for (incomplete) lists of more USB tuners that have good chances of working:
    http://www.linuxtv.org/wiki/index.php/DVB-T_USB_Devices
    http://www.linuxtv.org/wiki/index.php/DVB-T2_USB_Devices
    http://www.linuxtv.org/wiki/index.php/DVB-S2_USB_Devices
    http://www.linuxtv.org/wiki/index.php/DVB-S_USB_Devices
    http://www.linuxtv.org/wiki/index.php/DVB-C_USB_Devices
    http://www.linuxtv.org/wiki/index.php/ATSC_USB_Devices

    To use webcamd:

    Many tuners need firmware files, put them in /boot/modules. (See also http://wiki.freebsd.org/WebcamCompat and http://linuxtv.org/wiki/index.php/Firmware#Acquiring_the_Firmware.)
    Then install the webcamd port, add your user to the webcamd group (and log it back in), make sure cuse4bsd.ko gets loaded (add it to /boot/loader.conf), add webcamd_enable="YES" to /etc/rc.conf, and plug in the tuner. Now you should see device nodes like /dev/dvb/adapter0/demux0, /dev/dvb/adapter0/dvr0 and /dev/dvb/adapter0/frontend0. If the tuner has a CI slot (for decoding crypted channels) you should also get /dev/dvb/adapter0/ca0. (I think for crypted channels you need VDR or maybe MythTV, and of course the right CAM and smartcard.)

    You can build the webcamd port with the DEBUG knob and start it manually on a root shell with "-d x.y -H" to see log messages by the Linux drivers in case there are problems (run usbconfig as root to find the usbus x and device y the tuner is on.)

    Some tuners need webcamd run with "-m dvb-usb-init.force_pid_filter_usage=1" to receive clean streams (you can put that in webcamd_flags in /etc/rc.conf), tho that breaks some methods of channel scanning like multimedia/w_scan and the scanning in multimedia/kaffeine so you need to restart webcamd (for example by re-plugging the tuner) with webcamd_flags commented out for the duration of the scan.

    Receiving TV, now that you have /dev/dvb nodes:

    - The easy (GUI) way: multimedia/kaffeine (This looks for the /dev/dvb nodes via hald which I think currently only works for webcamd when it's started with -H; and it should now also work for the cx88 drivers that meanwhile know about hald too.)

    To use kaffeine for digital TV install the port, make sure hald and dbus are running and webcamd was started with -H (should be default), start kaffeine, select "Configure television", click on "Update scan data over the Internet", select your tuner and region (or satellite details), then select "Channels" and start a scan. If the scan finished without finding channels (and it's not the antenna setup) then check for missing firmware files and that webcamd isn't run with "-m dvb-usb-init.force_pid_filter_usage=1", see above for how to get logs from webcamd.
    One you have setup your channel list (for example "copy filtered" w/o filters will copy all the found channels, then click "OK"), you can select "Digital Television" from the main menu and zap to your channels.

    - The 'minimal' way: multimedia/w_scan and multimedia/mplayer

    If you want to use mplayer make sure it's built with the V4L knob enabled and that you have a ~/.mplayer/channels.conf file. To get one you can use w_scan with 'scan' channels.conf type, i.e. that's -X . See the w_scan homepage http://wirbel.htpc-forum.de/w_scan/index_en.html for options and examples.

    Once you have a channels.conf you can try: $ mplayer dvb://<channelname>

    - The 'full-featured'/automated/networked way: multimedia/vdr and related ports:

    This has its own page on the FreeBSD wiki: http://wiki.freebsd.org/VDR (and it's what I prefer. :) )

    - The alternative 'full-featured'/automated/networked way: multimedia/mythtv and related ports:

    This is probably preferred for ATSC. It has a page on the FreeBSD wiki too: http://wiki.freebsd.org/MythTV

    Note there was a bug in the Linux dvb drivers used by webcamd < 3.9.0.1 affecting mythtv-setup, if that happens to you (symptom is a failed FE_GET_INFO ioctl) just update your webcamd port.

    - Others:

    There are more apps that can receive from /dev/dvb like vlc, xine, etc (some people even use Linux binaries like SageTV via the Linuxolator and multimedia/linux_dvbwrapper-kmod), but from what I tested VDR works best, closely followed by current kaffeine.
     
    jandegr1, htutt, wblock@ and 4 others thank for this.
  2. nox@

    nox@ New Member Developer

    Messages:
    75
    Thanks Received:
    38
    XBMC can be used for DVB too...

    Btw you can also use XBMC to watch digital TV, currently that's via multimedia/xbmc-pvr using VDR backend as explained on the VDR wiki page http://wiki.freebsd.org/VDR, but once XMBC mainline 12.0 gets released PVR support will be merged there too so the main multimedia/xbmc port probably will be updated later to support it also. First using VDR as backend, but work has also started on porting tvheadend so maybe that can be used as PVR backend for XBMC later too.

    Just thought I'd mention... :)
    Juergen
     
    htutt thanks for this.
  3. nox@

    nox@ New Member Developer

    Messages:
    75
    Thanks Received:
    38
  4. nox@

    nox@ New Member Developer

    Messages:
    75
    Thanks Received:
    38
    Webcamd 3.9.0.1 now in ports

    I just committed Hans' webcamd update so the MythTV bug should be history now...

    (And there are a few more rtl28xxu-based tuners working for DVB among other things.)

    Enjoy, :)
    Juergen
     
  5. jandegr1

    jandegr1 New Member

    Messages:
    1
    Thanks Received:
    0
    Hi,
    With wecamd 3.9.0.1 I could get my Hauppauge wintv-hvr-930c working for dvb-c and
    dvb-t. I did not(yet) get analogue tv working.
    To get the wintv-hvr-930c working, the webcamd port has to be reconfigured to build the
    drxk module as well.
    I used this http://lists.freebsd.org/pipermail/freebsd-multimedia/2012-March/012899.html post to know how to reconfigure the port to build more modules.
    I use mencoder for recording and mplayer for playback and liveTV, unfortunatly no HW acceleration for my AMD zacate :(.
    @ nox and hps : thx for all the efforts

    regards,
    Jan
     
  6. patmcevoy

    patmcevoy New Member

    Messages:
    3
    Thanks Received:
    0
    Hello All,
    Do you have any recommendations for a US-based (time warner)digital cable system dvb/atsc tuner card? I would like to use it on a network PVR using MythTV or VDR on an FreeBSD 9 box and view the content using a Raspberry Pi XBMC elsewhere on the network. An internal card would be preferable, but if USB is easier, that would be a consideration. Thank you.
    P
     
  7. nox@

    nox@ New Member Developer

    Messages:
    75
    Thanks Received:
    38
    I'm not sure about https://en.wikipedia.org/wiki/QAM_(television) support (which afaik you need for U.S. cable) for PCI cards supported by multimedia/cx88 (see the list at http://corona.homeunix.net/cx88wiki/Overview/SupportedCards), but the one USB ATSC/QAM tuner listed on the wiki (https://wiki.freebsd.org/WebcamCompat), PCTV 801e SE, did work for cable channels transmitted in the clear for at least one guy too (QAM256, yes this isn't noted in the wiki yet), and it also seems to be not very expensive.

    HTH, :)
    Juergen
     
  8. nox@

    nox@ New Member Developer

    Messages:
    75
    Thanks Received:
    38
    You are welcome! :)

    I just commited Hans' update to webcamd 3.9.0.4 that now also builds the drxk driver by default, do you want to test your tuner with 3.9.0.4 and send me an entry for the wiki? See here: https://wiki.freebsd.org/WebcamCompat#DVB.2FATSC

    Thanx!
    Juergen
     
  9. patmcevoy

    patmcevoy New Member

    Messages:
    3
    Thanks Received:
    0
    Cheers. I will check this out when I get a minute and share anything I can add to the conversation.
     
  10. dareni

    dareni New Member

    Messages:
    11
    Thanks Received:
    0
    Thanks for the great work!

    This usb device Leadtek DTV Dongle Gold works with af9015(4) with mplayer. Please add an entry on the wiki.
     
  11. nox@

    nox@ New Member Developer

    Messages:
    75
    Thanks Received:
    38
    Done.

    Thanx for testing! :)
    Juergen
     
  12. nox@

    nox@ New Member Developer

    Messages:
    75
    Thanks Received:
    38
    This has finally happened, decke committed the multimedia/tvheadend and multimedia/xbmc-addon-pvr ports and I updated the multimedia/vdr-plugin-vnsiserver port so you now can use multimedia/xbmc with either tvheadend or VDR via the pvr.hts and pvr.vdr.vnsi addons installed by multimedia/xbmc-addon-pvr, respectively.

    Note tvheadend needs the latest version of multimedia/cuse4bsd-kmod with kqueue(2) support, and like multimedia/w_scan and multimedia/kaffeine it cannot scan muxes when webcamd is run with "-m dvb-usb-init.force_pid_filter_usage=1" so it may not be the best solution for tuners that need that parameter to receive clean streams.

    [Edit:] I forgot to mention that I also needed to set "Full mux reception" to "On" for tvheadend, or it wouldn't scan.

    Enjoy, :)

    Juergen