Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 8 Dec 2005 23:56:44 +0100
From:      Ed Schouten <ed@fxq.nl>
To:        FreeBSD Hackers <hackers@freebsd.org>
Subject:   [WIP] uhid(4): Support for the Microsoft Xbox360 gamepad
Message-ID:  <20051208225644.GJ15719@hoeg.nl>

next in thread | raw e-mail | index | archive | help

--6lCXDTVICvIQMz0h
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Hello,

Last week I heard that Microsoft's new Xbox360 uses regular USB
connectors for their gamepads. Because the guys at Xbox-Linux.org
already wrote a driver for Linux, I decided to buy one and write a
FreeBSD driver for it.

The Xbox360 gamepad is like any normal HID gamepad, except that it has
been slightly crippled by Microsoft:

- They don't use the regular HID interface class, but the vendor
  specific class in combination with an interface subclass.
- Their device does not contain a HID report descriptor.

The first problem was easy to solve; I just changed the USB_MATCH code
to accept the UICLASS_VENDOR in combination with the interface subclass
and interface protocol. Limiting vendor and product ID's should be
avoided because that would block third party gamepads.

The second problem was a little trickier because I had no experience
with writing report descriptors. After taking a look at examples and
reading documents at usb.org, I hacked one together. It's quite nice the
FreeBSD driver was somewhat prepared for custom report descriptors (the
Wacom Graphire gets a custom report descriptor for example).

The result can be found here:

	http://g-rave.nl/files/xbox/freebsd-xbox360-gamepad.diff

There are only some small unfinished parts though:

- I don't know the output format state; I cannot control the rumbles or
  the LEDs on the gamepad (I constantly see green leds flashing)
- For some reason, I can only read data when polling the gamepad.
  `usbhidctl -f <device> -al` does not return any output.

Useful hints would really be appreciated; I'm not a real wizard when it
comes to USB ;-)

Yours,
--=20
 Ed Schouten <ed@fxq.nl>
 WWW: http://g-rave.nl/

--6lCXDTVICvIQMz0h
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (FreeBSD)

iD8DBQFDmLosmVI4SHXwmhERAiUTAKDSWkd/VvXandrMDUo3T3Ih+iM8ewCgwQTs
fSC4YHRh9SQjFBeXtAHwOJw=
=lNtj
-----END PGP SIGNATURE-----

--6lCXDTVICvIQMz0h--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20051208225644.GJ15719>