You are not logged in.

#1 2009-05-06 14:52:32

abracadabra01
Member
Registered: 2009-05-06
Posts: 13

[Solved]TerraTec Cinergy Hybrid T XS, Analog Video Ok, no Audio

My system:
Linux distro: ARCH2009.2
Kernel       :  2.6.29-2
Tv device  : ID 0ccd:0042 TerraTec Electronic GmbH Cinergy Hybrid T XS
Firmware   : xc3028-v27.fw estratto da hcw85bda.sys con extract_xc3028.pl
                   copied in /lib/firmware
Player       : MPlayer dev-SVN-rUNKNOWN-4.3.3
v4l2-ctl  -l  :  volume (int)  : min=0 max=31 step=1 default=31 value=31
                    mute (bool) : default=1 value=0

commandline used:

mplayer tv://26 -tv driver=v4l2:width=720:height=576:amode=0:input=0:normid=5:adevice=/dev/dsp1:audiorate=48000:immediatemode=0:forceaudio:chanlist=italy

or:

mplayer tv://26 -tv driver=v4l2:width=720:height=576:amode=0:input=0:normid=5:alsa:adevice=hw.1,0:audiorate=48000:immediatemode=0:forceaudio:chanlist=italy

or:

sox -r 48000 -v 1 -c 2 -t ossdsp /dev/dsp1 -t ossdsp /dev/dsp &
mplayer tv://26 -tv driver=v4l2:width=720:height=576:amode=0:input=0:normid=5:adevice=/dev/dsp:audiorate=48000:immediatemode=0:forceaudio

in all cases I have video ok, no audio.

Replacing Cinergy with a Pinnacle PCTV USB2 I have video and audio working.
Cinergy on the same machine with WindowsXp (dual boot sistem) is working ok.

This is dmesg output:

