V_13.1 Is there a Yast2>Hardware>yast2-tv module?

Hi,
udev is not creating /dev/video, and so I cannot get my Hauppauge HVR 1600 card to work in V_13.1 (it was working in V_12.3).

  1. Can I use the yast2-tv module from V_12.3 to configure the card? Modprobe and dmesg shows that the drivers are being loaded, the firmware is in /lib/firmware, but mythtv-setup does not find the card because there is no /dev/video.

  2. Can I just create /dev/video using mknod? Will it be permanent (survive a reboot)?

Thanks for any help.

You posted to the wrong forum.
I cite from the forum’s description:

This forum is NOT for asking questions, but contains submissions to be reviewed and potentially moved to the How To/FAQ area.

Yes, the yast2-tv module should work fine in 13.1. Just install the package from 12.3.

But actually this shouldn’t be needed.
I just plugged in my old Hauppauge WinTV card (which I always had to configure with yast2-tv) into a freshly installed openSUSE 13.1 system last weekend, and everything worked fine out-of-the-box.

But, I didn’t have a /dev/video either, it was /dev/video0. And IIRC it was just /dev/video0 already when I last used it (and configured it with yast2-tv) in 12.1.

So think yast2-tv won’t help you, especially as you say that the drivers are being loaded.

  1. Can I just create /dev/video using mknod? Will it be permanent (survive a reboot)?

You should be able to create an alias via an udev rule. Or just create a symlink as a test.

sudo ln -s /dev/video0 /dev/video

So, do you have a /dev/video0 (and/or /dev/video1)?
What does “v4l-info” show?

Can’t you tell mythtv to use /dev/video0 instead, f.e.?

Btw, I always used and preferred xdtv (a fork of xawtv) for watching TV (I created packages myself here: http://software.opensuse.org/package/xdtv).
And this still worked fine for me last weekend, it even used the existing /dev/video0 without me having to configure anything… :wink:

This is in the wrong forums indeed.

CLOSED and will be moved to Hardware.

Moved from Unreviewed Howto and open again.

I think that yast2-tv was given up for 13.1 because there was no one to maintain it.

First of all, I apologize for posting in the wrong area. I did not know where the issue belonged.

I checked /dev again, just to be sure, and there is no /dev/video, /dev/video0, or /dev/dvb (mentioned elsewhere on the web).

I installed v4l-tools and here is the output from v4l-info:

MyLinux:/dev # v4l-info
open /dev/video0: No such file or directory

I use the Hauppauge HVR1600 mostly to convert old VHS tapes to DVDs, not to watch TV, but I would prefer to be able to do both, since it has the ATSC tuner also.

It seems like using a udev rule is the best way to go, but I’m not sure how to do that. Where Is there an example I can follow?

Is there any other information I can provide?

Thanks for your help.

For an udev rule to work, there must at least be hardware detected by the kernel. Else the kernel can not give udev the signal (and information) to do something. In other words, you cannot write an udev rule when you doi not know what to speciffy in it.

I know this may not sound a very helpfull observation, but it may help in getting to the point why the device is not recocnised and acted upon.

That is what is so puzzling to me. Here is my dmesg output:

MyLinux:/dev # dmesg | grep Hauppauge
9.568243] cx18-0: Autodetected Hauppauge card
9.798958] tveeprom 5-0050: Hauppauge model 74351, rev F4F5, serial# 8435428
9.798977] cx18-0: Autodetected Hauppauge HVR-1600

Here is /lib/firmware/

-rw-r–r-- 1 root root 16382 Jul 28 2013 v4l-cx231xx-avcore-01.fw
-rw-r–r-- 1 root root 141200 Jul 28 2013 v4l-cx23418-apu.fw
-rw-r–r-- 1 root root 158332 Jul 28 2013 v4l-cx23418-cpu.fw
-rw-r–r-- 1 root root 16382 Jul 28 2013 v4l-cx23418-dig.fw
-rw-r–r-- 1 root root 16382 Jul 28 2013 v4l-cx23885-avcore-01.fw
-rw-r–r-- 1 root root 16382 Jul 28 2013 v4l-cx25840.fw

