Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BOOT Mode support #27

Open
lars18th opened this issue May 25, 2015 · 6 comments
Open

BOOT Mode support #27

lars18th opened this issue May 25, 2015 · 6 comments

Comments

@lars18th
Copy link

Hi Pelya,

Please, can you add BOOT Mode support in your patches for the kernel?

See this post for the patch: http://www.spinics.net/lists/linux-usb/msg125007.html

I hope you agree. ;-)
Regards.

@pelya
Copy link
Owner

pelya commented May 25, 2015

I thought USB keyboard already works in BIOS, and the patch already has
Boot interface subclass in USB descriptor. Does this patch fix an issue
with some particular device that you have?
Anyway, I'll be able to only patch Nexus 7 2012 kernel, because I don't
have other devices.

On Mon, May 25, 2015 at 1:19 PM, lars18th notifications@github.com wrote:

Hi Pelya,

Please, can you add BOOT Mode support in your patches for the kernel?

See this post for the patch:
http://www.spinics.net/lists/linux-usb/msg125007.html

I hope you agree. ;-)
Regards.


Reply to this email directly or view it on GitHub
#27.

@lars18th
Copy link
Author

Hi Pelya,

Your patches describe the correct subclass (BOOT mode), but they DON'T work with bioses because the reasons described in the thread:

  1. The USB specification describes that ALL HID devices start in REPORT mode (not in BIOS mode), then after the initial handshake is when it can requested to can change to BOOT mode. And yes, the report and boot modes can be equal (as in your code), but when a BIOS requests to change to BOOT mode, and the device respons with an error (like now), then it refuses to work with the device and remove it from the HID input list.

  2. The current problem is in the driver implementation of the Linux(/Android) kernel, mainly with the lack of the HID "Set_Protocol" and "Get_Protocol" functions. Without this patch it's IMPOSSIBLE to change from the report protocol to the boot protocol, and this is a requiment to work with bioses.

Please, belive me... I test your software and patches with several bioses, KVMs, etc. I don't work at all for this specific problem: the misimplementation of these funtions. This patch partially solves the problem, so I suggest to incorporate in yours. If you can only test on Nexus 7 2012, don't care about it. I'll work as it's a small change with all devices.

Please, try it, and comment your results.
Regards.

@pelya
Copy link
Owner

pelya commented May 25, 2015

I've merged that patch to all kernel patches in the Git repo. I've built
Nexus 7 2012 boot image for Android 5.1.1, but for other kernel patches,
I've only checked that they can be applied and respective kernels will
compile. I've tested it and it does not break any functionality, please
reply if it improves anything on your setup.

I still remember about options for camera feed size and for redefining VNC
hotkey, I don't have much free time this month, but I'll implement them
eventually.

On Mon, May 25, 2015 at 7:13 PM, lars18th notifications@github.com wrote:

Hi Pelya,

Your patches describe the correct subclass (BOOT mode), but they DON'T
work with bioses because the reasons described in the thread:

  1. The USB specification describes that ALL HID devices start in REPORT
    mode (not in BIOS mode), then after the initial handshake is when it can
    requested to can change to BOOT mode. And yes, the report and boot modes
    can be equal (as in your code), but when a BIOS requests to change to BOOT
    mode, and the device respons with an error (like now), then it refuses to
    work with the device and remove it from the HID input list.

  2. The current problem is in the driver implementation of the
    Linux(/Android) kernel, mainly with the lack of the HID "Set_Protocol" and
    "Get_Protocol" functions. Without this patch it's IMPOSSIBLE to change from
    the report protocol to the boot protocol, and this is a requiment to work
    with bioses.

Please, belive me... I test your software and patches with several bioses,
KVMs, etc. I don't work at all for this specific problem: the
misimplementation of these funtions. This patch partially solves the
problem, so I suggest to incorporate in yours. If you can only test on
Nexus 7 2012, don't care about it. I'll work as it's a small change with
all devices.

Please, try it, and comment your results.
Regards.


Reply to this email directly or view it on GitHub
#27 (comment)
.

@lars18th
Copy link
Author

Hi Pelya,

Thank you for fast reply, and for the new patches! I'll try and post results.

Regards.

@lars18th
Copy link
Author

Hi Pelya,

A new version of the patch is available: http://permalink.gmane.org/gmane.linux.usb.general/126204

Sorry for not comment until this definitive version. This new version fixes the default mode and improves conformance with specifications. I hope this will be the last modification. And I belive it will be commited to the main kernel branch when sufficient testing is done.

Please, can you upgrade your patch as are only a minimal modification?
Thank you!

@pelya
Copy link
Owner

pelya commented May 27, 2015

Maybe next week
On May 27, 2015 7:40 PM, "lars18th" notifications@github.com wrote:

Hi Pelya,

A new version of the patch is available:
http://permalink.gmane.org/gmane.linux.usb.general/126204

Sorry for not comment until this definitive version. This new version
fixes the default mode and improves conformance with specifications. I hope
this will be the last modification. And I belive it will be commited to the
main kernel branch when sufficient testing is done.

Please, can you upgrade your patch as are only a minimal modification?
Thank you!


Reply to this email directly or view it on GitHub
#27 (comment)
.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants