Re: UAC2 gadget not recognized on Windows 10

2018-06-20 Thread jonsm...@gmail.com
On Wed, Jun 20, 2018 at 11:19 AM Jassi Brar  wrote:
>
> On Wed, Jun 20, 2018 at 8:32 PM, jonsm...@gmail.com  
> wrote:
> >
> >
> >
> > On Wed, Jun 20, 2018 at 9:36 AM Jassi Brar  wrote:
> >>
> >> On Tue, Feb 13, 2018 at 3:02 PM, Robert Bielik  
> >> wrote:
> >> >> Enabling SOF interrupts will be a big pain :-) Well, enabling the
> >> >> interrupt itself is a no-brainer, but it'll cause terrible CPU overload.
> >> >
> >> > Oh, I see. Hmm... would it be possible to allow upper levels to config 
> >> > this dynamically ? I.e. for the ALSA subsystem there is no need for the 
> >> > SOF timestamps, whereas for my proposal they would be needed.
> >> >
> >> >  And what kind of CPU overhead are we talking about ? The IRQs shouldn't 
> >> > come more often than every 125 us, and all that is needed is to take a 
> >> > timestamp value But I'm probably overlooking a lot of stuff...
> >> >
> >> I believe we could control data rate precisely enough for the
> >> feeedback ep to be needed only for compatibility with Windows (Linux
> >> is already tested to work fine, MacOS is reported to have worked when
> >> the code was upstreamed.).
> >
> >
> > Right now Windows 10 (all I have checked) refuses to even connect to a 
> > Linux based UAC2 device. It appears to be complaining that no endpoint 
> > supporting USB_ENDPOINT_USAGE_FEEDBACK mode is implement. My five minutes 
> > of poking in the spec implies that implementing this is required for an 
> > endpoint doing USB_ENDPOINT_SYNC_ASYNC.  Maybe this is something that can 
> > be faked to the point of allowing Windows to connect to the UAC2 gadget 
> > driver?
> >
> Thats what I meant.
>
> > The Windows error you get is:
> > "The driver could not find a feedback endpoint for an asynchronous data OUT 
> > endpoint on device \Device\."
> >
> For OUT, there might be some hoops to jump. Honestly it's been years
> since I read the spec and got the code to work. I find it tempting to
> look into Windows 10 as well, but I can't commit to a timeline.

For my application there is no recording HW on the gadget. Maybe a
quick way to fix this would be to make a flag to say that the gadget
is output only? And then change the descriptors around?

That would also help with my specific hardware case where the USB
controller only supports ISOCHRONOUS in a single direction. Limitation
of an Allwinner chip.


>
> Cheers!



-- 
Jon Smirl
jonsm...@gmail.com
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Allocation failure of USB URB in interrupt

2013-10-07 Thread jonsm...@gmail.com
 this message because you are subscribed to the Google
Groups linux-sunxi group.
To unsubscribe from this group and stop receiving emails from it, send
an email to linux-sunxi+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


-- 
Jon Smirl
jonsm...@gmail.com
--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Plug and play for a tty line disciple networking device

2013-03-20 Thread jonsm...@gmail.com
On Wed, Mar 20, 2013 at 7:26 PM, Greg KH gre...@linuxfoundation.org wrote:
 On Tue, Mar 19, 2013 at 11:30:05AM -0400, jonsm...@gmail.com wrote:
 How can you achieve plug and play for a ft2232 based USB serial device
 implementing 802.15.4 networking?

 The device has a 802.15.4 SOC with a UART attached to a ft2232. With
 firmware loaded the only thing it can do is talk the 802.15.4 tty line
 discipline, it is not a general purpose serial port.

 Right now the device works by plugging it in and it appears as a
 generic USB serial device like ttyUSB0. You then run a user space app
 which sets the line discipline, holds the port open and attaches it to
 the 6lowpan implementation in the networking code. But doing that is
 inconvenient and users needs to be trained to do it. Much simpler if
 we could just plug the device in and it worked.

 We can add a EEPROM to the ft2232 to give it a unique USB ID.  Is it
 possible to make a kernel driver that see this ID, sets the line
 discipline and wires the serial port directly into the networking
 code?

 Yes, you can do that.

Is there an existing driver in the kernel that does this?
So far all of the ones I've checked still need a user space app.


 greg k-h



--
Jon Smirl
jonsm...@gmail.com
--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Plug and play for a tty line disciple networking device