lsmod:

cx18 166886 1
dvb_core 125656 1 cx18
cx2341x 28230 1 cx18
sp5100_tco 13979 0
videobuf_vmalloc 13589 1 cx18
mii 13934 1 r8169
videobuf_core 30118 2 cx18,videobuf_vmalloc
tveeprom 21216 1 cx18
v4l2_common 16073 4 cs5345,tuner,cx18,cx2341x
videodev 141701 5 cs5345,tuner,cx18,cx2341x,v4l2_common

lspci:

03:05.0 Multimedia video controller: Conexant Systems, Inc. CX23418 Single-Chip MPEG-2 Encoder with Integrated Analog Video/Broadcast Audio Decoder

Something new for every newcomer here :wink:

Please use CODE tags around your computer text. It is the # button in the tool bar of the post editor.

As I said, it just worked here with a WinTV PCI card.
I don’t have any experience with your particular card.

If there’s no /dev/video* at all, then the card is clearly not working, and so the driver doesn’t seem to have been loaded successfully.

Well, the output of grep only shows those lines that contain the word “Hauppauge”.
But there could be an error message in one of the next lines, which is not shown here.

I would suggest you pipe the log to “less”, then search for “Hauppauge” (press the ‘/’ key), and just post some of the following lines.

dmesg | less

OTOH, as I already mentioned, the 12.3 yast2-tv module works fine on 13.1.
So you could try to install it and then configure the card with that (or just take the file /etc/modprobe.d/50-tv from your previous 12.3 installation if possible).

sudo rpm -i http://download.opensuse.org/repositories/openSUSE:/12.3/standard/noarch/yast2-tv-2.21.4-7.1.2.noarch.rpm

But I cannot say if your card will work then, or there’s perhaps a problem in 13.1 itself that causes your card not to work.

Hi Wolfi323,
I have already downloaded and installed the yast2-tv rpm from V_12.3, but it doesn’t seem to be aware that there is a Hauppauge model WinTV HVR-1600, so I will have to see if one of the other models is similar. I don’t remember having to do this with V_12.3, and since I upgraded from V_12.3 to V_13.1, I can’t go back to see what was done.

In any case, I took your advice about dmesg | less, and here is the result:


    9.798958] tveeprom 5-0050: Hauppauge model 74351, rev F4F5, serial# 8435428
    9.798960] tveeprom 5-0050: MAC address is 00:0d:fe:80:b6:e4
    9.798962] tveeprom 5-0050: tuner model is NXP 18271C2 (idx 155, type 54)
    9.798964] tveeprom 5-0050: TV standards PAL(B/G) NTSC(M) PAL(I) SECAM(L/L') PAL(D/D1/K) ATSC/DVB Digital (eeprom 0xfc)
    9.798965] tveeprom 5-0050: audio processor is CX23418 (idx 38)
    9.798973] tveeprom 5-0050: decoder processor is CX23418 (idx 31)
    9.798974] tveeprom 5-0050: has no radio
    9.798977] cx18-0: Autodetected Hauppauge HVR-1600
    9.849006] cx18-0: Simultaneous Digital and Analog TV capture supported
    9.942014] fuse init (API version 7.22)
   10.168000] tuner 6-0042: Tuner -1 found with type(s) Radio TV.
   10.174231] cs5345 5-004c: chip found @ 0x98 (cx18 i2c driver #0-0)
   10.180429] BUG: unable to handle kernel NULL pointer dereference at 0000000000000202
   10.180532] IP: <ffffffffa05c011e>] tda829x_attach+0x6e/0xc40 [tda8290]
   10.180620] PGD 213fc8067 PUD 213fc9067 PMD 0 
   10.180689] Oops: 0000 #1] PREEMPT SMP 
   10.180750] Modules linked in: cs5345 tda8290 tuner fuse serio_raw snd_hda_codec_realtek usb_storage snd_hda_intel snd_hda