usb 1-1.1: new high speed USB device using ehci_hcd and address 5
usb 1-1.1: configuration #1 chosen from 1 choice
em28xx: New device TerraTec Electronic GmbH Cinergy Hybrid T USB XS @ 480 Mbps (0ccd:0042, interface 0, class 0)
em28xx #1: Identified as Terratec Hybrid XS (card=11)
em28xx #1: chip ID is em2882/em2883
em28xx #1: i2c eeprom 00: 1a eb 67 95 cd 0c 42 00 50 12 5c 03 6a 32 9c 34
em28xx #1: i2c eeprom 10: 00 00 06 57 46 07 00 00 00 00 00 00 00 00 00 00
em28xx #1: i2c eeprom 20: 46 00 01 00 f0 10 31 00 b8 00 14 00 5b 00 00 00
em28xx #1: i2c eeprom 30: 00 00 20 40 20 6e 02 20 10 01 00 00 00 00 00 00
em28xx #1: i2c eeprom 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
em28xx #1: i2c eeprom 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
em28xx #1: i2c eeprom 60: 00 00 00 00 00 00 00 00 00 00 32 03 43 00 69 00
em28xx #1: i2c eeprom 70: 6e 00 65 00 72 00 67 00 79 00 20 00 48 00 79 00
em28xx #1: i2c eeprom 80: 62 00 72 00 69 00 64 00 20 00 54 00 20 00 55 00
em28xx #1: i2c eeprom 90: 53 00 42 00 20 00 58 00 53 00 00 00 34 03 54 00
em28xx #1: i2c eeprom a0: 65 00 72 00 72 00 61 00 54 00 65 00 63 00 20 00
em28xx #1: i2c eeprom b0: 45 00 6c 00 65 00 63 00 74 00 72 00 6f 00 6e 00
em28xx #1: i2c eeprom c0: 69 00 63 00 20 00 47 00 6d 00 62 00 48 00 00 00
em28xx #1: i2c eeprom d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
em28xx #1: i2c eeprom e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
em28xx #1: i2c eeprom f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
em28xx #1: EEPROM ID= 0x9567eb1a, EEPROM hash = 0x41d0bf96
em28xx #1: EEPROM info:
em28xx #1:    AC97 audio (5 sample rates)
em28xx #1:    500mA max power
em28xx #1:    Table at 0x06, strings=0x326a, 0x349c, 0x0000
tvp5150 2-005c: chip found @ 0xb8 (em28xx #1)
tuner 2-0061: chip found @ 0xc2 (em28xx #1)
xc2028 2-0061: creating new instance
xc2028 2-0061: type set to XCeive xc2028/xc3028 tuner
i2c-adapter i2c-2: firmware: requesting xc3028-v27.fw
xc2028 2-0061: Loading 80 firmware images from xc3028-v27.fw, type: xc2028 firmware, ver 2.7
xc2028 2-0061: Loading firmware for type=BASE (1), id 0000000000000000.
xc2028 2-0061: Loading firmware for type=(0), id 000000000000b700.
SCODE (20000000), id 000000000000b700:
xc2028 2-0061: Loading SCODE for type=MONO SCODE HAS_IF_4320 (60008000), id 0000000000008000.
em28xx #1: Config register raw data: 0x50
em28xx #1: AC97 vendor ID = 0xffffffff
em28xx #1: AC97 features = 0x6a90
em28xx #1: Empia 202 AC97 audio processor detected
tvp5150 2-005c: tvp5150am1 detected.
em28xx #1: v4l2 driver version 0.1.2
em28xx #1: V4L2 device registered as /dev/video1 and /dev/vbi1
zl10353_read_register: readreg error (reg=127, ret==-19)
em28xx #1/2: dvb frontend not attached. Can't attach xc3028
em28xx audio device (0ccd:0042): interface 1, class 1
tvp5150 2-005c: tvp5150am1 detected.

Any help is welcome.Tanks in advance

Last edited by abracadabra01 (2009-05-07 22:14:40)

Offline

#2 2009-05-06 22:49:18

gborzi
Member
From: Sicilia
Registered: 2009-03-18
Posts: 102

Re: [Solved]TerraTec Cinergy Hybrid T XS, Analog Video Ok, no Audio

Hello,
I had the same problem with my dazzle TV usb stick (eb1a:2881). Loading kernel drivers with the appropriate option (modprobe em28xx card=53) gave me analog video only, no sound and no DVB. So I tried out-of-kernel drivers from mcentral.de, had to patch them to get analog TV working but now I have both analog (with sound) and digital TV.
However, before trying these out-of-kernel drivers I suggest you to try to get the kernel provided drivers to work, your USB stick (0ccd:0042 as reported by the log file you posted) is officially supported unlike mine.
Two things you could try:
1) Check that em28xx-alsa is loaded and if it isn't load it;
2) open alsamixer and check the settings of the sound device which corresponds to the USB stick.

Hope this helps.


Giuseppe Borzi' - Registered Linux user #34028

Offline

#3 2009-05-07 10:49:32

abracadabra01
Member
Registered: 2009-05-06
Posts: 13

Re: [Solved]TerraTec Cinergy Hybrid T XS, Analog Video Ok, no Audio

Thank for the answer.

em28xx-alsa was not loaded, but after loading still no sound.
With the alsamixer I have checket it in all possible ways.

Here some outputs for help:

lsmod|grep em28xx
em28xx_alsa             7708  0
em28xx_dvb              6424  0
em28xx                 69436  2 em28xx_alsa,em28xx_dvb
s5h1409                 8280  1 em28xx_dvb
zl10353                 7164  1 em28xx_dvb
lgdt330x                8088  1 em28xx_dvb
dvb_core               81856  2 em28xx_dvb,lgdt330x
tuner_xc2028           22184  2 em28xx_dvb,tuner
ir_common              39864  1 em28xx
videodev               38848  5 em28xx,tvp5150,tuner,saa7115,v4l2_common
videobuf_vmalloc        5976  1 em28xx
videobuf_core          15512  2 em28xx,videobuf_vmalloc
tveeprom               11800  1 em28xx
snd_pcm                67992  5 em28xx_alsa,snd_usb_audio,snd_intel8x0,snd_ac97_codec,snd_pcm_oss
snd                    51460  13 em28xx_alsa,snd_usb_audio,snd_rawmidi,snd_hwdep,snd_intel8x0,snd_seq_oss,snd_ac97_codec,snd_seq,snd_seq_device,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_timer
i2c_core               20648  23 em28xx,s5h1409,zl10353,lgdt330x,tvp5150,i915,drm,i2c_algo_bit,tuner,tea5767,tda8290,tda18271,tda827x,tuner_xc2028,xc5000,tda9887,tuner_simple,mt20xx,tea5761,saa7115,v4l2_common,tveeprom,i2c_i801
usbcore               137360  9 em28xx_alsa,em28xx_dvb,em28xx,snd_usb_audio,snd_usb_lib,usbhid,uhci_hcd,ehci_hcd

arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: ICH6 [Intel ICH6], device 0: Intel ICH [Intel ICH6]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: ICH6 [Intel ICH6], device 1: Intel ICH - MIC ADC [Intel ICH6 - MIC ADC]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: ICH6 [Intel ICH6], device 2: Intel ICH - MIC2 ADC [Intel ICH6 - MIC2 ADC]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: ICH6 [Intel ICH6], device 3: Intel ICH - ADC2 [Intel ICH6 - ADC2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: XS [Cinergy Hybrid T USB XS], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Offline

#4 2009-05-07 11:25:15

Cilyan
Member
From: Toulouse (FR)
Registered: 2006-08-27
Posts: 93
Website

Re: [Solved]TerraTec Cinergy Hybrid T XS, Analog Video Ok, no Audio

Maybe you can have a look to http://linuxtv.org/ if you didn't before.
http://linuxtv.org/wiki/index.php/Terra … d_T_USB_XS
It seems the hardware is not supported yet, experimental support here : http://mcentral.de/wiki/index.php5/Em2880 and you will find the mailing list where people could be more about to answer you.

Offline

#5 2009-05-07 13:33:43

gborzi
Member
From: Sicilia
Registered: 2009-03-18
Posts: 102

Re: [Solved]TerraTec Cinergy Hybrid T XS, Analog Video Ok, no Audio

Hi abracadabra01,
I've made a package for mcentral driver that includes the patch I mentioned before. If you want to try it, here are the files:
PKGBUILD

# Contributor: Giuseppe Borzi <gborzi@ieee.org>
pkgname=em28xx-new-hg
_kernver=2.6.29-ARCH
pkgver=1
pkgrel=1
pkgdesc="Kernel modules for em28xx based devices"
arch=('i686' 'x86_64')
url="http://mcentral.de"
license=('GPL')
depends=('kernel26>=2.6.29' 'kernel26<2.6.30')
makedepends=('mercurial')
install=em28xx-new.install
source=('em28xx-video.c.patch')
md5sums=('b8bfa80107d9c545565baf637f6e7674')
_hgroot="http://mcentral.de/hg/~mrec"
_hgrepo="em28xx-new"

build() {
  cd "$srcdir/$_hgrepo"

  patch -Np0 -i $srcdir/em28xx-video.c.patch
  make KVER="${_kernver}" || return 1
  mkdir -p "$pkgdir/lib/modules/${_kernver}/empia"
  install -m 644 modules/*.ko "$pkgdir/lib/modules/${_kernver}/empia"
}

# vim:set ts=2 sw=2 et:

em28xx-new.install

KERNEL_VERSION='2.6.29-ARCH'

post_install() {
  depmod -v $KERNEL_VERSION >/dev/null 2>&1
}

post_upgrade() {
  post_install $1
}

post_remove() {
  depmod -v $KERNEL_VERSION >/dev/null 2>&1
}

op=$1
shift
$op $*

and the patch em28xx-video.c.patch

--- em28xx-video.c.orig    2009-04-22 15:19:52.775497497 +0200
+++ em28xx-video.c    2009-04-22 18:02:38.381164273 +0200
@@ -578,9 +578,9 @@
  * inits the device and starts isoc transfer
  */
 
-static int em28xx_v4l2_open(struct inode *inode, struct file *filp)
+static int em28xx_v4l2_open(struct file *filp)
 {
-    int minor = iminor(inode);
+    int minor = video_devdata(filp)->minor;
     int errCode = 0;
     int mode = V4L2_TUNER_ANALOG_TV;
     int type = 0;
@@ -880,7 +880,7 @@
  * stops streaming and deallocates all resources allocated by the
  * v4l2 calls and ioctls
  */
-static int em28xx_v4l2_close(struct inode *inode, struct file *filp)
+static int em28xx_v4l2_close(struct file *filp)
 {
     int errCode;
     struct em28xx_fh *fh;
@@ -1169,7 +1169,7 @@
  * em28xx_v4l2_poll()
  * will allocate buffers when called for the first time
  */
-static unsigned int em28xx_v4l2_poll(struct file *filp, poll_table *wait)
+static unsigned int em28xx_v4l2_poll(struct file *filp, struct poll_table_struct *wait)
 {
     unsigned int mask = 0;
     struct em28xx_fh *fh = filp->private_data;
@@ -1919,7 +1919,7 @@
  * em28xx_v4l2_ioctl() via em28xx_video_do_ioctl(). Userspace
  * copying is done already, arg is a kernel pointer.
  */
-static int em28xx_do_ioctl(struct inode *inode, struct file *filp,
+static int em28xx_do_ioctl(struct file *filp,
                struct em28xx *dev, unsigned int cmd, void *arg,
                v4l2_kioctl driver_ioctl)
 {
@@ -2436,7 +2436,7 @@
  * em28xx_v4l2_ioctl. Userspace
  * copying is done already, arg is a kernel pointer.
  */
-static int em28xx_video_do_ioctl(struct inode *inode, struct file *filp,
+static int em28xx_video_do_ioctl(struct file *filp,
                  unsigned int cmd, void *arg)
 {
     struct em28xx_fh *fh = filp->private_data;
@@ -2875,7 +2875,7 @@
         return em28xx_do_ioctl(inode, filp, dev, cmd, arg,
                     em28xx_video_do_ioctl);
 #else
-        return em28xx_do_ioctl(inode, filp, dev, cmd, arg,
+        return em28xx_do_ioctl(filp, dev, cmd, arg,
                        em28xx_v4l2_ioctl);
 #endif
     }
@@ -2930,7 +2930,7 @@
  * struct v4l2_ioctl_ops. The struct v4l2_ioctl_ops was introduced with commit
  * http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=a399810ca69d9d4bd30ab8c1678c7439e567f90b
  */
-static int em28xx_v4l2_ioctl_fops(struct inode *inode, struct file *filp,
+static int em28xx_v4l2_ioctl_fops(struct file *filp,
                  unsigned int cmd, unsigned long arg)
 {
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28)
@@ -2940,7 +2940,7 @@
 #endif
 }
 
-static struct file_operations em28xx_v4l_fops = {
+static struct v4l2_file_operations em28xx_v4l_fops = {
     .owner = THIS_MODULE,
     .open = em28xx_v4l2_open,
     .release = em28xx_v4l2_close,
@@ -2948,7 +2948,6 @@
     .read = em28xx_v4l2_read,
     .poll = em28xx_v4l2_poll,
     .mmap = em28xx_v4l2_mmap,
-    .llseek = no_llseek,
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 11)
 #if 0
     .compat_ioctl   = v4l_compat_ioctl32,

This should work with the stock Arch kernel. Please note that this package doesn't touch your kernel, i.e. the original em28xx driver remains in place (and other modules too). With my usb TV stick this package works flawlessly, I hope it'll work too with yours.
If you try it, let me know the result.

Last edited by gborzi (2009-05-07 13:34:46)


Giuseppe Borzi' - Registered Linux user #34028

Offline

#6 2009-05-07 16:55:17

abracadabra01
Member
Registered: 2009-05-06
Posts: 13

Re: [Solved]TerraTec Cinergy Hybrid T XS, Analog Video Ok, no Audio

Ciao gborzi,

I have tried your package, but I had to edit by hand the patch file, probably because the source of the drivers have been modified. After this, the package builds and installs ok.
After reboot the behavior has not changed, video ok and no audio.
My doubt is that they are still loaded the original drivers.
The question is: how can I do load the new driver in place of old ones.
   
Thanks again and ciao, a presto

Offline

#7 2009-05-07 17:15:56

gborzi
Member
From: Sicilia
Registered: 2009-03-18
Posts: 102

Re: [Solved]TerraTec Cinergy Hybrid T XS, Analog Video Ok, no Audio

Ciao abracadabra01,
it's strange that you had to edit the patch file, I've just tried and it works. Can you please post the error message you get and the .rej file?
You can check that the new driver is loaded by looking at dmesg output (please post this too). Mcentral's driver doesn't need the firmware file xc3028-v27.fw so you shouldn't see it mentioned in dmesg. Also, mcentral's driver should create a /dev/dvb directory for digital TV.


Giuseppe Borzi' - Registered Linux user #34028

Offline

#8 2009-05-07 18:00:36

abracadabra01
Member
Registered: 2009-05-06
Posts: 13

Re: [Solved]TerraTec Cinergy Hybrid T XS, Analog Video Ok, no Audio

Ciao Giuseppe,

I will highlight the problems and changes I've made:

. In Your PCKBUILD md5sums=('b8bfa80107d9c545565baf637f6e7674'), but the checksum of file made with the
  code posted is "ca8ce5185d207a1029730de874cfcf02", so I changed it. After this, makepkg can be started.

. Patch output:

patching file em28xx-video.c
Hunk #1 FAILED at 578.
Hunk #2 succeeded at 880 with fuzz 2.
Hunk #3 succeeded at 1169 with fuzz 2.
Hunk #4 FAILED at 1919.
Hunk #5 FAILED at 2436.
Hunk #6 FAILED at 2875.
Hunk #7 FAILED at 2930.
Hunk #8 FAILED at 2940.
patch unexpectedly ends in middle of line
Hunk #9 FAILED at 2948.
7 out of 9 hunks FAILED -- saving rejects to file em28xx-video.c.rej

. .rej file:

***************
*** 578,586 ****
   * inits the device and starts isoc transfer
   */
  
- static int em28xx_v4l2_open(struct inode *inode, struct file *filp)
  {
-     int minor = iminor(inode);
      int errCode = 0;
      int mode = V4L2_TUNER_ANALOG_TV;
      int type = 0;
--- 578,586 ----
   * inits the device and starts isoc transfer
   */
  
+ static int em28xx_v4l2_open(struct file *filp)
  {
+     int minor = video_devdata(filp)->minor;
      int errCode = 0;
      int mode = V4L2_TUNER_ANALOG_TV;
      int type = 0;
***************
*** 1919,1925 ****
   * em28xx_v4l2_ioctl() via em28xx_video_do_ioctl(). Userspace
   * copying is done already, arg is a kernel pointer.
   */
- static int em28xx_do_ioctl(struct inode *inode, struct file *filp,
                 struct em28xx *dev, unsigned int cmd, void *arg,
                 v4l2_kioctl driver_ioctl)
  {
--- 1919,1925 ----
   * em28xx_v4l2_ioctl() via em28xx_video_do_ioctl(). Userspace
   * copying is done already, arg is a kernel pointer.
   */
+ static int em28xx_do_ioctl(struct file *filp,
                 struct em28xx *dev, unsigned int cmd, void *arg,
                 v4l2_kioctl driver_ioctl)
  {
***************
*** 2436,2442 ****
   * em28xx_v4l2_ioctl. Userspace
   * copying is done already, arg is a kernel pointer.
   */
- static int em28xx_video_do_ioctl(struct inode *inode, struct file *filp,
                   unsigned int cmd, void *arg)
  {
      struct em28xx_fh *fh = filp->private_data;
--- 2436,2442 ----
   * em28xx_v4l2_ioctl. Userspace
   * copying is done already, arg is a kernel pointer.
   */
+ static int em28xx_video_do_ioctl(struct file *filp,
                   unsigned int cmd, void *arg)
  {
      struct em28xx_fh *fh = filp->private_data;
***************
*** 2875,2881 ****
          return em28xx_do_ioctl(inode, filp, dev, cmd, arg,
                      em28xx_video_do_ioctl);
  #else
-         return em28xx_do_ioctl(inode, filp, dev, cmd, arg,
                         em28xx_v4l2_ioctl);
  #endif
      }
--- 2875,2881 ----
          return em28xx_do_ioctl(inode, filp, dev, cmd, arg,
                      em28xx_video_do_ioctl);
  #else
+         return em28xx_do_ioctl(filp, dev, cmd, arg,
                         em28xx_v4l2_ioctl);
  #endif
      }
***************
*** 2930,2936 ****
   * struct v4l2_ioctl_ops. The struct v4l2_ioctl_ops was introduced with commit
   * http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=a399810ca69d9d4bd30ab8c1678c7439e567f90b
   */
- static int em28xx_v4l2_ioctl_fops(struct inode *inode, struct file *filp,
                   unsigned int cmd, unsigned long arg)
  {
  #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28)
--- 2930,2936 ----
   * struct v4l2_ioctl_ops. The struct v4l2_ioctl_ops was introduced with commit
   * http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=a399810ca69d9d4bd30ab8c1678c7439e567f90b
   */
+ static int em28xx_v4l2_ioctl_fops(struct file *filp,
                   unsigned int cmd, unsigned long arg)
  {
  #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28)
***************
*** 2940,2946 ****
  #endif
  }
  
- static struct file_operations em28xx_v4l_fops = {
      .owner = THIS_MODULE,
      .open = em28xx_v4l2_open,
      .release = em28xx_v4l2_close,
--- 2940,2946 ----
  #endif
  }
  
+ static struct v4l2_file_operations em28xx_v4l_fops = {
      .owner = THIS_MODULE,
      .open = em28xx_v4l2_open,
      .release = em28xx_v4l2_close,
***************
*** 2948,2954 ****
      .read = em28xx_v4l2_read,
      .poll = em28xx_v4l2_poll,
      .mmap = em28xx_v4l2_mmap,
-     .llseek = no_llseek,
  #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 11)
  #if 0
  
--- 2948,2953 ----
      .read = em28xx_v4l2_read,
      .poll = em28xx_v4l2_poll,
      .mmap = em28xx_v4l2_mmap,
  #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 11)
  #if 0

. My modified patch file:

--- em28xx-video.c.orig    2009-05-08 17:57:01.000000000 +0200
+++ em28xx-video.c    2009-05-08 18:12:45.000000000 +0200
@@ -578,9 +578,9 @@
  * inits the device and starts isoc transfer
  */
 
-static int em28xx_v4l2_open(struct inode *inode, struct file *filp)
-{
-    int minor = iminor(inode);
+static int em28xx_v4l2_open(struct file *filp)
+  {
+        int minor = video_devdata(filp)->minor;
     int errCode = 0;
     int mode = V4L2_TUNER_ANALOG_TV;
     int type = 0;
@@ -880,7 +880,7 @@
  * stops streaming and deallocates all resources allocated by the
  * v4l2 calls and ioctls
  */
-static int em28xx_v4l2_close(struct inode *inode, struct file *filp)
+static int em28xx_v4l2_close(struct file *filp)
 {
     int errCode;
     struct em28xx_fh *fh;
@@ -1169,7 +1169,7 @@
  * em28xx_v4l2_poll()
  * will allocate buffers when called for the first time
  */
-static unsigned int em28xx_v4l2_poll(struct file *filp, poll_table *wait)
+static unsigned int em28xx_v4l2_poll(struct file *filp, struct poll_table_struct *wait)
 {
     unsigned int mask = 0;
     struct em28xx_fh *fh = filp->private_data;
@@ -1919,7 +1919,7 @@
  * em28xx_v4l2_ioctl() via em28xx_video_do_ioctl(). Userspace
  * copying is done already, arg is a kernel pointer.
  */
-static int em28xx_do_ioctl(struct inode *inode, struct file *filp,
+static int em28xx_do_ioctl(struct file *filp,
                struct em28xx *dev, unsigned int cmd, void *arg,
                v4l2_kioctl driver_ioctl)
 {
@@ -2436,7 +2436,7 @@
  * em28xx_v4l2_ioctl. Userspace
  * copying is done already, arg is a kernel pointer.
  */
-static int em28xx_video_do_ioctl(struct inode *inode, struct file *filp,
+static int em28xx_video_do_ioctl(struct file *filp,
                  unsigned int cmd, void *arg)
 {
     struct em28xx_fh *fh = filp->private_data;
@@ -2875,7 +2875,7 @@
         return em28xx_do_ioctl(inode, filp, dev, cmd, arg,
                     em28xx_video_do_ioctl);
 #else
-        return em28xx_do_ioctl(inode, filp, dev, cmd, arg,
+                return em28xx_do_ioctl(filp, dev, cmd, arg,
                        em28xx_v4l2_ioctl);
 #endif
     }
@@ -2930,7 +2930,7 @@
  * struct v4l2_ioctl_ops. The struct v4l2_ioctl_ops was introduced with commit
  * http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=a399810ca69d9d4bd30ab8c1678c7439e567f90b
  */
-static int em28xx_v4l2_ioctl_fops(struct inode *inode, struct file *filp,
+static int em28xx_v4l2_ioctl_fops(struct file *filp,
                  unsigned int cmd, unsigned long arg)
 {
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28)
@@ -2940,7 +2940,7 @@
 #endif
 }
 
-static struct file_operations em28xx_v4l_fops = {
+static struct v4l2_file_operations em28xx_v4l_fops = {
     .owner = THIS_MODULE,
     .open = em28xx_v4l2_open,
     .release = em28xx_v4l2_close,
@@ -2948,7 +2948,6 @@
     .read = em28xx_v4l2_read,
     .poll = em28xx_v4l2_poll,
     .mmap = em28xx_v4l2_mmap,
-    .llseek = no_llseek,
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 11)
 #if 0
     .compat_ioctl   = v4l_compat_ioctl32,

. dmesg output:

usb 1-1.1: new high speed USB device using ehci_hcd and address 8
usb 1-1.1: configuration #1 chosen from 1 choice
em28xx: New device TerraTec Electronic GmbH Cinergy Hybrid T USB XS @ 480 Mbps (0ccd:0042, interface 0, class 0)
em28xx #0: Identified as Terratec Hybrid XS (card=11)
em28xx #0: chip ID is em2882/em2883
tvp5150' 1-005c: chip found @ 0xb8 (em28xx #0)
tuner' 1-0061: chip found @ 0xc2 (em28xx #0)
em28xx #0: i2c eeprom 00: 1a eb 67 95 cd 0c 42 00 50 12 5c 03 6a 32 9c 34
em28xx #0: i2c eeprom 10: 00 00 06 57 46 07 00 00 00 00 00 00 00 00 00 00
em28xx #0: i2c eeprom 20: 46 00 01 00 f0 10 31 00 b8 00 14 00 5b 00 00 00
em28xx #0: i2c eeprom 30: 00 00 20 40 20 6e 02 20 10 01 00 00 00 00 00 00
em28xx #0: i2c eeprom 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
em28xx #0: i2c eeprom 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
em28xx #0: i2c eeprom 60: 00 00 00 00 00 00 00 00 00 00 32 03 43 00 69 00
em28xx #0: i2c eeprom 70: 6e 00 65 00 72 00 67 00 79 00 20 00 48 00 79 00
em28xx #0: i2c eeprom 80: 62 00 72 00 69 00 64 00 20 00 54 00 20 00 55 00
em28xx #0: i2c eeprom 90: 53 00 42 00 20 00 58 00 53 00 00 00 34 03 54 00
em28xx #0: i2c eeprom a0: 65 00 72 00 72 00 61 00 54 00 65 00 63 00 20 00
em28xx #0: i2c eeprom b0: 45 00 6c 00 65 00 63 00 74 00 72 00 6f 00 6e 00
em28xx #0: i2c eeprom c0: 69 00 63 00 20 00 47 00 6d 00 62 00 48 00 00 00
em28xx #0: i2c eeprom d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
em28xx #0: i2c eeprom e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
em28xx #0: i2c eeprom f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
em28xx #0: EEPROM ID= 0x9567eb1a, EEPROM hash = 0x41d0bf96
em28xx #0: EEPROM info:
em28xx #0:    AC97 audio (5 sample rates)
em28xx #0:    500mA max power
em28xx #0:    Table at 0x06, strings=0x326a, 0x349c, 0x0000
xc2028 1-0061: creating new instance
xc2028 1-0061: type set to XCeive xc2028/xc3028 tuner
i2c-adapter i2c-1: firmware: requesting xc3028-v27.fw
xc2028 1-0061: Loading 80 firmware images from xc3028-v27.fw, type: xc2028 firmware, ver 2.7
xc2028 1-0061: Loading firmware for type=BASE (1), id 0000000000000000.
xc2028 1-0061: Loading firmware for type=(0), id 000000000000b700.
SCODE (20000000), id 000000000000b700:
xc2028 1-0061: Loading SCODE for type=MONO SCODE HAS_IF_4320 (60008000), id 0000000000008000.
em28xx #0: Config register raw data: 0x50
em28xx #0: AC97 vendor ID = 0xffffffff
em28xx #0: AC97 features = 0x6a90
em28xx #0: Empia 202 AC97 audio processor detected
tvp5150' 1-005c: tvp5150am1 detected.
em28xx #0: v4l2 driver version 0.1.1
em28xx #0: V4L2 device registered as /dev/video0 and /dev/vbi0
zl10353_read_register: readreg error (reg=127, ret==-19)          <===========================
em28xx #0/2: dvb frontend not attached. Can't attach xc3028
tvp5150' 1-005c: tvp5150am1 detected.

. As You can see have been loaded the original drivers. Please note the marked readreg error,
  always present in my tests

Thanks for Your help. Ciao da Pietro

Offline

#9 2009-05-07 18:30:37

gborzi
Member
From: Sicilia
Registered: 2009-03-18
Posts: 102

Re: [Solved]TerraTec Cinergy Hybrid T XS, Analog Video Ok, no Audio

Ciao Pietro,
ok it seems that the "code" tag doesn't do what I expected, because it modified the patch (I tried copy from the browser and paste to vi, I got a different file). Let's try with pastebin:
Open your browser to this page
http://pastebin.com/m6458f4e6
it contains a shell archive, make a directory (e.g. mkdir ~/em28xx-new) download the file into this directory as em28xx-new.shar, convert to unix format with "dos2unix em28xx-new.shar" (the dos2unix command in hd2u package),  then run "sh ./em28xx-new.shar". Now you should have PKGBUILD, em28xx-new.install and em28xx-video.c.patch. Run makepkg and if everything is ok you'll have an em28xx-new-hg-1-1-{i686,x86_64}.pkg.tar.gz package. Install it, remove the USB pen, any em28xx module from memory with modprobe -r em28xx and reinsert the USB pen.
Hope this works. If it doesn't work feel free to email me using the forum.


Giuseppe Borzi' - Registered Linux user #34028

Offline

#10 2009-05-07 22:12:31

abracadabra01
Member
Registered: 2009-05-06
Posts: 13

Re: [Solved]TerraTec Cinergy Hybrid T XS, Analog Video Ok, no Audio

EUREKA ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !

Ciao Giuseppe,
Having applied the change suggested, after reboot, video is good and audio works fine.
I think the problem is resolved.
Thank you very much for the assistance you have given me.
A buon rendere. Ciao Pietro

Offline

#11 2009-11-02 14:06:07

florut
Member
Registered: 2008-02-14
Posts: 32
Website

Re: [Solved]TerraTec Cinergy Hybrid T XS, Analog Video Ok, no Audio

Does someone has information about how to setup this product on kernel 2.6.31 ?

http://bbs.archlinux.org/viewtopic.php? … 39#p648539


Using Chakra [core, community, extra, kdemod-core, kdemod-extragear, kdemod-playground, archlinuxfr]
ASUS UL30VT - Core2Duo SU7300 (x64) @1,3Ghz + GM45 Express (hybrid, GeForce G210M disabled)

Offline

#12 2009-11-02 14:12:11

Allan
Member
From: Brisbane, AU
Registered: 2007-06-09
Posts: 10,890
Website

Re: [Solved]TerraTec Cinergy Hybrid T XS, Analog Video Ok, no Audio

And the third necro thread bump just to link to another post...  Closing.

Offline

Board footer

Powered by FluxBB