Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 17 Nov 2004 03:36:11 +0800
From:      "Fernando Durango" <fernando@bsdmail.org>
To:        freebsd-hackers@freebsd.org
Subject:    trouble sending bytes to uhid (Griffin PowerMate on 5.3-STABLE/i386)
Message-ID:  <20041116193611.62A6923EE65@ws5-4.us4.outblaze.com>

next in thread | raw e-mail | index | archive | help
Hello all,

I have a Griffin PowerMate[1] that I would love to be able to manipulate
via uhid on FreeBSD. Running a USB sniffer on a win32 box shows the device
spews 6 bytes of data on dial movement and/or button pressing, and the pc
sending one byte to the PowerMate occasionally, which seems to effect LED
brightness on the Powermate. I am able to read and interpret the device
output with perl(sysopen & sysread), but I am unable to send bytes back to
the device (syswrite).

The device shows up as follows:
$ dmesg | grep uhid
uhid0: Griffin Technology, Inc. Griffin PowerMate, rev 1.00/4.00, addr 2, i=
class 3/0
$ usbdevs -d -v
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), Intel(0x=
0000), rev 1.00
  uhub1
 port 1 addr 2: low speed, power 100 mA, config 1, Griffin PowerMate(0x0410=
), Griffin Technology, Inc.(0x077d), rev 4.00
   uhid0
$ usbhidctl -r -f /dev/uhid0
Report descriptor:
Collection page=3DConsumer usage=3DConsumer_Control
Input   size=3D1 count=3D1 page=3DButton usage=3DButton_1, logical range 0.=
.1
Input   size=3D8 count=3D1 page=3DGeneric_Desktop usage=3DRx, logical range=
 -127..127
Input   size=3D8 count=3D1 page=3DConsumer usage=3DConsumer_Control, logica=
l range 0..255
Input   size=3D8 count=3D1 page=3DConsumer usage=3DConsumer_Control, logica=
l range 0..255
Input   size=3D8 count=3D1 page=3DConsumer usage=3DConsumer_Control, logica=
l range 0..255
Input   size=3D8 count=3D1 page=3DConsumer usage=3DConsumer_Control, logica=
l range 0..255
Output  size=3D8 count=3D1 page=3DConsumer usage=3DConsumer_Control, logica=
l range 0..255
Feature size=3D8 count=3D1 page=3DConsumer usage=3DConsumer_Control, logica=
l range 0..255
Feature size=3D8 count=3D1 page=3DConsumer usage=3DConsumer_Control, logica=
l range 0..255
Feature size=3D8 count=3D1 page=3DConsumer usage=3DConsumer_Control, logica=
l range 0..255
Feature size=3D8 count=3D1 page=3DConsumer usage=3DConsumer_Control, logica=
l range 0..255
Feature size=3D8 count=3D1 page=3DConsumer usage=3DConsumer_Control, logica=
l range 0..255
Feature size=3D8 count=3D1 page=3DConsumer usage=3DConsumer_Control, logica=
l range 0..255
Feature size=3D8 count=3D1 page=3DConsumer usage=3DConsumer_Control, logica=
l range 0..255
Feature size=3D8 count=3D1 page=3DConsumer usage=3DConsumer_Control, logica=
l range 0..255
End collection
Total   input size 6 bytes
Total  output size 0 bytes
Total feature size 0 bytes

perl code for reading:
sysopen(DATA, "/dev/uhid0", O_RDONLY | O_NODELAY | O_BINARY)
  or die "could not open $device!\n";

while (1) {
    my $buf;
    if (sysread(DATA, $buf, 6)) {
        my @ascii =3D map { ord } split //, $buf;
        foreach ( @ascii ) {
            print "$_\t";
        }
        print "\n";
    }
}

perl code for writing:
sysopen(DATA, "/dev/uhid0", O_RDWR)
  or die "could not open $device!\n";

$val =3D 0xff;
if (length($bbq) !=3D syswrite(DATA, $bbq, length($bbq))) {
    die "This is Bad: $!\n";
}

close(DATA);

When trying to write, I get the error "This is Bad: Bad file descriptor"
Is it not possible to write to a uhid device?

Thanks in advance!

   -F


--=20
_______________________________________________
Get your free email from http://mymail.bsdmail.com

Powered by Outblaze



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