_codec snd_hwdep snd_pcm snd_seq snd_timer snd_seq_device snd soundcore snd_page_alloc r8169 cx18(+) dvb_core cx2341x sp5100_
tco videobuf_vmalloc mii videobuf_core tveeprom v4l2_common videodev i2c_piix4 pcspkr k10temp ppdev sr_mod kvm crc32_pclmul g
hash_clmulni_intel aesni_intel ablk_helper cryptd lrw gf128mul glue_helper aes_x86_64 fam15h_power edac_core edac_mce_amd cdr
om shpchp parport_pc parport button asus_atk0110 acpi_cpufreq mperf wmi sg dm_mod autofs4 btrfs raid6_pq zlib_deflate xor lib
crc32c crc32c_intel ohci_pci radeon ttm drm_kms_helper drm i2c_algo_bit processor thermal_sys scsi_dh_hp_sw scsi_dh_alua scsi
_dh_rdac scsi_dh_emc scsi_dh aic7xxx scsi_transport_spi ata_generic
   10.181874]  pata_atiixp
   10.181896] CPU: 1 PID: 350 Comm: systemd-udevd Not tainted 3.11.10-7-desktop #1
   10.181987] Hardware name: System manufacturer System Product Name/M5A78L-M LX PLUS, BIOS 1501    04/27/2013

I included a few extra lines at the end because it shows which motherboard I have and BIOS rev.

Here is the result from hwinfo:

39: PCI 305.0: 11200 TV Card  [Created at pci.319]
  Unique ID: FTXf.XGVJh0puL02
  Parent ID: qscc.ULOo3yhA66C
  SysFS ID: /devices/pci0000:00/0000:00:14.4/0000:03:05.0
  SysFS BusID: 0000:03:05.0
  Hardware Class: tv card
  Model: "Conexant CX23418 Single-Chip MPEG-2 Encoder with Integrated Analog Video/Broadcast Audio Decoder"
  Vendor: pci 0x14f1 "Conexant Systems, Inc."
  Device: pci 0x5b7a "CX23418 Single-Chip MPEG-2 Encoder with Integrated Analog Video/Broadcast Audio Decoder"
  SubVendor: pci 0x0070 "Hauppauge computer works Inc."
  SubDevice: pci 0x740c 
  Driver: "cx18"
  Memory Range: 0xf8000000-0xfbffffff (rw,non-prefetchable)
  IRQ: 20 (no events)
  Module Alias: "pci:v000014F1d00005B7Asv00000070sd0000740Cbc04sc00i00"
  Driver Info #0:
    Driver Status: cx18 is active
    Driver Activation Cmd: "modprobe cx18"
  Config Status: cfg=no, avail=yes, need=no, active=unknown
  Attached to: #29 (PCI bridge)



One more question: Is the Unique ID and Parent ID what I need to use to create my own 50-tv.conf? I created a false one with a wrong card just to see what it should look like and it shows something that looks like Unique/Parent ID.

Here is the “false” one:


alias char-major-81 videodev

# YaST configured TV card
# Kaa7.XGVJh0puL02:Hauppauge WinTV-HVR1300 DVB-T/Hybrid MPEG Encoder
alias char-major-81-0 cx88xx
alias char-major-81-1 off
alias char-major-81-2 off
alias char-major-81-3 off
options cx88xx card=56 tuner=-1



I am assuming that cx88xx would be changed to cx18 for my card, but I am not sure what my card= and tuner= numbers should be.

On 2014-05-06 02:16, motonut wrote:
>
> Hi Wolfi323,
> I have already downloaded and installed the yast2-tv rpm from
> V_12.3,

I don’t think that you can run yast modules from 12.3 in 13.1, they use
a very different code. Up to 12.3 they used the “in house” YCP,
afterwards, Ruby.


Cheers / Saludos,

Carlos E. R.
(from 13.1 x86_64 “Bottle” at Telcontar)

Yes, you can. I tried the 12.3 TV module myself when 13.1 was released.

