Bug 374693

Summary: kaffeine does not tune into some dvb-s channels
Product: [Applications] kaffeine Reporter: juliushar
Component: generalAssignee: Mauro Carvalho Chehab <mchehab>
Status: RESOLVED FIXED    
Severity: normal CC: juliushar
Priority: NOR    
Version: 2.0.1   
Target Milestone: ---   
Platform: Kubuntu   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:
Attachments: Channel list: some channels are missing in there
complete channels list
Channel Number setup B before workaround
Channel Number setup B after workaround (new channel scan)
w_scan result setup B before workaround
w_scan result setup B after workaround
Technisat Card Foto
output from vlc
Kaffeine log with workaround
media: isl6421: add checks for current overflow
The device seems to be present
...but the source (device) cannot be selected
The Technisat SkyStar2 with opened lid of the HF cage near the connector. There are no chips on the backside.

Description juliushar 2017-01-07 13:56:18 UTC
On Kubuntu 16.04 64-Bit, Kaffeine 1.2.2, with a Technisat SkyStar2 DVB card, driver: b2c2_flexcop_pci, kaffeine fails to find or tune into many Astra 19.2E channels, for instance "Das Erste". Starting kaffeine in a terminal, the message is: 

DvbDevice::frontendEvent: tuning failed 

There is a workaround, by starting vlc player with a channellist (as a playlist), terminating vlc and then starting kaffeine again. vlc messages from start to close of vlc:

vlc Astraplaylist_vlc.xspf
VLC media player 2.2.2 Weatherwax (revision 2.2.2-0-g6259d80)
[00000000020a0148] core libvlc: VLC wird mit dem Standard-Interface ausgeführt. Benutzen Sie 'cvlc', um VLC ohne Interface zu verwenden.
[0000000002188ea8] core playlist: stopping playback
[00007f22f40086d8] core input error: unsafe option "dvb-lnb-low" has been ignored for security reasons
[00007f22f40086d8] core input error: unsafe option "dvb-lnb-high" has been ignored for security reasons
[00007f22f40086d8] core input error: unsafe option "dvb-lnb-switch" has been ignored for security reasons
[00007f22ecc01bb8] dtv access error: 10729000 Hz carrier frequency is too low.
[00007f22ecc01bb8] dtv access: Assuming 10729000000 Hz frequency instead.
[00007f22ec000bf8] ts demux error: libdvbpsi error (PSI decoder): TS discontinuity (received 5, expected 9) for PID 0
[00007f22ec000bf8] ts demux error: libdvbpsi error (PSI decoder): TS discontinuity (received 9, expected 6) for PID 0
QObject::~QObject: Timers cannot be stopped from another thread

(the playlist was generated with w_scan -f s -c DE -s S19.2E2 -L > Astraplaylist.xspf)

kaffeine again, with different messages and a working sat reception:

kaffeine 
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
~$ vo_vdpau: vdpau API version : 1
vo_vdpau: vdpau implementation description : G3DVL VDPAU Driver Shared Library version 1.0
vo_vdpau: maximum video surface size for chroma type 4:2:2 is 16384x16384
vo_vdpau: maximum video surface size for chroma type 4:2:0 is 16384x16384
vo_vdpau: maximum output surface size is 16384x16384
vo_vdpau: hold a maximum of 10 video output surfaces for reuse
vo_vdpau: using 3 output surfaces of size 1920x1080 for display queue
net_buf_ctrl: dvbspeed mode
net_buf_ctrl: prebuffering...
kaffeine(3255) DvbEpgModel::addEntry: invalid entry 
net_buf_ctrl: dvbspeed 100% @ video 2120 ms 232 buffers
vo_vdpau: video surface doesn't match size contraints (1920 x 1080) -> (1920 x 1080) != (1920 x 1088). Segfaults ahead!
vdpau_set_property: property=0, value=1
vo_vdpau: deinterlace: temporal
vdpau_set_property: property=0, value=0
vo_vdpau: deinterlace: none
vdpau_set_property: property=0, value=1
vo_vdpau: deinterlace: temporal
vo_vdpau: deinterlace: temporal
vo_vdpau: set_scaling_level=0
vo_vdpau: disable noise reduction.
vo_vdpau: disable sharpness.
vo_vdpau: skip_chroma = 0
vo_vdpau: background_color = 0
net_buf_ctrl: dvbspeed 99.5% @ video 880 ms 131 buffers
kaffeine(3255) DvbEpgModel::~DvbEpgModel: filter list not empty 
net_buf_ctrl: dvbspeed OFF
vdpau_set_property: property=0, value=0
vo_vdpau: deinterlace: none

also, other channels are working correctly with this workaround.
Comment 1 Christoph Feck 2017-01-09 22:26:13 UTC
Please retry with Kaffeine 2.0. The 1.2 version is no longer maintained.
Comment 2 juliushar 2017-01-11 20:52:44 UTC
The bug still remains:

kaffeine -v
kaffeine 2.0.4

kaffeine
11-01-17 21:33:36.791 [Info    ] Using built-in dvb device manager
11-01-17 21:33:39.950 [Info    ] Found dvb device P13d0210313d02103: Conexant CX24120/CX24118

the screen remains black without any error message on the console.

starting vlc and terminating it shortly after:

