DVB-C (CT-3650) with UnityMedia CI Module not working
Juergen Lock
nox at jelal.kn-bremen.de
Tue Jun 26 17:26:34 UTC 2012
In article <201206261804.05819.hselasky at c2i.net> you write:
>On Tuesday 26 June 2012 17:54:28 Timo Schäfer wrote:
>> Am 26.06.2012 17:47, schrieb Timo Schäfer:
>> > Am 26.06.2012 17:37, schrieb Hans Petter Selasky:
>> >> On Monday 25 June 2012 17:48:05 Timo Schäfer wrote:
>> >>> ./adapter0/ca0
>> >>
>> >> Can you use the device shown above?
>> >>
>> >> --HPS
>> >
>> > how? vdr is not talking to it / does not detect it.
>> >
>> > under linux vdr looks at the attached ci module and inserted smartcard
>> > to unscramble
>> > the channel if needed.
>> >
>> > with my freebsd setup vdr does not detect the ci module and cannot use
>> > the smartcard
>> > to open the scrambled channels.
>> >
>> > crw-rw---- 1 webcamd webcamd 0, 97 Jun 26 17:40 ca0
>> >
>> > has the needed rights, but i guess its not used/detected.
>>
>> Ah there is something in /var/log/messages:
>>
>> Jun 26 14:00:20 barney vdr: [680406016] ERROR: can't get info of CAM
>> slot 0 on device 0: Invalid argument
>> Jun 26 14:00:28 barney last message repeated 15 times
>
>Hi,
>
>>
>> does not look good but that seems to be the problem.
>
>Maybe it is a known IOCTL issue. Some IOCTL needs to be fixed before they can
>be used, because the RW flags are not correct.
>
>Try figuring out what IOCTL this is with ktrace or something like that. Or
>simply grep in the code for that error message. Then see if the RW flags are
>correct.
Bingo! :) At least CA_GET_SLOT_INFO needs to be _IOWR not _IOR.
Try this patch in ports/multimedia/v4l_compat/files/patch-dvb-ca.h:
--- dvb/ca.h.orig
+++ dvb/ca.h
@@ -80,7 +80,13 @@ typedef struct ca_pid {
#define CA_RESET _IO('o', 128)
#define CA_GET_CAP _IOR('o', 129, ca_caps_t)
+
+/* At least CA_GET_SLOT_INFO needs to be _IOWR not _IOR.
+ * This is wrong on Linux too but there the driver doesn't care.
+ *
#define CA_GET_SLOT_INFO _IOR('o', 130, ca_slot_info_t)
+ */
+#define CA_GET_SLOT_INFO _IOWR('o', 130, ca_slot_info_t)
#define CA_GET_DESCR_INFO _IOR('o', 131, ca_descr_info_t)
#define CA_GET_MSG _IOR('o', 132, ca_msg_t)
#define CA_SEND_MSG _IOW('o', 133, ca_msg_t)
.and a very similar one in
ports/multimedia/webcamd/files/patch-media_tree-include-linux-dvb-ca.h:
--- media_tree/include/linux/dvb/ca.h.orig
+++ media_tree/include/linux/dvb/ca.h
@@ -80,7 +80,13 @@ typedef struct ca_pid {
#define CA_RESET _IO('o', 128)
#define CA_GET_CAP _IOR('o', 129, ca_caps_t)
+
+/* At least CA_GET_SLOT_INFO needs to be _IOWR not _IOR.
+ * This is wrong on Linux too but there the driver doesn't care.
+ *
#define CA_GET_SLOT_INFO _IOR('o', 130, ca_slot_info_t)
+ */
+#define CA_GET_SLOT_INFO _IOWR('o', 130, ca_slot_info_t)
#define CA_GET_DESCR_INFO _IOR('o', 131, ca_descr_info_t)
#define CA_GET_MSG _IOR('o', 132, ca_msg_t)
#define CA_SEND_MSG _IOW('o', 133, ca_msg_t)
and then rebuild these two and multimedia/vdr too.
Good luck, :)
Juergen
PS: The submitter of the WebcamCompat wiki TT S2-3650 entry told me
he tested the CI too, I wonder what he tested... (Or maybe the old
vdr version ignored the error?)
More information about the freebsd-multimedia
mailing list