While it is true that all modules have been translated to ruby for 13.1, support for the old YCP language HAS NOT been removed.
And you could already use modules written in ruby for 12.3’s YaST (or earlier), provided you had yast2-ruby-bindings installed.
Then there are even yast2-perl-bindings, so I suppose you could write YaST modules in perl as well.

Although not everything might be compatible between 12.3 and 13.1 of course.

[QUOTE=motonut;2641463]In any case, I took your advice about dmesg | less, and here is the result:


    9.798958] tveeprom 5-0050: Hauppauge model 74351, rev F4F5, serial# 8435428
    9.798960] tveeprom 5-0050: MAC address is 00:0d:fe:80:b6:e4
    9.798962] tveeprom 5-0050: tuner model is NXP 18271C2 (idx 155, type 54)
    9.798964] tveeprom 5-0050: TV standards PAL(B/G) NTSC(M) PAL(I) SECAM(L/L') PAL(D/D1/K) ATSC/DVB Digital (eeprom 0xfc)
    9.798965] tveeprom 5-0050: audio processor is CX23418 (idx 38)
    9.798973] tveeprom 5-0050: decoder processor is CX23418 (idx 31)
    9.798974] tveeprom 5-0050: has no radio
    9.798977] cx18-0: Autodetected Hauppauge HVR-1600
    9.849006] cx18-0: Simultaneous Digital and Analog TV capture supported
    9.942014] fuse init (API version 7.22)
   10.168000] tuner 6-0042: Tuner -1 found with type(s) Radio TV.
   10.174231] cs5345 5-004c: chip found @ 0x98 (cx18 i2c driver #0-0)
   10.180429] BUG: unable to handle kernel NULL pointer dereference at 0000000000000202
   10.180532] IP: <ffffffffa05c011e>] tda829x_attach+0x6e/0xc40 [tda8290]
   10.180620] PGD 213fc8067 PUD 213fc9067 PMD 0 
   10.180689] Oops: 0000 #1] PREEMPT SMP 
    10.180750] Modules linked in: cs5345 tda8290 tuner fuse serio_raw snd_hda_codec_realtek usb_storage snd_hda_intel snd_hda
_codec snd_hwdep snd_pcm snd_seq snd_timer snd_seq_device snd soundcore snd_page_alloc r8169 cx18(+) dvb_core cx2341x sp5100_
tco videobuf_vmalloc mii videobuf_core tveeprom v4l2_common videodev i2c_piix4 pcspkr k10temp ppdev sr_mod kvm crc32_pclmul g
hash_clmulni_intel aesni_intel ablk_helper cryptd lrw gf128mul glue_helper aes_x86_64 fam15h_power edac_core edac_mce_amd cdr
om shpchp parport_pc parport button asus_atk0110 acpi_cpufreq mperf wmi sg dm_mod autofs4 btrfs raid6_pq zlib_deflate xor lib
crc32c crc32c_intel ohci_pci radeon ttm drm_kms_helper drm i2c_algo_bit processor thermal_sys scsi_dh_hp_sw scsi_dh_alua scsi
_dh_rdac scsi_dh_emc scsi_dh aic7xxx scsi_transport_spi ata_generic
   10.181874]  pata_atiixp
   10.181896] CPU: 1 PID: 350 Comm: systemd-udevd Not tainted 3.11.10-7-desktop #1
   10.181987] Hardware name: System manufacturer System Product Name/M5A78L-M LX PLUS, BIOS 1501    04/27/2013

Hm. There seems to be a crash there when loading the driver.
Maybe that’s also the reason why YaST doesn’t recognize the card?