vlc Astraplaylist_vlc.xspf
VLC media player 2.2.2 Weatherwax (revision 2.2.2-0-g6259d80)
[0000000001c41148] core libvlc: VLC wird mit dem Standard-Interface ausgeführt. Benutzen Sie 'cvlc', um VLC ohne Interface zu verwenden.
[0000000001d29ea8] core playlist: stopping playback
[00007f99600057a8] core input error: unsafe option "dvb-lnb-low" has been ignored for security reasons
[00007f99600057a8] core input error: unsafe option "dvb-lnb-high" has been ignored for security reasons
[00007f99600057a8] core input error: unsafe option "dvb-lnb-switch" has been ignored for security reasons
[00007f9938c060b8] dtv access error: 10729000 Hz carrier frequency is too low.
[00007f9938c060b8] dtv access: Assuming 10729000000 Hz frequency instead.
[00007f9938c060b8] dtv access error: cannot dequeue events fast enough!
QObject::~QObject: Timers cannot be stopped from another thread


starting kaffeine again: now the reception works, and there is additional output on the console:

kaffeine

11-01-17 21:42:45.442 [Info    ] Using built-in dvb device manager
11-01-17 21:42:45.843 [Info    ] Found dvb device P13d0210313d02103: Conexant CX24120/CX24118
11-01-17 21:42:49.236 [Warning ] Invalid entry: channel is valid, begin is valid, duration is invalid
[00007f17680986f8] avcodec decoder: Using G3DVL VDPAU Driver Shared Library version 1.0 for hardware decoding.
11-01-17 21:42:57.553 [Warning ] Invalid entry: channel is valid, begin is valid, duration is invalid
Comment 3 juliushar 2017-01-21 20:49:16 UTC
an additional test with kaffeine -d : 

[Debug   ] tune to: S 11836500 H 27500000 3/4
[Debug   ] tuning failed on 11836.50 MHz

then, vlc, close vlc, start kaffeine -d again: 

[Debug   ] tune to: S 11836500 H 27500000 3/4                                      
[Debug   ] tuning succeeded on 11836.50 MHz
Comment 4 juliushar 2017-02-03 18:22:10 UTC
..Some channels work out of the box with kaffeine, for instance BBC World or Kika HD. Those channels are detected with a normal scan, others not. If vlc has been used for Sat reception since last reboot (and then vlc closed), the channel scan detects more channels (for instance "das erste") and can also play them.
Comment 5 juliushar 2017-02-04 22:11:34 UTC
on the vlc side, this seems to have to do with the function 

static int dvb_vset_props (dvb_device_t *d, size_t n, va_list ap)

where 

if (ioctl (d->frontend, FE_SET_PROPERTY, &props) < 0)

