usb/85992: USB stops working when trying to read from a uhid device on the Saitek Gaming Keyboard

John-Paul Andrusky jpandrusky at gmail.com
Sun Sep 11 14:10:09 PDT 2005


>Number:         85992
>Category:       usb
>Synopsis:       USB stops working when trying to read from a uhid device on the Saitek Gaming Keyboard
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-usb
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun Sep 11 21:10:07 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator:     John-Paul Andrusky
>Release:        Stabel
>Organization:
>Environment:
FreeBSD sol 5.4-STABLE FreeBSD 5.4-STABLE #18: Sun Sep 11 03:17:17 MDT 2005     root at sol:/usr/obj/usr/src/sys/SOL  i386

>Description:
      When doing a 'cat /dev/uhid2', which is the volume controls on the Saitek Gaming Keyboard, all usb devices stop working till a reboot is done.
>How-To-Repeat:
      'cat /dev/uhid2'
      press a volume control button on the keyboard
>Fix:
      Download the three files below into a new directory and type "make install".                                            
                                                                                
http://home.c2i.net/hselasky/isdn4bsd/privat/temporary/155/Makefile             
http://home.c2i.net/hselasky/isdn4bsd/privat/temporary/new_ihfc_1_5_5.tar.bz2   
http://home.c2i.net/hselasky/isdn4bsd/privat/temporary/new_ihfc_1_5_5.diff.bz2

Edit "/sys/dev/usb/uhid.c":
                                                                                
Where you find:                                                                                                                                                 
        sc->sc_isize = hid_report_size(desc, size, hid_input,   &sc->sc_iid);
        sc->sc_osize = hid_report_size(desc, size, hid_output,  &sc->sc_oid);
        sc->sc_fsize = hid_report_size(desc, size, hid_feature, &sc->sc_fid);
                                                                                
Add here:
        if(sc->sc_isize > UGETW(ed->wMaxPacketSize))
               sc->sc_isize = UGETW(ed->wMaxPacketSize);
>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-usb mailing list