Click here to learn
about this Sponsor:
Home  |  News  |  Articles  |  Forum

  Home arrow Linux For Devices Articles arrow About the new Linux USB Device support

About the new Linux USB Device support
By Linux Devices

Rate This Article: Add This Article To:

Lineo has released Linux USB Device software, which was developed to support the Sharp Zaurus Linux PDA, under the GNU GPL open source license. The software can be freely downloaded from Lineo's open source website.

This software provides a "stack" which implements USB Devices under Linux.

"But doesn't the Linux kernel (2.4 and later) already contain built-in USB support?", you ask.

Well yes; and no. Read on . . .

One key point to understand about the architecture of USB is that it based on a strict master/slave relationship. On any USB bus, there is a single master, generally referred to as a USB Host, and there can be multiple slaves, generally referred to as USB Devices. The USB support that is present in the currently released Linux kernel implements the USB Host function, only. Therefore, for a device which uses Embedded Linux as it's internal OS to act as a USB Device, new support was required.

A second important point about USB is that it implements a (usually reliable) data transport layer between the USB Host and the various USB Devices that are attached to it. But there is no specific device model, such as a serial or printer port, NIC, CDROM, etc., implemented by USB. Instead each USB Device implements a function that talks to a driver on the USB Host, that knows what the USB Function does (e.g. a serial or printer port, NIC, CDROM, etc.).

The typical way the USB Host implementations do this, under both Windows and Linux, is to seperate the high level protocol handlers into seperate drivers (typically called class or client) that are independant of the actual host interface drivers (usually UHCI or OHCI for most desktop computers).

So what we did was to implement a similar structure on the USB Device side, resulting in something like the following:



Currently you must compile the USB Device stack in the kernel environement. That is, untar the source in linux/drivers and make a couple of minor changes (typically drivers/Makefile and arch/???/config.in). The end result is three modules, typically something like . . .
  • usbdcore.o
  • net_fd.o
  • sa1100_bi.o
. . . which are then loaded to implement what looks like a network interface using USB to connect you to the USB Host.

Currently, there are two available function drivers . . .
  • network
  • serial
And there are bus interface drivers for . . .
  • StrongARM SA1110
  • ScanLogic SL11
  • Linkup L7205
  • Hitachi SH7727
. . . with work in progress to support Xscale and several other platforms.

The data path has been optimized for speed. For example, on a 206Mhz StrongARM (e.g. Sharp Zaurus), it is possible to download (Host to Device) at up to 850Kbytes/sec and upload (Device to Host) at 800Kbytes/sec (urlget over network connection). This is fairly close to the maximum throughput available for transfers using Bulk IO transactions.

For the Embedded developer, the following questions need to be asked . . .
  1. What bus interface driver?
  2. What function driver?
  3. What class driver for Linux?
  4. what class driver for Windows?
If the device already has a bus interface driver implemented, then it should not be difficult to use. However, depending on the device, some adaptation may be required. It may be necessary to support things like detecting when the device is attached to the bus, and controlling when the device enables itself onto the bus. Such functions are not always implemented in the basic USB function hardware.

If the required function driver has been implemented (currently serial and network), then it should work without change. If a new function is required, then it would be implemented as a separate driver module.

Typically, for testing, at least a Linux USB Host Client driver will be required (again, both serial and network compatible client drivers have already been implemented). If a new function is being developed, then a new Linux Host driver may also be required -- unless an existing driver can be used, or modified for use.

Finally, the most difficult (or expensive) decision is, in many ways, determining what to use for a Windows USB Host Client driver. In some cases, it may be possible to use an existing (i.e. provided by Microsoft) driver. But in many cases, if your underlying USB Device hardware does not have enough resources (endpoints, ability to support multiple interfaces), then a custom driver may be required. Commercial USB device drivers exist that can be licensed, or a driver can be implemented from scratch. Unfortunately, few high quality open source drivers for Windows are currently available.




About the author: Stuart Lynne, a Senior Engineer at Lineo Inc., has been a Unix/Linux developer since 1984. He has worked on fax software, web servers, network authentication via radius and LDAP, mail, and imap servers, and network, 802.11 wireless, flash, and USB drivers.




Device-support/ class=sidenav>Discuss About the new Linux USB Device support
 
>>> Device-support/ class=sidenav>Be the FIRST to comment on this article!
 
 
 