You could try with a newer kernel I guess:
http://download.opensuse.org/repositories/Kernel:/stable
That repo also contains a newer “kernel-firmware” which contains the necessary firmware for your card, so be sure to upgrade this as well (although the one from 13.1 should work as well AFAICS, at least the sizes match to what is mentioned here: http://www.mythtv.org/wiki/Hauppauge_HVR-1600#Firmware).

Or maybe try with the 12.3 kernel as a test?

But in the end I suppose you should file a bugreport at http://bugzilla.novell.com/ though (same username/password as here).

One more question: Is the Unique ID and Parent ID what I need to use to create my own 50-tv.conf? I created a false one with a wrong card just to see what it should look like and it shows something that looks like Unique/Parent ID.

Here is the “false” one:

YaST configured TV card

Kaa7.XGVJh0puL02:Hauppauge WinTV-HVR1300 DVB-T/Hybrid MPEG Encoder

You mean this?
I think this is only there, so YaST can identify to which card this configuration belongs.
For the kernel this is absolutely irrelevant.

[QUOTE]I am assuming that cx88xx would be changed to cx18 for my card, but I am not sure what my card= and tuner= numbers should be.

No idea. But the system tries to load the cx18 driver anyway, so I don’t think this would help.

PS: This seems to be a kernel issue indeed:
http://www.gossamer-threads.com/lists/ivtv/users/41804

According that thread it should work with kernels up to 3.9.11, but fails starting with 3.10.4.

You should be able to use the 12.3 kernel (3.7.10) with 13.1, or you can try the latest one from the repo I mentioned, maybe this has been fixed meanwhile.

OTOH, that thread suggests that it crashes when trying to determine the tuner and setting a specific tuner might help.
Here’s part of the output of “modinfo cx18”, which should also answer your previous question about what values for cardtype= (the cx18 module takes no “card” parameter) and tuner= you should take:

...
parm:           tuner:Tuner type selection,
                        see tuner.h for values (array of int)

parm:           radio:Enable or disable the radio. Use only if autodetection
                        fails. 0 = disable, 1 = enable (array of int)

parm:           cardtype:Only use this option if your card is not detected properly.
                Specify card type:
                         1 = Hauppauge HVR 1600 (ESMT memory)
                         2 = Hauppauge HVR 1600 (Samsung memory)
                         3 = Compro VideoMate H900
                         4 = Yuan MPC718
                         5 = Conexant Raptor PAL/SECAM
                         6 = Toshiba Qosmio DVB-T/Analog
                         7 = Leadtek WinFast PVR2100
                         8 = Leadtek WinFast DVR3100 H
                         9 = GoTView PCI DVD3 Hybrid
                         10 = Hauppauge HVR 1600 (S5H1411)
                         0 = Autodetect (default)
                        -1 = Ignore this card
                 (array of int)
...

You can see tuner.h (with the values for tuner) here: http://lxr.free-electrons.com/source/include/media/tuner.h

I cannot tell you which ones would be appropriate though.
So you would have to experiment I guess.
Btw, you shouldn’t have to reboot to test. Just remove the module with “modprobe -r cx18” and then load it again with “modprobe cx18 tuner=xx”.
Then run “dmesg|tail” to see whether it was successful (and/or check whether /dev/video* exists).

[QUOTE=wolfi323;2641514]PS: This seems to be a kernel issue indeed:
http://www.gossamer-threads.com/lists/ivtv/users/41804

According that thread it should work with kernels up to 3.9.11, but fails starting with 3.10.4.

You should be able to use the 12.3 kernel (3.7.10) with 13.1, or you can try the latest one from the repo I mentioned, maybe this has been fixed meanwhile.

OTOH, that thread suggests that it crashes when trying to determine the tuner and setting a specific tuner might help.
Here’s part of the output of “modinfo cx18”, which should also answer your previous question about what values for cardtype= (the cx18 module takes no “card” parameter) and tuner= you should take:

...
parm:           tuner:Tuner type selection,
                        see tuner.h for values (array of int)

parm:           radio:Enable or disable the radio. Use only if autodetection
                        fails. 0 = disable, 1 = enable (array of int)

parm:           cardtype:Only use this option if your card is not detected properly.
                Specify card type:
                         1 = Hauppauge HVR 1600 (ESMT memory)
                         2 = Hauppauge HVR 1600 (Samsung memory)
                         3 = Compro VideoMate H900
                         4 = Yuan MPC718
                         5 = Conexant Raptor PAL/SECAM
                         6 = Toshiba Qosmio DVB-T/Analog
                         7 = Leadtek WinFast PVR2100
                         8 = Leadtek WinFast DVR3100 H
                         9 = GoTView PCI DVD3 Hybrid
                         10 = Hauppauge HVR 1600 (S5H1411)
                         0 = Autodetect (default)
                        -1 = Ignore this card
                 (array of int)
...

You can see tuner.h (with the values for tuner) here: http://lxr.free-electrons.com/source/include/media/tuner.h

I cannot tell you which ones would be appropriate though.
So you would have to experiment I guess.
Btw, you shouldn’t have to reboot to test. Just remove the module with “modprobe -r cx18” and then load it again with “modprobe cx18 tuner=xx”.
Then run “dmesg|tail” to see whether it was successful (and/or check whether /dev/video* exists).
I would start with tuner=0.

But if you did an upgrade to 13.1, you actually should still have your old /etc/modprobe.d/50-tv. Did you delete it or overwrite it? Maybe you still have /etc/modprobe.d/50-tv.YaST2save with the values for your card?
Or did you do a fresh installation?

Hi again,
I will try your suggestions in your last post. If I install a newer kernel, I suppose I will have to deal with GRUB2, which is a real pain relative to GRUB.

 If I have to reinstall to V_12.3 to test, I will just abandon V_13.1 entirely.  It's clear from the Release Notes that the developers have abandoned TV Cards, and this isn't the only problem I am having.  I am not able to do soft restarts or soft power off, but I can live with that, because I rarely have to reboot or power off, it's Linux!  ;)  

 I am writing this on my laptop which is still running V_12.3 because of the issues with 13.1. :(In any case, I am very grateful for all the help you have given me.  I will be sure to report what, if anything, works. 

Best regards,

No, you don’t.
If you install the kernel via an RPM, it gets added to the boot menu automatically. (if not you just would have to call “grub2-mkconfig”, that searches for all installed kernels and operating systems automatically)
As it will be the highest versioned kernel on your system, it would be booted by the main openSUSE 13.1 boot entry, but you should find it in “Advanced Options” in any case.

Btw, you still can use GRUB legacy on 13.1 if you want to. Just switch to GRUB in YaST->System->Boot Loader.

If I have to reinstall to V_12.3 to test, I will just abandon V_13.1 entirely.

That’s not what I suggested.
I suggested to install the kernel RPM from 12.3 as a test, and boot that. (since its version is lower, you should find it in “Advanced Options” in the boot menu after you installed it)

It’s clear from the Release Notes that the developers have abandoned TV Cards,

Where do the Release Notes say that TV cards have been abandoned?

Mine work fine…

and this isn’t the only problem I am having. I am not able to do soft restarts or soft power off, but I can live with that, because I rarely have to reboot or power off, it’s Linux! :wink:

That sounds like an ACPI problem, or maybe related to the graphics driver. What graphics chipset do you have?
But please open a new thread for that.
And please explain in more detail how you are “not able to do soft restarts or soft power off”, i.e. what happens when you try to.

I am writing this on my laptop which is still running V_12.3 because of the issues with 13.1. :frowning:

I don’t have any issues here with 13.1, on neither of the 4 systems I installed it to.

On 2014-05-06 10:57, wolfi323 wrote:

> Yes, you can. I tried the 12.3 TV module myself when 13.1 was released.
>
> While it is true that all modules have been translated to ruby for 13.1,
> support for the old YCP language HAS NOT been removed.

Oh. I’m surprised. :-o


Cheers / Saludos,

Carlos E. R.
(from 13.1 x86_64 “Bottle” at Telcontar)

wolfi323, I will certainly open a new thread concerning the soft boot/soft power off problems if I decide to go forward with V_13.1.
Thanks again for your help. If you ever come to Oregon, look me up. There are >12 breweries in Bend, Oregon. I am sure we can find one you like. :wink: