From: Jiri Slaby <jslaby@suse.cz>
To: Jiri Kosina <jkosina@suse.cz>
Cc: Pekka Sarnila <pekka.sarnila@qvantel.com>,
Pekka Sarnila <sarnila@adit.fi>,
crope@iki.fi, linux-media@vger.kernel.org, pb@linuxtv.org,
js@linuxtv.org
Subject: dvb-usb-remote woes [was: HID: ignore afatech 9016]
Date: Mon, 01 Feb 2010 20:42:48 +0100 [thread overview]
Message-ID: <4B672EB8.3010609@suse.cz> (raw)
In-Reply-To: <alpine.LNX.2.00.1002011928220.15395@pobox.suse.cz>
On 02/01/2010 07:28 PM, Jiri Kosina wrote:
> On Mon, 1 Feb 2010, Pekka Sarnila wrote:
>> Well short answer is: No, it does not work.
Hi, thanks for the input.
>> What I did:
>>
>> I pulled few days ago latest
>>
>> git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
>>
>> and compiled it. Everything works fine including the tv-stick and the
>> remote. However I get:
>>
>> <3>af9015: command failed:255
>> <3>dvb-usb: error while querying for an remote control event.
Yes, I saw this quite recently too. For me it appears when it is booted
up with the stick in. It's still to be fixed.
>> I applied the patch in your mail and recompiled. Remote does not work;
>> af9015.c gets no key presses. Instead that above message still comes.
Yeah, and that's the reason why it doesn't work.
>> Also removing the device or rmmod:ing dvb-usb-af9015.ko causes kernel oops.
Already fixed:
http://patchwork.kernel.org/patch/74095/
>> Analysis:
>>
>> When it works, the remote is recognized by the system as a HID-keyboard,
>> and thus it works as a normal USB-keyboard. dvb-usb-remote.c is not
>> participating at all (though it gives those errors).
Actually it is. But it fails to get status.
>> The remote is visible to the system as a usb interrupt end point.
>> Interrupt endpoint tells the system the polling interval (by endpoint
>> report). From the USB specs on the interval:
>>
>> The USB System Software will use this information during configuration
>> to determine a period that can be sustained. The period provided by
>> the system may be shorter than that desired by the device up to the
>> shortest period defined by the USB (125 µs microframe or 1 ms frame).
>> The client software and device can depend only on the fact that the
>> host will ensure that the time duration between two transaction
>> attempts with the endpoint will be no longer than the desired period.
>>
>> As I understand it, in plain English it means that the polling interval
>> must not be longer than what the endpoint report says (in case of
>> full-speed endpoint 1 to 255 ms). This device in question, assuming it
>> gives the interval in full-speed mode even it really is high-speed
>> device, gives 16ms interval period.
>>
>> However af9015.c/dvb-usb-remote.c accesses it as if it was a bulk
>> endpoint and with 150ms interval. I did not look further on if this is
>> the only reason or the reason for it not to work. But at least it is in
>> clear contradiction of the USB-specs.
To what statement is it in contradiction? The statement above is for
interrupt transfers.
>> I suspect, to make it work, much of the code from hid-driver should be
>> copied to the device driver.
Which code? I see no code being copied.
>> However I think that would be exactly the
>> wrong way to go. I think the whole idea of making for every device a
>> separated driver ignoring the common code already in the kernel is bad
>> architecture.
Common code does not work well here. Don't you see weird key repetitions
and similar?
>> I have noticed more and more of this type of movement in
>> the driver development resulting the same thing done in hundred
>> different ways when common code could be used. Especially bad I think it
>> is in the cases where universal specification is available (albeit there
>> are many devices that do not follow the usb specs correctly).
In this case I suppose this is why dvb-usb-remote exists.
Maybe it can be handled better by a separate driver (still) as a part of
the HID layer nowadays.
Patrick, Johannes, why was not dvb-usb-remote implemented rather as a
part of the HID layer?
>> Also it is wrong idea that you could/should detect the type of remote
>> controller based on the tv-stick. E.g with Haupauge TV-NOVA nearly any
>> remote works ok (e.g my panasonic tv remote). Every generic ir-receiver
>> sends also the manufacturer and model codes. Remote ir-to-code
>> translates should be based on that (there is a kind of generic layer for
>> that in linux kernel) and not on the tv-stick model at all (as in the
>> af9015 driver).
Sorry, I don't understand this paragraph. Could you rephrase?
>> BTW I now recall how I got Afateck remote work as should. The driver
>> loads ir-to-code translate table to the stick. I changed the codes to
>> what made more sense.
Why you didn't push this upstream?
>> One problem here is that current HID layer is very sparse in the
>> information it passes on, really only a code. It should also convey the
>> precice id of the device so upper layer would be better able to deal
>> with events. One of my hobbies is flight simulator flying. I use X-plane
>> (excellent program). There is also a linux version. But the linux
>> joystick driver is far from adequate for it (also some joysticks, yokes
>> and pedals or some of their controls didn't work at all). So I use a
>> special kernel for which I rewrote big parts of the HID-driver and
>> input-driver and wrote completely new joystick driver. Now it works
>> quite decently. One problem is the kernel->user joystick driver
>> interface, but it can not be changed since that's what X-plane (and
>> others use). One thing I got to change for that was that HID does less
>> model specific processing and passes more event info to higher layer
>> without breaking the old HID-devices (same with the input layer), so
>> that the joystick layer could do more intelligent processing. I fixed
>> also some bugs and one design omission in the HID driver (e.g. some
>> force feedback joysticks uses that HID-specification, in standard kernel
>> there is some ad-hoc code for that purpose).
Can't be HID bus with a specific driver used instead now?
--
js
suse labs
next prev parent reply other threads:[~2010-02-01 19:42 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-13 19:59 [PATCH 1/1] HID: ignore afatech 9016 Jiri Slaby
2010-01-13 20:20 ` Jiri Kosina
2010-01-13 20:34 ` Jiri Slaby
2010-01-13 20:44 ` Jiri Kosina
2010-01-13 20:39 ` [PATCH v2 " Jiri Slaby
2010-01-26 0:56 ` Jiri Kosina
2010-01-26 11:06 ` Pekka Sarnila
[not found] ` <4B5EFD69.4080802@adit.fi>
[not found] ` <alpine.LNX.2.00.1001262344200.30977@pobox.suse.cz>
[not found] ` <4B671C31.3040902@qvantel.com>
[not found] ` <alpine.LNX.2.00.1002011928220.15395@pobox.suse.cz>
2010-02-01 19:42 ` Jiri Slaby [this message]
2010-02-01 21:23 ` dvb-usb-remote woes [was: HID: ignore afatech 9016] Antti Palosaari
2010-02-01 21:41 ` Jiri Slaby
2010-02-02 16:16 ` Pekka Sarnila
2010-02-02 15:54 ` Pekka Sarnila
2010-02-02 16:02 ` Pekka Sarnila
2010-02-05 15:47 ` Pekka Sarnila
2010-02-08 15:52 ` Jiri Kosina
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=4B672EB8.3010609@suse.cz \
--to=jslaby@suse.cz \
--cc=crope@iki.fi \
--cc=jkosina@suse.cz \
--cc=js@linuxtv.org \
--cc=linux-media@vger.kernel.org \
--cc=pb@linuxtv.org \
--cc=pekka.sarnila@qvantel.com \
--cc=sarnila@adit.fi \
/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.