>>> More Linux For Devices Articles Articles          >>> More By Linux Devices
 



FUEL Database on MontaVista Linux
Whether building a mobile handset, a car navigation system, a package tracking device, or a home entertainment console, developers need capable software systems, including an operating system, development tools, and supporting libraries, to gain maximum benefit from their hardware platform and to meet aggressive time-to-market goals.

Breaking New Ground: The Evolution of Linux Clustering
With a platform comprising a complete Linux distribution, enhanced for clustering, and tailored for HPC, Penguin Computing¿s Scyld Software provides the building blocks for organizations from enterprises to workgroups to deploy, manage, and maintain Linux clusters, regardless of their size.

Data Monitoring with NightStar LX
Unlike ordinary debuggers, NightStar LX doesn¿t leave you stranded in the dark. It¿s more than just a debugger, it¿s a whole suite of integrated diagnostic tools designed for time-critical Linux applications to reduce test time, increase productivity and lower costs. You can debug, monitor, analyze and tune with minimal intrusion, so you see real execution behavior. And that¿s positively illuminating.

Virtualizing Service Provider Networks with Vyatta
This paper highlights Vyatta's unique ability to virtualize networking functions using Vyatta's secure routing software in service provider environments.

High Availability Messaging Solution Using AXIGEN, Heartbeat and DRBD
This white paper discusses a high-availability messaging solution relying on the AXIGEN Mail Server, Heartbeat and DRBD. Solution architecture and implementation, as well as benefits of using AXIGEN for this setup are all presented in detail.

Understanding the Financial Benefits of Open Source
Will open source pay off? Open source is becoming standard within enterprises, often because of cost savings. Find out how much of a financial impact it can have on your organization. Get this methodology and calculator now, compliments of JBoss.

Embedded Hardware and OS Technology Empower PC-Based Platforms
The modern embedded computer is the jack of all trades appearing in many forms.

Data Management for Real-Time Distributed Systems
This paper provides an overview of the network-centric computing model, data distribution services, and distributed data management. It then describes how the SkyBoard integration and synchronization service, coupled with an implementation of the OMG¿s Data Distribution Service (DDS) standard, can be used to create an efficient data distribution, storage, and retrieval system.

7 Advantages of D2D Backup
For decades, tape has been the backup medium of choice. But, now, disk-to-disk (D2D) backup is gaining in favor. Learn why you should make the move in this whitepaper.

Got a HOT tip?   please tell us!
Free weekly newsletter
Enter your email...
PLATINUM SPONSORS

 


ADVERTISEMENT


Check out the latest Linux powered...

Mobile phones!

MIDs, UMPCs
& tablets

Mobile devices

Other cool
gadgets

Resource Library

• Unix, Linux Uptime and Reliability Increase: Patch Management Woes Plague Windows Yankee Group survey finds IBM AIX Unix is highest in ...
• Scalable, Fault-Tolerant NAS for Oracle - The Next Generation For several years NAS has been evolving as a storage ...
• Managing Software Intellectual Property in an Open Source World This whitepaper draws on the experiences of the Black Duck ...
• Open Source Security Myths Dispelled Is it risky to trust mission-critical infrastructure to open source ...
• Bringing IT Operations Management to Open Source & Beyond Download this IDC analyst report to learn how open source ...




Most popular stories -- past 90 days:
· Linux boots in 2.97 seconds
· Tiniest Linux system, yet?
· Linux powers "cloud" gaming console
· Report: T-Mobile sells out first 1.5 million G1s
· Open set-top box ships
· E17 adapted to Linux devices, demo'd on Treo650
· Android debuts
· First ALP Linux smartphone?
· Cortex-A8 gaming handheld runs Linux
· Ubuntu announces ARM port


DesktopLinux headlines:
· Simulator runs Android apps on Ubuntu
· Hypervisor rev'd for higher reliability
· Pluggable NAS now supports Linux desktops
· Moblin v2 beta targets netbooks
· Linux-ready netbook touted as "Student rugged"
· USB display technology heading for Linux
· Ubuntu One takes baby step to the cloud
· Game over for Linux netbooks?
· Linux Foundation relaunches Linux web site
· Dell spins lower-cost netbook


Also visit our sister site:


Sign up for LinuxForDevices.com's...

news feed


Or, follow us on Twitter...