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