This howto describes how you can get your Nebula uDigiTV USB working with Ubuntu 6.06 LTS. It is an updated version of the howto that I posted in the Dapper Drake development forums. The instructions below have been tested and confirmed working on Ubuntu 6.06 LTS on 17th June 2006 using the latest 2.6.15-25-686 kernel.

Problem
The new Ubuntu 2.6.15 kernel ships with support for the Nebula usb device. However, it does not come with a Nebula firmware so you can't get a Nebula that's in cold-state (no firmware loaded) working. After installing the firmware, the Nebula Digitv module will still crash . Even when you connect a Nebula with a firmware already loaded (it is in warm-state), the Ubuntu shipped driver does not attach a frontend to it, making the device pretty useless :

Code:
dvb-usb: found a 'Nebula Electronics uDigiTV DVB-T USB2.0)' in warm state.
	dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
	DVB: registering new adapter (Nebula Electronics uDigiTV DVB-T USB2.0)).
	dvb-usb: no frontend was attached by 'Nebula Electronics uDigiTV DVB-T USB2.0)'
	input: IR-receiver inside an USB DVB receiver as /class/input/input5
	dvb-usb: schedule remote query interval to 1000 msecs.
	dvb-usb: Nebula Electronics uDigiTV DVB-T USB2.0) successfully initialized and connected.
	usbcore: registered new driver dvb_usb_digitv
So how do we solve this problem without much effort? Well, continue reading below as I've managed to get my Nebula uDigiTV USB working perfectly on Ubuntu 6.06 LTS! The only thing it involves is recompiling the Nebula's kernel modules using the latest Video4Linux/DVB-T source.

Resolution

All commands below are assumed to be executed in a terminal from your home directory (unless otherwise stated).

First, download the latest Nebula firmware for Linux. This is from Patrick Boettcher, the guy who was kind enough to write most of the Nebula's Linux drivers last year.
Code:
wget http://www.wi-bw.tfh-wildau.de/~pboettch/home/linux-dvb-firmware/dvb-usb-digitv-02.fw
Copy the firmware to your kernel's firmware directory:
Code:
sudo cp dvb-usb-digitv-02.fw /lib/firmware/$(uname -r)/
Install the Ubuntu build essentials (as we need to compile updated Nebula modules):
Code:
sudo apt-get install build-essential
Install the kernel headers for your kernel:
Code:
sudo apt-get install linux-headers-$(uname -r)
Install Mercurial (a version control tool to download the latest Video4Linux/DVB source):
Code:
sudo apt-get install mercurial
Still in your home directory download the Video4Linux/DVB-T source:
Code:
hg clone http://linuxtv.org/hg/v4l-dvb
Now go into the downloaded directory:
Code:
cd v4l-dvb
And configure how the v4l-dvb source compiles:
Code:
make config
Note: if it comes up with errors on 'make config', you most likely need to install some additional bits and pieces to get the kernel to compile. Have a look at the output of 'make config' to see what's missing.

The 'make config' will ask you how to configure the Video4Linux/DVB-T source. Answer as follows:

Code:
#
# using defaults found in .config
#
*
* Linux Kernel Configuration
*
Enable drivers not supported by this kernel (VIDEO_KERNEL_VERSION) [N/y/?] (NEW)  n
*
* Multimedia devices
*
Video For Linux (VIDEO_DEV) [N/m/y/?] n
*
* Digital Video Broadcasting Devices
*
DVB For Linux (DVB) [Y/n/?] y
  DVB Core Support (DVB_CORE) [N/m/y/?] m
    *
    * Supported SAA7146 based PCI Adapters
    *
    *
    * Supported USB Adapters
    *
    Support for various USB DVB devices (DVB_USB) [N/m/?] (NEW) m
      Enable extended debug support for all DVB-USB devices (DVB_USB_DEBUG) [N/y/?] (NEW) n
      AVerMedia AverTV DVB-T USB 2.0 (A800) (DVB_USB_A800) [N/m/?] (NEW) n
      DiBcom USB DVB-T devices (based on the DiB3000M-B) (see help for device list) (DVB_USB_DIBUSB_MB) [N/m/?] (NEW) n
      DiBcom USB DVB-T devices (based on the DiB3000M-C/P) (see help for device list) (DVB_USB_DIBUSB_MC) [N/m/?] (NEW) n
      HanfTek UMT-010 DVB-T USB2.0 support (DVB_USB_UMT_010) [N/m/?] (NEW) n
      Conexant USB2.0 hybrid reference design support (DVB_USB_CXUSB) [N/m/?] (NEW) n
      Nebula Electronics uDigiTV DVB-T USB2.0 support (DVB_USB_DIGITV) [N/m/?] (NEW) m
      TwinhanDTV Alpha/MagicBoxII, DNTV tinyUSB2, Beetle USB2.0 support (DVB_USB_VP7045) [N/m/?] (NEW) n
      TwinhanDTV StarBox and clones DVB-S USB2.0 support (DVB_USB_VP702X) [N/m/?] (NEW) n
      GENPIX 8PSK->USB module support (DVB_USB_GP8PSK) [N/m/?] (NEW) n
      Hauppauge WinTV-NOVA-T usb2 DVB-T USB2.0 support (DVB_USB_NOVA_T_USB2) [N/m/?] (NEW) n
      WideView WT-200U and WT-220U (pen) DVB-T USB2.0 support (Yakumo/Hama/Typhoon/Yuan) (DVB_USB_DTT200U) [N/m/?] (NEW) n
    Technotrend/Hauppauge Nova-USB devices (DVB_TTUSB_BUDGET) [N/m/?] (NEW) n
    Technotrend/Hauppauge USB DEC devices (DVB_TTUSB_DEC) [N/m/?] (NEW) n
    Terratec CinergyT2/qanu USB2 DVB-T receiver (DVB_CINERGYT2) [N/m/?] (NEW) n
    *
    * Supported FlexCopII (B2C2) Adapters
    *
    Technisat/B2C2 FlexCopII(b) and FlexCopIII adapters (DVB_B2C2_FLEXCOP) [N/m/?] (NEW) n
    *
    * Supported BT878 Adapters
    *
    *
    * Supported Pluto2 Adapters
    *
    Pluto2 cards (DVB_PLUTO2) [N/m/?] (NEW) n
    *
    * Supported DVB Frontends
    *
    *
    * Customise DVB Frontends
    *
    *
    * DVB-S (satellite) frontends
    *
    ST STV0299 based (DVB_STV0299) [N/m/?] (NEW) n
    Conexant CX24110 based (DVB_CX24110) [N/m/?] (NEW) n
    Conexant CX24123 based (DVB_CX24123) [N/m/?] (NEW) n
    Philips TDA8083 based (DVB_TDA8083) [N/m/?] (NEW) n
    Zarlink VP310/MT312 based (DVB_MT312) [N/m/?] (NEW) n
    VLSI VES1893 or VES1993 based (DVB_VES1X93) [N/m/?] (NEW) n
    Samsung S5H1420 based (DVB_S5H1420) [N/m/?] (NEW) n
    *
    * DVB-T (terrestrial) frontends
    *
    Spase sp8870 based (DVB_SP8870) [N/m/?] (NEW) n
    Spase sp887x based (DVB_SP887X) [N/m/?] (NEW) n
    Conexant CX22700 based (DVB_CX22700) [N/m/?] (NEW) n
    Conexant cx22702 demodulator (OFDM) (DVB_CX22702) [N/m/?] (NEW) n
    LSI L64781 (DVB_L64781) [N/m/?] (NEW) n
    Philips TDA10045H/TDA10046H based (DVB_TDA1004X) [N/m/?] (NEW) n
    NxtWave Communications NXT6000 based (DVB_NXT6000) [M/?] (NEW) m
    Zarlink MT352 based (DVB_MT352) [M/?] (NEW) m
    Zarlink ZL10353 based (DVB_ZL10353) [N/m/?] (NEW) n
    DiBcom 3000M-B (DVB_DIB3000MB) [N/m/?] (NEW) n
    DiBcom 3000P/M-C (DVB_DIB3000MC) [N/m/?] (NEW) n
    *
    * DVB-C (cable) frontends
    *
    VLSI VES1820 based (DVB_VES1820) [N/m/?] (NEW) n
    Philips TDA10021 based (DVB_TDA10021) [N/m/?] (NEW) n
    ST STV0297 based (DVB_STV0297) [N/m/?] (NEW) n
    *
    * ATSC (North American/Korean Terrestrial/Cable DTV) frontends
    *
    NxtWave Communications NXT2002/NXT2004 based (DVB_NXT200X) [N/m/?] (NEW) n
    Oren OR51211 based (DVB_OR51211) [N/m/?] (NEW) n
    Oren OR51132 based (DVB_OR51132) [N/m/?] (NEW) n
    Broadcom BCM3510 (DVB_BCM3510) [N/m/?] (NEW) n
    LG Electronics LGDT3302/LGDT3303 based (DVB_LGDT330X) [N/m/?] (NEW) n
    *
    * Miscellaneous devices
    *
    LNBP21 SEC controller (DVB_LNBP21) [N/m/?] (NEW) n
    ISL6421 SEC controller (DVB_ISL6421) [N/m/?] (NEW) n
DABUSB driver (USB_DABUSB) [N/m/?] n
Now type the following to start the build process:
Code:
make
When completed install the modules with the following command:
Code:
sudo make install
Reboot your machine and plug-in your Nebula USB device. If you do a 'dmesg' in a terminal it should come up with something like:

Code:
	dvb-usb: found a 'Nebula Electronics uDigiTV DVB-T USB2.0)' in cold state, will try to load a firmware
	dvb-usb: downloading firmware from file 'dvb-usb-digitv-02.fw'
	usb 4-3.1: USB disconnect, address 6
	dvb-usb: generic DVB-USB module successfully deinitialized and disconnected.
	usb 4-3.1: new high speed USB device using ehci_hcd and address 7
	usb 4-3.1: string descriptor 0 read error: -22
	usb 4-3.1: string descriptor 0 read error: -22
	dvb-usb: found a 'Nebula Electronics uDigiTV DVB-T USB2.0)' in warm state.
	dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
	DVB: registering new adapter (Nebula Electronics uDigiTV DVB-T USB2.0)).
	DVB: registering frontend 0 (Zarlink MT352 DVB-T)...
	input: IR-receiver inside an USB DVB receiver as /class/input/input6
	dvb-usb: schedule remote query interval to 1000 msecs.
	dvb-usb: Nebula Electronics uDigiTV DVB-T USB2.0) successfully initialized and connected.
As you can see it now has a frontend attached and you're ready to start using your Nebula uDigiTV USB ! If your driver still does not register the frontend, try unplugging the Nebula for more than half a minute to get it into a cold state, then plug it back in again.

Note: First see if you can get your Nebula working with the latest version of the Video4Linux/DVB-T source. If this does not work (new changesets might have broken Nebula support), you can try reverting to the version I used to write this howto by executing the following command in your v4l-dvb directory before 'make config':

Code:
hg revert -r 4103
This will revert the repository to changeset 4103 that I used when writing this howto.