usb/117911: [ums] [request] Mouse Gembird MUSWC not work

Alex Keda admin at lissyara.su
Mon Jul 14 16:50:05 UTC 2008


The following reply was made to PR usb/117911; it has been noted by GNATS.

From: Alex Keda <admin at lissyara.su>
To: bug-followup at FreeBSD.org, admin at lissyara.su
Cc:  
Subject: Re: usb/117911: [ums] [request] Mouse Gembird MUSWC not work
Date: Mon, 14 Jul 2008 20:42:08 +0400

 This is a multi-part message in MIME format.
 --------------050502020101000706000208
 Content-Type: text/plain; charset=UTF-8; format=flowed
 Content-Transfer-Encoding: 7bit
 
 resend mail.
 ============
 hi! this problem an HID parser on FreeBSD and other *BSD system
 
 i'am use a krepdump http://people.freebsd.org/~kaiw/tools/krepdump.tgz
 to show full HID protocol dump from this USB Mouse
 
 -----------------------------------------------
 [report desc size=79]
 USAGE PAGE Consumer(0xc)
 USAGE Consumer Control(0x1)[Consumer(0xc)]
 COLLECTION Application(1)
    REPORT ID 1
    USAGE MINIMUM Unassigned(0)
    USAGE MAXIMUM AC Underline(576)
    LOGICAL MINIMUM 0
    LOGICAL MAXIMUM 576
    REPORT SIZE 16
    REPORT COUNT 1
    INPUT ( Data Array Absolute ) (0)
 END COLLECTION
 USAGE PAGE Generic Desktop(0x1)
 USAGE Mouse(0x2)[Generic Desktop(0x1)]
 COLLECTION Application(1)
    REPORT ID 2
    USAGE Pointer(0x1)[Generic Desktop(0x1)]
    COLLECTION Physical(0)
      USAGE PAGE Button(0x9)
      USAGE MINIMUM Button1(1)
      USAGE MAXIMUM Button3(3)
      LOGICAL MINIMUM 0
      LOGICAL MAXIMUM 1
      REPORT SIZE 1
      REPORT COUNT 3
      INPUT ( Data Variable Absolute ) (2)
      REPORT SIZE 5
      REPORT COUNT 1
      INPUT ( Const Array Absolute ) (1)
      USAGE PAGE Generic Desktop(0x1)
      USAGE X(0x30)[Generic Desktop(0x1)]
      USAGE Y(0x31)[Generic Desktop(0x1)]
      USAGE Wheel(0x38)[Generic Desktop(0x1)]
      LOGICAL MINIMUM -127
      LOGICAL MAXIMUM 127
      REPORT SIZE 8
      REPORT COUNT 3
      INPUT ( Data Variable Relative ) (6)
    END COLLECTION
 END COLLECTION
 [hexdump]
 0000 05 0C 09 01 A1 01 85 01 19 00 2A 40 02 15 00 26
 0010 40 02 75 10 95 01 81 00 C0 05 01 09 02 A1 01 85
 0020 02 09 01 A1 00 05 09 19 01 29 03 15 00 25 01 75
 0030 01 95 03 81 02 75 05 95 01 81 01 05 01 09 30 09
 0040 31 09 38 15 81 25 7F 75 08 95 03 81 06 C0 C0
 
 --------------------------------------------------
 as you can see
 this Mouse generate 2 HID protocol collection
 
 the first collection is
 USAGE PAGE Consumer(0xc)
 USAGE Consumer Control(0x1)[Consumer(0xc)]
 COLLECTION Application(1)
    REPORT ID 1
    ...
 
 the second collection is
 USAGE PAGE Generic Desktop(0x1)
 USAGE Mouse(0x2)[Generic Desktop(0x1)]
 COLLECTION Application(1)
    REPORT ID 2
    ...
 
 two collection describe a two protocol
 first protocol - AC line (Wireless Mouse from AC battarey)
 second protocol - Mouse movement
 
 
 an exists FreeBSD HID parser don't work with such collection
 to parse it used first collection, allways
 is't correct!!
 
 as example with this Mouse
 
 #kldload ums.ko
 #dmesg -a | grep ums
 
 ----------------------
 ums_attach: 3 buttons
 ums_attach: X   24/8
 ums_attach: Y   32/8
 ums_attach: Z   40/8
 ums_attach: B1  16/1
 ums_attach: B2  17/1
 ums_attach: B3  18/1
 ums_attach: size=3, id=1
 ----------------------
 
 the HID parser use first HID collection to parse Mouse movenent
 Mouse not work!!
 
 
 
 i'am fixx the HID parser
 to correct use HID collection
 after patch http://paradox.org.ua/work/fixx.tar.bz2
 ----------------------
 ums_attach: 3 buttons
 ums_attach: X   8/8
 ums_attach: Y   16/8
 ums_attach: Z   24/8
 ums_attach: B1  0/1
 ums_attach: B2  1/1
 ums_attach: B3  2/1
 ums_attach: size=5, id=2
 ----------------------
 and Mouse works fine!
 
 i think this patch fixx
 fixed all USB Mouse problem an *BSD system
 
 --------------050502020101000706000208
 Content-Type: text/plain;
  name="usb.diff"
 Content-Transfer-Encoding: base64
 Content-Disposition: inline;
  filename="usb.diff"
 
 ZGlmZiAtTnJ1IHN5cy9kZXYvdXNiLm9yaWcvaGlkLmMgc3lzL2Rldi91c2IvaGlkLmMKLS0t
 IHN5cy9kZXYvdXNiLm9yaWcvaGlkLmMJMjAwNy0wNi0yMCAwOToxMDo1Mi4wMDAwMDAwMDAg
 KzA0MDAKKysrIHN5cy9kZXYvdXNiL2hpZC5jCTIwMDgtMDctMTQgMTY6MDE6MzkuMDAwMDAw
 MDAwICswNDAwCkBAIC03Miw2ICs3Miw3IEBACiAJaW50IG11bHRpOwogCWludCBtdWx0aW1h
 eDsKIAlpbnQga2luZHNldDsKKwlpbnQgdXNhZ2U7CiB9OwogCiBzdGF0aWMgdm9pZApAQCAt
 MTE1LDcgKzExNiw3IEBACiB9CiAKIGludAotaGlkX2dldF9pdGVtKHN0cnVjdCBoaWRfZGF0
 YSAqcywgc3RydWN0IGhpZF9pdGVtICpoKQoraGlkX2dldF9pdGVtKHN0cnVjdCBoaWRfZGF0
 YSAqcywgdV9pbnQzMl90IHUsIHN0cnVjdCBoaWRfaXRlbSAqaCkKIHsKIAlzdHJ1Y3QgaGlk
 X2l0ZW0gKmMgPSAmcy0+Y3VyOwogCXVuc2lnbmVkIGludCBiVGFnLCBiVHlwZSwgYlNpemU7
 CkBAIC0xOTMsNiArMTk0LDkgQEAKIAkJY2FzZSAwOgkJCS8qIE1haW4gKi8KIAkJCXN3aXRj
 aCAoYlRhZykgewogCQkJY2FzZSA4OgkJLyogSW5wdXQgKi8KKwkJCQlpZiAocy0+dXNhZ2Ug
 IT0gdSA+PjE2ICYmIHUgIT0gMCkKKwkJCQkJYnJlYWs7CisKIAkJCQlpZiAoIShzLT5raW5k
 c2V0ICYgKDEgPDwgaGlkX2lucHV0KSkpCiAJCQkJCWNvbnRpbnVlOwogCQkJCWMtPmtpbmQg
 PSBoaWRfaW5wdXQ7CkBAIC0yMjMsNiArMjI3LDkgQEAKIAkJCQkJcmV0dXJuICgxKTsKIAkJ
 CQl9CiAJCQljYXNlIDk6CQkvKiBPdXRwdXQgKi8KKwkJCQlpZiAocy0+dXNhZ2UgIT0gdSA+
 PjE2ICYmIHUgIT0gMCkKKwkJCQkJYnJlYWs7CisKIAkJCQlpZiAoIShzLT5raW5kc2V0ICYg
 KDEgPDwgaGlkX291dHB1dCkpKQogCQkJCQljb250aW51ZTsKIAkJCQljLT5raW5kID0gaGlk
 X291dHB1dDsKQEAgLTIzMiwxMSArMjM5LDE2IEBACiAJCQkJYy0+a2luZCA9IGhpZF9jb2xs
 ZWN0aW9uOwogCQkJCWMtPmNvbGxlY3Rpb24gPSBkdmFsOwogCQkJCWMtPmNvbGxldmVsKys7
 CisJCQkJaWYgKGMtPmNvbGxldmVsID4gMCAmJiB1ICE9IDApCisJCQkJCXMtPnVzYWdlID0g
 Yy0+X3VzYWdlX3BhZ2UgPj4gMTY7CiAJCQkJKmggPSAqYzsKIAkJCQloaWRfY2xlYXJfbG9j
 YWwoYyk7CiAJCQkJcy0+bnUgPSAwOwogCQkJCXJldHVybiAoMSk7CiAJCQljYXNlIDExOgkv
 KiBGZWF0dXJlICovCisJCQkJaWYgKHMtPnVzYWdlICE9IHUgPj4xNiAmJiB1ICE9IDApCisJ
 CQkJCWJyZWFrOworCiAJCQkJaWYgKCEocy0+a2luZHNldCAmICgxIDw8IGhpZF9mZWF0dXJl
 KSkpCiAJCQkJCWNvbnRpbnVlOwogCQkJCWMtPmtpbmQgPSBoaWRfZmVhdHVyZTsKQEAgLTI1
 OCw2ICsyNzAsOSBAQAogCQkJc3dpdGNoIChiVGFnKSB7CiAJCQljYXNlIDA6CiAJCQkJYy0+
 X3VzYWdlX3BhZ2UgPSBkdmFsIDw8IDE2OworCisJCQkJaWYgKHUgIT0gMCAmJiB1Pj4xNiA9
 PSBkdmFsKQorCQkJCQlzLT51c2FnZSA9IGR2YWw7CiAJCQkJYnJlYWs7CiAJCQljYXNlIDE6
 CiAJCQkJYy0+bG9naWNhbF9taW5pbXVtID0gZHZhbDsKQEAgLTM2NCw3ICszNzksNyBAQAog
 fQogCiBpbnQKLWhpZF9yZXBvcnRfc2l6ZSh2b2lkICpidWYsIGludCBsZW4sIGVudW0gaGlk
 X2tpbmQgaywgdV9pbnQ4X3QgKmlkcCkKK2hpZF9yZXBvcnRfc2l6ZSh2b2lkICpidWYsIGlu
 dCBsZW4sIHVfaW50MzJfdCB1LCBlbnVtIGhpZF9raW5kIGssIHVfaW50OF90ICppZHApCiB7
 CiAJc3RydWN0IGhpZF9kYXRhICpkOwogCXN0cnVjdCBoaWRfaXRlbSBoOwpAQCAtMzcyLDcg
 KzM4Nyw3IEBACiAKIAlpZCA9IDA7CiAJaGkgPSBsbyA9IC0xOwotCWZvciAoZCA9IGhpZF9z
 dGFydF9wYXJzZShidWYsIGxlbiwgMTw8ayk7IGhpZF9nZXRfaXRlbShkLCAmaCk7ICkKKwlm
 b3IgKGQgPSBoaWRfc3RhcnRfcGFyc2UoYnVmLCBsZW4sIDE8PGspOyBoaWRfZ2V0X2l0ZW0o
 ZCwgdSwgJmgpOyApCiAJCWlmIChoLmtpbmQgPT0gaykgewogCQkJaWYgKGgucmVwb3J0X0lE
 ICE9IDAgJiYgIWlkKQogCQkJCWlkID0gaC5yZXBvcnRfSUQ7CkBAIC0zOTksNyArNDE0LDcg
 QEAKIAlzdHJ1Y3QgaGlkX2RhdGEgKmQ7CiAJc3RydWN0IGhpZF9pdGVtIGg7CiAKLQlmb3Ig
 KGQgPSBoaWRfc3RhcnRfcGFyc2UoZGVzYywgc2l6ZSwgMTw8ayk7IGhpZF9nZXRfaXRlbShk
 LCAmaCk7ICkgeworCWZvciAoZCA9IGhpZF9zdGFydF9wYXJzZShkZXNjLCBzaXplLCAxPDxr
 KTsgaGlkX2dldF9pdGVtKGQsIHUsICZoKTsgKSB7CiAJCWlmIChoLmtpbmQgPT0gayAmJiAh
 KGguZmxhZ3MgJiBISU9fQ09OU1QpICYmIGgudXNhZ2UgPT0gdSkgewogCQkJaWYgKGxvYyAh
 PSBOVUxMKQogCQkJCSpsb2MgPSBoLmxvYzsKQEAgLTQ1Miw3ICs0NjcsNyBAQAogCWlmICho
 ZCA9PSBOVUxMKQogCQlyZXR1cm4gKDApOwogCi0JZXJyID0gaGlkX2dldF9pdGVtKGhkLCAm
 aGkpICYmCisJZXJyID0gaGlkX2dldF9pdGVtKGhkLCB1c2FnZSwgJmhpKSAmJgogCSAgICBo
 aS5raW5kID09IGhpZF9jb2xsZWN0aW9uICYmCiAJICAgIGhpLnVzYWdlID09IHVzYWdlOwog
 CWhpZF9lbmRfcGFyc2UoaGQpOwpkaWZmIC1OcnUgc3lzL2Rldi91c2Iub3JpZy9oaWQuaCBz
 eXMvZGV2L3VzYi9oaWQuaAotLS0gc3lzL2Rldi91c2Iub3JpZy9oaWQuaAkyMDA1LTAxLTA2
 IDA0OjQzOjI3LjAwMDAwMDAwMCArMDMwMAorKysgc3lzL2Rldi91c2IvaGlkLmgJMjAwOC0w
 Ny0xNCAxNjowMTozOS4wMDAwMDAwMDAgKzA0MDAKQEAgLTgyLDggKzgyLDggQEAKIAogc3Ry
 dWN0IGhpZF9kYXRhICpoaWRfc3RhcnRfcGFyc2Uodm9pZCAqZCwgaW50IGxlbiwgaW50IGtp
 bmRzZXQpOwogdm9pZCBoaWRfZW5kX3BhcnNlKHN0cnVjdCBoaWRfZGF0YSAqcyk7Ci1pbnQg
 aGlkX2dldF9pdGVtKHN0cnVjdCBoaWRfZGF0YSAqcywgc3RydWN0IGhpZF9pdGVtICpoKTsK
 LWludCBoaWRfcmVwb3J0X3NpemUodm9pZCAqYnVmLCBpbnQgbGVuLCBlbnVtIGhpZF9raW5k
 IGssIHVfaW50OF90ICppZCk7CitpbnQgaGlkX2dldF9pdGVtKHN0cnVjdCBoaWRfZGF0YSAq
 cywgdV9pbnQzMl90IHUsIHN0cnVjdCBoaWRfaXRlbSAqaCk7CitpbnQgaGlkX3JlcG9ydF9z
 aXplKHZvaWQgKmJ1ZiwgaW50IGxlbiwgdV9pbnQzMl90IHUsIGVudW0gaGlkX2tpbmQgaywg
 dV9pbnQ4X3QgKmlkKTsKIGludCBoaWRfbG9jYXRlKHZvaWQgKmRlc2MsIGludCBzaXplLCB1
 X2ludDMyX3QgdXNhZ2UsCiAJCSAgICBlbnVtIGhpZF9raW5kIGtpbmQsIHN0cnVjdCBoaWRf
 bG9jYXRpb24gKmxvYywKIAkJICAgIHVfaW50MzJfdCAqZmxhZ3MpOwpkaWZmIC1OcnUgc3lz
 L2Rldi91c2Iub3JpZy91Y3ljb20uYyBzeXMvZGV2L3VzYi91Y3ljb20uYwotLS0gc3lzL2Rl
 di91c2Iub3JpZy91Y3ljb20uYwkyMDA3LTA2LTIxIDE4OjQyOjMzLjAwMDAwMDAwMCArMDQw
 MAorKysgc3lzL2Rldi91c2IvdWN5Y29tLmMJMjAwOC0wNy0xNCAxNjowMTozOS4wMDAwMDAw
 MDAgKzA0MDAKQEAgLTIyMSw5ICsyMjEsOSBAQAogCX0KIAogCS8qIGdldCByZXBvcnQgc2l6
 ZXMgKi8KLQlzYy0+c2NfZmxlbiA9IGhpZF9yZXBvcnRfc2l6ZSh1cmQsIHVyZGxlbiwgaGlk
 X2ZlYXR1cmUsICZzYy0+c2NfZmlkKTsKLQlzYy0+c2NfaWxlbiA9IGhpZF9yZXBvcnRfc2l6
 ZSh1cmQsIHVyZGxlbiwgaGlkX2lucHV0LCAmc2MtPnNjX2lpZCk7Ci0Jc2MtPnNjX29sZW4g
 PSBoaWRfcmVwb3J0X3NpemUodXJkLCB1cmRsZW4sIGhpZF9vdXRwdXQsICZzYy0+c2Nfb2lk
 KTsKKwlzYy0+c2NfZmxlbiA9IGhpZF9yZXBvcnRfc2l6ZSh1cmQsIHVyZGxlbiwgMCwgaGlk
 X2ZlYXR1cmUsICZzYy0+c2NfZmlkKTsgLyogTkVFRCBUTyBCRSBGSVhYID8/Pz8/ICovCisJ
 c2MtPnNjX2lsZW4gPSBoaWRfcmVwb3J0X3NpemUodXJkLCB1cmRsZW4sIDAsIGhpZF9pbnB1
 dCwgJnNjLT5zY19paWQpOwkvKiBORUVEIFRPIEJFIEZJWFggPz8/Pz8gKi8KKwlzYy0+c2Nf
 b2xlbiA9IGhpZF9yZXBvcnRfc2l6ZSh1cmQsIHVyZGxlbiwgMCwgaGlkX291dHB1dCwgJnNj
 LT5zY19vaWQpOwkvKiBORUVEIFRPIEJFIEZJWFggPz8/Pz8gKi8KIAogCWlmIChzYy0+c2Nf
 aWxlbiA+IFVDWUNPTV9NQVhfSU9MRU4gfHwgc2MtPnNjX29sZW4gPiBVQ1lDT01fTUFYX0lP
 TEVOKSB7CiAJCWRldmljZV9wcmludGYoZGV2LCAiSS9PIHJlcG9ydCBzaXplIHRvbyBiaWcg
 KCV6dSwgJXp1LCAldSlcbiIsCmRpZmYgLU5ydSBzeXMvZGV2L3VzYi5vcmlnL3VoaWQuYyBz
 eXMvZGV2L3VzYi91aGlkLmMKLS0tIHN5cy9kZXYvdXNiLm9yaWcvdWhpZC5jCTIwMDctMDYt
 MjEgMTg6NDI6MzMuMDAwMDAwMDAwICswNDAwCisrKyBzeXMvZGV2L3VzYi91aGlkLmMJMjAw
 OC0wNy0xNCAxNjowMTozOS4wMDAwMDAwMDAgKzA0MDAKQEAgLTMyMCw5ICszMjAsOSBAQAog
 CiAJKHZvaWQpdXNiZF9zZXRfaWRsZShpZmFjZSwgMCwgMCk7CiAKLQlzYy0+c2NfaXNpemUg
 PSBoaWRfcmVwb3J0X3NpemUoZGVzYywgc2l6ZSwgaGlkX2lucHV0LCAgICZzYy0+c2NfaWlk
 KTsKLQlzYy0+c2Nfb3NpemUgPSBoaWRfcmVwb3J0X3NpemUoZGVzYywgc2l6ZSwgaGlkX291
 dHB1dCwgICZzYy0+c2Nfb2lkKTsKLQlzYy0+c2NfZnNpemUgPSBoaWRfcmVwb3J0X3NpemUo
 ZGVzYywgc2l6ZSwgaGlkX2ZlYXR1cmUsICZzYy0+c2NfZmlkKTsKKwlzYy0+c2NfaXNpemUg
 PSBoaWRfcmVwb3J0X3NpemUoZGVzYywgc2l6ZSwgMCwgaGlkX2lucHV0LCAgICZzYy0+c2Nf
 aWlkKTsKKwlzYy0+c2Nfb3NpemUgPSBoaWRfcmVwb3J0X3NpemUoZGVzYywgc2l6ZSwgMCwg
 aGlkX291dHB1dCwgICZzYy0+c2Nfb2lkKTsKKwlzYy0+c2NfZnNpemUgPSBoaWRfcmVwb3J0
 X3NpemUoZGVzYywgc2l6ZSwgMCwgaGlkX2ZlYXR1cmUsICZzYy0+c2NfZmlkKTsKIAogCXNj
 LT5zY19yZXBkZXNjID0gZGVzYzsKIAlzYy0+c2NfcmVwZGVzY19zaXplID0gc2l6ZTsKZGlm
 ZiAtTnJ1IHN5cy9kZXYvdXNiLm9yaWcvdW1zLmMgc3lzL2Rldi91c2IvdW1zLmMKLS0tIHN5
 cy9kZXYvdXNiLm9yaWcvdW1zLmMJMjAwOC0wNC0zMCAyMzozNzo1NC4wMDAwMDAwMDAgKzA0
 MDAKKysrIHN5cy9kZXYvdXNiL3Vtcy5jCTIwMDgtMDctMTQgMTY6MDE6MzkuMDAwMDAwMDAw
 ICswNDAwCkBAIC0zNTgsNyArMzU4LDggQEAKIAkJaGlkX2xvY2F0ZShkZXNjLCBzaXplLCBI
 SURfVVNBR0UyKEhVUF9CVVRUT04sIGkpLAogCQkJCWhpZF9pbnB1dCwgJnNjLT5zY19sb2Nf
 YnRuW2ktMV0sIDApOwogCi0Jc2MtPnNjX2lzaXplID0gaGlkX3JlcG9ydF9zaXplKGRlc2Ms
 IHNpemUsIGhpZF9pbnB1dCwgJnNjLT5zY19paWQpOworCXNjLT5zY19pc2l6ZSA9IGhpZF9y
 ZXBvcnRfc2l6ZShkZXNjLCBzaXplLCBISURfVVNBR0UyKEhVUF9HRU5FUklDX0RFU0tUT1As
 IEhVR19NT1VTRSksCisJCQkJCWhpZF9pbnB1dCwgJnNjLT5zY19paWQpOwogCXNjLT5zY19p
 YnVmID0gbWFsbG9jKHNjLT5zY19pc2l6ZSwgTV9VU0IsIE1fTk9XQUlUKTsKIAlpZiAoIXNj
 LT5zY19pYnVmKSB7CiAJCXByaW50ZigiJXM6IG5vIG1lbW9yeVxuIiwgZGV2aWNlX2dldF9u
 YW1ldW5pdChzYy0+c2NfZGV2KSk7CkBAIC0zOTMsNiArMzk0LDcgQEAKIAkgKiBkZXNjcmlw
 dG9yKSwgaXQgc2VlbXMgdGhhdCByZXBvcnQgaWQgMTcgY29udGFpbnMgdGhlIG5lY2Vzc2Fy
 eQogCSAqIG1vdXNlIGluZm9ybWF0aW9uKDMtYnV0dG9ucyxYLFksd2hlZWwpIHNvIHdlIHNw
 ZWNpZnkgaXQgbWFudWFsbHkuCiAJICovCisJLyogSVMgSVQgTkVTU0VTQVJZID8/PyBORUVE
 IFRPIEJFIFJFQ0hFQ0sgISEhISEhISBBTkQgRVhDTFVERSAqLwogCWlmICh1YWEtPnZlbmRv
 ciA9PSBVU0JfVkVORE9SX01JQ1JPU09GVCAmJgogCSAgICB1YWEtPnByb2R1Y3QgPT0gVVNC
 X1BST0RVQ1RfTUlDUk9TT0ZUX1dMTk9URUJPT0szKSB7CiAJCXNjLT5mbGFncyA9IFVNU19a
 Owo=
 --------------050502020101000706000208--


More information about the freebsd-usb mailing list