From: lirc@bartelmus.de (Christoph Bartelmus)
To: jarod@wilsonet.com
Cc: awalls@md.metrocast.net, jarod@redhat.com, jonsmirl@gmail.com,
linux-input@vger.kernel.org, linux-media@vger.kernel.org,
mchehab@redhat.com
Subject: Re: Remote that breaks current system
Date: 12 Aug 2010 08:46:00 +0200 [thread overview]
Message-ID: <BUhP+pZ3jFB@christoph> (raw)
In-Reply-To: <AANLkTimz2eLSEy+U1NdMVsQ=af7v67omPntwMQs+8jno@mail.gmail.com>
Hi Jarod,
on 11 Aug 10 at 10:38, Jarod Wilson wrote:
> On Mon, Aug 2, 2010 at 4:42 PM, Jon Smirl <jonsmirl@gmail.com> wrote:
>> On Mon, Aug 2, 2010 at 2:09 PM, Jarod Wilson <jarod@redhat.com> wrote:
>>> On Mon, Aug 02, 2010 at 01:13:22PM -0400, Jon Smirl wrote:
>>>> On Mon, Aug 2, 2010 at 12:42 PM, Christoph Bartelmus <lirc@bartelmus.de>
>>>> wrote:
> ....
>>>>> It has nothing to do with start bits.
>>>>> The Streamzap remote just sends 14 (sic!) bits instead of 13.
>>>>> The decoder expects 13 bits.
>>>>> Yes, the Streamzap remote does _not_ use standard RC-5.
>>>>> Did I mention this already? Yes. ;-)
>>>>
>>>> If the remote is sending a weird protocol then there are several choices:
>>>> 1) implement raw mode
>>>> 2) make a Stream-Zap protocol engine (it would be a 14b version of
>>>> RC-5). Standard RC5 engine will still reject the messages.
>>>> 3) throw away your Stream-Zap remotes
>>>>
>>>> I'd vote for #3, but #2 will probably make people happier.
>>>
>>> Hm. Yeah, I know a few people who are quite attached to their Streamzap
>>> remotes. I'm not a particularly big fan of it, I only got the thing off
>>> ebay to have the hardware so I could work on the driver. :) So yeah, #3 is
>>> probably not the best route. But I don't know that I'm a huge fan of #2
>>> either. Another decoder engine just for one quirky remote seems excessive,
>>> and there's an option #4:
>>>
>>> 4) just keep passing data out to lirc by default.
>>
>> That's a decent idea. Implement the mainstream, standard protocols in
>> the kernel and kick the weird stuff out to LIRC. We can avoid the
>> whole world of raw mode, config files, etc. Let LIRC deal with all
>> that. If the weird stuff gets enough users bring it in-kernel. Maybe
>> StreamZap will suddenly sell a million units, you never know.
>>
>> It is easy to implement a StreamZap engine. Just copy the RC5 one.
>> Rename everything and adjust it to require one more bit. You'll have
>> to modify the RC5 to wait for a bit interval (timeout) before sending
>> the data up. If you want to get fancy use a weak symbol in the
>> StrreamZap engine to tell the RC5 engine if Stream Zap is loaded. Then
>> you can decide to wait the extra bit interval or not.
> The other thought I had was to not load the engine by default, and
> only auto-load it from the streamzap driver itself.
>>> Let lircd handle the default remote in this case. If you want to use
>>> another remote that actually uses a standard protocol, and want to use
>>> in-kernel decoding for that, its just an ir-keytable call away.
>>>
>>> For giggles, I may tinker with implementing another decoder engine though,
>>> if only to force myself to actually pay more attention to protocol
>>> specifics. For the moment, I'm inclined to go ahead with the streamzap
>>> port as it is right now, and include either an empty or not-empty, but
>>> not-functional key table.
> So I spent a while beating on things the past few nights for giggles
> (and for a sanity break from "vacation" with too many kids...). I
> ended up doing a rather large amount of somewhat invasive work to the
> streamzap driver itself, but the end result is functional in-kernel
> decoding, and lirc userspace decode continues to behave correctly. RFC
> patch here:
>
> http://wilsonet.com/jarod/ir-core/IR-streamzap-in-kernel-decode.patch
>
> Core changes to streamzap.c itself:
>
> - had to enable reporting of a long space at the conclusion of each
> signal (which is what the lirc driver would do w/timeout_enabled set),
> otherwise I kept having issues with key bounce and/or old data being
> buffered (i.e., press up, cursor moves up. push down, cursor moves up
> then down, press left, it moves down, then left, etc.). Still not
> quite sure what the real problem is there, the lirc userspace decoder
> has no problems with it either way.
>
> - removed streamzap's internal delay buffer, as the ir-core kfifo
> seems to provide the necessary signal buffering just fine by itself.
> Can't see any significant difference in decode performance either
> in-kernel or via lirc with it removed, anyway. (Christoph, can you
> perhaps expand a bit on why the delay buffer was originally needed/how
> to reproduce the problem it was intended to solve? Maybe I'm just not
> triggering it yet.)
Should be fine. Current lircd with timeout support shouldn't have a
problem with that anymore. I was already thinking of suggesting to remove
the delay buffer.
>
> Other fun stuff to note:
>
> - currently, loading up an rc5-sz decoder unconditionally, have
> considered only auto-loading it from the streamzap driver itself. Its
> a copy of the rc5 decoder with relatively minor tweaks to deal with
> the extra bit and resulting slightly different bit layout. Might
> actually be possible to merge back into the rc5 decoder itself,
> haven't really looked into that yet (should be entirely doable if
> there's an easy way to figure out early on if we need to grab 14
> bits).
There is no way until you see the 14th bit.
> - not sure the decoder is 100% correct, but it does get to the same
> scancodes as the lirc userspace now (with both a streamzap and mceusb
> receiver).
Christoph
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
WARNING: multiple messages have this Message-ID (diff)
From: lirc@bartelmus.de (Christoph Bartelmus)
To: jarod@wilsonet.com
Cc: awalls@md.metrocast.net
Cc: jarod@redhat.com
Cc: jonsmirl@gmail.com
Cc: linux-input@vger.kernel.org
Cc: linux-media@vger.kernel.org
Cc: mchehab@redhat.com
Subject: Re: Remote that breaks current system
Date: 12 Aug 2010 08:46:00 +0200 [thread overview]
Message-ID: <BUhP+pZ3jFB@christoph> (raw)
In-Reply-To: <AANLkTimz2eLSEy+U1NdMVsQ=af7v67omPntwMQs+8jno@mail.gmail.com>
Hi Jarod,
on 11 Aug 10 at 10:38, Jarod Wilson wrote:
> On Mon, Aug 2, 2010 at 4:42 PM, Jon Smirl <jonsmirl@gmail.com> wrote:
>> On Mon, Aug 2, 2010 at 2:09 PM, Jarod Wilson <jarod@redhat.com> wrote:
>>> On Mon, Aug 02, 2010 at 01:13:22PM -0400, Jon Smirl wrote:
>>>> On Mon, Aug 2, 2010 at 12:42 PM, Christoph Bartelmus <lirc@bartelmus.de>
>>>> wrote:
> ....
>>>>> It has nothing to do with start bits.
>>>>> The Streamzap remote just sends 14 (sic!) bits instead of 13.
>>>>> The decoder expects 13 bits.
>>>>> Yes, the Streamzap remote does _not_ use standard RC-5.
>>>>> Did I mention this already? Yes. ;-)
>>>>
>>>> If the remote is sending a weird protocol then there are several choices:
>>>> 1) implement raw mode
>>>> 2) make a Stream-Zap protocol engine (it would be a 14b version of
>>>> RC-5). Standard RC5 engine will still reject the messages.
>>>> 3) throw away your Stream-Zap remotes
>>>>
>>>> I'd vote for #3, but #2 will probably make people happier.
>>>
>>> Hm. Yeah, I know a few people who are quite attached to their Streamzap
>>> remotes. I'm not a particularly big fan of it, I only got the thing off
>>> ebay to have the hardware so I could work on the driver. :) So yeah, #3 is
>>> probably not the best route. But I don't know that I'm a huge fan of #2
>>> either. Another decoder engine just for one quirky remote seems excessive,
>>> and there's an option #4:
>>>
>>> 4) just keep passing data out to lirc by default.
>>
>> That's a decent idea. Implement the mainstream, standard protocols in
>> the kernel and kick the weird stuff out to LIRC. We can avoid the
>> whole world of raw mode, config files, etc. Let LIRC deal with all
>> that. If the weird stuff gets enough users bring it in-kernel. Maybe
>> StreamZap will suddenly sell a million units, you never know.
>>
>> It is easy to implement a StreamZap engine. Just copy the RC5 one.
>> Rename everything and adjust it to require one more bit. You'll have
>> to modify the RC5 to wait for a bit interval (timeout) before sending
>> the data up. If you want to get fancy use a weak symbol in the
>> StrreamZap engine to tell the RC5 engine if Stream Zap is loaded. Then
>> you can decide to wait the extra bit interval or not.
> The other thought I had was to not load the engine by default, and
> only auto-load it from the streamzap driver itself.
>>> Let lircd handle the default remote in this case. If you want to use
>>> another remote that actually uses a standard protocol, and want to use
>>> in-kernel decoding for that, its just an ir-keytable call away.
>>>
>>> For giggles, I may tinker with implementing another decoder engine though,
>>> if only to force myself to actually pay more attention to protocol
>>> specifics. For the moment, I'm inclined to go ahead with the streamzap
>>> port as it is right now, and include either an empty or not-empty, but
>>> not-functional key table.
> So I spent a while beating on things the past few nights for giggles
> (and for a sanity break from "vacation" with too many kids...). I
> ended up doing a rather large amount of somewhat invasive work to the
> streamzap driver itself, but the end result is functional in-kernel
> decoding, and lirc userspace decode continues to behave correctly. RFC
> patch here:
>
> http://wilsonet.com/jarod/ir-core/IR-streamzap-in-kernel-decode.patch
>
> Core changes to streamzap.c itself:
>
> - had to enable reporting of a long space at the conclusion of each
> signal (which is what the lirc driver would do w/timeout_enabled set),
> otherwise I kept having issues with key bounce and/or old data being
> buffered (i.e., press up, cursor moves up. push down, cursor moves up
> then down, press left, it moves down, then left, etc.). Still not
> quite sure what the real problem is there, the lirc userspace decoder
> has no problems with it either way.
>
> - removed streamzap's internal delay buffer, as the ir-core kfifo
> seems to provide the necessary signal buffering just fine by itself.
> Can't see any significant difference in decode performance either
> in-kernel or via lirc with it removed, anyway. (Christoph, can you
> perhaps expand a bit on why the delay buffer was originally needed/how
> to reproduce the problem it was intended to solve? Maybe I'm just not
> triggering it yet.)
Should be fine. Current lircd with timeout support shouldn't have a
problem with that anymore. I was already thinking of suggesting to remove
the delay buffer.
>
> Other fun stuff to note:
>
> - currently, loading up an rc5-sz decoder unconditionally, have
> considered only auto-loading it from the streamzap driver itself. Its
> a copy of the rc5 decoder with relatively minor tweaks to deal with
> the extra bit and resulting slightly different bit layout. Might
> actually be possible to merge back into the rc5 decoder itself,
> haven't really looked into that yet (should be entirely doable if
> there's an easy way to figure out early on if we need to grab 14
> bits).
There is no way until you see the 14th bit.
> - not sure the decoder is 100% correct, but it does get to the same
> scancodes as the lirc userspace now (with both a streamzap and mceusb
> receiver).
Christoph
next prev parent reply other threads:[~2010-08-12 6:48 UTC|newest]
Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-30 2:17 [PATCH 0/9 v2] IR: few fixes, additions and ENE driver Maxim Levitsky
2010-07-30 2:17 ` [PATCH 01/13] IR: Kconfig fixes Maxim Levitsky
2010-07-30 2:17 ` [PATCH 02/13] IR: minor fixes: Maxim Levitsky
2010-07-30 2:17 ` [PATCH 03/13] IR: replace spinlock with mutex Maxim Levitsky
2010-07-30 2:17 ` [PATCH 04/13] IR: fix locking in ir_raw_event_work Maxim Levitsky
2010-07-30 2:42 ` Andy Walls
2010-07-30 11:02 ` Maxim Levitsky
2010-07-30 2:17 ` [PATCH 05/13] IR: JVC: make repeat work Maxim Levitsky
2010-07-30 2:17 ` [PATCH 06/13] IR: nec decoder: fix repeat Maxim Levitsky
2010-07-30 2:50 ` Andy Walls
2010-07-30 2:17 ` [PATCH 07/13] IR: NECX: support repeat Maxim Levitsky
2010-07-30 2:17 ` [PATCH 08/13] IR: Allow not to compile keymaps in Maxim Levitsky
2010-07-30 2:17 ` [PATCH 09/13] IR: add helper function for hardware with small o/b buffer Maxim Levitsky
2010-07-30 2:17 ` [PATCH 10/13] IR: extend interfaces to support more device settings LIRC: add new IOCTL that enables learning mode (wide band receiver) Maxim Levitsky
2010-07-30 2:17 ` [PATCH 11/13] IR: report unknown scancodes the in-kernel decoders found Maxim Levitsky
2010-07-30 2:17 ` [PATCH 12/13] STAGING: remove lirc_ene0100 driver Maxim Levitsky
2010-07-30 2:17 ` [PATCH 13/13] IR: Port ene driver to new IR subsystem and enable it Maxim Levitsky
2010-07-30 2:39 ` Jon Smirl
2010-07-30 3:46 ` Andy Walls
2010-07-30 11:36 ` Maxim Levitsky
2010-07-30 11:51 ` Jon Smirl
2010-07-30 11:51 ` Jon Smirl
2010-07-30 11:54 ` Maxim Levitsky
2010-07-30 12:02 ` Jon Smirl
2010-07-30 12:07 ` Jon Smirl
2010-07-30 12:45 ` Maxim Levitsky
2010-07-31 13:55 ` Andy Walls
2010-07-31 14:28 ` Maxim Levitsky
2010-07-31 14:37 ` Jon Smirl
2010-07-31 14:37 ` Jon Smirl
2010-07-31 14:51 ` Maxim Levitsky
2010-07-31 15:12 ` Andy Walls
2010-07-31 16:25 ` Jon Smirl
2010-07-31 16:25 ` Jon Smirl
2010-07-31 16:44 ` Maxim Levitsky
2010-07-31 16:51 ` Maxim Levitsky
2010-07-31 17:47 ` Christoph Bartelmus
2010-07-31 17:47 ` Christoph Bartelmus
2010-07-31 18:14 ` Jon Smirl
2010-07-31 18:14 ` Jon Smirl
2010-07-31 18:33 ` Jon Smirl
2010-07-31 18:51 ` Andy Walls
2010-07-31 21:53 ` Jon Smirl
2010-07-31 21:53 ` Jon Smirl
2010-07-31 23:26 ` Maxim Levitsky
2010-08-01 9:43 ` Christoph Bartelmus
2010-08-01 9:43 ` Christoph Bartelmus
2010-08-02 15:12 ` Remote that breaks current system (was: IR: Port ene driver...) it Jarod Wilson
2010-08-02 15:12 ` Jarod Wilson
2010-08-02 16:11 ` Jon Smirl
2010-08-02 16:42 ` Remote that breaks current system Christoph Bartelmus
2010-08-02 16:42 ` Christoph Bartelmus
2010-08-02 17:13 ` Jon Smirl
2010-08-02 18:09 ` Jarod Wilson
2010-08-02 18:09 ` Jarod Wilson
2010-08-02 20:42 ` Jon Smirl
2010-08-02 20:42 ` Jon Smirl
2010-08-11 14:38 ` Jarod Wilson
2010-08-11 14:38 ` Jarod Wilson
2010-08-12 6:46 ` Christoph Bartelmus [this message]
2010-08-12 6:46 ` Christoph Bartelmus
2010-08-16 4:04 ` Jarod Wilson
2010-08-16 20:41 ` Maxim Levitsky
2010-08-17 0:14 ` Jarod Wilson
2010-08-17 3:30 ` Mauro Carvalho Chehab
2010-08-17 3:40 ` Jarod Wilson
2010-08-02 17:51 ` Jarod Wilson
2010-08-01 9:50 ` [PATCH 13/13] IR: Port ene driver to new IR subsystem and enable it Christoph Bartelmus
2010-08-01 9:50 ` Christoph Bartelmus
2010-08-01 14:00 ` Jon Smirl
2010-08-01 14:00 ` Jon Smirl
2010-08-01 14:05 ` Jon Smirl
2010-08-01 15:13 ` Christoph Bartelmus
2010-08-01 15:13 ` Christoph Bartelmus
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=BUhP+pZ3jFB@christoph \
--to=lirc@bartelmus.de \
--cc=awalls@md.metrocast.net \
--cc=jarod@redhat.com \
--cc=jarod@wilsonet.com \
--cc=jonsmirl@gmail.com \
--cc=linux-input@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=mchehab@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.