The easiest way to sort the failure of tvheadend to detect the hdhomerun after a reboot is to edit /etc/init/tvheadend.conf to make it wait for the dvbhdhomerun-utils daemon to finish, and it's child process userhdhomerun. You must be sudo:
$ sudo gedit /etc/init/tvheadend.conf
Comment out the existing 'start on' line. See comments in my example, with my changes:
#Replaced start line to force wait until dvbhdhomerun-utils has completed
#at which time it emits dvbhdhomerun
#start on (local-filesystems and net-device-up and started udev-finish)
start on dvbhdhomerun
stop on runlevel [!2345]
expect fork
respawn
#Added an extra 30 second wait before starting tvheadend, as the userhdhomerun
#process in dvbhdhomerun-utils needs to finish completely for tuner discovery
script
>
sleep 30
>
followed by existing code
end script
Reboot your machine, give it a minute and then check that tvheadend has correctly detected and loaded your hdhomerun device.
This is elegant and doesn't require messing with update rc.d, which has been deprecated by upstart in ubuntu in any case. This file will likely get overwritten when you update or reinstall tvheadend, but it is easy enough to edit again.
Using tvheadend 3.2~precise from adamsutton STABLE PPA