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



## nox@ (Oct 16, 2012)

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 [url=dvb://]dvb://[/url]<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.


----------



## nox@ (Nov 23, 2012)

*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


----------



## nox@ (Dec 31, 2012)

*New webcamd version with the MythTV fix for testing*

Hi!

The MythTV fix has finally been committed to Linux media tree for_3.9 [1] and Hans posted a new webcamd version for testing the has the patch:

http://lists.freebsd.org/pipermail/freebsd-multimedia/2012-December/013734.html

Testers welcome, also non-MythTV ones... 

Juergen

[1] http://article.gmane.org/gmane.comp.video.linuxtv.scm/15549


----------



## nox@ (Jan 12, 2013)

*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


----------



## jandegr1 (Jan 14, 2013)

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


----------



## patmcevoy (Jan 18, 2013)

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


----------



## nox@ (Jan 20, 2013)

patmcevoy said:
			
		

> 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


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


----------



## nox@ (Jan 26, 2013)

jandegr1 said:
			
		

> 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
> ...


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


----------



## patmcevoy (Jan 27, 2013)

Cheers. I will check this out when I get a minute and share anything I can add to the conversation.


----------



## dareni (Jan 27, 2013)

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.


----------



## nox@ (Jan 27, 2013)

dareni said:
			
		

> 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.


Done.

Thanx for testing! 
Juergen


----------



## nox@ (Aug 18, 2013)

nox@ said:
			
		

> 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


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


----------



## PacketMan (May 27, 2016)

FYI - Thread 56045/#post-320937


----------

