On Mon, 25 Feb 2008 03:24:50 +0100 Kai Wang <[EMAIL PROTECTED]> wrote:
> > + sc->flags = UMS_Z; > + sc->nbuttons = 3; > + sc->sc_isize = 5; > + sc->sc_iid = 17; > + sc->sc_loc_x.pos = 8; > + sc->sc_loc_y.pos = 16; > + sc->sc_loc_z.pos = 24; > + sc->sc_loc_btn[0].pos = 0; > + sc->sc_loc_btn[1].pos = 1; > + sc->sc_loc_btn[2].pos = 2; The above does not appear to be quite correct, despite a report from oliver@ that the patch is working. The ms3000 provides multiple input reports, and thus prepends and "ID" byte to each report, so the button bits will start at 8, and the x.pos will be at 16. I am attaching a rather verbose connection report for an ms3000 which is generated by a revised ums driver which I hope to post to my ISP account within a couple of days. I am also attaching a "mouse report" generated by a new program ("mouse_report") which takes advantage of information which the revised driver makes available. (I don't recall whether these lists are allowing attachments, so I will post the files at http://accima.com/members/dhesser/fbsd_mouse_stuff/ms3000-report.txt and http://accima.com/members/dhesser/fbsd_mouse_stuff/ms3000connectmsgs.txt for those who wish to see). The revised driver is intended to support all mice which reasonably conform to the HID spec, including those which offer multiple input reports (and including the Microsoft 3000). The 3000 has a couple of anomalies. It reports a tilt wheel, but does not offer tilt. It reports 5 buttons, but has only 3. The mouse data is provided in an input with ID 17 (0x11), but a private input report with ID 21 (0x15) is also provided whether it is requested or not, at the polling frequency. The mouse ignores any attempt to "set_idle(interface,0,0) which is intended to cause input reports to be sent only when there is new data. The odd thing is that the "real" input report behaves properly, but the private one won't shut up. The revised driver ignores the private report. I am puzzled that the positions in your patch (which don't account for the ID byte) are reported to work. Any thoughts? -------------- -- Duane H. Hesser <[EMAIL PROTECTED]>
/dev/ums0: idVendor = 0x045e idProduct = 0x00e1 bcdDevice = 0x0007 iManufacturer = 1 = "Microsoft" iProduct = 2 = "Microsoft Wireless Optical MouseĀ® 1.00" iSerialNumber = 0 = "" bNumConfigurations = 1 bDeviceClass = 0 bDeviceSubClass = 0 bDeviceProtocol = 0 bMaxPacketSize = 8 Interface 0: bInterfaceClass = 0x3 bInterfaceSubClass = 0x1 bInterfaceProtocol = 0x2 bInterfaceNumber = 0x0 bNumEndpoints = 0x1 bLength = 0x9 bDescriptorType = 0x4 bAlternateSetting = 0x0 iInterface = 0x0 = "" =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= REPORT DESCRIPTOR -- 274 bytes =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= START INPUT REPORT =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ( 1) COLLECTION/1 Application | pos= 0 usage: 0x000c/0x0001 = Consumer/Consumer_Control ( 2) COLLECTION/2 Logical | pos= 0 usage: 0x0001/0x0002 = Generic_Desktop/Mouse ( 3) INPUT | report ID=19, pos= 0, size= 8 bits, count=1, usage: 0x000c/0x0238 = Consumer/AC_Pan ( 4) INPUT | report ID=20, pos= 8, size= 2 bits, count=1, usage: 0xff00/0xfe01 = Microsoft/0xfe01 ( 5) INPUT | report ID=20, pos=10, size= 1 bits, count=1, usage: 0xff00/0xfe02 = Microsoft/0xfe02 ( 6) INPUT | report ID=20, pos=11, size= 1 bits, count=1, usage: 0xff00/0xfe00 = Microsoft/0xfe00 ( 7) INPUT | report ID=20, pos=12, size= 2 bits, count=1, usage: 0xff00/0xff03 = Microsoft/0xff03 ( 8) INPUT | report ID=20, pos=14, size= 2 bits, count=1, usage: 0x0000/0x0000 = pad ( 9) INPUT | report ID=21, pos=16, size= 1 bits, count=1, usage: 0xff00/0xff0b = Microsoft/0xff0b (10) INPUT | report ID=21, pos=17, size= 7 bits, count=1, usage: 0x0000/0x0000 = pad (11) INPUT | report ID=21, pos=24, size=16 bits, count=1, usage: 0xff00/0xff0d = Microsoft/0xff0d (12) ENDCOLLECT/2 pos=40 (13) ENDCOLLECT/1 pos=40 (14) COLLECTION/1 Application | pos=40 usage: 0x0001/0x0002 = Generic_Desktop/Mouse (15) COLLECTION/2 Logical | pos=40 usage: 0x0001/0x0002 = Generic_Desktop/Mouse (16) COLLECTION/3 Physical | pos=40 usage: 0x0001/0x0001 = Generic_Desktop/Pointer (17) INPUT | report ID=17, pos=40, size= 1 bits, count=1, usage: 0x0009/0x0001 = Button/Button_1 (18) INPUT | report ID=17, pos=41, size= 1 bits, count=1, usage: 0x0009/0x0002 = Button/Button_2 (19) INPUT | report ID=17, pos=42, size= 1 bits, count=1, usage: 0x0009/0x0003 = Button/Button_3 (20) INPUT | report ID=17, pos=43, size= 1 bits, count=1, usage: 0x0009/0x0004 = Button/Button_4 (21) INPUT | report ID=17, pos=44, size= 1 bits, count=1, usage: 0x0009/0x0005 = Button/Button_5 (22) INPUT | report ID=17, pos=45, size= 3 bits, count=1, usage: 0x0000/0x0000 = pad (23) INPUT | report ID=17, pos=48, size= 8 bits, count=1, usage: 0x0001/0x0030 = Generic_Desktop/X (24) INPUT | report ID=17, pos=56, size= 8 bits, count=1, usage: 0x0001/0x0031 = Generic_Desktop/Y (25) COLLECTION/4 Logical | pos=64 usage: 0x0000/0x0000 = 0x00/0x00 (26) INPUT | report ID=17, pos=64, size= 8 bits, count=1, usage: 0x0001/0x0048 = Generic_Desktop/0x48 (27) ENDCOLLECT/4 pos=72 (28) COLLECTION/4 Logical | pos=72 usage: 0x0000/0x0000 = 0x00/0x00 (29) INPUT | report ID=17, pos=72, size= 8 bits, count=1, usage: 0x0001/0x0048 = Generic_Desktop/0x48 (30) ENDCOLLECT/4 pos=80 (31) ENDCOLLECT/3 pos=80 (32) ENDCOLLECT/2 pos=80 (33) ENDCOLLECT/1 pos=80 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Input Report ID=17, first button at pos=40 report_size: start = 40, hi = 80, size = 48 bits Input Report size = 6 bytes including leading ID byte =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= END INPUT REPORT =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= START FEATURE REPORT =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ( 1) COLLECTION/1 Application | pos= 0 usage: 0x000c/0x0001 = Consumer/Consumer_Control ( 2) COLLECTION/2 Logical | pos= 0 usage: 0x0001/0x0002 = Generic_Desktop/Mouse ( 3) FEATURE | report ID=23, pos= 0, size= 2 bits, count=1, usage: 0x000c/0x0238 = Consumer/AC_Pan ( 4) FEATURE | report ID=23, pos= 2, size= 2 bits, count=1, usage: 0xff00/0xfe01 = Microsoft/0xfe01 ( 5) FEATURE | report ID=23, pos= 4, size= 1 bits, count=1, usage: 0xff00/0xff04 = Microsoft/0xff04 ( 6) FEATURE | report ID=23, pos= 5, size= 3 bits, count=1, usage: 0x0000/0x0000 = pad ( 7) ENDCOLLECT/2 pos= 8 ( 8) ENDCOLLECT/1 pos= 8 ( 9) COLLECTION/1 Application | pos= 8 usage: 0x0001/0x0002 = Generic_Desktop/Mouse (10) COLLECTION/2 Logical | pos= 8 usage: 0x0001/0x0002 = Generic_Desktop/Mouse (11) COLLECTION/3 Physical | pos= 8 usage: 0x0001/0x0001 = Generic_Desktop/Pointer (12) COLLECTION/4 Logical | pos= 8 usage: 0x0001/0x0031 = Generic_Desktop/Y (13) FEATURE | report ID=18, pos= 8, size= 2 bits, count=1, usage: 0x0001/0x0048 = Generic_Desktop/0x48 (14) ENDCOLLECT/4 pos=10 (15) COLLECTION/4 Logical | pos=10 usage: 0x0000/0x0000 = 0x00/0x00 (16) FEATURE | report ID=18, pos=10, size= 2 bits, count=1, usage: 0x0001/0x0048 = Generic_Desktop/0x48 (17) FEATURE | report ID=18, pos=12, size= 4 bits, count=1, usage: 0x0000/0x0000 = pad (18) ENDCOLLECT/4 pos=16 (19) ENDCOLLECT/3 pos=16 (20) ENDCOLLECT/2 pos=16 (21) ENDCOLLECT/1 pos=16 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= END FEATURE REPORT =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= START COMBINED REPORT =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ( 1) COLLECTION/1 Application | pos= 0 usage: 0x000c/0x0001 = Consumer/Consumer_Control ( 2) COLLECTION/2 Logical | pos= 0 usage: 0x0001/0x0002 = Generic_Desktop/Mouse ( 3) INPUT | report ID=19, pos= 0, size= 8 bits, count=1, usage: 0x000c/0x0238 = Consumer/AC_Pan ( 4) INPUT | report ID=20, pos= 8, size= 2 bits, count=1, usage: 0xff00/0xfe01 = Microsoft/0xfe01 ( 5) INPUT | report ID=20, pos=10, size= 1 bits, count=1, usage: 0xff00/0xfe02 = Microsoft/0xfe02 ( 6) INPUT | report ID=20, pos=11, size= 1 bits, count=1, usage: 0xff00/0xfe00 = Microsoft/0xfe00 ( 7) INPUT | report ID=20, pos=12, size= 2 bits, count=1, usage: 0xff00/0xff03 = Microsoft/0xff03 ( 8) INPUT | report ID=20, pos=14, size= 2 bits, count=1, usage: 0x0000/0x0000 = pad ( 9) INPUT | report ID=21, pos=16, size= 1 bits, count=1, usage: 0xff00/0xff0b = Microsoft/0xff0b (10) INPUT | report ID=21, pos=17, size= 7 bits, count=1, usage: 0x0000/0x0000 = pad (11) INPUT | report ID=21, pos=24, size=16 bits, count=1, usage: 0xff00/0xff0d = Microsoft/0xff0d (12) FEATURE | report ID=23, pos=40, size= 2 bits, count=1, usage: 0xff00/0xff06 = Microsoft/0xff06 (13) FEATURE | report ID=23, pos=42, size= 2 bits, count=1, usage: 0xff00/0xff0f = Microsoft/0xff0f (14) FEATURE | report ID=23, pos=44, size= 1 bits, count=1, usage: 0xff00/0xff04 = Microsoft/0xff04 (15) FEATURE | report ID=23, pos=45, size= 3 bits, count=1, usage: 0x0000/0x0000 = pad (16) ENDCOLLECT/2 pos=48 (17) ENDCOLLECT/1 pos=48 (18) COLLECTION/1 Application | pos=48 usage: 0x0001/0x0002 = Generic_Desktop/Mouse (19) COLLECTION/2 Logical | pos=48 usage: 0x0001/0x0002 = Generic_Desktop/Mouse (20) COLLECTION/3 Physical | pos=48 usage: 0x0001/0x0001 = Generic_Desktop/Pointer (21) INPUT | report ID=17, pos=48, size= 1 bits, count=1, usage: 0x0009/0x0001 = Button/Button_1 (22) INPUT | report ID=17, pos=49, size= 1 bits, count=1, usage: 0x0009/0x0002 = Button/Button_2 (23) INPUT | report ID=17, pos=50, size= 1 bits, count=1, usage: 0x0009/0x0003 = Button/Button_3 (24) INPUT | report ID=17, pos=51, size= 1 bits, count=1, usage: 0x0009/0x0004 = Button/Button_4 (25) INPUT | report ID=17, pos=52, size= 1 bits, count=1, usage: 0x0009/0x0005 = Button/Button_5 (26) INPUT | report ID=17, pos=53, size= 3 bits, count=1, usage: 0x0000/0x0000 = pad (27) INPUT | report ID=17, pos=56, size= 8 bits, count=1, usage: 0x0001/0x0030 = Generic_Desktop/X (28) INPUT | report ID=17, pos=64, size= 8 bits, count=1, usage: 0x0001/0x0031 = Generic_Desktop/Y (29) COLLECTION/4 Logical | pos=72 usage: 0x0000/0x0000 = 0x00/0x00 (30) FEATURE | report ID=18, pos=72, size= 2 bits, count=1, usage: 0x0001/0x0048 = Generic_Desktop/0x48 (31) INPUT | report ID=17, pos=74, size= 8 bits, count=1, usage: 0x0001/0x0038 = Generic_Desktop/Wheel (32) ENDCOLLECT/4 pos=82 (33) COLLECTION/4 Logical | pos=82 usage: 0x0000/0x0000 = 0x00/0x00 (34) FEATURE | report ID=18, pos=82, size= 2 bits, count=1, usage: 0x0001/0x0048 = Generic_Desktop/0x48 (35) FEATURE | report ID=18, pos=84, size= 4 bits, count=1, usage: 0x0000/0x0000 = pad (36) INPUT | report ID=17, pos=88, size= 8 bits, count=1, usage: 0x000c/0x0238 = Consumer/AC_Pan (37) ENDCOLLECT/4 pos=96 (38) ENDCOLLECT/3 pos=96 (39) ENDCOLLECT/2 pos=96 (40) ENDCOLLECT/1 pos=96 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= END COMBINED REPORT =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Driver mode: level = 3 protocol = 18 = EXTENDED SYSMOUSE packetsize = 12 syncmask[0] = 0xf8 syncmask[1] = 0x80 Mouse data: (move the mouse) 0| 0x83 0x00 0x00 0x00 0x00 0x00 0x00 0x7f 0x00 0x00 0x00 0x00 1| 0x83 0x00 0xff 0x01 0x00 0x00 0x00 0x7f 0x00 0x00 0x00 0x00 2| 0x87 0x00 0x00 0x00 0x00 0x00 0x00 0x7f 0x00 0x00 0x00 0x00 3| 0x86 0x00 0x00 0x00 0x00 0x00 0x00 0x7f 0x00 0x00 0x00 0x00 4| 0x87 0x00 0x00 0x00 0x00 0x00 0x00 0x7f 0x00 0x00 0x00 0x00 5| 0x85 0x00 0x00 0x00 0x00 0x00 0x00 0x7f 0x00 0x00 0x00 0x00 6| 0x87 0x00 0x00 0x00 0x00 0x00 0x00 0x7f 0x00 0x00 0x00 0x00 7| 0x87 0x00 0x00 0x01 0x00 0x00 0x00 0x7f 0x00 0x00 0x00 0x00 8| 0x87 0x00 0x00 0x01 0x00 0x00 0x00 0x7f 0x00 0x00 0x00 0x00 9| 0x87 0x03 0x00 0x03 0x00 0x00 0x00 0x7f 0x00 0x00 0x00 0x00
Feb 24 17:54:50 belinda kernel: usbd_new_device bus=0xc651e000 port=2 depth=1 speed=1 Feb 24 17:54:50 belinda kernel: usbd_new_device: adding unit addr=2, rev=200, class=0, subclass=0, protocol=0, maxpacket=8, len=18, speed=1 Feb 24 17:54:50 belinda kernel: usbd_new_device: new dev (addr 2), dev=0xc9962d80, parent=0xc64f6500 Feb 24 17:54:50 belinda kernel: Feb 24 17:54:50 belinda kernel: usbd_probe_and_attach: idVendor = 0x45e Feb 24 17:54:50 belinda kernel: : : idProduct = 0xe1 Feb 24 17:54:50 belinda kernel: : : bcdDevice (release) = 0x7 Feb 24 17:54:50 belinda kernel: Feb 24 17:54:50 belinda kernel: usbd_probe_and_attach: trying device specific drivers Feb 24 17:54:50 belinda kernel: usbd_probe_and_attach: no device specific driver found Feb 24 17:54:50 belinda kernel: usbd_probe_and_attach: looping over 1 configurations Feb 24 17:54:50 belinda kernel: usbd_set_config_index: (addr 1) cno=2 attr=0xa0, selfpowered=0, power=100 Feb 24 17:54:50 belinda kernel: usbd_set_config_index: set config 1 Feb 24 17:54:50 belinda kernel: usbd_probe_and_attach: looping over 1 interfaces Feb 24 17:54:50 belinda kernel: Interface 0: Feb 24 17:54:50 belinda kernel: : bLength = 0x9 Feb 24 17:54:50 belinda kernel: : bDescriptorType = 0x4 Feb 24 17:54:50 belinda kernel: : bInterfaceNumber = 0x0 Feb 24 17:54:50 belinda kernel: : bAlternateSetting = 0x0 Feb 24 17:54:50 belinda kernel: : bNumEndpoints = 0x1 Feb 24 17:54:50 belinda kernel: : bInterfaceClass = 0x3 Feb 24 17:54:50 belinda kernel: : bInterfaceSubClass = 0x1 Feb 24 17:54:50 belinda kernel: : bInterfaceProtocol = 0x2 Feb 24 17:54:50 belinda kernel: : iInterface = 0x0 Feb 24 17:54:50 belinda kernel: Feb 24 17:54:50 belinda kernel: usbd_probe_and_attach: check interface 0 Feb 24 17:54:50 belinda kernel: usbd_probe_and_attach: bInterfaceNumber = 0 Feb 24 17:54:50 belinda kernel: ums0 on uhub4 Feb 24 17:54:50 belinda kernel: ums0: Microsoft Microsoft Wireless Optical MouseĀ® 1.00, class 0/0, rev 2.00/0.07, addr 2, iclass 3/1 Feb 24 17:54:50 belinda kernel: ums0: attach: initial protocol = 1 Feb 24 17:54:50 belinda kernel: ums0: attach: set report protocol (1) Feb 24 17:54:50 belinda kernel: ums0: attach: final protocol = 1 Feb 24 17:54:51 belinda kernel: ums0: attach: usbd_set_idle(interface,0,0) FAILED, status 17 Feb 24 17:54:51 belinda kernel: ums0: attach: report descriptor size = 274 Feb 24 17:54:51 belinda kernel: ums0: attach: X (flags 0x06) item_id=17, sc_loc_x.pos=48/8 Feb 24 17:54:51 belinda kernel: ums0: attach: Y (flags 0x06) item_id=17, sc_loc_y.pos=56/8 Feb 24 17:54:51 belinda kernel: ums0: attach: T (flags 0x06) item_id=17, sc_loc_t.pos=64/8 Feb 24 17:54:51 belinda kernel: ums0: mouse has no Z report Feb 24 17:54:51 belinda kernel: ums0: mouse has no W report Feb 24 17:54:51 belinda kernel: ums0: input report ID=17/0x11, report size 6. Feb 24 17:54:51 belinda kernel: ums0: attach: id_offset == 32 Feb 24 17:54:51 belinda kernel: ums0: attach: fixed B0 ==> 8/1 Feb 24 17:54:51 belinda kernel: ums0: attach: fixed B1 ==> 9/1 Feb 24 17:54:51 belinda kernel: ums0: attach: fixed B2 ==> 10/1 Feb 24 17:54:51 belinda kernel: ums0: attach: fixed B3 ==> 11/1 Feb 24 17:54:51 belinda kernel: ums0: attach: fixed B4 ==> 12/1 Feb 24 17:54:51 belinda kernel: ums0: attach: fixed X ==> 16/8 Feb 24 17:54:51 belinda kernel: ums0: attach: fixed Y ==> 24/8 Feb 24 17:54:51 belinda kernel: ums0: attach: fixed Z ==> 0/0 Feb 24 17:54:51 belinda kernel: ums0: attach: fixed T ==> 32/8 Feb 24 17:54:51 belinda kernel: ums0: attach: fixed W ==> 0/0 Feb 24 17:54:51 belinda kernel: ums0: attach: T.pos => Z.pos Feb 24 17:54:51 belinda kernel: ums0: attach: T.pos = Z.pos + 8, sc_isize=6 Feb 24 17:54:51 belinda kernel: ums0: 5 buttons and Z dir (TILT wheel). Feb 24 17:54:51 belinda kernel: ums0: ATTACH: sc=0xc7a47800 Feb 24 17:54:51 belinda kernel: ums0: ATTACH: ID 0/8 Feb 24 17:54:51 belinda kernel: ums0: ATTACH: B1 8/1 Feb 24 17:54:51 belinda kernel: ums0: ATTACH: B2 9/1 Feb 24 17:54:51 belinda kernel: ums0: ATTACH: B3 10/1 Feb 24 17:54:51 belinda kernel: ums0: ATTACH: B4 11/1 Feb 24 17:54:51 belinda kernel: ums0: ATTACH: B5 12/1 Feb 24 17:54:51 belinda kernel: ums0: ATTACH: X 16/8 Feb 24 17:54:51 belinda kernel: ums0: ATTACH: Y 24/8 Feb 24 17:54:51 belinda kernel: ums0: ATTACH: Z 32/8 Feb 24 17:54:51 belinda kernel: ums0: ATTACH: T 40/8 Feb 24 17:54:51 belinda kernel: ums0: ATTACH: W 0/0 Feb 24 17:54:51 belinda kernel: ums0: ATTACH: isize = 6, iid = 17 Feb 24 17:54:51 belinda kernel: usbd_probe_and_attach: FOUND interface 0 Feb 24 17:54:52 belinda kernel: ums0: usbd_set_idle(interface,0,0) FAILED, status 17 Feb 24 17:55:59 belinda kernel: ums0: usbd_set_idle(interface,0,0) FAILED, status 17
_______________________________________________ freebsd-usb@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-usb To unsubscribe, send any mail to "[EMAIL PROTECTED]"