Re: Emulating USB devices from userspace

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

 



On Fri, Dec 09, 2016 at 12:38:23AM +0100, Andrey Konovalov wrote:
> Hi,
> 
> I'm working on a way to extend syzkaller [1] to support fuzzing of the
> USB subsystem. The idea is to be able to emulate various USB devices
> and fuzz communication between the emulated device and the kernel. I'm
> looking for a way to emulate devices from userspace. Similar to how
> tuntap allows to create virtual network interfaces and emit ethernet
> traffic by writing to /dev/net/tun.
> 
> While googling for some information on this I found mentions of
> gadgetfs and functionfs. As far as I understand, they allow to turn a
> USB host into a gadget and provide a way to communicate with another
> host from a userspace application running on the gadget machine.

Not quite.  They are to drive a USB "gadget" device (i.e. the thing you
plug into a USB host, like a keyboard).  You use that if you are running
Linux inside of that keyboard.  Or inside your phone, it uses this
interface when talking to your laptop.

> There's also usbfs, which allows to communicate with a usb gadget
> directly from a userspace application.

usbfs is to talk to a USB gadget through the host controller, so you can
use it to fuzz a USB gadget driver, if a host driver is not already
bound to the device.

> Am I right, that none of the above actually fit my needs?

No, it should fit your needs just fine.  Use the dummy USB gadget
controller driver to set up the USB gadget device, and control it that
way.  It is how many people develop their USB gadget drivers directly on
a non-gadget system (like a desktop.)

> Is there some way to emulate USB devices from a userspace application
> via some kernel interface?

Yes, use functionfs.

have fun!

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



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

  Powered by Linux