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