Call for testers: PCTV 74e Support

I finally got a chance to do some testing with the PCTV 74e, using the GPL reference driver that Abilis provided. I’m happy to report that at least our initial testing shows that it works out of the box!

Testers are welcome to try the following hg tree:

http://kernellabs.com/hg/~dheitmueller/v4l-dvb-as102

To build:

hg clone http://kernellabs.com/hg/~dheitmueller/v4l-dvb-as102
cd v4l-dvb-as102
make
make install
reboot

Note, under Ubuntu if you receive errors about not being able to compile the firedtv driver, open “v4l/.config” and change the firedtv=m to be firedtv=n.

You will need to get the firmware from the following location and copy it to /lib/firmware

http://kernellabs.com/firmware/as102/

The code will still need some codingstyle fixes in order to be accepted upstream, but it appears from a functional perspective to work properly as-is.

Thanks go out to Rainer Miethling from PCTV Systems for working to get the driver released under the GPL and Pierrick Hascoet from Abilis for authoring the driver.

Feedback welcome (both positive or negative) by commenting below.

94 thoughts on “Call for testers: PCTV 74e Support

  1. Yes! Success!

    Thank you very much to Devin, Mr Miethling, and Mr Hascoet for making Linux support of the PCTV 74e a reality! I’m glad that I did not return the stick when I noticed my mistake that Linux support was not yet available but waited for it to finally arrive (which did not take long).

    My system: Kubuntu “Kaotic” Koala 9.10 with kernel 2.6.31-20. Driver works flawlessly out of the box. I use Kaffeine for watching DVB-T.

    Just a minor glitch: when I remove the stick and reattach it, then the first removal is noticed but reattaching it is not noticed any more. Trying to rmmod the dvb_as102 causes rmmod to hang.

    • Hello Harald,

      Thanks for the feedback. Could you tell me what scan file you used? I have only so far tested it with 8MHz, so it would be good to know what you tested with as it will give me some idea as to whether the other bandwidths are working properly.

      Regarding the disconnect issue, I will see if I can reproduce that here, and if so I will fix it.

      Devin

  2. I’ve just run an automatic scan in Kaffeine. The channel data gathered only listed 8MHz channels.

    BTW — I’ve copied over the modules to an EeePC Netbook 901Go which now quite nicely works as a small TV set. 🙂

  3. Hello Devin

    I testet the driver with another as-102 device. It is the Elgato EyeTV DTT delyxe.
    It did not work out of the box but after adding the USB vendor ID and product ID to the Sources it worked like a charm.

    dvb-usb-as102.h:
    /* EyeTV DTT deluxe */
    #define EYETV_DTT_NAME “EyeTV DTT deluxe”
    #define EYETV_DTT_VID 0x0fd9
    #define EYETV_DTT_PID 0x002c

    dvb-usb-as102.c:
    static struct usb_device_id as102_usb_id_table[] = {
    { USB_DEVICE(AS102_USB_DEVICE_VENDOR_ID, AS102_USB_DEVICE_PID_0001) },
    { USB_DEVICE(PCTV_74E_USB_VID, PCTV_74E_USB_PID) },
    { USB_DEVICE(EYETV_DTT_VID, EYETV_DTT_PID) },
    { } /* Terminating entry */
    };

    Please add the device to the driver.

  4. Hi Devin,

    Worked great, out of the box (once I remembered yet again to disable the firefw module!)

    I have restarted MythTV several times and it seems happy still. I will try it in production from today.

    Bob

    • Hi Bob,

      Great to hear you had some success. I specifically mentioned the firedtv issue in the announcement after eight or ten people ran into it when I released the PCTV 340e driver.

      Please do report back once you’ve had a chance to do some more testing with other applications (such as MythTV). I am very interested in hearing how well it behaves from an application compatibility standpoint.

      Cheers,

      Devin

  5. Hi Devin,

    Well, it was used intently last night. I didn’t get any EIT with the default settings, but I don’t blame it until I have done some more exploration because this is my first attempt with MythTV.

    Interestingly with the default settings in MythTV it didn’t find the muxes on a channel scan, the signal level was good as it passed the channels but it didn’t lock any of the muxes. It looked like the time-out was too quick to get a signal lock. But using “scan” to tzap and import the channels worked immediately.

    Sometimes when tuning it took a surprisingly long time to tune between muxes (more than a couple of seconds) and I don’t think it was because that channel was long-GOP, it was far too long to be an MPEG sync issue.

    Sensitivity looked OK because I am already a little marginal and it was stable. Just trying to get used to a non-Windows media centre now! I use linux often at work but my old media centre was a windows beast that has been replaced with an Acer Revo (Atom 330 + nVidia ION).

    Thanks for the good work.

    • Hi Bob,

      Given my experience with the MythTV channel scanner, it’s a bit premature to blame the card. Have you tried increasing the lock timeout in the card configuration page in mythtv-setup before running the scan? I think it’s 500ms by default, which might be a bit short.

      Regarding the tuning time, it might be worthwhile to run tzap a few times on the mux in question and see how long it takes to get a lock. MythTV tends to be a pretty poor choice for evaluating tuning time since it does a large amount of buffering when switching channels (several seconds worth). It would be good to know whether the problem occurs 100% of the time against a specific mux, or whether it is random across all muxes.

      Devin

      • Tested on ubuntu 9.10 64bit and card pctv nano 74e.
        Everything worked well following the instruction in the post.
        Installing the above package solved also another problem I had with another card:
        ID 1822:3202 Twinhan VisionDTV USB-Ter/HAMA USB DVB-T
        which was not working anymore after the update from ubuntu 9.04 to 9.10

        • Hello GBG,

          Glad it’s working well for you.

          Bear in mind that the tree you installed was not *just* the 74e driver, but also the rest of the current v4l-dvb tree. Hence it would not be surprising if you got some other fixes as well (which you would have gotten if you had just installed the current v4l-dvb tree from linuxtv.org).

          Cheers,

          Devin

          • Hi Devin,

            I want to make an RPM package for the driver. Is it enough to package dvb_as102.ko and firmware or you made changes in other modules as well?
            Currently I put there all modules not included in my kernel.

            Regards,
            Peter

  6. Yes, finally some information I can use. Been going nutz attempting to get a PCTV 80e to work under Suse 11.2 with little success till now. Although the mini HDTV USB is not new to the market, found one on clearance, it does seem to be new enough to SuSe that it’s been a problem to get a close enough reference to put me in the ball park of getting it working.
    This is as close to the source as you can get.
    Thnx.

  7. Hy Devin
    All work fine with Impressive tuning time with Fedora 12 x86_64

    Cam you implement a S/R meter like a Cynergy T2 (With kaffeine i can see correct Signal Meter buyt S/R meter remain always at 1%)

    Compliments

    Great Work

    • Hi LordByte,

      Could you clarify *when* you did the hg checkout? I’m asking because I pushed in a bunch of changes last night, and it would be good to know if your testing included those.

      Regarding the SNR, I will have to talk to the person at Abilis to see how it is represented. The big issue is that every driver represents the SNR field in a different unit of measure, so you should feel fortunate that what shows up with your Cynergy T2 actually looks reasonable under whatever app you are using. There is a complete lack of a standard, and as a result the individual applications implemented whatever happened to look “ok” under whatever card the developer happened to have owned.

      Devin

      • File List:
        -rw-rw-r– 1 fld0249 fld0249 95500 17 feb 19:40 as102_data1_st.hex
        -rw-rw-r– 1 fld0249 fld0249 81820 17 feb 19:40 as102_data2_st.hex
        -rw-rw-r– 1 fld0249 fld0249 4148218 17 feb 19:41 v4l-dvb-as102-fd4a76510915.tar

        Hour is in Italian TZ (GMT+1)

        • Hi LordByte,

          Ah, ok. Yeah, that’s the code before I did all the cleanup work. If you were to try out the latest version of the tree, I would definitely be interested in feedback. In theory, it should work *exactly* the same, so I am looking for reports of regressions that may have resulted from my cleanup work.

          Cheers,

          Devin

  8. Arrrh!

    Turned on my htpc this morning and now the device isn’t working. very strange because if I fit it to my laptop it seems to be recognised. lsmod shows the device including dvb_core and em28xx_dvb. It even shows up in gnome-device-manager but there is no /dev/dvb device structure.

    Devin, I have looked all over the web but I can’t see how you diagnose the lack of /dev/dvb, perhaps it is something to do with udev but don’t know what it means when a device no longer works that once did?

    Bob

    • Devin Heitmueller

      Hi Bob,

      Did your Linux distro install a kernel update? If so, you will need to recompile the tree you downloaded from kernellabs (after doing a “make distclean”).

      Also, I don’t now why em28xx_dvb would get loaded, since the 74e is not an em28xx based device.

      If you email me the dmesg output after connecting the device, I will see if I can provide some better advice.

      Devin

  9. Bringfried Stecklum

    One more remark. I noticed that dvb_as102 has to be unloaded/reloaded on suspend/resume. Otherwise the firmware will not be found when resuming. In order to take care of that, create a file in /etc/pm/config.d/ which contains SUSPEND_MODULES=”dvb_as102″.

    Bringfried

  10. Hi Everybody,
    I have troubles using the driver with kaffeine. In many cases kaffeine does not detect the device if it is plugged in. It has to be unplugged and plugged in back several times to be detected. However, dmesg says that driver and firmware is successfully loaded each time the device is plugged in. Does anybody face the same problem? I use Fedora 12.

    Can you advise some other easy to use player for DVB-T in linux?

  11. Pingback: Kylie Batt
  12. I have been able to successfully build, install and run it with my PCTV 74e on Centos 5.4 (2.6.18-164.15.1.el5) after simply commenting out lines referencing dev.parent in linux/drivers/media/video/gspca/gspca.c (function gspca_input_connect – yes I know it’s an ugly hack). Thank you very much!

  13. Today I bought a HAMA USB-DVB-T dongle with Abilis AS102 Chip. Installation worked perfectly on Kanotix with Kernel 2.6.32-13. Absolutely no problems using Kaffeine. Many Thanks!

    • Devin Heitmueller

      I’m actually impressed that worked. HAMA must be using the Abilis default USB ID (otherwise a code change would have been required to add the USB ID to the driver).

      Devin

      • One thing I noticed today is, that reception with the Windows-Driver seems may be a bit more stable – using the tiny antenna. ;). If you’d need some more feedback, just send me a mail.
        Andreas

  14. Hello,

    just tested the driver and had success under openSUSE 11.1 (32 bit) and vanillas kernel 2.6.33.3 – automatic scan of tv worked (germany, Frankfurt am Main), nice picture and sound.

    BUT: compile errors under 2.6.34 (implicit function declaration). Is this a known error? And how are the chances to get this driver into the stable kernel tree?

    Greetings Oli

  15. Dear Devin Heitmueller,

    thanx for your driver …
    … works very well with my elegato/ubuntu. Why does nobody (elegato/pctv/you/your team) push the driver into the stable kernel tree? I also want to try it soon on my openwrt router …

    • Devin Heitmueller

      Hi Cg,

      I haven’t had a chance to get it upstream because of the amount of work required to meet the kernel “coding standards”. The coding standard is a bunch of rules which dictate things like whitespace, indentation, and variable naming.

      The code will not be accepted upstream without meeting the coding standard, regardless of whether it works.

      Elgato had nothing to do with the release (and could frankly care less about whether you can use their sticks under Linux). PCTV and Abilis did the work required to get the code released under the GPL in the first place.

      I just haven’t found the four or five hours to spend cleaning up the code. Since nobody paid to see this work done, it’s really not on the top of my priority list relative to customers who *are* paying to see code merged upstream.

      Devin

  16. Dear Devin,

    I bought myself a 74e, because under WinXP it works like a charm. And I thought it would be relatively easy to make it work under Ubuntu 10.04. How I was wrong. I’ve tried everything, but still it does not work. Would it be to much for you to let me know all the steps I need to follow to make it work (as I am still very novice to Ubuntu and Linux from command-prompt)?
    Thank you very much in advance.

  17. Hi Devin
    Great work. I am a linux newbie trying to get my Elgato EyeTV DTT deluxe working, and I had mixed success. On a lucid minimal install i’am trying to follow your script. I think I got it working after i installed gcc, but I do get some weird errors. I’ve managed to get my system to recognize the stick, and i also succeded in doing a channel scan. But after each reboot my stick isn’t recognized. I have to pull it out from one usb port and insert it again….why is that and how do I solve that? I will post the errors/warnings i’m getting when installing for troubleshooting.
    Again thanks for your work and thanks in advance.

    • Devin Heitmueller

      Hi Lappen,

      Thanks for testing.

      Yeah, the unplug/replug issue is a known problem that I have yet to track down. It will definitely have to be fixed before the support goes into the mainline.

      Devin

  18. Hi Devin,

    Thank you for your great work. I am a newbie trying to make the pctv 74e work on ubuntu. I’ve installed the v4l-dvb-as102. In my dmesg I could see that the adapter is registered correctly and that the firmware is uploaded,

    [ 2782.383193] DVB: registering new adapter (PCTV Systems picoStick (74e))
    [ 2782.383621] DVB: registering adapter 0 frontend 0 (PCTV Systems picoStick (74e))…
    [ 2782.383689] usb 2-4: firmware: requesting as102_data1_st.hex
    [ 2782.547740] as10x_usb: fimrware: as102_data1_st.hex loaded with success

    but I do not see the device when I execute lsusb. Also when I try do a scan with w_scan it says:

    main:2911: FATAL: ***** NO USEABLE DVB CARD FOUND. *****
    Please check wether dvb driver is loaded and
    verify that no dvb application (i.e. vdr) is running.

    the result of ls /dev/dvb/adapter0/ is
    demux0 dvr0 frontend0

    The result of lsmod is:

    Module Size Used by
    cryptd 8116 0
    aes_x86_64 7912 2
    aes_generic 27607 1 aes_x86_64
    binfmt_misc 7960 1
    ppdev 6375 0
    vboxnetadp 5171 0
    vboxnetflt 15064 0
    vboxdrv 1792439 2 vboxnetadp,vboxnetflt
    snd_hda_codec_nvhdmi 4760 1
    snd_hda_codec_realtek 278890 1
    dvb_as102 20758 0
    arc4 1473 2
    dvb_core 102058 1 dvb_as102
    snd_hda_intel 25645 2
    snd_hda_codec 85727 3 snd_hda_codec_nvhdmi,snd_hda_codec_realtek,snd_hda_intel
    snd_hwdep 6924 1 snd_hda_codec
    snd_pcm_oss 41394 0
    snd_mixer_oss 16299 1 snd_pcm_oss
    snd_pcm 87850 3 snd_hda_intel,snd_hda_codec,snd_pcm_oss
    snd_seq_dummy 1782 0
    snd_seq_oss 31219 0
    snd_seq_midi 5829 0
    snd_rawmidi 23388 1 snd_seq_midi
    snd_seq_midi_event 7267 2 snd_seq_oss,snd_seq_midi
    snd_seq 57417 6 snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_seq_midi_event
    rtl8187 53204 0
    snd_timer 23553 2 snd_pcm,snd_seq
    snd_seq_device 6824 5 snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_rawmidi,snd_seq
    mac80211 238128 1 rtl8187
    fbcon 39270 71
    tileblit 2487 1 fbcon
    led_class 3732 1 rtl8187
    cfg80211 148386 2 rtl8187,mac80211
    eeprom_93cx6 1765 1 rtl8187
    video 20623 0
    font 8053 1 fbcon
    bitblit 5811 1 fbcon
    output 2503 1 video
    softcursor 1565 1 bitblit
    snd 70978 16 snd_hda_codec_realtek,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_seq_oss,snd_rawmidi,snd_seq,snd_timer,snd_seq_device
    edac_core 45423 0
    edac_mce_amd 9214 0
    nvidia 10832442 39
    vga16fb 12757 1
    vgastate 9857 1 vga16fb
    i2c_nforce2 6099 0
    soundcore 8052 1 snd
    snd_page_alloc 8500 2 snd_hda_intel,snd_pcm
    lp 9336 0
    parport 37160 2 ppdev,lp
    usbhid 40988 0
    hid 83376 1 usbhid
    dm_raid45 75436 0
    xor 4685 1 dm_raid45
    ahci 37646 2
    forcedeth 55592 0
    pata_amd 11962 0

    All help is appreciated,

  19. Devin,

    Thanks a lot, this is great work.

    I bought an elgato eyeTV DTT deluxe (v2) today: it’s a limited “football edition” (marketing targeted for the soccer world cup here in France, I’m very late I know). As far as I can tell I managed to make it work perfectly using this driver. However, I had to work around a few issues so I figured out I’d post some explanations here in case somebody else experiences the same.

    First I’m running a 2.6.34 kernel under opensuse 11.3 and the compilation kept complaining about implicit declaration of symbols ‘kfree’ and others. This is easily fixed by adding a #include to all affected source files.

    After compiling and installing, the stick was detected fine but the “part2” firmware would not load. I kept getting an error message “as10x_usb: error during firmware upload part2” in the kernel log each time I plugged the stick. I verified the files, downloaded them again, but this didn’t help. I eventually decided to try to extract the firmware from one of the supported operating system drivers. I first looked in the supplied driver CD-ROM but couldn’t find them.

    So I decided to install the whole thing on my girlfriend’s MacBook. Apparently everything is driven through elgato’s EyeTV application. With a MacOS Terminal Window, I dug my way down into /Applications/EyeTV/Resources/firmware/AS102/new, where I found two firmware file (which differ from those supplied here, including the “part1′). After replacing the two files in /lib/firmware with those from the MacOS, everything went fine and the 2 parts of the firmware would load successfully.

    Last thing was to scan the DVB channels. I tried with Kaffeine (1.0 and 0.8.8), Me-TV and scan > tzap, apparently the signal strength was good but I kept getting “tuning failed’ errors and no channels at all. For some reason, this magically went away after applying a 167 kHz shift to all frequencies. This seems to be a known problem here in Paris since I actually found that hint in a french DVB forum and several other people noticed the same thing. Still I’m a bit puzzled by this because I was previously using another DVB-T stick (Pinnacle 72e) and the tuning has always been flawless without having to shift any frequency, so this might nevertheless be some stick-related issue.

    Hope this helps. Thanks again.

    • Hi Balden,

      The engineer From Abilis told me that the Elgato stick requires different firmware, but he never got around to providing it.

      Regarding the 167KHz shift, some tuners have a wider tolerance than others, and can still achieve a signal lock even when off by that much. This is likely why your 72e works while the Abilis didn’t.

      Devin

  20. Hi Devin,
    Thank you for your great work. I am also a newbie trying to make the pctv 74e work on ubuntu 10.04.1 LTS. I did exactly as you described. It works fantastic with Kaffeine on my netbook Eee PC and my Acer Aspire R3610.
    Thanks again!
    Bruno

  21. … i also use two Elgato Deluxe v2 sticks (non “football edition”) with this driver on ubuntu 10.10 and the firmware files from kernellabs (!) without a problem (or i just cant see, that part 2 does not load), just to let you know.
    … is there also a make .config, where only the a102 driver and just the really important parts are build (just to get it on openwrt)?

  22. Hi Devin,

    I get compile error for kernel 2.6.34.6-47.fc13.i686:

    CC [M] /home/makerpm/rpmbuild/BUILD/v4l-dvb-as102-2/v4l/tuner-xc2028.o
    CC [M] /home/makerpm/rpmbuild/BUILD/v4l-dvb-as102-2/v4l/tuner-simple.o
    CC [M] /home/makerpm/rpmbuild/BUILD/v4l-dvb-as102-2/v4l/tuner-types.o
    CC [M] /home/makerpm/rpmbuild/BUILD/v4l-dvb-as102-2/v4l/mt20xx.o
    /home/makerpm/rpmbuild/BUILD/v4l-dvb-as102-2/v4l/tuner-simple.c: In function ‘simple_release’:
    /home/makerpm/rpmbuild/BUILD/v4l-dvb-as102-2/v4l/tuner-simple.c:997: error: implicit declaration of function ‘kfree’
    /home/makerpm/rpmbuild/BUILD/v4l-dvb-as102-2/v4l/tuner-simple.c: In function ‘simple_tuner_attach’:
    /home/makerpm/rpmbuild/BUILD/v4l-dvb-as102-2/v4l/tuner-simple.c:1081: error: implicit declaration of function ‘kzalloc’
    /home/makerpm/rpmbuild/BUILD/v4l-dvb-as102-2/v4l/tuner-simple.c:1081: warning: assignment makes pointer from integer without a cast
    make[3]: *** [/home/makerpm/rpmbuild/BUILD/v4l-dvb-as102-2/v4l/tuner-simple.o] Error 1
    make[3]: *** Waiting for unfinished jobs….
    /home/makerpm/rpmbuild/BUILD/v4l-dvb-as102-2/v4l/tuner-xc2028.c: In function ‘free_firmware’:
    /home/makerpm/rpmbuild/BUILD/v4l-dvb-as102-2/v4l/tuner-xc2028.c:252: error: implicit declaration of function ‘kfree’
    /home/makerpm/rpmbuild/BUILD/v4l-dvb-as102-2/v4l/tuner-xc2028.c: In function ‘load_all_firmwares’:
    /home/makerpm/rpmbuild/BUILD/v4l-dvb-as102-2/v4l/tuner-xc2028.c:314: error: implicit declaration of function ‘kzalloc’
    /home/makerpm/rpmbuild/BUILD/v4l-dvb-as102-2/v4l/tuner-xc2028.c:314: warning: assignment makes pointer from integer without a cast
    /home/makerpm/rpmbuild/BUILD/v4l-dvb-as102-2/v4l/tuner-xc2028.c:365: warning: assignment makes pointer from integer without a cast
    /home/makerpm/rpmbuild/BUILD/v4l-dvb-as102-2/v4l/tuner-xc2028.c: In function ‘xc2028_attach’:
    /home/makerpm/rpmbuild/BUILD/v4l-dvb-as102-2/v4l/tuner-xc2028.c:1269: warning: assignment makes pointer from integer without a cast
    make[3]: *** [/home/makerpm/rpmbuild/BUILD/v4l-dvb-as102-2/v4l/tuner-xc2028.o] Error 1
    /home/makerpm/rpmbuild/BUILD/v4l-dvb-as102-2/v4l/mt20xx.c: In function ‘microtune_release’:
    /home/makerpm/rpmbuild/BUILD/v4l-dvb-as102-2/v4l/mt20xx.c:54: error: implicit declaration of function ‘kfree’
    /home/makerpm/rpmbuild/BUILD/v4l-dvb-as102-2/v4l/mt20xx.c: In function ‘microtune_attach’:
    /home/makerpm/rpmbuild/BUILD/v4l-dvb-as102-2/v4l/mt20xx.c:623: error: implicit declaration of function ‘kzalloc’
    /home/makerpm/rpmbuild/BUILD/v4l-dvb-as102-2/v4l/mt20xx.c:623: warning: assignment makes pointer from integer without a cast
    make[3]: *** [/home/makerpm/rpmbuild/BUILD/v4l-dvb-as102-2/v4l/mt20xx.o] Error 1
    make[2]: *** [_module_/home/makerpm/rpmbuild/BUILD/v4l-dvb-as102-2/v4l] Error 2
    make[2]: Leaving directory `/usr/src/kernels/2.6.34.6-47.fc13.i686′
    make[1]: *** [default] Error 2
    make[1]: Leaving directory `/home/makerpm/rpmbuild/BUILD/v4l-dvb-as102-2/v4l’
    make: *** [all] Error 2

    • Hi Martan,

      The tree is known to not compile against to 2.6.34 (due to changes in the kernel). You will have to either wait until I update the tree, or attempt to resolve the issues yourself.

      Devin

    • Sorry, apparently I must add some “HTML magic” to include “greater than” and “less than” characters in the replies. Here’s another attempt: for compiling with 2.6.34, you should try to add

      #include <slab.h>

      to all affected source files.
      Hope this helps.

      • Hi,

        unfortunately, Baldens idea does not work for me (kernel 2.6.35, fedora 14). Compiling stops at dvb_net.o due to several problems, among others:
        > ‘struct dev_mc_list’ declared inside parameter list
        > In function ‘dvb_set_mc_filter’: dereferencing pointer to incomplete type
        and so on.
        Any suggestions how to repair this, apart from compiling the kernel? Could Devin perhaps…?
        Best,
        andreas

        • Hello Andreas,

          Yeah, they keep renaming functions in the kernel in a manner that both breaks compatibility of out-of-tree code and provides very little actual value.

          The tree will have to be rebased in order to work with newer kernels. Either stick with an older distro, fix the driver, or wait for it to be merged upstream.

          Regards,

          Devin

          • Thanks to Devin for his great work!!

            The problem seems to be not only the renaming of usb_buffer_free to usb_free_coherent in the kernel, but also a new structure in dvb_net.h.
            However, I managed to install the drivers on my system now applying the following steps (I’m running fedora 14 and kernel 2.6.35.9):

            1) rename every occurence of usb_buffer_free to usb_free_coherent and
            every occurence of usb_buffer_alloc to usb_alloc_coherent in the whole tree
            2) run make once (you will run into problems, but that’s ok).
            3) deactivate now any DIBxxx”-entries in v4l/.config (xxx stands for some number)
            4) delete the entry dvb_net.o from v4l/Makefile.media
            5) now run make again. Whenever a c-file makes problems, you can repair it by adding the line
            #include </usr/src/kernels/2.6.35.9-64.fc14.i686.PAE/include/linux/slab.h>
            in the include section of the file. In fact, I added the line to every c-file that uses function kfree /kzmalloc
            6) make install

            Good luck!
            andreas

  23. Aiuto !!!!
    make -C /home/oscar/v4l-dvb-as102/v4l
    make[1]: ingresso nella directory “/home/oscar/v4l-dvb-as102/v4l”
    ./scripts/make_myconfig.pl
    make[1]: uscita dalla directory “/home/oscar/v4l-dvb-as102/v4l”
    make[1]: ingresso nella directory “/home/oscar/v4l-dvb-as102/v4l”
    perl scripts/make_config_compat.pl /lib/modules/2.6.35-24-generic/source ./.myconfig ./config-compat.h
    creating symbolic links…
    make -C firmware prep
    make[2]: Entering directory `/home/oscar/v4l-dvb-as102/v4l/firmware’
    make[2]: Leaving directory `/home/oscar/v4l-dvb-as102/v4l/firmware’
    make -C firmware
    make[2]: Entering directory `/home/oscar/v4l-dvb-as102/v4l/firmware’
    make[2]: Nothing to be done for `default’.
    make[2]: Leaving directory `/home/oscar/v4l-dvb-as102/v4l/firmware’
    Kernel build directory is /lib/modules/2.6.35-24-generic/build
    make -C /lib/modules/2.6.35-24-generic/build SUBDIRS=/home/oscar/v4l-dvb-as102/v4l modules
    make[2]: Entering directory `/usr/src/linux-headers-2.6.35-24-generic’
    CC [M] /home/oscar/v4l-dvb-as102/v4l/tuner-xc2028.o
    /home/oscar/v4l-dvb-as102/v4l/tuner-xc2028.c: In function ‘free_firmware’:
    /home/oscar/v4l-dvb-as102/v4l/tuner-xc2028.c:252: error: implicit declaration of function ‘kfree’
    /home/oscar/v4l-dvb-as102/v4l/tuner-xc2028.c: In function ‘load_all_firmwares’:
    /home/oscar/v4l-dvb-as102/v4l/tuner-xc2028.c:314: error: implicit declaration of function ‘kzalloc’
    /home/oscar/v4l-dvb-as102/v4l/tuner-xc2028.c:314: warning: assignment makes pointer from integer without a cast
    /home/oscar/v4l-dvb-as102/v4l/tuner-xc2028.c:365: warning: assignment makes pointer from integer without a cast
    /home/oscar/v4l-dvb-as102/v4l/tuner-xc2028.c: In function ‘xc2028_attach’:
    /home/oscar/v4l-dvb-as102/v4l/tuner-xc2028.c:1269: warning: assignment makes pointer from integer without a cast
    make[3]: *** [/home/oscar/v4l-dvb-as102/v4l/tuner-xc2028.o] Errore 1
    make[2]: *** [_module_/home/oscar/v4l-dvb-as102/v4l] Error 2
    make[2]: Leaving directory `/usr/src/linux-headers-2.6.35-24-generic’
    make[1]: *** [default] Errore 2
    make[1]: uscita dalla directory “/home/oscar/v4l-dvb-as102/v4l”
    make: *** [all] Errore 2
    oscar@oscar-laptop:~/v4l-dvb-as102$

  24. Above instructions worked perfectly for caffeine
    player in Ubuntu 10.04.
    Need to add “sudo” in front of “make install” and “reboot” for the newbies like me. Also change permissions of firmware files to root when copying to firmware folder.

    Thanks Heaps

  25. one more tuner with Abilis AS-102. It’s make for n telewision (Poland), called STICK DVB-T. Please add to this driver. USB_VID 0x0b89 USB_PID 0x0007 manufacturer ADB (Advanced Digital Broadcast). I change and it’s works. Sorry for my english 😉

  26. Hi there. Many thanks for working on this driver.
    I was just wondering if there are any news with the status of this driver?
    Has it already been submitted for inclusion in the kernel, or is there perhaps a version of the sources that compile successfully with recent kernels such as the 2.6.36 series?

    • Robert,

      My attempt to submit it upstream was rejected due to “coding style” issues, and frankly I don’t have the time/energy to waste cleaning up whitespace and minor issues which don’t have any bearing on the actual quality of the driver.

      Don’t like the fact that a perfectly good driver isn’t upstream because of whitespace and other trivial issues? Complain to the linux-media mailing list.

      Devin

  27. Damn. That sucks. Thanks for the effort though. Somehow I don’t think me complaining to the linux-media mailing list would have any effect.

    I guess updating the driver in the mercurial repository to work with current kernels, is probably also out of the question for now?

  28. OK, it is not hard to unplug it and then suspend to ram works… but…. please can you add support for HD channels? I mean those which are encoded with mpeg-4 etc., I don’t know understand it but i know that in Czech Republic we have both small and high definition tv channels and I can find just SD with picostick in ubuntu. (And yes, I am in the place with good signal 😉 )
    Thanks for the answer

  29. Tested on Ubuntu 10.10 (kernel 2.6.35) with the patch mentioned in the comments. Works quite ok with Me-TV in gnome, but unfortunately it seems like the driver will only load once (if I ie. pull out the usb tuner and puts it back in). After that I have to reboot in order to get it to work again.
    HD channels work perfect here.

    • Hi, please can you answer me some questions?
      I installed the drivers+copied firmware files. Now I tried to add card into myth tv but only in DVB DTV capture card (v3.x) it found my picostick (74e), not in H.264 encoder card (HD-PVR). Is it OK?
      Because if I add it just in DVB and then searching for channels, no HD channels are found. I am in an area with very good signal.
      Please can you tell me in some words what were you steps after you installed drivers? Thank you very much
      T.Kijas

      • Devin Heitmueller

        The PCTV 74e device in question is not an H.264 encoder (HD-PVR). That is a different product (manufactured by Hauppauge).

        Your questions are not specific to this driver, but rather are general MythTV end-user questions, and should be addressed to the mythtv-users mailing list.

        Regards,

        Devin

  30. Hi.

    Tested on openSUSE 11.4 RC2 (kernel 2.6.37) thanks to the help given in the comments. HD channels also work fine here (although my computer is slow for this).

    I offer myself to do the code cleanup if it is only that (no programming). I just need to know where is defined the coding style to follow.

    Greetings.

  31. Hi Devin,
    since two weeks Itry to install this driver for my new PCTV Pico 74e-Stick. It doesn’t work.
    First I had problems with my Kernel-Version. After a while I found the command ‘make distclean’. After this got a lot errors like posted by oscar. I copied the slab.h-file from the kernel-source to the v4l-dvb-as102-folder and I added to ever c-file which reported an error #include . For my feeling it is long an hard work.
    After a while working I got a new error:
    /root/v4l-dvb-as102/v4l/flexcop-i2c.c:255:39: error: ‘I2C_CLASS_TV_DIGITAL’ undeclared (first use in this function) etc…..
    For this error I cann’t find a solution.
    I am using openSuSE11.4 32 with Kernel 2.6.37.6-0.5.
    May be you know a easy way to install this driver. In the moment I like to give it up.
    Under Windows the stick works fine.
    Greetings olaf

    • Devin Heitmueller

      Hello Olaf,

      The tree was written against an earlier kernel, and the kernel people do a pretty crummy job of maintaining API compatibility between kernel releases. As a result, the tree no longer builds against current kernels (it was originally done against an Ubuntu 10.04 build running 2.6.32).

      If you cannot run a distro with an older kernel, and you are not knowledgeable enough to port the driver yourself to run against later kernels, then your only alternative is to wait for the changes to go upstream. Sorry, but I don’t have a better answer for you at this point (I don’t have time to do the port myself at this point).

      Devin

        • Devin Heitmueller

          Hello Kim,

          The last attempt to submit this upstream was rejected because of “codingstyle issues”. It requires probably around five-ten hours to do the cleanup (ensuring no regressions are introduced), and I don’t have any time slated for doing such at this point. I already put about ten hours into cleanup, and just don’t have the time for this sort of BS…

          Not happy that working code is being rejected upstream due to crap like whitespace issues? Complain to the linux-media mailing list….

          Devin

  32. Another one device with as102 onboard (working with your driver) – DVB-t dongle released by polish digital platform (nBox)

    Working well for me (kernel 3.0, had to change usb_buffer_alloc()
    to usb_alloc_coherent() and usb_buffer_free to usb_free_coherent() )

    Any chance to push this driver to upstream ?

    patch for new IDs:

    diff -Nur linux/drivers/media/dvb/as102/as102_usb_drv.c
    linux-mine/drivers/media/dvb/as102/as102_usb_drv.c
    — as102/as102_usb_drv.c 2011-07-20 21:37:33.924143297 +0200
    +++ /usr/src/linux/drivers/media/dvb/as102/as102_usb_drv.c 2011-07-20
    20:40:21.000000000 +0200
    @@ -39,6 +39,7 @@
    static struct usb_device_id as102_usb_id_table[] = {
    { USB_DEVICE(AS102_USB_DEVICE_VENDOR_ID, AS102_USB_DEVICE_PID_0001) },
    { USB_DEVICE(PCTV_74E_USB_VID, PCTV_74E_USB_PID) },
    + { USB_DEVICE(NBOX_USB_VID, NBOX_USB_PID) },
    { USB_DEVICE(ELGATO_EYETV_DTT_USB_VID, ELGATO_EYETV_DTT_USB_PID) },
    { } /* Terminating entry */
    };
    @@ -48,6 +49,7 @@
    static const char *as102_device_names[] = {
    AS102_REFERENCE_DESIGN,
    AS102_PCTV_74E,
    + AS102_NBOX,
    AS102_ELGATO_EYETV_DTT_NAME,
    NULL /* Terminating entry */
    };
    diff -Nur linux/drivers/media/dvb/as102/as102_usb_drv.h
    linux-mine/drivers/media/dvb/as102/as102_usb_drv.h
    — as102/as102_usb_drv.h 2011-07-20 21:37:33.925143297 +0200
    +++ /usr/src/linux/drivers/media/dvb/as102/as102_usb_drv.h 2011-07-20
    20:39:46.000000000 +0200
    @@ -36,6 +36,11 @@
    #define PCTV_74E_USB_VID 0x2013
    #define PCTV_74E_USB_PID 0x0246

    +/* nBox DVB-T Stick */
    +#define AS102_NBOX “nBox DVB-T Stick”
    +#define NBOX_USB_VID 0x0b89
    +#define NBOX_USB_PID 0x0007
    +
    /* Elgato: EyeTV DTT Deluxe */
    #define AS102_ELGATO_EYETV_DTT_NAME “Elgato EyeTV DTT Deluxe”
    #define ELGATO_EYETV_DTT_USB_VID 0x0fd9

      • Devin Heitmueller

        Hi Peter,

        If you search the linux-media mailing list, you should be able to find Mauro’s email where he enumerated his complaints after reviewing the driver. They are all pretty straightforward, but just time consuming to address.

        Make sure you break any cleanup into a series of smaller patches that can be reviewed independently as opposed to a single “cleanup patch” which makes fifty changes. Would suggest either an hg tree or a “quilt” series…

        Devin

  33. Hello all. I was trying to compile the driver and got this error (Debian testing, kernel 3.0.0-1-amd64):
    /home/longman/balast/picostick/v4l-dvb-as102-2/v4l/tuner-xc2028.c: In function ‘generic_set_freq’:
    /home/longman/balast/picostick/v4l-dvb-as102-2/v4l/tuner-xc2028.c:946:18: error: ‘T_DIGITAL_TV’ undeclared (first use in this function)
    /home/longman/balast/picostick/v4l-dvb-as102-2/v4l/tuner-xc2028.c:946:18: note: each undeclared identifier is reported only once for each function it appears in
    /home/longman/balast/picostick/v4l-dvb-as102-2/v4l/tuner-xc2028.c: In function ‘xc2028_set_params’:
    /home/longman/balast/picostick/v4l-dvb-as102-2/v4l/tuner-xc2028.c:1134:5: error: ‘T_DIGITAL_TV’ undeclared (first use in this function)
    /home/longman/balast/picostick/v4l-dvb-as102-2/v4l/tuner-xc2028.c:1135:1: warning: control reaches end of non-void function

    What does this mean? Shall I include a file defining T_DIGITAL_TV? Which file is that? Any help is appreciated, thanks in advance!

    • Hello Athmoss,

      The driver has been submitted upstream, so you should just switch to the standard “media_build” tree rather than trying to make my private tree work against your current kernel. Please see the linuxtv.org wiki for more information on building the mainline tree.

      Cheers,

      Devin

  34. Hello.

    Short summary: Works fine using USB 2.0 and NOT using USB 3.0

    Im running my pctv 74e on the BETA (14.4.2012) of Ubuntu Precision 12.04 on my new Zenbook i7. Without any modification the kernel (3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux) recognizes the card and is looking for the firmware. The firmware is not included in ubuntu so I downloaded the files from the recommended URL on top of this page and put them in /lib/firmware.

    Using USB3 the upload fails:

    usb 2-1: USB disconnect, device number 9
    as10x_usb: device has been disconnected
    usb 2-1: new high-speed USB device number 10 using xhci_hcd
    usb 2-1: ep 0x1 – rounding interval to 32768 microframes, ep desc says 0 microframes
    usb 2-1: ep 0x82 – rounding interval to 32768 microframes, ep desc says 0 microframes
    as10x_usb: device has been detected
    DVB: registering new adapter (PCTV Systems picoStick (74e))
    DVB: registering adapter 0 frontend 0 (PCTV Systems picoStick (74e))…
    mtp-probe: checking bus 2, device 10: “/sys/devices/pci0000:00/0000:00:1c.3/0000:03:00.0/usb2/2-1”
    mtp-probe: bus: 2, device: 10 was not an MTP device
    kernel: [17459.994865] as10x_usb: error during firmware upload part1

    using USB 2 it works like a charm:
    usb 1-1.2: new high-speed USB device number 22 using ehci_hcd
    as10x_usb: device has been detected
    DVB: registering new adapter (PCTV Systems picoStick (74e))
    DVB: registering adapter 0 frontend 0 (PCTV Systems picoStick (74e))…
    mtp-probe: checking bus 1, device 22: “/sys/devices/pci0000:00/0000:00:1d.0/usb1/1-1/1-1.2”
    as10x_usb: fimrware: as102_data1_st.hex loaded with success
    mtp-probe: bus: 1, device: 22 was not an MTP device
    as10x_usb: fimrware: as102_data2_st.hex loaded with success

    • Devin Heitmueller

      Hello Saulus,

      I haven’t done any testing with USB3 (as I actually don’t have a USB3 host controller). I would suggest though making sure that the device works under USB 3 under Windows (to ensure it isn’t some sort of hardware quirk). Beyond that, all I can suggest is bringing it to the attention of the linux-media mailing list to see if anybody has any ideas.

      Cheers,

      Devin

  35. Hello, it’s been a while this page seems inactive, but I’m currently trying to compile this driver on a 3.2 Debian binary kernel and I fail, with error messages like “implicit declaration of function ‘kfree'”. Does anybody have a solution, if possible which does not imply to use a home-compiled kernel ?

      • Thank you for answering Devin,

        however, I’m not able to understand what I see on this page, hum… A hint, or a git commandline would give me a chance to download the right tree and then religiously invoke a compilation.

        Please excuse my ignorance, but if a manage to see it work, I’ll be glad to report.

        • Devin Heitmueller

          Hello hifiman,

          The easiest way to get the support at this point is to just install the latest kernel. The changes went upstream in kernel 3.2, and had some additional cleanup/fixes in 3.3. Note that you need to have “staging” drivers enabled in your kernel config.

          Devin

Leave a Reply