Re: Documentation for Raw USB ConfigFS

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, May 13, 2020, at 5:05 AM, Peter Chen wrote:
> On 20-05-13 10:36:05, Felipe Balbi wrote:
> > 
> > Hi,
> > 
> > "Sid Spry" <sid@xxxxxxx> writes:
> > 
> > > Hi Peter, thanks for pointing me towards the ffs-test. Unfortunately after
> > > some exploration in that area I still don't see how I would add a preexisting
> > > function to the configuration to be handled by the kernel.
> > >
> > > I do see something in an AIO test in the host code where libusb is used to
> > > bind a kernel driver to an endpoint. Is that something that will be necessary?
> > > Device side, I'm still unsure how I tell the function to handle ECM/ethernet
> > > on a collection of endpoints.
> > >
> > > I understand how USB works fairly well, especially on microcontrollers, but am
> > > a little lost still in understanding the Linux machinery for USB.
> > 
> 
> Would you please let ECM gadget work first at your board, then let f_fs work
> using test application (you need to compile both host and device
> application for it). After that, you may have more precise concept for
> Linux USB gadget framework.
> 

I don't see anything that harmonizes preexsting function usage with specifying custom endpoints.

I've gotten the ECM gadget, and then the ECM gadget via ffs working. I've read through the ffs test but I don't see any way to assign functionality to the endpoints. The example seems to transport raw data via a bulk endpoint. I know enough to instead assign an isochronous endpoint to the UDC and transfer via that, but I don't want it to be the *only* functionality the device offers.

Are you saying I can assign the ECM gadget via ffs and then add another driver after the fact? This isn't really spelled out in the documentation (from what I can see). I was operating under the assumption that assigning the UDC claims it and it's not a shared resource. I've already run into issues where certain configurations use up the available endpoints or cause other issues.

For reference here is what I am currently doing:

---

modprobe g_ffs
cd /sys/kernel/config/usb_gadget

if [[ -d "g1" ]]; then
	echo "" > UAC
	rm -rf g1;
fi

mkdir g1
cd g1

echo "0x1d6b" > idVendor
echo "0x0104" > idProduct

mkdir strings/0x409
echo "0000000000" > strings/0x409/serialnumber
echo "Foo Bar Inc." > strings/0x409/manufacturer
echo "Trololololo" > strings/0x409/product

mkdir functions/ecm.usb0
mkdir functions/uac2.dev0
mkdir functions/midi.dev0

mkdir configs/c.1
ln -s functions/ecm.usb0 configs/c.1
ln -s functions/uac2.dev0 configs/c.1
ln -s functions/midi.dev0 configs/c.1

echo "musb-hdrc.2.auto" > UDC



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux