garmin forerunner 305
bruce at cran.org.uk
Tue Nov 4 07:46:42 PST 2008
On Tue, 04 Nov 2008 14:57:14 +0300
Boris Samorodov <bsam at ipt.ru> wrote:
> Bruce Cran <bruce at cran.org.uk> writes:
> > I don't know if it'll work with the usb stack that's in shipping
> > version of FreeBSD though, and even with the new stack I had to
> > make a change to libgpsusb.c in gpsbabel to get it working.
> Can you submit a patch? Thanks!
Having just read about endpoint addresses I'm not sure who's wrong.
gpsbabel truncates the address to the first 4 bytes using
USB_ENDPOINT_ADDRESS_MASK from libusb20 while
the stack clearly wants the rest, including the top 'direction' bit. In
fact in /sys/dev/usb2/core/usb2_device.c line 114 it masks out the
reserved bits but still keeps the direction bit. usb2_get_pipe_by_addr
was failing when passed address 1 because the full endpoint address is
0x81 (endpoint 1, direction IN). It looks as though by changing EA_MASK
to be just the endpoint number would fix the problem, but I'm not
sure if that's correct.
More information about the freebsd-questions