gets called 
(file vlc-2.2/modules/access/dtv/linux.c)
Comment 6 Mauro Carvalho Chehab 2017-02-15 12:07:42 UTC
(In reply to juliushar from comment #4)
> ..Some channels work out of the box with kaffeine, for instance BBC World or
> Kika HD. Those channels are detected with a normal scan, others not. If vlc
> has been used for Sat reception since last reboot (and then vlc closed), the
> channel scan detects more channels (for instance "das erste") and can also
> play them.

There were some changes since Kaffeine 2.0.4, including some fixes at libdvbv5.

As the last fixes on lidvbv5 happened this week, probably it was not backported to the distributions yet.

Those changes affect DVB-S/S2 reception. Could you please test it with the latest version of libdvbv5, compiled from its source, and with Kaffeine, also compiled from its source?

You can get libdvbv5 source with:

    git clone git://linuxtv.org/v4l-utils.git

And Kaffeine with:

    git clone git://anongit.kde.org/kaffeine

Also, you may need to select:
  [ ] Search transponders for other Networks

in order to get all DVB-S channels, when scanning channels at the "Channels" screen. This will make the scan operation slower, but, without such option, you may not get all channels on some satellites.
Comment 7 juliushar 2017-02-27 20:27:33 UTC
(In reply to Mauro Carvalho Chehab from comment #6)
> (In reply to juliushar from comment #4)
> > ..Some channels work out of the box with kaffeine, for instance BBC World or
> > Kika HD. Those channels are detected with a normal scan, others not. If vlc
> > has been used for Sat reception since last reboot (and then vlc closed), the
> > channel scan detects more channels (for instance "das erste") and can also
> > play them.
> 
> There were some changes since Kaffeine 2.0.4, including some fixes at
> libdvbv5.
> 
> As the last fixes on lidvbv5 happened this week, probably it was not
> backported to the distributions yet.
> 
> Those changes affect DVB-S/S2 reception. Could you please test it with the
> latest version of libdvbv5, compiled from its source, and with Kaffeine,
> also compiled from its source?
> 
> You can get libdvbv5 source with:
> 
>     git clone git://linuxtv.org/v4l-utils.git
> 
> And Kaffeine with:
> 
>     git clone git://anongit.kde.org/kaffeine
> 
> Also, you may need to select:
>   [ ] Search transponders for other Networks
> 
> in order to get all DVB-S channels, when scanning channels at the "Channels"
> screen. This will make the scan operation slower, but, without such option,
> you may not get all channels on some satellites.

i compiled v4l-utils and vlc-2.2, but kaffeine compile (git pull from 27. Feb. 2017) quits with 

CMake Error at cmake/modules/FindVLC.cmake:104 (message):
  Could not find /usr/include/vlc/libvlc_version.h

the required file is not part of the vlc sources.
Comment 8 Mauro Carvalho Chehab 2017-03-01 10:31:10 UTC
(In reply to juliushar from comment #7)
> (In reply to Mauro Carvalho Chehab from comment #6)
> > (In reply to juliushar from comment #4)

> i compiled v4l-utils and vlc-2.2, but kaffeine compile (git pull from 27.
> Feb. 2017) quits with 
> 
> CMake Error at cmake/modules/FindVLC.cmake:104 (message):
>   Could not find /usr/include/vlc/libvlc_version.h
> 
> the required file is not part of the vlc sources.

Both VLC versions 2.x and 3.x should have libvlc_version.h, but you may need to install an extra package with the VLC headers. This is what's shipped with Debian Stretch (with should be somewhat similar to Kubuntu):

     $ dpkg -l libvlc-dev
    ...
    ii  libvlc-dev:amd64                          2.2.4-13                  amd64                     development files for libvlc

$ dpkg -L libvlc-dev
...
/usr/include/vlc/libvlc_version.h
Comment 9 juliushar 2017-03-11 19:56:00 UTC
When v4l-utils was made and installed*, the compile of kaffeine** did not fail anymore. Then, i started vlc, quit, started kaffeine, did a "working" scan of the programs and tuned into some for test. Then I restarted the computer and started kaffeine again. Now, many channels were not working. So the problem still remains unsolved.


*
git describe --tags
v4l-utils-1.12.0-41-gca6a0c0

**
git describe --tags
2.0.6-5-gdbdd21a
Comment 10 juliushar 2017-03-24 21:45:35 UTC
On the VLC side (version 2.2 stable), when exiting VLC before the line 

if (ioctl (d->frontend, FE_ENABLE_HIGH_LNB_VOLTAGE, &val) < 0 && val)

in function 

int dvb_set_sec (dvb_device_t *d, uint64_t freq_Hz, char pol,
                 uint32_t lowf, uint32_t highf, uint32_t switchf)

in file

modules/access/dtv/linux.c

, kaffeine will fail with many channels as mentioned. But when exiting after that if block (its actually rather this line which is relevant), kaffeine will work nicely.

(in which area of the kaffeine code source does such functionality belong to?)
Comment 11 Mauro Carvalho Chehab 2017-03-27 18:23:59 UTC
(In reply to juliushar from comment #10)
> On the VLC side (version 2.2 stable), when exiting VLC before the line 
> 
> if (ioctl (d->frontend, FE_ENABLE_HIGH_LNB_VOLTAGE, &val) < 0 && val)
> 
> in function 
> 
> int dvb_set_sec (dvb_device_t *d, uint64_t freq_Hz, char pol,
>                  uint32_t lowf, uint32_t highf, uint32_t switchf)
> 
> in file
> 
> modules/access/dtv/linux.c
> 
> , kaffeine will fail with many channels as mentioned. But when exiting after
> that if block (its actually rather this line which is relevant), kaffeine
> will work nicely.
> 
> (in which area of the kaffeine code source does such functionality belong
> to?)

Let me try to understand it better. This ioctl sets the LNBf voltage

to what's there at "val". If zero, it sets to 13V; otherwise to 18V:
   if (ioctl (d->frontend, FE_ENABLE_HIGH_LNB_VOLTAGE, &val) < 0 && val)

You're saying that exiting just after setting the voltage and running Kaffeine will make it work?

If so, it seems that either the LNBf settings are wrong in Kaffeine, or the channel settings are wrong. That could happen, for example, if the Kaffeine's scanfile.dvb definitions for a channel says that it is horizontal, but the channel is, in fact vertical.

What channels are falling? What's your LNBf?
Comment 12 juliushar 2017-03-28 19:37:57 UTC
Created attachment 104788 [details]
Channel list: some channels are missing in there
Comment 13 juliushar 2017-03-28 19:39:31 UTC
Created attachment 104789 [details]
complete channels list
Comment 14 juliushar 2017-03-28 19:41:44 UTC
> 
> Let me try to understand it better. This ioctl sets the LNBf voltage
> 
> to what's there at "val". If zero, it sets to 13V; otherwise to 18V:
>    if (ioctl (d->frontend, FE_ENABLE_HIGH_LNB_VOLTAGE, &val) < 0 && val)
> 
> You're saying that exiting just after setting the voltage and running
> Kaffeine will make it work?
> 
> If so, it seems that either the LNBf settings are wrong in Kaffeine, or the
> channel settings are wrong. That could happen, for example, if the
> Kaffeine's scanfile.dvb definitions for a channel says that it is
> horizontal, but the channel is, in fact vertical.
> 
> What channels are falling? What's your LNBf?


Yes, exiting just after 

if (ioctl (d->frontend, FE_ENABLE_HIGH_LNB_VOLTAGE, &val) < 0 && val)

makes it work. And not only the before missing channels, but all channels. (This also applies to a scan, which will complete with more channels when it "works"). My LNBf is a AP82-T2B ( http://www.dueemme.com/catalogo/10.40.html ) with two connectors. With more testing, it turns out this effect is also there with for instance w_scan. Attached are two files, both generated with 

w_scan -f s -c DE -s S19.2E2 -L > Astraplaylist_after_vlc.xspf

, with vlc shortly running between the scans with a channels file as playlist. From those files, the "directly working" channels and those missing can be seen by comparison. (A few might be missing due to random effects). From this list: 

http://de.satexpat.com/sat/ost/19.2/

for instance, 11837 H 27500 3/4 DVB-S QPSK group, including "Das Erste", is always missing without the workaround.
Comment 15 juliushar 2017-06-30 15:45:09 UTC
The comparison of the previously attached channelfile without workaround and that with workaround shows, that without the workaround, only channels with polarization=V appear; while after the workaround [running VLC at least until the line 

if (ioctl (d->frontend, FE_ENABLE_HIGH_LNB_VOLTAGE, &val) < 0 && val)

], channels with both polarization=V and polarization=H appear (and the latter file is larger). Since this problem does not only appear with kaffeine, but also with w_scan, could this have to to with the underlying system? (which is somehow initialized more comprehensively by vlc).
Comment 16 Mauro Carvalho Chehab 2017-07-09 22:52:40 UTC
(In reply to juliushar from comment #15)
> The comparison of the previously attached channelfile without workaround and
> that with workaround shows, that without the workaround, only channels with
> polarization=V appear; while after the workaround [running VLC at least
> until the line 
> 
> if (ioctl (d->frontend, FE_ENABLE_HIGH_LNB_VOLTAGE, &val) < 0 && val)
> 
> ], channels with both polarization=V and polarization=H appear (and the
> latter file is larger). Since this problem does not only appear with
> kaffeine, but also with w_scan, could this have to to with the underlying
> system? (which is somehow initialized more comprehensively by vlc).

If you're having the same troubles on other tools, it is very likely that the problem is elsewhere. Perhaps a hardware malfunction or a Kernel driver issue. Can you test it with some other hardware?
Comment 17 juliushar 2017-07-17 18:31:20 UTC
i only have one setup available. Since it is reproducible and starts working with the described workaround, it looks like a software (driver?) issue. The firmware file for the card is from 
https://github.com/OpenELEC/dvb-firmware/blob/master/firmware/dvb-fe-cx24120-1.20.58.2.fw

. The Technisat SkyStar2 is a very widespread card. Who would be the developer to ask? Since there is a workaround with vlc, can there be one with kaffeine?
Comment 18 juliushar 2017-07-29 11:58:19 UTC
...tested with a different PC, running current Manjaro Linux (KDE) 64 Bit, a new Technisat SkyStar2 DVB card, same LNB. The same problem showed up, on the screenshots it can be seen that the number of channels in kaffeine differs greatly after the workaround. Also, w_scan results will be attached.
Comment 19 juliushar 2017-07-29 11:59:56 UTC
Created attachment 106947 [details]
Channel Number setup B before workaround
Comment 20 juliushar 2017-07-29 12:01:51 UTC
Created attachment 106948 [details]
Channel Number setup B after workaround (new channel scan)
Comment 21 juliushar 2017-07-29 12:03:43 UTC
Created attachment 106949 [details]
w_scan result setup B before workaround
Comment 22 juliushar 2017-07-29 12:04:41 UTC
Created attachment 106950 [details]
w_scan result setup B after workaround
Comment 23 Mauro Carvalho Chehab 2017-07-30 14:05:06 UTC
(In reply to juliushar from comment #18)
> ...tested with a different PC, running current Manjaro Linux (KDE) 64 Bit, a
> new Technisat SkyStar2 DVB card, same LNB. The same problem showed up, on
> the screenshots it can be seen that the number of channels in kaffeine
> differs greatly after the workaround. Also, w_scan results will be attached.

That sounds a Kernel driver bug. Looking at the flexcop-fe-tuner.c, it looks that there are several different models of SkyStar2 supported by the driver, each with different tuners and different LNB supply chips. The models supported by the Kernel are:

SkyStar2 rev 2.3: mt312
SkyStar2 rev 2.6: stv0299, tbmu24112
SkyStar2 rev 2.7: s5h1420, isl6421, itd1000
SkyStar2 rev 2.8: cx24123, isl6421

What's the exact model that you have? What Kernel version? I also need the Kernel logs with debug info, without the workarond and with the workaround, in order to try to identify what's missing there.
Comment 24 juliushar 2017-08-03 19:59:53 UTC
sudo uname -a
Linux .... 4.4.0-66-generic #87-Ubuntu SMP Fri Mar 3 15:29:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

lspci|grep -i dvb
03:05.0 Network controller: Techsan Electronics Co Ltd B2C2 FlexCopII DVB chip / Technisat SkyStar2 DVB card (rev 02)

directly after startup: 


journalctl -e -k

...
DVB: registering new adapter (FlexCop Digital TV device)
Aug 03 20:27:28 .... kernel: b2c2-flexcop: MAC address = 00:08:c9:e1:5f:99
Aug 03 20:27:28 .... kernel: CX24123: wrong demod revision: ee
Aug 03 20:27:28 .... kernel: shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
Aug 03 20:27:28 .... kernel: mt352_read_register: readreg error (reg=127, ret==-121)
Aug 03 20:27:28 .... kernel: nxt200x: nxt200x_readbytes: i2c read error (addr 0x0a, err == -121)
Aug 03 20:27:28 .... kernel: nxt200x: Unknown/Unsupported NXT chip: 00 00 00 00 00
Aug 03 20:27:28 .... kernel: lgdt330x: i2c_read_demod_bytes: addr 0x59 select 0x02 error (ret == -121)
Aug 03 20:27:28 .... kernel: stv0297_readreg: readreg error (reg == 0x80, ret == -121)
Aug 03 20:27:28 .... kernel: mt312_read: ret == -121
Aug 03 20:27:29 .... kernel: cx24120: Conexant cx24120/cx24118 - DVBS/S2 Satellite demod/tuner
Aug 03 20:27:29 .... kernel: cx24120: Demod cx24120 rev. 0x07 detected.
Aug 03 20:27:29 .... kernel: cx24120: Conexant cx24120/cx24118 attached.
Aug 03 20:27:29 .... kernel: b2c2-flexcop: ISL6421 successfully attached.
Aug 03 20:27:29 .... kernel: b2c2-flexcop: found 'Conexant CX24120/CX24118' .
Aug 03 20:27:29 .... kernel: b2c2_flexcop_pci 0000:03:05.0: DVB: registering adapter 0 frontend 0 (Conexant CX24120/CX24118)...
Aug 03 20:27:29 .... kernel: b2c2-flexcop: initialization of 'Sky2PC/SkyStar S2 DVB-S/S2 rev 3.3' at the 'PCI' bus controlled by a 'FlexCopIIb' complete
...

----------
journalctl -k -f

start kaffeine (not working)
./kaffeine 
03-08-17 21:19:33.210 [Debug   ] src/backend-vlc/vlcmediawidget.cpp#75: bool VlcMediaWidget::init(): Using libVLC with args: --no-video-title-show
03-08-17 21:19:33.475 [Info    ] kaffeine.dvb: src/dvb/dvbmanager.cpp#596: void DvbManager::loadDeviceManager(): Using built-in dvb device manager                                    
03-08-17 21:19:33.949 [Debug   ] src/dvb/dvbdevice_linux.cpp#1889: void DvbLinuxDeviceManager::componentAdded(const QString&): New device detected: /org/kde/solid/udev/sys/devices/pci0000:00/0000:00:14.4/0000:03:05.0/dvb/dvb0.demux0                                                                                                                                    
03-08-17 21:19:33.950 [Debug   ] src/dvb/dvbdevice_linux.cpp#1889: void DvbLinuxDeviceManager::componentAdded(const QString&): New device detected: /org/kde/solid/udev/sys/devices/pci0000:00/0000:00:14.4/0000:03:05.0/dvb/dvb0.dvr0                                                                                                                                      
03-08-17 21:19:33.950 [Debug   ] src/dvb/dvbdevice_linux.cpp#1889: void DvbLinuxDeviceManager::componentAdded(const QString&): New device detected: /org/kde/solid/udev/sys/devices/pci0000:00/0000:00:14.4/0000:03:05.0/dvb/dvb0.frontend0                                                                                                                                 
03-08-17 21:19:33.952 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...): Device Conexant CX24120/CX24118 (/dev/dvb/adapter0/frontend0) capabilities:                                                                                                                                                                           
03-08-17 21:19:33.952 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...):      CAN_2G_MODULATION                                          
03-08-17 21:19:33.952 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...):      CAN_FEC_1_2                                                
03-08-17 21:19:33.952 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...):      CAN_FEC_2_3                                                
03-08-17 21:19:33.952 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...):      CAN_FEC_3_4                                                
03-08-17 21:19:33.952 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...):      CAN_FEC_4_5                                                
03-08-17 21:19:33.953 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...):      CAN_FEC_5_6                                                
03-08-17 21:19:33.953 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...):      CAN_FEC_6_7                                                
03-08-17 21:19:33.953 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...):      CAN_FEC_7_8                                                
03-08-17 21:19:33.953 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...):      CAN_FEC_AUTO                                               
03-08-17 21:19:33.953 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...):      CAN_INVERSION_AUTO                                         
03-08-17 21:19:33.953 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...):      CAN_QPSK                                                   
03-08-17 21:19:33.953 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...):      CAN_RECOVER                                                
03-08-17 21:19:33.953 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...): DVB API Version 5.10, Current v5 delivery system: DVBS          
03-08-17 21:19:33.953 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...): Supported delivery systems:                                     
03-08-17 21:19:33.954 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...):     [DVBS]                                                      
03-08-17 21:19:33.954 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...):      DVBS2                                                      
03-08-17 21:19:33.954 [Debug   ] src/dvb/dvbdevice_linux.cpp#188: void DvbLinuxDevice::startDevice(const QString&): supports lnb UNIVERSAL                                            
03-08-17 21:19:33.954 [Debug   ] src/dvb/dvbdevice_linux.cpp#188: void DvbLinuxDevice::startDevice(const QString&): supports lnb DBS                                                  
03-08-17 21:19:33.954 [Debug   ] src/dvb/dvbdevice_linux.cpp#188: void DvbLinuxDevice::startDevice(const QString&): supports lnb EXTENDED                                             
03-08-17 21:19:33.954 [Debug   ] src/dvb/dvbdevice_linux.cpp#188: void DvbLinuxDevice::startDevice(const QString&): supports lnb STANDARD                                             
03-08-17 21:19:33.954 [Debug   ] src/dvb/dvbdevice_linux.cpp#188: void DvbLinuxDevice::startDevice(const QString&): supports lnb L10700                                               
03-08-17 21:19:33.954 [Debug   ] src/dvb/dvbdevice_linux.cpp#188: void DvbLinuxDevice::startDevice(const QString&): supports lnb L10750                                               
03-08-17 21:19:33.954 [Debug   ] src/dvb/dvbdevice_linux.cpp#188: void DvbLinuxDevice::startDevice(const QString&): supports lnb L11300                                               
03-08-17 21:19:33.954 [Debug   ] src/dvb/dvbdevice_linux.cpp#188: void DvbLinuxDevice::startDevice(const QString&): supports lnb ENHANCED                                             
03-08-17 21:19:33.955 [Debug   ] src/dvb/dvbdevice_linux.cpp#188: void DvbLinuxDevice::startDevice(const QString&): supports lnb QPH031
03-08-17 21:19:33.955 [Debug   ] src/dvb/dvbdevice_linux.cpp#188: void DvbLinuxDevice::startDevice(const QString&): supports lnb C-BAND
03-08-17 21:19:33.955 [Debug   ] src/dvb/dvbdevice_linux.cpp#188: void DvbLinuxDevice::startDevice(const QString&): supports lnb C-MULT
03-08-17 21:19:33.955 [Debug   ] src/dvb/dvbdevice_linux.cpp#188: void DvbLinuxDevice::startDevice(const QString&): supports lnb DISHPRO
03-08-17 21:19:33.955 [Debug   ] src/dvb/dvbdevice_linux.cpp#188: void DvbLinuxDevice::startDevice(const QString&): supports lnb 110BS
03-08-17 21:19:33.955 [Debug   ] src/dvb/dvbdevice_linux.cpp#188: void DvbLinuxDevice::startDevice(const QString&): supports lnb STACKED-BRASILSAT
03-08-17 21:19:33.955 [Debug   ] src/dvb/dvbdevice_linux.cpp#188: void DvbLinuxDevice::startDevice(const QString&): supports lnb OI-BRASILSAT
03-08-17 21:19:33.955 [Debug   ] src/dvb/dvbdevice_linux.cpp#188: void DvbLinuxDevice::startDevice(const QString&): supports lnb AMAZONAS
03-08-17 21:19:33.955 [Debug   ] src/dvb/dvbdevice_linux.cpp#188: void DvbLinuxDevice::startDevice(const QString&): supports lnb AMAZONAS
03-08-17 21:19:33.955 [Debug   ] src/dvb/dvbdevice_linux.cpp#188: void DvbLinuxDevice::startDevice(const QString&): supports lnb GVT-BRASILSAT
03-08-17 21:19:33.956 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...): SEC: set voltage to OFF
03-08-17 21:19:33.956 [Info    ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#198: void DvbLinuxDevice::startDevice(const QString&): Found dvb device P13d0210313d02103: Conexant CX24120/CX24118
03-08-17 21:19:33.956 [Debug   ] src/dvb/dvbdevice_linux.cpp#1889: void DvbLinuxDeviceManager::componentAdded(const QString&): New device detected: /org/kde/solid/udev/sys/devices/pci0000:00/0000:00:14.4/0000:03:05.0/dvb/dvb0.net0
03-08-17 21:19:36.736 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...): Device Conexant CX24120/CX24118 (/dev/dvb/adapter0/frontend0) capabilities:
03-08-17 21:19:36.737 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...):      CAN_2G_MODULATION
03-08-17 21:19:36.737 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...):      CAN_FEC_1_2
03-08-17 21:19:36.737 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...):      CAN_FEC_2_3
03-08-17 21:19:36.737 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...):      CAN_FEC_3_4
03-08-17 21:19:36.737 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...):      CAN_FEC_4_5
03-08-17 21:19:36.738 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...):      CAN_FEC_5_6
03-08-17 21:19:36.738 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...):      CAN_FEC_6_7
03-08-17 21:19:36.738 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...):      CAN_FEC_7_8
03-08-17 21:19:36.738 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...):      CAN_FEC_AUTO
03-08-17 21:19:36.738 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...):      CAN_INVERSION_AUTO
03-08-17 21:19:36.739 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...):      CAN_QPSK
03-08-17 21:19:36.739 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...):      CAN_RECOVER
03-08-17 21:19:36.739 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...): DVB API Version 5.10, Current v5 delivery system: DVBS
03-08-17 21:19:36.739 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...): Supported delivery systems: 
03-08-17 21:19:36.739 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...):     [DVBS]
03-08-17 21:19:36.740 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...):      DVBS2
03-08-17 21:19:36.740 [Debug   ] src/dvb/dvbdevice_linux.cpp#915: virtual bool DvbLinuxDevice::satSetup(QString, int, int): Using LNBf type UNIVERSAL
03-08-17 21:19:36.740 [Debug   ] src/dvb/dvbdevice_linux.cpp#929: virtual bool DvbLinuxDevice::tune(const DvbTransponder&): tune to: S 11836500 H 27500000 3/4
03-08-17 21:19:36.741 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...): frequency: 11836,50 MHz, high_band: 1
03-08-17 21:19:36.741 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...): SEC: set voltage to 18V
03-08-17 21:19:36.741 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...): DiSEqC TONE: OFF
03-08-17 21:19:36.757 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...): DiSEqC command: e0 10 38 f3 
03-08-17 21:19:36.820 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...): DiSEqC BURST: SEC_MINI_A
03-08-17 21:19:36.859 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...): DiSEqC TONE: ON
03-08-17 21:19:36.884 [Debug   ] kaffeine.dev: src/dvb/dvbdevice_linux.cpp#81: void dvbv5_log(int, const char*, ...): L-Band frequency: 1236,50 MHz (offset = 10600,00 MHz)
03-08-17 21:19:41.905 [Debug   ] src/dvb/dvbdevice.cpp#689: void DvbDevice::frontendEvent(): tuning failed on 11836.50 MHz

