Main Site Documentation

Keyboard emulation on BIOS


#1

Hi,
I use the USBClient in a program of keyboard emulation,
(I am burning the program by serial)
when I am in the BIOS, the state of the USBClientController is ‘Address’ and the KB don’t run
( kb.KeyTap(USBC_Key.DownArrow) command)

Do there are a way to work with a keyboard emulation in BIOS?
thanks.


#2

I am interested in this myself. I have a Dell Optiplex 740 that dosen’t understand my EMX keyboard commands in the BIOS but just fine in Windows. My logitech wireless USB keyboard also dosen’t work in the BIOS so I figured it was a BIOS issue.


#3

This is very interesting, why would BIOS see a USB keyboard different than windows. We can look into this in near future.


#4

I am also interested in this it can serve me a lot.
I tries and a regular USB keyboard works fine. while the Key board emulator via gadgeteer (using spider) doesn’t.

can you please check this and see how is it possible to do this?


#5

We have 3 users wanting to emulate a keyboard in bios?! Can you guys please explain what are you going? I am really curious.


#6

I want a general solution for KBE the bios is essential since there are use cases, some scenarios which I would like to automated which includes modifying bios settings.
a solution which does not work in BIOS is a serious issue for my needs,
I’d appreciate if you can investigate this and let me know more details about why is this behavior and how to solve this.


#7

@ Gus - I thought I could perhaps macro script things like BitLocker recovery keys or GRUB passwords. Not something of a priority for me. Mostly just playing around in NETMF. I had only mentioned the issue since @ Judith brought it up initially.


#8

In order to work correctly in bios the keybaord must:

  • Report 1 (Boot Interface ) in the bInterfaceSublcass field of the Usb Interface Desctiptor
  • Report 1 (Keyboard) in the bInterfaceProtocol field of the Usb Interface Descriptor
  • Support SetProtocol request

I can send the USB traffic captured via USB analyzer.


#9

@ pgierasi - This was fixed in the latest release. Have you tried the latest firmware?


#10

This is my configuration (device capabilities response in MFDeploy tool):

HalSystemInfo.halVersion: 4.2.0.0
HalSystemInfo.halVendorInfo: Microsoft Copyright © Microsoft Corporation. All rig
HalSystemInfo.oemCode: 255
HalSystemInfo.modelCode: 0
HalSystemInfo.skuCode: 65535
HalSystemInfo.moduleSerialNumber: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
HalSystemInfo.systemSerialNumber: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
ClrInfo.clrVersion: 4.2.0.0
ClrInfo.clrVendorInfo: Microsoft Copyright © Microsoft Corporation. All rig
ClrInfo.targetFrameworkVersion: 4.2.0.0
SolutionReleaseInfo.solutionVersion: 4.2.7.0
SolutionReleaseInfo.solutionVendorInfo: Copyright © GHI Electronics, LLC
SoftwareVersion.BuildDate: Nov 29 2012
SoftwareVersion.CompilerVersion: 410462
FloatingPoint: True
SourceLevelDebugging: True
ThreadCreateEx: True
LCD.Width: 320
LCD.Height: 240
LCD.BitsPerPixel: 16
AppDomains: True
ExceptionFilters: True
IncrementalDeployment: True
SoftReboot: True
Profiling: False
ProfilingAllocations: False
ProfilingCalls: False
IsUnknown: False


#11

The current firmware in the SDK is at v4.2.9.0. Could you please try that and let us know if you still see the issue?


#12

Ok, I will try. Is there any way to simulate also media keys like volume increment, volume decrement and mute?


#13

There is not currently support for those keys. For a list of all supported keys, check out http://www.ghielectronics.com/downloads/NETMF/Library%20Documentation%20v4.2/Premium/html/5b40ede7-b719-f487-b694-63eca535106d.htm


#14

Emulated keyboard responds with stall to SetAddres Usb Standard Request during platform restart. I am currently not able to enter Bios by pressing F2 via emulated keyboard, during platform boot.

To reproduce:

  • start Usb keyboard emulation
  • restart Windows

My current firmware version: 4.2.9.0


#15

There is also another issue. I am trying to implement multimedia keyboard. According to Microsoft (http://msdn.microsoft.com/en-us/library/windows/hardware/gg463446.aspx#ESB) such device should contain two interfaces. First interface should declare Hid descriptor for a standard keyboard and the second interface should declare Hid descriptor for multimedia keys:

[quote] The following design guidelines are recommended for keyboard manufacturers developing new USB/HID keyboards with enhanced features:
-Implement at least two HID interfaces in a USB composite device fashion, where one interface is used for a standard QWERTY keyboard report that’s identical to the keyboard boot protocol report, and the other interface is used for the new, enhanced functionality. [/quote]

Currenty the Host PC receives STALL in reponse to GetReportDescriptor request with wIndex set to 1 (host tries to get the second report descriptor). Fez Fw responds correctly for a GetReportDescriptor request with wIndex set to 0. I have attached an image with the part of the USB traffic captured via beagle analyzer (http://www.totalphase.com/products/beagle_usb480/).


#16

@ pgierasi - Media keyboard would not be supported by default.You can try to implement it directly or hire GHI to work on it.

This is a good example to start with C:\Users\Gus Issa\Documents\Microsoft .NET Micro Framework 4.2\Samples\Mouse

If interested in GHI’s consulting service then please contact us directly (phone/email) with your project details please.


#17

I have already started to implement it but it seems that I can’t force the Fez Fw to respond to GetReportDescriptor when wIndex is set to 1. Is there any way to set the response for a request on Default Control Endpoint?


#18

I am not exactly sure as those libs are part of the core NETMF, not GHI specific. The NETMF website/codeplex may have more info.


#19

I am using the USBC_Device class from the GHI.Premium.USBClient.dll.