Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 26 Jun 2020 17:28:51 +0200
From:      Jan Behrens <jbe-mlist@magnetkern.de>
To:        Hans Petter Selasky <hps@selasky.org>
Cc:        CeDeROM <CeDeROM@tlen.pl>, "freebsd-usb@FreeBSD.org" <freebsd-usb@freebsd.org>
Subject:   Re: USB reset fails when using a LimeSDR Mini on FreeBSD
Message-ID:  <20200626172851.872f3a08fa6e632666683230@magnetkern.de>
In-Reply-To: <5c0729f9-9e98-52f7-a5cb-6c5dfd2287a3@selasky.org>
References:  <20200625121052.e9f7e7cbeb68fad264ec80a9@magnetkern.de> <CAM8r67DFFeFCHMh6mAxw=x2LKYnFGwasOLgceo-EQSMOvMHbeg@mail.gmail.com> <20200625200849.6af81489a80c2f97d4f89ee6@magnetkern.de> <CAM8r67AE1K9AK%2BaL4RCn6_BWajvzKO7K99bYZMdH0mr-HQdyGw@mail.gmail.com> <20200625224522.44d6584465cb6e20d17be320@magnetkern.de> <0ec3e5a3-7f31-d1cd-6862-6066c431aa80@selasky.org> <20200626135151.e5542cf97fad213c4ad661f2@magnetkern.de> <5c0729f9-9e98-52f7-a5cb-6c5dfd2287a3@selasky.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 26 Jun 2020 14:47:13 +0200
Hans Petter Selasky <hps@selasky.org> wrote:

> Hi,
> 
> On 2020-06-26 13:51, Jan Behrens wrote:
> > I made the discovery that running the library as root works just fine!
> 
> The libusb_reset_device() function needs root permissions! This is 
> expected. There are specific checks in the kernel for this.

I might have misunderstood your earlier post:

On Thu, 25 Jun 2020 20:16:14 +0200
Hans Petter Selasky <hps@selasky.org> wrote:

> Unless the device requires it, libusb_reset_device(), will only 
> re-enumerate the device. Beware that this only is allowed if you are 
> running the application as root. Else libusb_reset_device() will be a 
> no-operation.
> 
> --HPS

Does this mean that depending on the device, it will either be a
no-operation or a re-enumeration, and in the latter case, root
privileges are required, otherwise not?

Or did you mean that if you are non-root, it will/should always be a
no-operation?

What I don't understand is that the Lime Suite SoapySDR module seems to
work fine on Linux and other operating systems but makes trouble with
FreeBSD. Is it a FreeBSD specific thing that libusb_reset_device()
fails if called as non-root?

> Can you run this app as root, and then change to non-root after 
> libusb_reset_device() has been executed?
> 
> --HPS

It's not really practical. I'd have to patch every program using the
module. But maybe libusb_reset_device() isn't necessary to call?

I could give recommendation to the Lime Suite developers to remove the
libusb_reset_device() call on FreeBSD systems if it is not neccessary.
However, I would like to understand why it is called and what's its
usual purpose, and if there are side effects when removing the call, or
whether the call should/could be replaced by a different call that
"only" requires device privileges. Also: Why does this work on Linux
but fails on FreeBSD? Is the API differently defined?

Sorry for my confusion, I'm really not experienced with USB programming.


Regards,
Jan Behrens



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20200626172851.872f3a08fa6e632666683230>