Subject: Re: usb control endpoint exclusive access
To: Greg Troxel <gdt@ir.bbn.com>
From: Berndt Josef Wulf <wulf@ping.net.au>
List: tech-kern
Date: 05/17/2005 07:07:27
On Monday 16 May 2005 20:43, Greg Troxel wrote:
> I wonder if there should be a mask in the minor number to indicate
> alternative exclusivity semantics. The exclusive open is almost
> certainly there because a number of USB-using programs expect that
> once a device is opened no other program will access it.
>
> Alternatively, GNU Radio could be modified to only open the control
> endpoint in one place. But if Linux allows multiple opens, then we
> probably need to at least optionally do that - it doesn't seem
> intrinsically crazy and it seems easier to allow multiple opens than
> fight it.
As Linux permits this behavior I see little chance for Linux based projects to
use the BSD approach. The solution to this is to either fix this in the
kernel or just submit to the widespread notion that BSD is good for server
applications but a pain in the neck to use with applications utilizing new
emerging technologies and concepts.
Current issues that I'm facing are
1) Data bandwidth of USB2.0 interface not up-to-spec on the ugen device
The ugen device currently bottoms out at 8MB/sec. In order to utilize the full
potential of the USRP a sustainable data bandwidth of 32MB/sec is required.
NetBSD would need some extra magic to pull equal with Linux, which supports
a sustained databandwidth of >32MB/sec.
2) Lack of support for multiple access to USB control endpoint
On USB devices endpoint 0 (control endpoint) is used to set up and configure
the interface. Applications that run multiple programs requiring access to
different endpoints on the same device need shared access the control
endpoint. This works fine on Linux, but no go on BSD as it won't permit
shared access to the control endpoint.
3) No support to open devices for read and write access by separate processes
Applications that run two programs, one to send and another to receive data
accessing the same device, e.g. audio device, although in a different modes
not interfering which each other, won't work on BSD due to the exclusive
behavior of the devices.
I resolved issues 2 and 3 by means of a local work around, but have no
solutions to improve the data bandwidth.
It would be nice if we could make the old Dinosaur step dance! Meanwhile I
will have to rely on Linux in the interim.
cheerio Berndt
--
Every man who says frankly and fully what he thinks is doing a public service.
[Leslie Stephen]