Date: Wed, 9 Jan 2008 19:34:53 +0100 From: Hans Petter Selasky <hselasky@c2i.net> To: Mikhail Teterin <mi+kde@aldan.algebra.com> Cc: johnjen@reynoldsnet.org, R.Tobin@ed.ac.uk, usb@freebsd.org Subject: Re: BlackBerry (Re: using libusb) Message-ID: <200801091934.54053.hselasky@c2i.net> In-Reply-To: <200801091015.17730@aldan> References: <200801090114.56195@aldan> <200801091015.17730@aldan>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wednesday 09 January 2008, Mikhail Teterin wrote: > = I'm trying to port a suit called "barry", which provides a library and > some = utilities to work with RIM's BlackBerry devices. > > = It compiles cleanly, but fails to find a connected device at run time. In > = fact, it fails to find _any_ devices, even though ``usbdevs -v'' lists > = several including the BlackBerry > > Ok, I see, what's happening... The current implementation of libusb's BSD > support (bsd.c) ignores all devices other than ``ugen'': > > if (strncmp(di.udi_devnames[0], "ugen", 4) != 0) { > /* best not to play with things we don't understand */ > continue; > > And BlackBerry is identified as ``umass'' here :( > > Not sure, how best to solve this -- commenting out the above-quoted "if" > simply leads to a failure later, because the code will look for > /dev/umassX, which simply would not exist -- umass0 is da3 here. But it > might be da0 somewhere else, and there is no way to know, which is which > :-( > > But even if one could figure this out and specify the device to the tool > explicitly, daX will not understand ugen's ioctls anyway... > > What a retarded mess... > > We really need the low-level (ugen?) interfaces available for all > USB-devices -- even those, which are /also/ handled by higher-level > interfaces (like ulpt, uscan, umass). As things stand, the higher-level > ones are "greedy" and will prevent ugen from appearing, even if one wanted > to. Hi Mikhail, Yes, you are completely right. And this is not very far away from happening. I've wanted to do this for a long time, but have found no time yet. My plan is to extend /dev/usbX so that it becomes a so-called clonable device. When you open up "/dev/usb0.2.3" for example, you open up the device having index 2 on USB bus 0 and endpoint 3. This will need some modifications in libusb. Ugen will still be there, but I plan to move the functionality over to "usb.c". Accessing endpoints will then work regardless of what drivers are hooked on. Some open problems that needs to be resolved: Should we allow parallell access to USB interfaces? And what about rights management? > > Hans, any hope? Thank you! > In the end of the tunnel :-) --HPS
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200801091934.54053.hselasky>