2013-03-20 Thread jonsm...@gmail.com
On Wed, Mar 20, 2013 at 8:14 PM, Greg KH gre...@linuxfoundation.org wrote:
 On Wed, Mar 20, 2013 at 08:04:29PM -0400, jonsm...@gmail.com wrote:
 On Wed, Mar 20, 2013 at 7:26 PM, Greg KH gre...@linuxfoundation.org wrote:
  On Tue, Mar 19, 2013 at 11:30:05AM -0400, jonsm...@gmail.com wrote:
  How can you achieve plug and play for a ft2232 based USB serial device
  implementing 802.15.4 networking?
 
  The device has a 802.15.4 SOC with a UART attached to a ft2232. With
  firmware loaded the only thing it can do is talk the 802.15.4 tty line
  discipline, it is not a general purpose serial port.
 
  Right now the device works by plugging it in and it appears as a
  generic USB serial device like ttyUSB0. You then run a user space app
  which sets the line discipline, holds the port open and attaches it to
  the 6lowpan implementation in the networking code. But doing that is
  inconvenient and users needs to be trained to do it. Much simpler if
  we could just plug the device in and it worked.
 
  We can add a EEPROM to the ft2232 to give it a unique USB ID.  Is it
  possible to make a kernel driver that see this ID, sets the line
  discipline and wires the serial port directly into the networking
  code?
 
  Yes, you can do that.

 Is there an existing driver in the kernel that does this?
 So far all of the ones I've checked still need a user space app.

 Look at the bluetooth drivers, they have their own line dicipline I
 think.

Bluetooth drivers use line discipline on UARTs. On USB they have their
own set of Bluetooth descriptors.

CAN over serial has a line discipline but it needs a user space app.



 greg k-h



--
Jon Smirl
jonsm...@gmail.com
--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Plug and play for a tty line disciple networking device

2013-03-20 Thread jonsm...@gmail.com
On Wed, Mar 20, 2013 at 8:25 PM, Marcel Holtmann mar...@holtmann.org wrote:
 Hi Greg,

 How can you achieve plug and play for a ft2232 based USB serial device
 implementing 802.15.4 networking?

 The device has a 802.15.4 SOC with a UART attached to a ft2232. With
 firmware loaded the only thing it can do is talk the 802.15.4 tty line
 discipline, it is not a general purpose serial port.

 Right now the device works by plugging it in and it appears as a
 generic USB serial device like ttyUSB0. You then run a user space app
 which sets the line discipline, holds the port open and attaches it to
 the 6lowpan implementation in the networking code. But doing that is
 inconvenient and users needs to be trained to do it. Much simpler if
 we could just plug the device in and it worked.

 We can add a EEPROM to the ft2232 to give it a unique USB ID.  Is it
 possible to make a kernel driver that see this ID, sets the line
 discipline and wires the serial port directly into the networking
 code?

 Yes, you can do that.

 Is there an existing driver in the kernel that does this?
 So far all of the ones I've checked still need a user space app.

 Look at the bluetooth drivers, they have their own line dicipline I
 think.

 yes we do. And we also have a userspace tool (hciattach) to setup the line 
 discipline. However the automatic setup can be easily automated with a simple 
 udev rule.

Doesn't hciattach have to hang around as a process holding the tty device open?



 Regards

 Marcel




--
Jon Smirl
jonsm...@gmail.com
--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Plug and play for a tty line disciple networking device

2013-03-20 Thread jonsm...@gmail.com
On Wed, Mar 20, 2013 at 8:38 PM, Greg KH gre...@linuxfoundation.org wrote:
 On Wed, Mar 20, 2013 at 08:25:15PM -0400, jonsm...@gmail.com wrote:
 On Wed, Mar 20, 2013 at 8:14 PM, Greg KH gre...@linuxfoundation.org wrote:
  On Wed, Mar 20, 2013 at 08:04:29PM -0400, jonsm...@gmail.com wrote:
  On Wed, Mar 20, 2013 at 7:26 PM, Greg KH gre...@linuxfoundation.org 
  wrote:
   On Tue, Mar 19, 2013 at 11:30:05AM -0400, jonsm...@gmail.com wrote:
   How can you achieve plug and play for a ft2232 based USB serial device
   implementing 802.15.4 networking?
  
   The device has a 802.15.4 SOC with a UART attached to a ft2232. With
   firmware loaded the only thing it can do is talk the 802.15.4 tty line
   discipline, it is not a general purpose serial port.
  
   Right now the device works by plugging it in and it appears as a
   generic USB serial device like ttyUSB0. You then run a user space app
   which sets the line discipline, holds the port open and attaches it to
   the 6lowpan implementation in the networking code. But doing that is
   inconvenient and users needs to be trained to do it. Much simpler if
   we could just plug the device in and it worked.
  
   We can add a EEPROM to the ft2232 to give it a unique USB ID.  Is it
   possible to make a kernel driver that see this ID, sets the line
   discipline and wires the serial port directly into the networking
   code?
  
   Yes, you can do that.
 
  Is there an existing driver in the kernel that does this?
  So far all of the ones I've checked still need a user space app.
 
  Look at the bluetooth drivers, they have their own line dicipline I
  think.

 Bluetooth drivers use line discipline on UARTs. On USB they have their
 own set of Bluetooth descriptors.

 CAN over serial has a line discipline but it needs a user space app.

 In your driver, just attach the line discipline directly to the tty
 device you create.  You will not be using the normal usb-serial logic
 at all if you do this, but you should be fine, right?

