diff -urB ./kbdlayouts/grub-core/bus/usb/serial/common.c ./kbdlayouts_changed/grub-core/bus/usb/serial/common.c --- ./kbdlayouts/grub-core/bus/usb/serial/common.c 2010-09-03 22:13:28.000000000 +0200 +++ ./kbdlayouts_changed/grub-core/bus/usb/serial/common.c 2010-09-14 17:09:30.000000000 +0200 @@ -44,6 +44,7 @@ struct grub_serial_port *port; int j; struct grub_usb_desc_if *interf; + grub_usb_err_t err = GRUB_USB_ERR_NONE; interf = usbdev->config[configno].interf[interfno].descif; @@ -80,7 +81,12 @@ port->out_endp = endp; } } - if (!port->out_endp || !port->in_endp) + + /* Configure device */ + if (port->out_endp && port->in_endp) + err = grub_usb_set_configuration (usbdev, configno + 1); + + if (!port->out_endp || !port->in_endp || err) { grub_free (port->name); grub_free (port);