Jump to content
Flirc Forums

Preboot/bios control


hadfield82

Recommended Posts

Hi all,

 

Sorry if this has been asked before, but is there any way to use Flirc to control bios navigation, or anything 'pre OS'?

 

I had hoped that in a triple boot setup I would be able to select an OS to boot from in the Grub menu.

 

Has anyone got this working in a similar setup?

 

 

My current setup is an Acer Revo R3700, with Flirc on the latest RC build.

 

I am trying to triple boot Windows 7, Ubuntu, and OpenELEC.  I have this working without issue.

 

Any help or advice is appreciated.

Link to comment
Share on other sites

  • 4 months later...

do you have HID's "boot protocol" implemented? Do not have flirc device here to check HID "Sub Class" and "Protocol" parameters.

 

from wiki (http://en.wikipedia.org/wiki/Human_interface_device)

 

"... HID also defines "boot protocol". In boot protocol, only specific devices are supported with only specific features because fixed data packet formats are used. The HID descriptor is not used in this mode so innovation is limited. However, the benefit is that minimal functionality is still possible on hosts that otherwise would be unable to support HID. The only devices supported in boot protocol are

  • Keyboard — Any of the first 256 key codes ("Usages") defined in the HID Usage Tables, Usage Page 7 can be reported by a keyboard using the boot protocol, but most systems only handle a subset of these keys. Most systems support all 104 keys on the IBM AT-101layout, plus the three extra keys designed for Microsoft Windows 95. Many systems also support additional keys on basic western European 105-, Korean 106-, Brazilian ABNT 107- and Japanese DOS/V 109-key layouts. Buttons, knobs and keys that are not reported on Usage Page 7 are not available. For example, a particular US keyboard's QWERTY keys will function but the Calculator and Logoff keys will not because they are defined on Usage Page 12 and cannot be reported in boot protocol.
  • Mouse — Only the X-axis, Y-axis, and the first 3 buttons will be available. Any additional features on the mouse will not function.

One common usage of boot mode is during the first moments of a computer's boot up sequence. Directly configuring a computer's BIOS is often done using only boot mode. Sometimes a message will appear informing the user that the device has installed the correct driver and is now usable."

 

 

http://www.usb.org/developers/devclass_docs/HID1_11.pdf

Page 75

F.5 Keyboard: Using the Keyboard Boot Protocol
 
Edit:
 
Device descriptor of working keyboard bios mode:
  1.       bInterfaceClass         3 Human Interface Device
  2.       bInterfaceSubClass      1 Boot Interface Subclass
  3.       bInterfaceProtocol      1 Keyboard
 
Device descriptor of flirc non working bios mode:
  1.       bInterfaceClass         3 Human Interface Device
  2.       bInterfaceSubClass      0 No Subclass
  3.       bInterfaceProtocol      1 Keyboard
 
Link to comment
Share on other sites

Here the lsusb -v output of a in BIOS and Bootloader useable remote (HAMA MCE):

 

lsusb -s 002:002 -v
---

Bus 002 Device 002: ID 05a4:9881 Ortek Technology, Inc.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x05a4 Ortek Technology, Inc.
idProduct 0x9881
bcdDevice 1.10
iManufacturer 0
iProduct 0
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 59
bNumInterfaces 2
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xa0
(Bus Powered)
Remote Wakeup
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 1 Boot Interface Subclass
bInterfaceProtocol 1 Keyboard

iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.10
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 63
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 10
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0 No Subclass
bInterfaceProtocol 0 None
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.10
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 208
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0005 1x 5 bytes
bInterval 10
Device Status: 0x0000
(Bus Powered)

Link to comment
Share on other sites

Afaik the Flirc device acts as a usb keyboard, so basically it should work.

But keep in mind, that this depends on the programmed mapping of the flirc.

E.g. to navigate in the bootmenu or even in bios you need to map standard keyboard keys like cursor keys to navigation and enter to submit.

 

Also the usb legacy support have to be enabled in the bios.

 

I check this out later on and will post the result as an edit in here.

 

Edit: And here are the results:

 

I can confirm, that i can navigate in the bios through the menues and submit some changes via "enter" (intel chipset, older AMI bios)

I can also confirm, that i can make selections in the F12-Bootmenu, so it should work also in other bootloaders like grub or the windows bl.

 

I've also have mapped the pause key to the flirc and the post screen stops by pressing the mapped button on the remote, so really soon from startup.

 

Conclusion: Yes, it works!

 

This really expands the usability and i will definitely order a second flirc :)

Link to comment
Share on other sites

  • 2 months later...

@userus1

 

Below is the output of  lsusb -s 001:008 -v with the FLIRC plugged in (latest firmware from GUI v1.2.3).

 

It appears the SUBCLASS is the problem. It is not defined and it should be bInterfaceSubClass 1 Boot Interface Subclass.

Bus 001 Device 008: ID 20a0:0001 Clay Logic
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0         8
  idVendor           0x20a0 Clay Logic
  idProduct          0x0001
  bcdDevice            1.00
  iManufacturer           1
  iProduct                2
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           50
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 No Subclass
      bInterfaceProtocol      1 Keyboard

      iInterface              0
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.01
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      95
         Report Descriptors:
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval              50
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol    255 Vendor Specific Protocol
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval              50
 

Edited by kzoink
Link to comment
Share on other sites

  • 11 months later...

Sorry for necroposting, but this seems like the definitive post on the topic.

 

It really would be great if this could be supported. Even if it's just a setting in the advanced menu to "recognise as USB keyboard" so it's up to the user to face whatever consequences there may be.

 

I'd love to use it with grub!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...