USB serial port is based on the FT2232 so we've been using that driver.

Modifying that driver was my plan for doing this. I was hoping that
there was a more generic way to achieve the same effect.

It works this way because of ancient history. We used to have dial up
terminal sessions into time share unix. Then you'd run a SLIP app to
convert the terminal session into a TCP/IP session. The assumption in
that scenario is that there is a useful terminal session on the serial
connection. In our case the only thing the connection does is talk
talk the line discipline.

I know how to do it like hciattach. We already have izattach. I'm just
trying to get rid of this pointless app that nobody understands why it
is there.



 greg k-h



--
Jon Smirl
jonsm...@gmail.com
--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Plug and play for a tty line disciple networking device

2013-03-20 Thread jonsm...@gmail.com
On Wed, Mar 20, 2013 at 8:56 PM, Greg KH gre...@linuxfoundation.org wrote:
 On Wed, Mar 20, 2013 at 08:49:50PM -0400, jonsm...@gmail.com wrote:
 On Wed, Mar 20, 2013 at 8:38 PM, Greg KH gre...@linuxfoundation.org wrote:
  On Wed, Mar 20, 2013 at 08:25:15PM -0400, jonsm...@gmail.com wrote:
  On Wed, Mar 20, 2013 at 8:14 PM, Greg KH gre...@linuxfoundation.org 
  wrote:
   On Wed, Mar 20, 2013 at 08:04:29PM -0400, jonsm...@gmail.com wrote:
   On Wed, Mar 20, 2013 at 7:26 PM, Greg KH gre...@linuxfoundation.org 
   wrote:
On Tue, Mar 19, 2013 at 11:30:05AM -0400, jonsm...@gmail.com wrote:
How can you achieve plug and play for a ft2232 based USB serial 
device
implementing 802.15.4 networking?
   
The device has a 802.15.4 SOC with a UART attached to a ft2232. With
firmware loaded the only thing it can do is talk the 802.15.4 tty 
line
discipline, it is not a general purpose serial port.
   
Right now the device works by plugging it in and it appears as a
generic USB serial device like ttyUSB0. You then run a user space 
app
which sets the line discipline, holds the port open and attaches it 
to
the 6lowpan implementation in the networking code. But doing that is
inconvenient and users needs to be trained to do it. Much simpler if
we could just plug the device in and it worked.
   
We can add a EEPROM to the ft2232 to give it a unique USB ID.  Is it
possible to make a kernel driver that see this ID, sets the line
discipline and wires the serial port directly into the networking
code?
   
Yes, you can do that.
  
   Is there an existing driver in the kernel that does this?
   So far all of the ones I've checked still need a user space app.
  
   Look at the bluetooth drivers, they have their own line dicipline I
   think.
 
  Bluetooth drivers use line discipline on UARTs. On USB they have their
  own set of Bluetooth descriptors.
 
  CAN over serial has a line discipline but it needs a user space app.
 
  In your driver, just attach the line discipline directly to the tty
  device you create.  You will not be using the normal usb-serial logic
  at all if you do this, but you should be fine, right?

 USB serial port is based on the FT2232 so we've been using that driver.

 Modifying that driver was my plan for doing this. I was hoping that
 there was a more generic way to achieve the same effect.

 No, sorry, stick with doing this from userspace, it's a simple one-line
 udev rule, right?

It is fairly simple to do from user space. But you have to find and
install the pointless user space app and then get it pointed at the
correct tty.

That app is a hold over from the ancient days. When you killed it the
serial line would drop the line discipline and revert back to a
terminal session.

What you really want is for devices in this class is to not create a
user space tty device at all. They should just make a net-device. But
there is no way to suppress the creation of the user space tty device.
So we get two both devices and the xx-attach app.


 greg k-h



--
Jon Smirl
jonsm...@gmail.com
--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Plug and play for a tty line disciple networking device

