PCTV tripleStick 292e with TVHeadend

I’ve blogged before about my home AV set up, but something I’ve not talked about is the recent addition of a couple of TV tuners so that I can watch and record live Freeview channels. Until recently I’d been using TVHeadend version 3.2 on a Raspberry Pi, with a PCTV nanoStick T2 that worked out of the box on Raspbian for me. However, the time came when I wanted to be able to record and/or view multiple channels at once, so I set about getting a second tuner to be able to do this. Through a lack of attention paid while ordering, I ended up with a PCTV tripleStick rather than a second nanoStick, and this one sadly was not as easy to set up. I bounced around a lot of forums and blog posts in getting mine working, so I thought I’d consolidate my learnings here, in the hope that someone else may find this useful!

First off, the chipset on the tripleStick (Silicon Labs Si2168) is different to the nanoStick (Sony CXD2820R), hence the incompatibility with the old drivers. There’s a very detailed teardown and comments at Antti’s LinuxTV Blog which does a great job of explaining what’s under the hood, and the comments do offer some useful guidance (but also some misdirection!). I was previously running an older version of Raspbian (kernel 3.12 if I recall correctly), which failed to recognise the tripleStick as a DVB tuner at all, but several sources suggested that firmware was included in 3.16 and higher. I updated my Raspberry Pi with the usual apt-get update; apt-get upgrade; apt-get dist-upgrade to move up to a newer kernel version (3.18) which did get the dongle recognised in TVHeadend, however it appeared to not get any signal, despite being plugged in to the same aerial as the working nanoStick.

At this point I attempted upgrading to TVHeadend 4.0, something I should have done a considerable time ago anyway, however this had no effect and the dongle continued to show no signal through TVHeadend. Checking my logs, I found that my /var/log/syslog had repeated entries referring to “found a 'Silicon Labs Si2168' in cold state“, and claiming that firmware files had not been found. Many different message boards carried many different links to firmware, and suggesting different combinations that needed to be installed, several of which I found to be corrupt, however the one that worked for me was installed using the following:

$ wget http://palosaari.fi/linux/v4l-dvb/firmware/Si2168/dvb-demod-si2168-02.fw -O /lib/firmware/dvb-demod-si2168-02.fw

There are many suggestions that the file dvb-demod-si2168-b40-01.fw is also needed from that same source, however it seems to be working fine for me without this present. I’ve seen some reports that the tuner should appear as two separate entries in TVHeadend (one as a DVB-T tuner, and another as a a DVB-S), however since I’m only using DVB-T I’ve not seen any problems – your mileage may vary!

3 thoughts on “PCTV tripleStick 292e with TVHeadend

  1. Hi,

    A google search on si2168 brought me here. I have a RPI 2 running TVHeadend. I use two DVBSky T330 usb tuners.
    It’s loading the firmware fine. Dmesg:

    [ 47.301600] si2168 5-0064: found a ‘Silicon Labs Si2168-B40’
    [ 47.339501] si2168 5-0064: downloading firmware from file ‘dvb-demod-si2168-b40-01.fw’
    [ 48.861935] si2168 5-0064: firmware version: 4.0.19
    [ 48.872665] si2157 6-0060: found a ‘Silicon Labs Si2158-A20’
    [ 48.892016] si2157 6-0060: downloading firmware from file ‘dvb-tuner-si2158-a20-01.fw’
    [ 49.902273] si2157 6-0060: firmware version: 2.1.6
    [ 49.902381] usb 1-1.5.4: DVB: adapter 1 frontend 0 frequency 0 out of range (55000000..862000000)
    [ 49.954970] si2168 3-0064: found a ‘Silicon Labs Si2168-B40’
    [ 49.955401] si2168 3-0064: downloading firmware from file ‘dvb-demod-si2168-b40-01.fw’
    [ 50.406105] cfg80211: Calling CRDA to update world regulatory domain
    [ 51.473882] si2168 3-0064: firmware version: 4.0.19
    [ 51.485112] si2157 4-0060: found a ‘Silicon Labs Si2157-A30’
    [ 51.512400] si2157 4-0060: firmware version: 3.0.5

    But I experience random crashes:

    Syslog:

    Message from syslogd@tvheadend at Nov 16 22:27:51 …
    kernel:[174252.420684] Internal error: Oops: 817 [#2] PREEMPT SMP ARM

    Message from syslogd@tvheadend at Nov 16 22:27:51 …
    kernel:[174252.663250] Process kdvb-ad-1-fe-0 (pid: 3897, stack limit = 0xb4872210)

    Message from syslogd@tvheadend at Nov 16 22:27:51 …
    kernel:[174252.676741] Stack: (0xb4873da8 to 0xb4874000)

    What I’m trying to understand: is this driver or firmware related ? Where should I start debugging this ? Any suggestions ? Thanks !

  2. Hi,
    thanks for this excellent post, that helped me a lot today.
    I installed TVHeadend on a Raspi2 with a PCTV tripleStick 292e and struggled to get it work.
    Unfortunately I took the firmware dvb-demod-si2168-b40-01.fw from the original PCTV-CD coming with the stick. This was a severe fault which took me hours. With version 02 everything works fine (version 01 is not needed).
    Both files are nearly identical. The version 02 has 8 additional bytes at the beginning:
    05 20 aa 4d 56 40 20 20
    Thanks again

Leave a Reply

Your email address will not be published. Required fields are marked *