[Bugme-new] [Bug 19652] New: dib0700 - Remote no longer functional since release 2.6.34

bugzilla-daemon at bugzilla.kernel.org bugzilla-daemon at bugzilla.kernel.org
Sun Oct 3 12:59:45 PDT 2010


https://bugzilla.kernel.org/show_bug.cgi?id=19652

           Summary: dib0700 - Remote no longer functional since release
                    2.6.34
           Product: v4l-dvb
           Version: unspecified
    Kernel Version: 2.6.34
          Platform: All
        OS/Version: Linux
              Tree: Mainline
            Status: NEW
          Severity: normal
          Priority: P1
         Component: dvb-usb
        AssignedTo: v4l-dvb_dvb-usb at kernel-bugs.osdl.org
        ReportedBy: michael.meier at mmsources.de
        Regression: No


Since linux release 2.6.34 the remote control input stopped working for my
WinTV Nova TD2 DVB-T receiver keeping me from updating my DVR system. dmesg
shows "dib0700: rc submit urb failed". Taking a look at the code, in file
dib0700_core.c in function dib0700_rc_setup the call to usb_submit_urb failes
with return code -EINVAL(-22) because purb->interval == 0. Settings the
interval to a hard-coded value before the call restores original function, but
it should probably be set dynamically according to the remote query interval.

This behavior was introduced by following commit:


commit 6a2071006b72bf887e38c025c60f98d2998ceacb
Author: Devin Heitmueller <dheitmueller at kernellabs.com>
Date:   Mon Jan 4 02:43:19 2010 -0300

V4L/DVB (13930): dib0700: rework IR logic for firmware 1.20



Furthermore, commit d3c501d1938c56c9998fd51fc8dadb49ddd6110e [V4L/DVB: dib0700:
Fix RC protocol logic to properly handle NEC/NECx and RC-5]  breaks passing the
right keycode to the input layer. For example, according to the IR keymap in
rc-dib0700-rc5.c the codes for "play" and "9" should be 0x1e35 and 0x1e09.
Actual values passed to the input layer are 0x1e0035 and 0x1e0009.
Before this commit the keycode was composed this way:

u16 system;
u8 *buf;

buf = (u8 *)purb->transfer_buffer;

poll_reply.system     = (buf[2] << 8) | buf[3];
keycode = poll_reply.system << 8 | poll_reply.data;

and now

union {
  u16 system16;
  struct {
    u8 system;
    u8 not_system;
  };
};

struct dib0700_rc_response *poll_reply;
poll_reply = purb->transfer_buffer;

keycode = poll_reply->system16 << 8 | poll_reply->data;

so that system16 is depending on processor endianess and in this case
byte-swapped.

---------

commit d3c501d1938c56c9998fd51fc8dadb49ddd6110e
Author: Mauro Carvalho Chehab <mchehab at redhat.com>
Date:   Sun Aug 1 10:35:49 2010 -0300

V4L/DVB: dib0700: Fix RC protocol logic to properly handle NEC/NECx and RC-5



With these two things fixed my remote is working again but not as good as it
was with kernel 2.6.33. The input seems to be lagging, i.e. pushing
play/stop/seek in mplayer has an effect about half a second after pushing the
key unlike before. Also when pushing a key several times the key repetition
starts and produces 10 and more key events even if only pushing the keys 3
times. This seems to be related to commit
72b393106bddc9f0a1ab502b4c8c5793a0441a30 [V4L/DVB: Port dib0700 to rc-core]
moving the dib0700 to use the rc-core handler but also removing the module's
own key repetition logic which was working fine for me and giving a
keyboard-like behavior. 



Hardware used:

Intel essentials D945GCLF2
Hauppauge WinTV Nova TD 2
Firmware: f42f86e2971fd994003186a055813237  dvb-usb-dib0700-1.20.fw
Remote: Hauppauge "snowboard" silver remote / 45 buttons / RC-5 protocol

-- 
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


More information about the Bugme-new mailing list