Atmel USB Wireless devices
Stuart Walsh
stu at ipng.org.uk
Thu Aug 28 10:39:54 PDT 2003
On Thu Aug 28, 07:15P +0200, Daan Vreeken [PA4DAN] wrote:
> On Thursday 28 August 2003 15:26, Stuart Walsh wrote:
> > Hi,
> >
> > Firstly, it would be interesting to know if anyone else is working on
> > support for these devices before I get too far into it :)
> Yes, I have bought a bunch of them about a month ago, and at this moment I
> have a working driver for them. At this moment it's still a "beta" which can
> only do ad-hoc mode, but it works.
Ok, that saves some duplicated effort :)
> > I've started working on support for the above devices and have had some
> > limited success so far. The device requires two sets of firmware to be
> > uploaded for it to work and I have managed to upload the first firmware
> > but it doesnt seem to want to boot. Any attempts to read the device
> > after uploading firmware result in error code 13(IOERROR). The Linux
> > driver calls usb_reset_device() after uploading the firmware but I can't
> > seem to find an equivelant in FreeBSD.
> The problem is that the device really dies after uploading the internal
> firmware. It really needs a reset before it will communicate again.
> A usb-hub can send a reset signal down it's ports with a call to :
> usbd_reset_port(sc->atuwi_udev->myhub,sc->atuwi_udev->powersrc->portno,&T);
>
That bit works fine.
> After that the atmel processor will start communicating again. But it's
> usb-address will be set to 0 (as always after a reset).
> So you will have to (re)set it's address back to what it was before the reset
> with a call to :
> usbd_set_address(sc->atuwi_udev,my_old_address);
This fails with another IOERROR
>
> The story gets more complex since the descriptors of the device have changed
> by the reset. (first it only had a control endpoint, now it also has 2 bulk
> endpoints). Somehow you'll have to reload the new descriptor to please the
> kernel.
> I have come very far in this process, but I am doing something wrong with
> releasing the old descriptors... So at this moment I use a trick to reset the
> device.
> After uploading the internal firmware I unplug the USB connector just far
> enough for the data-lines to disconnect, but without disconnecting the
> power-lines. After plugging the device back in the kernel recognizes it again
> and uploads the external firmware.
>
Hopefully I can look into this when I can talk to the device a bit
better :)
> I'll come back to this thread tomorrow and post some links to my code, but I
> have to run now.
Thanks for the info.. I'll wait to see your code and see where I'm going
wrong.
Regards,
Stuart
More information about the freebsd-hackers
mailing list