----------
..meanwhile in journalctl: 
Aug 03 21:18:47 .... kernel: cx24120: FW version 1.20.58.2
----------

start vlc / interrupted after workaround line of code (makes an error message appear in the log)

./vlc-2.2_modified/bin/vlc-static -vvv Astraplaylist_vlc.xspf

journal: Aug 03 21:23:50 .... kernel: traps: vlc-static[2132] general protection ip:7f30d8b27478 sp:7f30bcf0f970 error:0 in libc-2.23.so[7f30d8aa9000+1c0000]

(vlc logs did not fit into terminal, so once more:)

./vlc-2.2_modified/bin/vlc-static -vvv Astraplaylist_vlc.xspf > vlc-messages_7.txt 2>&1
Speicherzugriffsfehler (Speicherabzug geschrieben)

journal: Aug 03 21:25:21 .... kernel: vlc-static[2159]: segfault at 18 ip 00007f79ea4f551f sp 00007f79e1fe63f0 error 4 in libQt5Gui.so.5.5.1[7f79ea426000+527000]

-------------

-------------

kaffeine again:

./kaffeine > kaffein_log_working.txt 2>&1
(movies are playing now....)

journal: no additional messages appeared

(some files will be attached)
Comment 25 juliushar 2017-08-03 20:09:38 UTC
Created attachment 107058 [details]
Technisat Card Foto
Comment 26 juliushar 2017-08-03 20:13:30 UTC
Created attachment 107059 [details]
output from vlc
Comment 27 juliushar 2017-08-03 20:16:00 UTC
Created attachment 107060 [details]
Kaffeine log with workaround
Comment 28 juliushar 2017-08-03 20:19:21 UTC
imprint on the Sat card:

