From patchwork Sun Mar 6 23:37:39 2005 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Carsten Koch X-Patchwork-Id: 11801 Received: from melpumpe.icem.de ([158.225.1.2] helo=mail.icem.de) by www.linuxtv.org with esmtp (Exim 4.34) id 1D85Ja-0003kD-9r for vdr@linuxtv.org; Mon, 07 Mar 2005 00:37:38 +0100 Received: from localhost (localhost [127.0.0.1]) by mail.icem.de (Postfix) with ESMTP id 3B339125BE3 for ; Mon, 7 Mar 2005 00:37:44 +0100 (CET) Received: from mail.icem.de ([127.0.0.1]) by localhost (melpumpe [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 23204-10; Mon, 7 Mar 2005 00:37:41 +0100 (CET) Received: from [192.168.25.3] (natan.icemnet.de [192.168.3.5]) by mail.icem.de (Postfix) with ESMTP id 6220A125B9D for ; Mon, 7 Mar 2005 00:37:39 +0100 (CET) Message-ID: <422B9443.7080409@icem.com> Date: Mon, 07 Mar 2005 00:37:39 +0100 From: Carsten Koch User-Agent: Mozilla Thunderbird 1.0 (X11/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Klaus Schmidinger's VDR Subject: Re: [vdr] lirc problems with VDR 1.3 under kernel 2.6. References: <422A3F09.4010804@icem.com> <422AA372.7050205@wor.net> <422AF53A.9060100@icem.com> <422AF6A2.3060906@cadsoft.de> In-Reply-To: <422AF6A2.3060906@cadsoft.de> X-Virus-Scanned: by amavisd-new-20030616-p10 (Debian) at icem.com X-BeenThere: vdr@linuxtv.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Klaus Schmidinger's VDR List-Id: Klaus Schmidinger's VDR List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 Mar 2005 23:37:38 -0000 Status: O X-Status: X-Keywords: X-UID: 550 Klaus Schmidinger wrote: > Carsten Koch wrote: > >> Dirk wrote: >> ... >> >>>> is anybody else experiencing sluggish response to remote control >>>> commands? >>>> It started when I updated to kernel 2.6 and VDR 1.3. >>> >>> >>> >>> >>> Yes, same for me. >>> But I am observing that remote control key presses are never lost. >>> Sometimes I press several keys in sequence and nothing happens. After >>> some >>> seconds, the keys are "executed" very quickly. >> >> >> >> Yes, you are right. >> Of course, for a toggle key like "Menu" it is sometimes hard to say, >> but I agree - it looks like they are never lost, just delayed sometimes >> an the executed all at once. >> >> >>> I think, there must be some instance inside VDR which "caches" the >>> remote >>> key strokes in some kind of queue. >> >> >> >> It may be the lirc demon which is buffering them and vdr may just >> not get around to reading the lirc queue all the time. >> >> @Klaus, is that possible? >> Any suggestion where I should start looking? > > > VDR buffers up to 16 keystrokes in cRemote::keys[]. OK, here is an update: I added this to lirc.c / remote.c and waited for the problem to occur. A few minutes ago it did. I pressed Menu to bring up the main menu and Down a few times to get to "recordings". The main menu came up but the cursor did not move down. I pressed down many times for almost a minute. No effect. I waited a few seconds and the cursor skipped down all the way to the last main menu entry. My log shows that vdr has received my commands when I pressed them, not all at once like it would seem from their effect on the screen. This also exctly matches Dirk's description: Mar 7 00:18:28 vdr vdr[6816]: 533:'00000000000060c6 00 Menu NokiaVCN620 ' Mar 7 00:18:28 vdr vdr[6816]: put 'Menu' 0 0 Mar 7 00:18:28 vdr vdr[6816]: 534:'00000000000060c6 00 Menu NokiaVCN620 ' Mar 7 00:18:29 vdr vdr[6816]: 535:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:29 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:29 vdr vdr[6812]: changing pids of channel 47 from 1110+1110:1120=deu:130 to 1110+1110:1120:130 Mar 7 00:18:30 vdr vdr[6816]: 536:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:30 vdr vdr[6816]: 537:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:30 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:30 vdr vdr[6816]: 538:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:31 vdr vdr[6812]: channel 1 (3sat) event 23:45 'Die Dämonischen' status 4 Mar 7 00:18:31 vdr vdr[6816]: 539:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:31 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:31 vdr vdr[6816]: 540:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:32 vdr vdr[6816]: 541:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:32 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:32 vdr vdr[6816]: 542:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:34 vdr vdr[6816]: 543:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:34 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:35 vdr vdr[6816]: 544:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:36 vdr vdr[6816]: 545:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:36 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:36 vdr vdr[6816]: 546:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:37 vdr vdr[6816]: 547:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:37 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:38 vdr vdr[6816]: 548:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:39 vdr vdr[6816]: 549:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:39 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:39 vdr vdr[6816]: 550:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:40 vdr vdr[6816]: 551:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:40 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:40 vdr vdr[6816]: 552:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:40 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:41 vdr vdr[6816]: 553:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:41 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:42 vdr vdr[6816]: 554:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:42 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:42 vdr vdr[6816]: 555:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:42 vdr vdr[6816]: 556:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:42 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:42 vdr vdr[6816]: 557:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:43 vdr vdr[6816]: 558:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:43 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:43 vdr vdr[6816]: 559:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:43 vdr vdr[6816]: 560:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:43 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:44 vdr vdr[6816]: 561:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:44 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:44 vdr vdr[6816]: 562:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:45 vdr vdr[6816]: 563:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:45 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:45 vdr vdr[6816]: 564:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:45 vdr vdr[6816]: 565:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:45 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:46 vdr vdr[6816]: 566:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:46 vdr vdr[6816]: 567:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:46 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:46 vdr vdr[6816]: 568:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:47 vdr vdr[6816]: 569:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:47 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:47 vdr vdr[6816]: 570:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:47 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:47 vdr vdr[6816]: 571:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:48 vdr vdr[6816]: 572:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:48 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:49 vdr vdr[6816]: 573:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:49 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:49 vdr vdr[6816]: 574:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:51 vdr vdr[6816]: 575:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:51 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:52 vdr vdr[6816]: 576:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:52 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:52 vdr vdr[6816]: 577:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:53 vdr vdr[6816]: 578:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:53 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:53 vdr vdr[6816]: 579:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:53 vdr vdr[6816]: 580:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:53 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:54 vdr vdr[6816]: 581:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:54 vdr vdr[6816]: 582:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:54 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:54 vdr vdr[6816]: 583:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:55 vdr vdr[6816]: 584:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:55 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:55 vdr vdr[6816]: 585:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:56 vdr vdr[6816]: 586:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:56 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:57 vdr vdr[6816]: 587:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:57 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:58 vdr vdr[6816]: 588:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:58 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:58 vdr vdr[6816]: 589:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:59 vdr vdr[6816]: 590:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:18:59 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:18:59 vdr vdr[6816]: 591:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:00 vdr vdr[6816]: 592:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:00 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:19:00 vdr vdr[6816]: 593:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:00 vdr vdr[6816]: 594:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:00 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:19:01 vdr vdr[6816]: 595:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:01 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:19:01 vdr vdr[6816]: 596:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:03 vdr vdr[6816]: 597:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:03 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:19:03 vdr vdr[6816]: 598:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:03 vdr vdr[6816]: 599:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:03 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:19:04 vdr vdr[6816]: 600:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:04 vdr vdr[6816]: 601:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:04 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:19:05 vdr vdr[6816]: 602:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:05 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:19:05 vdr vdr[6816]: 603:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:06 vdr vdr[6816]: 604:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:06 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:19:06 vdr vdr[6816]: 605:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:07 vdr vdr[6816]: 606:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:07 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:19:07 vdr vdr[6816]: 607:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:08 vdr vdr[6816]: 608:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:08 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:19:08 vdr vdr[6816]: 609:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:08 vdr vdr[6816]: 610:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:08 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:19:08 vdr vdr[6816]: 611:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:09 vdr vdr[6816]: 612:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:09 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:19:09 vdr vdr[6816]: 613:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:10 vdr vdr[6816]: 614:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:10 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:19:10 vdr vdr[6816]: 615:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:11 vdr vdr[6816]: 616:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:11 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:19:11 vdr vdr[6816]: 617:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:11 vdr vdr[6816]: 618:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:11 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:19:13 vdr vdr[6816]: 619:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:13 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:19:13 vdr vdr[6816]: 620:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:13 vdr vdr[6816]: 621:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:13 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:19:14 vdr vdr[6816]: 622:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:14 vdr vdr[6816]: 623:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:14 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:19:14 vdr vdr[6816]: 624:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:15 vdr vdr[6816]: 625:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:15 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:19:16 vdr vdr[6816]: 626:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:16 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:19:16 vdr vdr[6816]: 627:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:17 vdr vdr[6816]: 628:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:17 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:19:17 vdr vdr[6816]: 629:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:18 vdr vdr[6816]: 630:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:18 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:19:18 vdr vdr[6816]: 631:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:19 vdr vdr[6816]: 632:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:19 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:19:19 vdr vdr[6816]: 633:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:20 vdr vdr[6816]: 634:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:20 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:19:20 vdr vdr[6816]: 635:'0000000000006392 00 Down NokiaVCN620 ' Mar 7 00:19:20 vdr vdr[6816]: put 'Down' 0 0 Mar 7 00:19:23 vdr vdr[6815]: channel 25 (Phoenix) event 00:15 'VOR ORT' status 4 So I guess the problem is not in lircd and not in vdr's lirc.c. Any ideas what I should try next? Carsten. --- vdr-1.3.17/lirc.c 2003-10-18 13:34:02.000000000 +0200 +++ /home/cko/vdr-1.3.17/lirc.c 2005-03-06 14:06:06.333149544 +0100 @@ -56,13 +56,16 @@ char LastKeyName[LIRC_KEY_BUF] = ""; bool repeat = false; int timeout = -1; +int lirc_serial = 0; for (; f >= 0;) { LOCK_THREAD; bool ready = cFile::FileReady(f, timeout); +buf[0] = 0; int ret = ready ? safe_read(f, buf, sizeof(buf)) : -1; +dsyslog("%u:'%s'", lirc_serial++, buf); if (ready && ret <= 0 ) { esyslog("ERROR: lircd connection lost"); --- vdr-1.3.17/remote.c 2004-10-31 15:05:12.000000000 +0100 +++ /home/cko/vdr-1.3.17/remote.c 2005-03-06 14:39:02.316353120 +0100 @@ -125,6 +125,7 @@ bool cRemote::Put(const char *Code, bool Repeat, bool Release) { +dsyslog("put '%s' %u %u", Code, Repeat, Release); if (learning && this != learning) return false; eKeys Key = Keys.Get(Name(), Code);