2013-03-20 Thread jonsm...@gmail.com
On Wed, Mar 20, 2013 at 9:19 PM, Alan Ott a...@signal11.us wrote:
 On 03/20/2013 09:12 PM, jonsm...@gmail.com wrote:
 On Wed, Mar 20, 2013 at 8:56 PM, Greg KH gre...@linuxfoundation.org wrote:
 On Wed, Mar 20, 2013 at 08:49:50PM -0400, jonsm...@gmail.com wrote:
 On Wed, Mar 20, 2013 at 8:38 PM, Greg KH gre...@linuxfoundation.org 
 wrote:
 On Wed, Mar 20, 2013 at 08:25:15PM -0400, jonsm...@gmail.com wrote:
 On Wed, Mar 20, 2013 at 8:14 PM, Greg KH gre...@linuxfoundation.org 
 wrote:
 On Wed, Mar 20, 2013 at 08:04:29PM -0400, jonsm...@gmail.com wrote:
 On Wed, Mar 20, 2013 at 7:26 PM, Greg KH gre...@linuxfoundation.org 
 wrote:
 On Tue, Mar 19, 2013 at 11:30:05AM -0400, jonsm...@gmail.com wrote:
 How can you achieve plug and play for a ft2232 based USB serial 
 device
 implementing 802.15.4 networking?

 The device has a 802.15.4 SOC with a UART attached to a ft2232. With
 firmware loaded the only thing it can do is talk the 802.15.4 tty 
 line
 discipline, it is not a general purpose serial port.

 Right now the device works by plugging it in and it appears as a
 generic USB serial device like ttyUSB0. You then run a user space app
 which sets the line discipline, holds the port open and attaches it 
 to
 the 6lowpan implementation in the networking code. But doing that is
 inconvenient and users needs to be trained to do it. Much simpler if
 we could just plug the device in and it worked.

 We can add a EEPROM to the ft2232 to give it a unique USB ID.  Is it
 possible to make a kernel driver that see this ID, sets the line
 discipline and wires the serial port directly into the networking
 code?
 Yes, you can do that.
 Is there an existing driver in the kernel that does this?
 So far all of the ones I've checked still need a user space app.
 Look at the bluetooth drivers, they have their own line dicipline I
 think.
 Bluetooth drivers use line discipline on UARTs. On USB they have their
 own set of Bluetooth descriptors.

 CAN over serial has a line discipline but it needs a user space app.
 In your driver, just attach the line discipline directly to the tty
 device you create.  You will not be using the normal usb-serial logic
 at all if you do this, but you should be fine, right?
 USB serial port is based on the FT2232 so we've been using that driver.

 Modifying that driver was my plan for doing this. I was hoping that
 there was a more generic way to achieve the same effect.
 No, sorry, stick with doing this from userspace, it's a simple one-line
 udev rule, right?
 It is fairly simple to do from user space. But you have to find and
 install the pointless user space app and then get it pointed at the
 correct tty.

 The udev rule would handle calling izattach automatically.

 That app is a hold over from the ancient days. When you killed it the
 serial line would drop the line discipline and revert back to a
 terminal session.

 What you really want is for devices in this class is to not create a
 user space tty device at all. They should just make a net-device. But
 there is no way to suppress the creation of the user space tty device.
 So we get two both devices and the xx-attach app.

 The udev rule would run when the device gets attached and would call
 izattach without any need for user interaction. The user would never
 even need to know what /dev/ttyUSBx ever got assigned to it.

We can just leave everything the way it is, but I hit this same
problem on another project a few years ago.

There's just no generic solution in the kernel for handling serially
connected networking hardware without having a pointless user space
app.

Maybe we could make a generic pointless app and get rid of hciattach,
canattach, izattach, etc. The generic app would get the line
discipline as part of the udev rule.  Even better - put the generic
xx-attach code inside udev so we don't have pointless processes
hanging around.

This is all the code does--
see device appear
open device
set line discipline
hold device exclusively open
...
wait for device to disappear
exit.


 Alan.




--
Jon Smirl
jonsm...@gmail.com
--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Plug and play for a tty line disciple networking device