TechniSat DIGITAL 6411-0500-V3.0 SCH-V2.0 

(see attached photo)
Comment 29 juliushar 2017-08-04 21:31:30 UTC
The second system with the same workaround has the following properties:

lspci|grep -i dvb
01:06.0 Network controller: Techsan Electronics Co Ltd B2C2 FlexCopII DVB chip / Technisat SkyStar2 DVB card (rev 02)

sudo uname -a
Linux ... 4.9.39-1-MANJARO #1 SMP PREEMPT Fri Jul 21 08:25:24 UTC 2017 x86_64 GNU/Linux
Comment 30 Mauro Carvalho Chehab 2017-08-12 13:13:33 UTC
(In reply to Mauro Carvalho Chehab from comment #23)
> (In reply to juliushar from comment #18)
> > ...tested with a different PC, running current Manjaro Linux (KDE) 64 Bit, a
> > new Technisat SkyStar2 DVB card, same LNB. The same problem showed up, on
> > the screenshots it can be seen that the number of channels in kaffeine
> > differs greatly after the workaround. Also, w_scan results will be attached.
> 
> That sounds a Kernel driver bug. Looking at the flexcop-fe-tuner.c, it looks
> that there are several different models of SkyStar2 supported by the driver,
> each with different tuners and different LNB supply chips. The models
> supported by the Kernel are:
> 
> SkyStar2 rev 2.3: mt312
> SkyStar2 rev 2.6: stv0299, tbmu24112
> SkyStar2 rev 2.7: s5h1420, isl6421, itd1000
> SkyStar2 rev 2.8: cx24123, isl6421
> 
> What's the exact model that you have? What Kernel version? I also need the
> Kernel logs with debug info, without the workarond and with the workaround,
> in order to try to identify what's missing there.

Ok, your board is using the entry meant for SkyStar S2 PCI DVB-S/S2 rev 3.3:

static int skystarS2_rev33_attach(struct flexcop_device *fc,
	struct i2c_adapter *i2c)
{
	fc->fe = dvb_attach(cx24120_attach,
			    &skystar2_rev3_3_cx24120_config, i2c);
	if (!fc->fe)
		return 0;

	fc->dev_type = FC_SKYS2_REV33;
	fc->fc_i2c_adap[2].no_base_addr = 1;
	if (!dvb_attach(isl6421_attach, fc->fe, &fc->fc_i2c_adap[2].i2c_adap,
			0x08, 0, 0, false)) {
		err("ISL6421 could NOT be attached!");
		fc->fc_i2c_adap[2].no_base_addr = 0;
		return 0;
	}
	info("ISL6421 successfully attached.");

	if (fc->has_32_hw_pid_filter)
		fc->skip_6_hw_pid_filter = 1;

	return 1;
}

It uses a cx24120 frontend, with an ISIL 6421 to power up the LNBf. The volrage control (with switches from V/H polarization) seems to be implemented by the isl6421 driver. The datasheet for this device is at:

    http://www.intersil.com/content/dam/Intersil/documents/isl6/isl6421a.pdf

One thing this chip provides is that it can add an extra 1V to be used when the antenna cable it too long, in order to compensate for eventual loss.

Apparently, something is not right there, at least for your device. I'll take a look at the Kernel driver.
Comment 31 Mauro Carvalho Chehab 2017-08-12 13:31:35 UTC
After looking at isl6421 datasheet, I think I know what may be happening. The driver is programmed to use the dynamic current overflow protection. Such circuit is meant to protect the device from troubles when it sends a current to the LNBf. As stated there:
Comment 32 Mauro Carvalho Chehab 2017-08-12 13:37:13 UTC
(In reply to Mauro Carvalho Chehab from comment #31)
> After looking at isl6421 datasheet, I think I know what may be happening.
> The driver is programmed to use the dynamic current overflow protection.
> Such circuit is meant to protect the device from troubles when it sends a
> current to the LNBf. As stated there:

    "as soon as an overload is detected, the output is shut down for a time T OFF, typically 900ms

     ...

     However, there could be some cases in which a highly capacitive load on the output may cause a difficult start-up, when the dynamic protection is chosen. This can be solved by initiating a power start-up in static mode (DCL = HIGH) and then switching to the dynamic mode (DCL = LOW) after a chosen amount of time."

The driver currently doesn't implement it, but something occurred to me: do you have any other device connected to the satellite antenna? When you have multiple devices connected to the antenna, you need a DiSEqC switch. Additinally, only one should be powering up the antenna on a given time.

If more then one device is connected, and another device is already powering the antenna, trying to change the voltage (in order to switch the polarization) will fail.
Comment 33 juliushar 2017-08-12 19:02:21 UTC
There is only one PC connected to the LNB at a given time. (The AP82-T2B LNB provides two independent outputs, but only one is used). When i plug the cable out of the PC and test the signal with a WS-6933 *, everything looks good. And with Kaffeine, all the channels that appear also look good. So there is no problem with the signal strength for the working channels.


*( https://www.amazon.de/Satlink-WS-6933-Camping-Satfinder-Messger%C3%A4t/dp/B00KXKFKRA/ref=sr_1_1?ie=UTF8&qid=1502564154&sr=8-1&keywords=ws6933 )
Comment 34 Mauro Carvalho Chehab 2017-08-13 11:26:01 UTC
Created attachment 107254 [details]
media: isl6421: add checks for current overflow

The enclosed Kernel patch adds an additional logic for Isil 6421 to improve the power on logic. I suspect that it could fix the issue you're getting, but I can't test the patch myself.

You'll need to apply the patch to your Kernel and see if it would fix the issue.
Comment 35 Mauro Carvalho Chehab 2017-08-13 21:09:21 UTC
(In reply to Mauro Carvalho Chehab from comment #11)
> (In reply to juliushar from comment #10)
> > On the VLC side (version 2.2 stable), when exiting VLC before the line 
> > 
> > if (ioctl (d->frontend, FE_ENABLE_HIGH_LNB_VOLTAGE, &val) < 0 && val)
> > 
> > in function 
> > 
> > int dvb_set_sec (dvb_device_t *d, uint64_t freq_Hz, char pol,
> >                  uint32_t lowf, uint32_t highf, uint32_t switchf)
> > 
> > in file
> > 
> > modules/access/dtv/linux.c
> > 
> > , kaffeine will fail with many channels as mentioned. But when exiting after
> > that if block (its actually rather this line which is relevant), kaffeine
> > will work nicely.
> > 
> > (in which area of the kaffeine code source does such functionality belong
> > to?)
> 
> Let me try to understand it better. This ioctl sets the LNBf voltage

Actually, no. This ioctl is defined only for a few devices. It switches from "normal" voltage mode (13V/18V) to a "higher" voltage mode, that adds 1V, in order to compensate for cable loss (e. g. 14V/19V). Very few DVB devices implements it. That's why I missed on the first time I looked into it.

I just added a new configuration option to DVB-S/S2 that will allow enabling this ioctl at Kaffeine. On tri-state mode, it won't use the ioctl at all, just like before. That prevents a lot at libdvbv5 that would otherwise happen if called and the device doesn't support it:

    13-08-17 18:07:58.265 [Critical] kaffeine.dev: FE_ENABLE_HIGH_LNB_VOLTAGE: Operation not supported

Checking the box will enable the higher voltage mode; unchecking the normal mode.

In any case, the previous Kernel patch that detects current overflow sounds a good idea, so I'm pushing it to the Kernel tree.
Comment 36 Mauro Carvalho Chehab 2017-08-13 21:15:40 UTC
Git commit d076c5b64a1d2949d1bc3938e58c7d3fda0f6d64 by Mauro Carvalho Chehab.
Committed on 13/08/2017 at 20:50.
Pushed by mauroc into branch 'master'.

dvb: add a tristate to allow set higher/normal LNBf voltage

Some DVB devices have an optional ioctl that allows changing
between normal voltage for LNBf (13V/18V) to a higher voltage
mode (usually, 14V/19V), meant to compensate for voltage loss
on long cabling. Without that, it is not possible to properly
switch the polarization.

Add a tristate check box to allow enabling/disabling this via
ioctl.

Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>

M  +1    -0    src/dvb/dvbbackenddevice.h
M  +4    -0    src/dvb/dvbconfig.h
M  +32   -14   src/dvb/dvbconfigdialog.cpp
M  +4    -1    src/dvb/dvbconfigdialog.h
M  +2    -0    src/dvb/dvbdevice.cpp
M  +14   -0    src/dvb/dvbdevice_linux.cpp
M  +1    -0    src/dvb/dvbdevice_linux.h
M  +2    -0    src/dvb/dvbmanager.cpp

https://commits.kde.org/kaffeine/d076c5b64a1d2949d1bc3938e58c7d3fda0f6d64
Comment 37 juliushar 2017-08-14 21:22:00 UTC
Created attachment 107276 [details]
The device seems to be present

Side problem during test with latest kaffeine from git (2017-08-14)
Comment 38 juliushar 2017-08-14 21:23:16 UTC
Created attachment 107277 [details]
...but the source (device) cannot be selected

Side problem during test with latest kaffeine from git (2017-08-14)
Comment 39 juliushar 2017-08-14 21:26:04 UTC
Thanks for looking in to this! i tried to test, but the device cannot be selected for scan, although it is plugged in (attached two screenshots). This seems to be a different problem, but i cannot test the new version of kaffeine.
Comment 40 juliushar 2017-08-14 21:28:55 UTC
Created attachment 107278 [details]
The Technisat SkyStar2 with opened lid of the HF cage near the connector. There are no chips on the backside.
Comment 41 Mauro Carvalho Chehab 2017-08-15 09:22:18 UTC
It could be interesting to place the photo you took at:
   https://linuxtv.org/wiki/index.php/TechniSat_SkyStar_S2

The IS61V256 is an EEPROM memory (32 KB). The 24118A is part of the Conexant DVB-S2 chipset: cx24118/cx24120. Both are controlled by the same frontend driver.

With regards to the problems you're reporting, based on those "cannot open" log messages, it seems that either you're lacking permissions to access a subdir on your home directory (chown -R your_user:your_group /home/your_user would fix), or your home partition is full. Kaffeine uses a file pipe to communicate with libVLC. If it can't create such pipe, it won't work.
Comment 42 juliushar 2017-08-24 16:40:15 UTC
i tested with the latest kaffeine and can confirm that this bug is solved. Since this is a general feature, it also affects other programs. Does it make sense to mention this at other places? for instance, the same thing affects w_scan, where i could not find the higher voltage option yet.