USB DVB-T adapter sometimes disappears after reboot

Hello!

I’ve successfully set up my OSMC, using:

  • Raspberry Pi 3 Model B+
  • TVHeadend from the App Store
  • USB DVB-T stick Omega T900, which is based on IT9135

I can watch Live TV, etc.

However, sometimes when I reboot (Kodi → Power → Reboot), the USB stick is not recognised by the OS and disappears from TVHeadend’s web UI, and as a result, the channels in the PVR & Live TV do not work and show the error “No adapter” (or something, I’m not using Kodi in English).

Here are the last (relevant) lines of dmesg after a reboot when it is failing:

[    6.212312] usb 1-1.3: USB disconnect, device number 4
[    6.543629] nf_conntrack version 0.5.0 (12288 buckets, 49152 max)
[    7.098281] random: crng init done
[    7.335231] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[    7.361701] usb 1-1.1.3: dvb_usb_v2: 2nd usb_bulk_msg() failed=-110
[    7.361740] dvb_usb_af9035: probe of 1-1.1.3:1.0 failed with error -110
[    7.361819] usbcore: registered new interface driver dvb_usb_af9035
[    7.376615] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
[    7.376629] brcmfmac: power management disabled
[    7.835161] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[   11.612207] Console: switching to colour dummy device 80x30

Note that on other occasions the message USB disconnect, device number 4 appears last. This particular time the order is somewhat random, but this is the one I managed to capture while posting this message.

And here is the output of dmesg | grep dvb after a reboot when it is working fine:

[    5.375067] dvb_usb_af9035 1-1.1.3:1.0: prechip_version=83 chip_version=02 chip_type=9135
[    5.382690] usb 1-1.1.3: dvb_usb_v2: found a 'ITE 9135(9005) Generic' in cold state
[    5.455261] usb 1-1.1.3: dvb_usb_v2: downloading firmware from file 'dvb-usb-it9135-02.fw'
[    5.545395] dvb_usb_af9035 1-1.1.3:1.0: firmware version=3.40.1.0
[    5.545427] usb 1-1.1.3: dvb_usb_v2: found a 'ITE 9135(9005) Generic' in warm state
[    5.545965] usb 1-1.1.3: dvb_usb_v2: will pass the complete MPEG2 transport stream to the software demuxer
[    5.546061] dvbdev: DVB: registering new adapter (ITE 9135(9005) Generic)
[    5.662028] usb 1-1.1.3: dvb_usb_v2: schedule remote query interval to 500 msecs
[    5.662035] usb 1-1.1.3: dvb_usb_v2: 'ITE 9135(9005) Generic' successfully initialized and connected
[    5.662121] usbcore: registered new interface driver dvb_usb_af9035

In both cases, lsusb shows the device as Integrated Technology Express, Inc..

When it is failing, If I unplug the USB stick and then plug it in and restart tvheadend, the adapter is detected and I can watch Live TV. However, that is not very convenient if I want to just stick the RPi behind my TV.

So, what is going on? Is there anything I can do or try to fix this?

You could try using a powered hub. It’s highly likely that increased demand for amperage by the pi while booting can leave the adapter starved for power and fail to be recognized.

I should have mentioned this in the original post – the RPi uses a 3.1A power supply, which is way above the recommended 2.5A for this RPi. Does the powered hub still make sense in this case?

If you still think power is really the problem, is there any way to switch off the USB port of the TV-stick while booting and to enable it with a delay after the RPi has booted with a script? For a test.

Well, the stick could/would be powered up by the hub before the Pi probes it. I have that setup, but I haven’t had any problems with a stick plugged directly into a Pi (different stick, tho.)