2013-03-20 Thread jonsm...@gmail.com
On Wed, Mar 20, 2013 at 9:33 PM, Alan Ott a...@signal11.us wrote:
 On 03/20/2013 09:28 PM, jonsm...@gmail.com wrote:
 On Wed, Mar 20, 2013 at 9:19 PM, Alan Ott a...@signal11.us wrote:
 On 03/20/2013 09:12 PM, jonsm...@gmail.com wrote:
 On Wed, Mar 20, 2013 at 8:56 PM, Greg KH gre...@linuxfoundation.org 
 wrote:
 On Wed, Mar 20, 2013 at 08:49:50PM -0400, jonsm...@gmail.com wrote:
 On Wed, Mar 20, 2013 at 8:38 PM, Greg KH gre...@linuxfoundation.org 
 wrote:
 On Wed, Mar 20, 2013 at 08:25:15PM -0400, jonsm...@gmail.com wrote:
 On Wed, Mar 20, 2013 at 8:14 PM, Greg KH gre...@linuxfoundation.org 
 wrote:
 On Wed, Mar 20, 2013 at 08:04:29PM -0400, jonsm...@gmail.com wrote:
 On Wed, Mar 20, 2013 at 7:26 PM, Greg KH 
 gre...@linuxfoundation.org wrote:
 On Tue, Mar 19, 2013 at 11:30:05AM -0400, jonsm...@gmail.com wrote:
 How can you achieve plug and play for a ft2232 based USB serial 
 device
 implementing 802.15.4 networking?

 The device has a 802.15.4 SOC with a UART attached to a ft2232. 
 With
 firmware loaded the only thing it can do is talk the 802.15.4 tty 
 line
 discipline, it is not a general purpose serial port.

 Right now the device works by plugging it in and it appears as a
 generic USB serial device like ttyUSB0. You then run a user space 
 app
 which sets the line discipline, holds the port open and attaches 
 it to
 the 6lowpan implementation in the networking code. But doing that 
 is
 inconvenient and users needs to be trained to do it. Much simpler 
 if
 we could just plug the device in and it worked.

 We can add a EEPROM to the ft2232 to give it a unique USB ID.  Is 
 it
 possible to make a kernel driver that see this ID, sets the line
 discipline and wires the serial port directly into the networking
 code?
 Yes, you can do that.
 Is there an existing driver in the kernel that does this?
 So far all of the ones I've checked still need a user space app.
 Look at the bluetooth drivers, they have their own line dicipline I
 think.
 Bluetooth drivers use line discipline on UARTs. On USB they have their
 own set of Bluetooth descriptors.

 CAN over serial has a line discipline but it needs a user space app.
 In your driver, just attach the line discipline directly to the tty
 device you create.  You will not be using the normal usb-serial logic
 at all if you do this, but you should be fine, right?
 USB serial port is based on the FT2232 so we've been using that driver.

 Modifying that driver was my plan for doing this. I was hoping that
 there was a more generic way to achieve the same effect.
 No, sorry, stick with doing this from userspace, it's a simple one-line
 udev rule, right?
 It is fairly simple to do from user space. But you have to find and
 install the pointless user space app and then get it pointed at the
 correct tty.
 The udev rule would handle calling izattach automatically.

 That app is a hold over from the ancient days. When you killed it the
 serial line would drop the line discipline and revert back to a
 terminal session.

 What you really want is for devices in this class is to not create a
 user space tty device at all. They should just make a net-device. But
 there is no way to suppress the creation of the user space tty device.
 So we get two both devices and the xx-attach app.
 The udev rule would run when the device gets attached and would call
 izattach without any need for user interaction. The user would never
 even need to know what /dev/ttyUSBx ever got assigned to it.
 We can just leave everything the way it is, but I hit this same
 problem on another project a few years ago.

 There's just no generic solution in the kernel for handling serially
 connected networking hardware without having a pointless user space
 app.

 Maybe we could make a generic pointless app and get rid of hciattach,
 canattach, izattach, etc. The generic app would get the line
 discipline as part of the udev rule.  Even better - put the generic
 xx-attach code inside udev so we don't have pointless processes
 hanging around.

 Actually, you could use stty for that in the udev rule. You'd have to
 use the line discipline number instead of the name, but those are part
 of the userspace ABI, so they won't change.

stty won't keep the port locked.  Just have to trust people not to mess with it.





--
Jon Smirl
jonsm...@gmail.com
--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Plug and play for a tty line disciple networking device

2013-03-20 Thread jonsm...@gmail.com
For an in-kernel solution serial-core would be to modified with a
create parameter that says don't make a user space device. Then when
the line discipline is registered on a hidden device make it
automatically active. FTDI driver USB ID array would get a parameter
for line discipline. If parameter is non-zero create the device in
hidden mode and set the line disciple.

Probably easier to just make new hardware with a real USB
implementation on the chip. Like the CC2531. But then I'd have to
program an 8051.

--
Jon Smirl
jonsm...@gmail.com
--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html