What I’d like to do in this post is get people commenting on their questions about cloud computing. What it is that you don’t understand, or would like some more insight on? Many people have trouble understanding the cloud when they are first introduced to the concept. There are also different uses for the cloud, from storage to processing power. Please post a question below, and hopefully either the community or myself can answer it.
Here is a great link that gives an overview of the Linux USB core subsystem. This link contains information about how USB devices are initialized in the Linux Kernel. Definitely a recommended read:
In terms of future work, it might be interesting to look into improving the USB debugging functionality. Perhaps add features into a kernel module that extend the functionality of usbmon. It would be important to only have those features on while debugging.
As previously mentioned usbmon can be accessed via packet debug tools like Tcpdump, and Wireshark. However, there is also a user space command line tool to access the URB information. See below:
○ URB Address
○ USB Event Type
○ Transfer Direction:Bus Number:Device
○ Endpoint Number
○ URB Status
Image Reference: http://elinux.
All transactions that are performed for USB devices are sent using the URB (Usb Request Block) structure. These URBs will be first received by the USB core, and then routed to the proper Host Controller Driver(HCD). Once a URB has been processed, then it utilizes a callback to return to the USB core. This method of collecting USB data does come with a little bit of overhead, however it was deemed manageable since Linux developers had no good means of debugging USB before.
Image Reference: http://elinux.
As mentioned in a previous post, usbmon is a kernel level facility. However, it does have a user space counter part that can be found on the inter webs. This kernel facility basically collects packet like information being transferred over all USB buses. Usbmon reports requests that are being performed by Host Controller Drivers (HCD). One should note that usbmon will not provide accurate information if these HCDs are not functioning properly.
Usbmon provides a text based and binary based API to access information being produced. This allows the information being produced by usbmon to be accessed in many ways including: Wireshark, Tcpdump, and even cat.
Throughout our research into USB device drivers we came to realize that USB monitoring can play a big part in development. In some cases, you may need to provide support for a device with no documentation. You will without a doubt turn to some type of USB monitoring tool. After finding several Windows based tool; We found ourselves wonder where all the Linux tools are? At this point we came across usbmon, a Linux kernel facility for monitoring USB devices. Although usbmon does provide all the necssary functions one would need to debug USB, it’s not exactly approachable. Maybe that can be foundation for future work in and out of the kernel.
The USB driver can be developed as a kernel module that can be loaded and unloaded. As a module, the driver must define init and exit functions for when it is loaded and unloaded. The USB core provides an interface for the USB host controller drivers to speak with the hardware devices. The Host Controller Driver will get registered with the USB core, and then the driver can utilize the core.