Blender Portable App USB

Blender Portable App USB

The Blender Portable App packs in modeling, animation, and rendering features all into one small file. Flawless in its features, flexibility, ease-of-use, and variety, Blender Portable is an immense undertaking and one that paid off completely when it was launched.

Blender Portable is a smaller, lighter, no-install version of the original powerhouse 3D content creation suite. You don’t have to install this program onto your computer, so that means you don’t have to mess around administrative permissions or complicated set up processes that are involved with the full suite. You simply open up the file by clicking on its icon, and does the rest all on its own. If you’ve never used this software before, the Blender Portable interface can be a little overwhelming.

There are quite a few different panels and bars, all full of explanations and icons, with tooltips for everything. The interface is also completely customizable, as you can add and remove sections as desired, as well as moving them around and resizing them. Beneath the options menus are a world of functions, ranging from rigging and modeling to animation and game creation. In fact, Blender Portable has so many functions that listing them all here would take hours, so take a peek at the definitive feature guide here. Among the more surprising elements included in the program are a built-in text editor, audio playback/editing and a game engine.

Blender Portable has no configuration options since the entire suite of features can be accessed directly from the main interface provided. It really is a program built more for expert designers, or for users who would like to become a whole lot more proficient in 3D animation and design.

There are a lot of good tutorials online that will get you making basic animations and 3D creations, but in general, Blender Portable is not a program that casual users would – or should – play around with. If 3D creation is your thing and you don’t have a copy, you’re almost certainly missing out.

Blender Portable is a hugely impressive 3D creation program that is very likely to scare off the uninitiated.

Blender Portable supports the following formats

  • TGA, JPG, PNG, OpenEXR, DPX, Cineon, Radiance HDR, Iris, SGI Movie, IFF, AVI and Quicktime GIF, TIFF, PSD, MOV (Windows and Mac OS X)
  • 3D Studio, AC3D, COLLADA, FBX Export, DXF, Wavefront OBJ, DEC Object File Format, DirectX, Lightwave, MD2

Pros

  • Incredible variety of features
  • Extensive online help
  • Non-overlapping interface

Cons

  • Aimed at advanced users
  • Sheer degree of variety is overwhelming

Bank of America Files for Patent on ATM with a USB Port

Bank of America Files for Patent on ATM with a USB PortFor those of you who don’t know, Bank of America is a large financial services and banking corporation that operates in all 50 states across America. Despite its prestigious stature amongst the American public and its stretch across the entire nation, Bank of America has come under some fire with federal prosecutors lately. In early November 2013, a motion was filed in the U.S. District Court of Manhattan, NY to fine the institution $864 million for bad mortgage loans sold by Countryside, a subsidiary, to Freddie Mac and Fannie Mae in the leadup to the 2008 financial crisis. However, many of these sales occurred before Bank of America acquired Countryside in 2008. With a new CEO in place as of 2010, the corporation has been trying to reduce financial losses incurred by its many acquisitions during the global financial crisis.

And yet, despite its various setbacks, the corporation continues to pursue a number of interesting projects. The US Patent and Trademark Office, for one, regularly deal with Bank of America as an individual patent applicant. One unusual patent filing particularly caught our attention here at USB Tips. It discusses the operation of an automatic teller machine (ATM) that also includes a universal serial bus (USB) port in its design. This USB port would allow the ATM to connect to external security devices, such as a fingerprint scanner, to provide authentication.

ATMs are extremely convenient for bank account customers who want to quickly withdraw or deposit funds. Unfortunately, these incredible machines also make it easier for thieves to steal financial data that can lead to dramatic losses for account holders and banks. Reports from the European ATM Security Team (EAST) show that ATM-related crimes increased in Europe by almost 150 percent between 2008 and 2009. In 2008 alone, more than 10,000 ATM skimming attacks were reported across the continent. There are a couple of ways that criminals can compromise an ATM in order to illegally access critical financial data. Pinhole cameras small enough to escape notice from the general public can record video of authorized users entering their PIN on the provided ATM keypad. Skimmer devices, also hard to detect by unwitting users, can read magnetic strips on ATM cards to determine encrypted information from users engaged with an ATM machine.

The patent application filed by Bank of America with the USPTO would protect the design of an ATM that has a USB port. This USB port is capable of connecting a fingerprint scanner device to the ATM. The fingerprint data collected by this scanner can be used biometrically to identify the actual identity of an authorized user, preventing theft through any sort of illegal access attempts through an ATM. The system laid out in this patent application would be capable of working with many types of fingerprint scanning technologies, including ultrasonic sensors, optical imaging or capacitance sensors. Basically, fingerprint scans can be conducted directly on the keypad buttons or touchscreen of an ATM, according to the attached images Fingerprint scan data obtained by these devices can be sent to a telecommunications server through a transmitter included as part of this system.

Claim 1 of U.S. Patent Application No. 20130264384 application states:

“An Automated Teller Machine (“ATM”) for authenticating an identity of a user, the ATM comprising: a fingerprint scanner being configured to capture at least a portion of user biometric information; a first depressible key and a second depressible key, the first depressible key including a first display and the second depressible key including a second display, each of the first display and the second display being configured to display at least one of a plurality of numerical digits; a first receiver configured to receive information from the first depressible key and the second depressible key, the information from the first depressible key relating to a first numerical digit displayed by the first display during a depression of the first depressible key, and the information from the second depressible key relating to a second numerical digit displayed by the second display during a depression of the second depressible key; a second receiver configured to receive information from the fingerprint scanner, the information including first biometric information associated with a first finger placed on the fingerprint scanner and second biometric information associated with a second finger placed on the fingerprint scanner; and a transmitter configured to transmit the information received by the first receiver and the second receiver to a remote server via a telecommunications network.”

Anker Astro3 12000mAh Battery

Anker Astro3 12000mAh Battery

2013 means loads of technical advancements in portable devices, but it also translates into a ton electronic clutter around the office. Smartphones, tablets, external hard drives, flash drives, and other gaming devices and gadgets litter our desks. Each device operates on an internal battery and every time we drain it, we recharge them. But there are times when we simply can’t get to a wall outlet, and while most devices are using USB connections for charging, some devices can’t charge from a standard USB port on a computer or laptop. That’s where the Anker Astro3 battery comes into play. Here’s a device that features 3 USB ports capable of charging just about any device and then some.

We put the portable battery through a number of tests over the last couple of weeks and have to say I’m pretty impressed. If you’re looking for a portable USB charging station capable of charging multiple electronic devices while on the road, the Anker Astro3 fits the bill perfectly. It also comes with a great carrying case and a short USB cable to charge itself before travel. The texture of the device is soft almost leather like feel and it only weighs 11oz – which is pretty incredible for a 12000 mAh battery. To put the battery size in perspective, most smartphones will have a 2000 mAh battery, so the Astro3 is about 6 phone batteries worth of juice.

On the top of the Astro3 is a small illuminated LED which showcases how much charge the battery has remaining. If you shake the device to illuminate it and if devices are plugged in one of the 3 USB ports, they’ll begin to charge. In my testing I was able to charge my new Nexus 5 from empty to fill and it only used one blip of power. We also tried powering a PlayStation Vita which went from empty to fully charge used two blips. With a total of ten blips on the display that means I only used thirty percent of the total available charge after fully charging two devices.

The Anker Astro3 will give you three distinct USB ports for charging. While Anker claims that you can use all of them at the same time, it just seems to be more dependent on the devices connected and the overall configuration of the ports. For example, with a Nexus 5, PlayStation Vita, and a Samsung Galaxy S4 plugged into the device, the PlayStation Vita failed to charge except when it was connected to the “Smart” USB port on the device. But in doing so the Shield didn’t appear to be charging properly. One Smart USB output port is rated at 5 VDC and 2.4 Amps and the other two are rated at a combined 5 VDC and 2 Amps. Overall though, this is a pretty impressive charging device from Anker. We have seen a few other similar devices, but none offer the amount of power or multi-charging capability the Astro3 offers. Best of all you can buy it from online retailers like Amazon for just $50.

Could USB Ports be the New Power Outlets of the Future?

Could USB Ports be the New Power Outlets of the Future

USB is as much a part of everyday life nowadays as cars and cell phones. The plugs that are provided by it are small and convenient. USB cables can carry both power and data. Plus, and probably the most important aspect, is that USB is a completely universal platform. This is why USB is considered by some to be the future of electricity. According to a new Economist report, smart grids, more convenient storage, and solar power will all be easier with USB.

The odd part is USB framework is based on a system of transmitting and distributing electricity that’s been out of fashion since the 19th century. I’m referring to the direct current (DC), the standard championed by Thomas Edison that eventually lost out to Nikola Tesla’s alternating current (AC) as the global standard for electricity. While AC won out for its ability to switch between different voltage, low-voltage DC is cheap, efficient and doesn’t require an adaptor. For a few different reasons, USB happens to be an ideal vehicle for DC power.

The latest Economist report took a close look at the future of USB and suggested that the USB plug you now use to charge your phone or plug in your keyboard could replace conventional power outlets altogether. We’re already seeing a whole bunch of smaller USB powered devices enter the market including headers and blenders, but USB will also be able to power much larger devices starting in 2014 when the new USB standard is introduced. Imagine the convenience of a USB powered TV that uses the same plug for power as it does for data. The greatest part about this is when you take a look at the possibilities of an entire network of USB devices, including those that produce and store electricity. As a convenient bonus, the USB based DC network could be more environmentally friendly than AC.

“A low-voltage DC network works well with solar panels. These produce DC power at variable times and in variable amounts. They are increasingly cheap, and can fit in windows or on roofs. Though solar power is tricky to feed into the AC mains grid, it is ideally suited to a low-voltage local DC network,” noted The Economist. Zoom out even further, and imagine connecting these DC networks to each other. It could produce a whole new kind of power grid, one that’s not always on like our current AC network.

“It works even better if the network has a biggish central battery hooked up to the mains grid, which can charge itself up at night when power is cheap. But the real prize comes when several buildings combine such DC networks. Pooling supply, demand and storage gives you the makings of a ‘smart grid’—electricity supply system which is more resilient and thrifty than the existing set-up,” noted The Economist. The next big step for the USB standard is the introduction of USB power Delivery or USB PD systems. While USB PD devices will start to hit the market next year, it’ll hit the market sometime in 2015, and the specifications are on point. USB PD increases the standard’s power to 100-watts and allows electricity to flow in both directions.

The specification is also tailored to optimize power usage, giving each device exactly the amount of electricity it needs. As for whether or not this will be replacing the electrical outlets in your walls, it could essentially become the new standard in homes. To convert the whole power grid from AC to DV is a much bigger challenge, but it is already starting to happen with most data centers using DC power.

Bob Dylan Harmonica USB Uploaded with his Entire Discography – Amazon Exclusive

Bob Dylan Harmonica USB Uploaded with his Entire Discography – Amazon Exclusive

Seems we can never get enough of Bob Dylan, even in 2013. This is the big one. Of course we all probably have at least three copies of Blood On the Tracks and a CD box full of his 35 studio released albums along with countless other live records. But for the ultra-obsessed of the Duluth-born music god, his longtime record label Columbia Records is hoping the release of this new custom shaped harmonic USB holding all contents will be of interest to them.

This ultra-massive complete music set (which will set you back more than $250) comes packed with all 35 Bob Dylan studio albums (many of which were completely remastered specifically for this collection), six live albums, and a double-CD called Side Tracks, which gathered non-album oddities from Dylan’s celebrated 60 years in the music industry. And for those elite, super fans out there along with modern collectors, the compilation is also available as a limited edition harmonica shaped flash drive, and will be available exclusively from Amazon on November 15, 2013 for $320.

In addition to the large amount of music contained in the set (including the first ever North American release of 1973’s Dylan album on CD, the collection also features a hardcover book with expansive new liner notes for each record written by Clinton Heylin, with an introduction written by Bill Flanagan. The limited edition Harmonica USB will contain a digital version of that hardcover book, as well as all of the music in both MP3 and lossless FLAC format. The USB harmonica will also be housed in a deluxe numbered box for safe keeping.

If you wanted to experience Dylan wide music library by decade, Columbia also has you covered. They will be issuing 4 decade specific collections, Bob Dylan – The Complete Album Collection – The 60′s, The 70′s, The 80′s, The 90′s – 00′s as digital downloads. There will also be a fifth digital set called Bob Dylan – The Original Mono Recordings, which collects Dylan’s first eight studio albums in their original mono recordings. Here is the full list of all of the albums contained in the Bob Dylan Complete Album Collection Vol. One, as well as the track-listing for the Side Tracks double-CD:

Studio Albums

  • Bob Dylan (1962)
  • The Freewheelin’ Bob Dylan (1963)
  • The Times They Are a-Changin’ (1964)
  • Another Side of Bob Dylan (1964)
  • Bringing It All Back Home (1965)
  • Highway 61 Revisited (1965)
  • Blonde on Blonde (1966)
  • John Wesley Harding (1967)
  • Nashville Skyline (1969)
  • *Self Portrait (1970) – newly remastered for this collection
  • New Morning (1970)
  • *Pat Garrett & Billy the Kid (1973) – newly remastered for this collection
  • *Dylan (1973) – newly remastered for this collection
  • Planet Waves (1974)
  • Blood on the Tracks (1975)
  • The Basement Tapes (1975)
  • Desire (1976)
  • *Street Legal (1978) – newly remastered for this collection
  • Slow Train Coming (1979)
  • *Saved (1980) – newly remastered for this collection
  • Shot of Love (1981)
  • Infidels (1983)
  • *Empire Burlesque (1985) – newly remastered for this collection
  • *Knocked Out Loaded (1986) – newly remastered for this collection
  • *Down in the Groove (1988) – newly remastered for this collection
  • Oh Mercy (1989)
  • *Under the Red Sky (1990) – newly remastered for this collection
  • *Good as I Been to You (1992) – newly remastered for this collection
  • *World Gone Wrong (1993) – newly remastered for this collection
  • Time Out of Mind (1997)
  • Love and Theft (2001)
  • Modern Times (2006)
  • Together Through Life (2009)
  • Christmas in the Heart (2009)
  • Tempest (2012)

Live Albums

  • Before the Flood (1972)
  • *Hard Rain (1976) – newly remastered for this collection
  • *Bob Dylan at Budokan (1979) – newly remastered for this collection
  • *Real Live (1984) – newly remastered for this collection
  • Dylan & the Dead (1989)
  • MTV Unplugged (1995)

Side Tracks

  • Baby, I’m in the Mood for You
  • Mixed-Up Confusion
  • Tomorrow Is a Long Time (live)
  • Lay Down Your Weary Tune
  • Percy’s Song
  • I’ll Keep It with Mine
  • Can You Please Crawl Out Your Window?
  • Positively 4th Street
  • Jet Pilot
  • I Wanna Be Your Lover
  • I Don’t Believe You (She Acts Like We Never Have Met) (live)
  • Visions of Johanna (live)
  • Quinn the Eskimo
  • Watching the River Flow
  • When I Paint My Masterpiece
  • Down in the Flood
  • I Shall Be Released
  • You Ain’t Goin’ Nowhere
  • George Jackson (acoustic version)
  • Forever Young
  • You’re a Big Girl Now
  • Up to Me
  • Abandoned Love
  • Isis (live)
  • Romance in Durango (live)
  • Caribbean Wind
  • Heart of Mine (live)
  • Series of Dreams
  • Dignity
  • Things Have Changed

Belkin Dual USB Car Charger – Lightning to USB Cable Included

Belkin Dual USB Car Charger – Lightning to USB Cable Included

In the late 80s getting power on-the-go used to mean that you had to carry a suitcase phone and a power port plug to keep it ready for those 8-15 minutes of call use. Don’t believe me? Take a look for yourself:

Belkin Dual USB Car Charger – Lightning to USB Cable Included

Technology has come a long way since then, and we have much better phone-to-battery chemistry, but for us mobile phone junkies, the battery on any smartphone is never enough for a full day of continuous use. If you commuting at any point in your day, then you’re most likely in a vehicle with a 12V power system, plugging in an adapter to get charged could mean the difference between missing messages and easily making it through the day.

As of right now, there are two types of USB power plugs. There those have a cable built in and those that just provide a USB port to plug in a cable with. Many folks have a captive model that came with a phone, GPS unit, or other gadget. The freedom to charge anything USB powered from one plug, however, is quite the technological feat. With Apple recently changing their power ports to the smaller, reversible Lightning connector, many consumers are in the market for something a little more versatile, like the Belkin Dual USB Car Charger.

The Package itself from Belkin comes with the two port USB plug and a USB to Lightning dock connector cable, which will work on the new iPads, 5th generation iPod touch and iPod Nano, and the iPhone 5, 5S, and 5C. I personally only own the iPad mini with the Lightning connection, and it was nice to have a quality cable that was six feet or so longer than the standard one Apple packages with their devices. I was glad to be able to test a charger that can fully charge a phone and another device at the same time. With a Honda Civic and a decent sized commute (45 minutes), I had more than enough time to fully test this usb device.

The device itself is pretty big, which means it can be easily grasped to pull it out, but it also boils down to the fact that you will not be able to use it behind or in some console covers. It’s not a huge knob on the end, but it’s also not a mini-charger. Rated at 10W and 4.2 amps each, the USB ports are far enough apart to allow unplugging of either cable. There is also a blue LED ring around the front which glows when power is on. Single-point LEDs can be blocked by USB cables or the gear shift lever in some vehicles. This thing, while not overly bright, clearly shows at a glance that things are connected to the automobile’s power.

Belkin also put effort into having their product fully tested and approved by Apple for use in their portable USB devices, as indicated by the “Made for iPad, Made for iPhone, Made for iPod” seal. Known as the MFi program, this is not an inexpensive or easy checklist, but assures consumers that the goods displaying the logo have been submitted and approved by Apple. They’re not going to toast your expensive devices or electrocute you. It’s a nice thing to see on a product you may use throughout the day.

There are one or two complaints I have for the Belkin Dual USB Car Charger. First of all, there’s the size. It’s pretty big, and the inserted cables stick out a long way. I understand the physics involved and the circuitry needed to safely produce a usb charger without having protruding components on the outside, but it’s still takes up quite a bit of space in my Honda. But overall, it gets the job done.

Brainzsquare SECUDRIVE USB CAD

Brainzsquare SECUDRIVE USB CAD

Brainzsquare recently announced the release of SECUDRIVE USB CAD, a clear-cut, copy-protected, secure USB solution developed to be specifically compatible with design and CAD files. With other security features embedded into the solution, SECUDRIVE USB CAD is the perfect resource for designers who carry their projects with them on-the-go.

With Brainzsquare’s SECUDRIVE USB CAD users safely carry their important designs with them wherever they go. Whether it is on a business trip, on the way to the office, or on a public network, it provides copy protection script not only for document files, but for computer aided design files as well. The copy protection solution is compatible with numerous CAD and design program such as Adobe Photoshop, Illustrator, AutoCAD, OrCAD, and many more.

By adding specific programs to the USB’s copy protection system, private design files cannot be opened by programs other than the ones the user has specified, and cannot be copied, transferred, or saved onto the local PC. This protects the user’s copyrights on their designs and prevents unauthorized individuals from viewing or stealing the data.

This ultra-safe USB software also features validity settings, auto-lock, password protection, and print controls with watermark printing. Validity settings allow users to set a time period for the USB to be active and also set a limited number of logins. If the user has to leave the computer for a few minutes, don’t even worry about it at all. With the auto-lock feature, you can set a specific time frame of inactivity before the USB automatically logs out of a given host computer or device. Keep in mind however, that any work or data that is not saved will be lost during an automatic logout. So be careful that you safe your work before leaving if you put this feature into effect.

The SECUDRIVE USB CAD also comes with high level password protection. Users will be asked to input a password upon their first login attempt. If for any reason the wrong password is given over ten consecutive times, the data on the USB will be automatically and irreversibly erased. This is to prevent data leakage if the USB drive is ever lost, stolen, or otherwise used by an unauthorized party. The flash drive also gives you the option of turning off printing completely, which doesn’t allow any file to be printed off of the USB drive, or turn on printing with a customizable watermark.

You can also login through the software’s “ready-only” mode as well. This will prevent files on the flash drive from being edited or overwritten somewhere else. It includes a (now standard) AES 256-bit hardware encryption and an embedded antivirus. With that you can definitely rest assured that your design files are safe from various computer infections and malware. Detailed event logs are also provided with information such as date, time, user name, USB serial number, and actions taken during use.

“Conceptual drawings and designs for new product development warrants a high level of confidentiality within a company. Companies, as well as employees today have worried about loss, theft, or leakage of their designs whenever it is taken out on a portable device to show to cooperative partners outside of company grounds. Designers can now carry their precious design files with them on SECUDRIVE USB CAD and not have to worry about the security risks of losing their flash drive, unauthorized copying, or virus infected files. This USB solution gives the users all they need to protect their precious data in a simple and effective way,” noted Simon Kang, CEO of Brainzsquare.

Auroza USB Iron Man Gaming Mouse

Auroza USB Iron Man Gaming Mouse

With the Blu-Ray release of Iron Man 3 on its way, most fans of the series are also stockpiling on t-shirts, pens, toys, comics, and other items from the official film company to add to their small (or rather large) memorabilia collections.

Here’s another great product to add to that: The Auroza USB Iron Man Gaming Mouse

The company e-blue has come through with another movie tie-in gadget that really impressed us at USB Tips. The Auroza USB Iron Man Gaming Mouse resembles Tony Stark’s iconic yellow and red Iron Man helmet, and is obviously meant to be marketed directly to us geeky Iron Man memorabilia collectors.

Don’t be fooled though. This isn’t some copout product riding the movie brand train with cheap parts, features, look, and feel. Underneath the Auroza USB Iron Man Gaming Mouse lies the foundation for a very good optical gaming mouse. It has on-board DPI change switch which allows you to quickly scale from 500 DPI to the maximum sensitivity of 4000 DPI. Also, the Iron Man gaming mouse comes with a surprisingly very ergonomic design with highly textured surface as well as 6 well-positioned buttons which use high-end Omron mechanical switches. These even have a polling switch on the underside to quickly change from 125Hz all the way up to 1000Hz.

Overall, this Iron Man optical mouse is the whole package. It’s everything a collectible product should be in our opinion. Not just some old display case toy that will never serve a practical purpose. If you are looking for a unique mix of theme meets performance then this $75 USB wired mouse deserves your attention.

Customizable: 5 DPI switchable levels

The 5 DPI level can be switched by only one key, simply one click could switch to 500/1000/2000/3000/4000 DPI, it is your weapon easy to manipulate, delivering unprecedented gaming experience.

Dedicate Making: Collectible and Environmental

The Auroza iron man 3 gaming mouse adopts superior ABS makings, prudently engineered with exquisite surface treatment only results high stability and high performance. Fiber covered data wire, anti interference featured and gold plated USB plug guarantees speediest data transmission.

Technical Specifications:

  1. Working Mode: Optical Sensor
  2. Button: 6
  3. DPI Settings: 500, 1000, 2000, 3000, 4000
  4. Polling Rate Settings: 125Hz, 250Hz, 500Hz, 1000Hz
  5. Acceleration: 20g
  6. Approx. Weight: 60g +/-15g

Dimension: 126 X 62 X 40 mm

Ajay Bhatt Honored in Europe for Developing USB Technology

Ajay Bhatt Honored in Europe for Developing USB Technology

Ajay Bhatt was recently honored by the European Union for his monumental work on USB. As lead developer at the USB tech-giant Intel, Ajay and his team came up with the specifications and constructs for the Universal Serial Bus (USB) technology we know and love today. As one of the most important advances in computing in the 21st century, (and the central theme of this site), we here at usbtips.com would like to extend our gratitude as well.

The European Patent Office announced the winners of the European Inventor Award for 2012, which basically honors any outstanding inventors for their significant contribution to social, economic and technological progress.

Over 500 guests attended the award ceremony at the Beurs van Berlage in Amsterdam, including Princess Beatrix of the Netherlands and Michel Barnier, the European Commissioner for Internal Market and Services.

Ajay Bhatt led a small team of developers that included:

  • Bala Sudarshan Cadambi
  • Jeff Morriss
  • Shaun Knoll
  • Shelagh Callahan

Together, these five individuals represented the United States in the category for inventors from Non-European Countries, and were nominated for creating and developing the original USB technology specifications – arguably one of the most important innovations in computing since the invention of the silicon chip.

Nowadays Universal Serial Bus (USB) technology permeates almost every aspect of modern computing, from data transfers, peripheral attachments, and most wired connections in network systems. USB not only allows users to more easily connect devices to a computer, it also streamlines work for hardware and software developers. You can find it in millions of electronic devices all over the world, from basic keyboards to printers, scanners, portable phones, and virtually all other markets.

The 56-year-old Bhatt is an Indian-American computer architect who helped define and develop several widely used technologies, including USB, Accelerated Graphics Port, PCI Express, Platform Power management architecture and various chipset improvements. After completing his graduation in Vadodara, India, Bhatt completed his master’s degree in New York. Bhatt joined Intel in 1990. He currently holds 31 US patents.

The European Inventor Award is presented annually by the European Patent Office, supported by European Union to inventors who have made a significant contribution to innovation, economy and society in Europe. Inventions from all technological fields are considered for this award. We’re extremely grateful for his contribution to modern technology and are truly excited for what the future holds with USB technology.

Creating and Programming USB Devices Tutorial

Creating and Programming USB Devices Tutorial

The Universal Serial Bus (USB) standard has been around for quite some time now. Considering how quickly things change in the tech world, it’s a marvel to see how USB has flourished and maintained its universality with most mobile and host devices. And yet, making USB devices that fit the specifications for the standard still manages to be quite a difficult procedure.

The USB specification is made up of thousands of pages spread over dozens of distinct documents, and although there are great tutorials on the subject (including our own specification summaries on USB Tips), the process is still unbelievably long and difficult to undertake successfully. To make matters worse, the application programming interface (API) offered for programming USB devices is often extremely complex and detailed.

Here we will attempt to describe how to program your own software based USB devices. It is not limited to standard class devices, but also presents a way to implement any device, whether it complies with a standard class or not.

The Concept of Universal Serial Bus (USB)

In order to really understand what USB is all about you first have to learn its enormous glossary of terminology. Essentially, USB separates the host from the device. There is only one host, connected to multiple devices. The host starts all traffic and schedules it on the USB Bus. A “device” is essentially just a physical compartment at the end of the USB cable that indentifies itself to the host by passing it a device descriptor and a configuration descriptor. These “descriptors” are just binary data that describe the capabilities of the USB device. For the most part, the configuration descriptor describes one or more of the interfaces, where each interface is a specific function of the device. A device can have multiple interfaces. As an example, a USB device that is made up of a keyboard with a built in speaker will offer an interface for playing audio and an interface for key presses.

Each interface is made up of a series of endpoints that are the communication channels between the host and the device. Endpoints are numbered between 0 and 15 and may be IN endpoints or OUT endpoints. These terms are completely relative to the host in question: OUT endpoints transport data directly to the device, and IN endpoints transport data to the host. These are the four endpoints:

  • Bulk endpoints reliably transport data whenever it is required. Bulk data is acknowledged and therefore fault-tolerant.
  • Isochronous endpoints are for transporting real-time data. A fixed bandwidth is allocated to them. The host allocates this bandwidth and will not allow an isochronous endpoint to be created if no bandwidth is available. In contrast, bulk endpoints have no guaranteed bandwidth.
  • Interrupt endpoints are polled occasionally by the host and enable a device to report status changes.
  • The control endpoint (endpoint 0) is used to perform general operations, such as obtaining descriptors, or performing a control-operation such as “change the volume” or “set the baud rate” on any of the interfaces.

Traffic over the USB bus is bidirectional. USB traffic is organized into frames. The frames are marked by the host sending a start of frame (SOF) every 125 µs (for high-speed USB) or every 1 ms (for Full Speed USB). Isochronous endpoints are allocated a transfer in every frame. Interrupt endpoints are polled once every so many frames, and bulk transfers may happen anytime when the bus is not in use.

Let’s look at the keyboard and built-in speaker example again. This particular setup has at least two endpoints: and isochronous OUT endpoint to transfer audio data to the speaker, and an interrupt IN endpoint to poll the keyboard. Let’s say that the speaker is a mono-speaker with a 48 kHz sample rate. The host then will send 6 samples of data every 125 µs (six samples/0.000125 seconds = 48,000 samples/second). If a sample occupies 16 bits, the host will reserve enough bandwidth to send a 96 bit OUT packet in every 125 µs frame. This consumes around 0.5% of the USB bandwidth. The remaining 99.5% is free for other interfaces or other USB devices on the same bus.

Determining and Finding New Device Capabilities

The host is responsible for initiating all USB traffic. When a device is plugged in, the host first requests the device descriptor. This descriptor is made up of two sets of information that inform the host of the basic functions of the device: the device class and the vendor ID/ product ID (VID/PID).

The class and subclass can be used to specify a device with generic capabilities. A USB speaker advertises itself as class Audio 2.0. A keyboard promotes itself as a HID class (human interface device) device. The first example mentioned before about a device with both a speaker and a keyboard advertises itself as a Composite device class. USB devices that go with a specific USB class enable cross vendor and cross platform compatible USB devices. The USB specification determines hundreds of device classes that allow the generic implementation of things like Ethernet dongles, mixing desks, or flash disk and allow operating systems to provide generic drivers for these classes.

There are quite few cases where the USB device does not fir a specific class or where the class specification is too constrained for a particular device. In that particular kind of case, the class of the device must be described as vendor specific. The operating system (OS) shall the n use the VID and PID to find a vendor specific driver. Once the device descriptor has been dealt with, the operating system then assigns the USB device a number, informs the USB device of the number (it is being enumerated), and requests the configuration descriptor that specifies each interface in detail. In an example mentioned earlier, the configuration descriptor will specify two interfaces: one interface of class USB Audio 2.0 with a single channel output endpoint running at 48 kHz only, the other interface of class HID that specifies a single keyboard with a specific keymap.

There are many cases where the USB device does not have any operating support and it should interact with a user program directly. In that case, a generic drive such as the open source libusb drive that allows an application program to communicate with any USB device can be specifically used. Usually, the device will be advertised as vendor specific. Through the libusb interface the user program can detect a device with a VID and PID that it wants to interact with, claim an interface, open an endpoint, and sen IN and OUT requests to that endpoint.

What Happens to the Data?

The enumeration of the device usually needs static descriptors to be sent to the host. The difficult bit is making the descriptors themselves. Serving them is easy, as that is the only real task required of the device at the time. After enumeration, data may arrive or be requested on all endpoints in quick succession. This requires an interface between the software that deals with the function of the USB device and the low level USB protocol. Prior to designing this interface, let’s take a look at how to deal with data on the various types of endpoints available.

The Bulk endpoints are the easiest to deal with first of all. Since each data transfer is acknowledged, it is possible to send a negative acknowledge (NAK) stating that the device is not yet ready to deal with the endpoint. For example, if software is dealing with some other part of the device, or if data is just no yet available (for example, a read from NAND flash memory is not yet completed), the low level USB driver can send a NAK.

However, sending NAKs has a downside. The only sensible option for the host is to retry the request, potentially creating a long series of requests that are aborted by NAKs. Ultimately, this wastes USB bandwidth that could have been used up by other endpoints or devices. Also, the host software is blocked until the device answers. In other words, the NAKs should be a last resort. It may be more appropriate to send partial data than to NAK an IN request. IN the case of an OUT request, little can be done. If there is no room to accept the data from, then a NAK is the only answer. However, it may be more appropriate to bring in a high level protocol that would allow and OUT request until there is space.

Isochronous endpoints are a lot harder to deal with because they are not acknowledged. The transmitter (in either direction) assumes that the data arrives. Since there is no acknowledgement on an isochronous endpoint, there is absolutely no possibility to send a NAK. So if the device is not ready, then the only thing left to do is drop the data from an OUT packet or to send no data for an IN packet.

Although this could seem a bit harsh at first, remember that the main reason behind an isochronous endpoint is to transmit real time data in a guaranteed time slice of the USB bus. If the device does not have room to store the OUT data, data is probably not dealt with in real time. Dropping is the next logical course of action. If no data is available to answer an IN request, then the device has not collected enough data. A sensible course of action is to transmit whatever data is present or possibly no data at all.

Assuming that the data can be processed or produced in real time, it is easy to compute the buffer requirements for an isochronous endpoint:

  • For an OUT endpoint, the worst possible case is that the host posts one OUT request right at the end of a USB frame, and then immediately after the start of frame (SOF) it posts a second OUT request. This means that two OUT requests, carrying 250 µs of data, are received in quick succession. Hence, the buffering scheme must be able to buffer at least 250 µs worth of data. As long as the program does not consume data from this buffer until the SOF following the first packet, the buffer will never empty, providing a continuous data stream from host to device.
  • For an IN endpoint, the worst case is similar. The host could perform two IN transfers in short succession just before and immediately after a SOF. This means the IN buffer needs to be at least 250 µs too, and the buffer should contain 125 µs at the start of each frame.

It is also important to look a comparing bulk and isochronous transfers from a perspective of coping with errors. In bulk transfers, the data itself is critical. The host and device can retry and slow down, as long as the data is transferred in the correct way, and this transfer must be acknowledged. For an isochronous transfer, the timing is everything. Either side can throw data away in this type of transfer, as long as the real time characteristics of data further along in the stream are adhered to.

The data-centric versus time-centric approach has a knock-on effect on the consequences of bit errors. A cyclic redundancy code (CRC) for error detection protects all USB traffic. A corrupted bulk transfer must be retried until the data is transferred without error. On the other hand, a corrupted isochronous transfer will simply be dropped. The transmitting side will be unaware that data was dropped. The receiving side may know that the transfer was dropped (if the header with the endpoint was not corrupted), but even then how many bytes the transfer contained may not be determined. When streaming real-time video or audio this is important, since there will be an unknown gap in the stream that has to be filled with best effort.

Interrupt endpoints ask about the current state. This may be data that is not too time-critical (such as a key press), or it may be time-critical data (such as the X and Y location of a mouse or other pointing device). In the first case, a few microseconds of delay between typing the key and reporting it won’t hurt. However, when reporting mouse locations, irregular reporting may lead to unintended results.

Programming USB Devices

After analyzing how to deal with the different kinds of endpoints on the USB, we can then develop a programming model for software based USB devices. It is helpful to keep in mind how USB operates:

  • There are one or more endpoints, for one or more interfaces, where traffic may arrive or depart at any time.
  • Transfers on isochronous endpoints are time-critical.
  • At most one transfer happens at a time.

The very first two points show a multi threaded programming structure, especially if more than a single interface is concerned, or if isochronous endpoints are being used. The basic software architecture assumes that there is some kind of USB device library and that for each of the endpoints we implement a thread that deals with USB transfers on that endpoint. Other parts of the system, not directly connected to the USB device library, are implemented using additional threads.

The USB software architecture is specifically designed for handling multiple endpoints. Keep in mind that one thread per endpoint may not be required and probably isn’t the best method to go about it. Seeing as only one transaction happens at a time (the third point), we can then create a version of the system that relies on fewer threads in the system. Let’s say that we want to implement a synchronous protocol over two endpoints where the host will always transmit data over bulk OUT endpoint, prior to receiving data on an associated IN endpoint. This protocol requires only a single thread that handles OUT and IN transactions in order on that endpoint.

This sort of optimization procedure isn’t without its inherent risks. Using a single thread per endpoint can ultimately lead to the host program aborting and restarting between the OUT and IN transaction. In this particular case, the sequence of transactions seen on the device will be:

  • OUT, IN, OUT, IN, OUT, OUT, IN

Then the thread dealing with the OUT transactions must swallow the extra OUT. When optimized away to a program that sequentially consumes OUT and IN sequentially, this program must be written so that at any time it may expect the protocol to reset.

The third point allows a further optimization to take place. A single thread can deal with all bulk traffic on all interfaces, optimizing multiple endpoints into a single thread. The single thread receives a request (IN or OUT) on any endpoint, dealing with that request, whereupon it moves on to the next request, possibly on a different endpoint. If the next request arrives before the last request has been dealt with completely, the USB device library sends NAKs, temporarily holding up the host. This optimization has one disadvantage, which is that the single thread must keep state for each endpoint and is effectively context switching on each request.

Multiple endpoints can also be optimized into a single thread. This same kind of optimization cannot be applied to isochronous endpoints. If we had a single thread dealing with all of the isochronous data, it would involved FIFOs for each endpoint from which the thread will read data or post data. These FIFOs will increase latency, which is often undesirable. For the rest of this tutorial, we will discuss the software architecture and optimizations. Once example uses vendor specific drivers and mostly bulk endpoints (JTAG over USB), and the other shows a standard USB class with mostly isochronous endpoints (Audio over USB).

JTAG over USB

For debugging programs on embedded processors, it is common to use a protocol such as JTAG for accessing the internal state of the processor and to use a program such as gdb to run on a PC to interpret and modify state, set breakpoints, single step, and so on. USB can be used to provide a cross-platform portable transport layer between the PC and JTAG wires.

These devices are often called JTAG keys. In addition to JTAG, they often contain a UART for text I/O from the embedded program. JTAG keys do not follow any standard USB class. Hence, the descriptor labels them as vendor-specific, and it is up to us to define an endpoint structure that is fit for purpose. One endpoint structure would use six endpoints:

  • Two endpoints that control the USB device itself (endpoint 0 IN and OUT, required by USB)
  • An IN and OUT endpoint for JTAG traffic
  • An IN and OUT endpoint for UART traffic

Since there is no USB standard in this case, we can go ahead and define the protocol for the JTAG traffic and decide on a set of commands such as “send a clock with TMS high” or “read the program counter.” For the host, our program can use libusb (an open source USB driver library_ to search for a device with our VID and PID, claim the interface, and then us e the libusb interface to send IN and OUT transaction to both the JTAG and UART endpoints. Given that all endpoints are for bulk traffic, they can all be mapped onto a single thread and have two separate threads to deal with the state machines for JTAG traffic and UART traffic. Figure 5 shows a sample implementation. The JTAG over USB employs multiple endpoints. A JTAG interface can be implemented using USB hardware and a standard 20-pin JTAG connector.

Audio over USB

Finally, let’s discuss an example of a standard USB device. In this case we’ll be talking about Audio over USB. The Audio 2.0 class standard enables interoperability of devices on platforms. So someone could buy a USB microphone or USB speakers (for example) and plug it into any computer that supports Audio over USB. The number of channels, sampling rate, and sample depth can be varied to support anything from low channel count consumer devices to high quality, high channel count professional audio.

Devices that are more complex also are supported. The descriptor has a specific syntax for describing mixers, volume controls, equalizers, clocks, resampling, MIDI, and many other functions, although not all of those functions are recognized by all operating systems.

On the host side, all USB traffic carrying audio samples is directed to the USB Audio driver, which in turn interacts through some general kernel sound interface with the program using audio, such as Skype. Other data, such as MIDI, can be handled through a separate interface by a separate driver. The device is designed to use USB Audio Class 2.0, and the standard specifies the endpoints that we need to use. FI the application has to support MIDI, stereo in, and stereo out with a clock controlled by the device, then the standard dictates that there will be seven endpoints:

  • Two endpoints that control the USB device itself (endpoint 0 IN and OUT, required by USB)
  • An isochronous IN endpoint for the I2S analog-to-digital converter (ADC)
  • An isochronous OUT endpoint for the I2S digital-to-analog converter (DAC)
  • An isochronous IN endpoint for feedback on the clock speed
  • A bulk IN endpoint and bulk OUT endpoint for MIDI

The endpoints for the ADC and DAC have one IN and OUT transaction every microframe, every 125 µs. Assuming that the DAC and ADC operate with a 96-kHz sample rate, 12 samples are sent in each direction every 125 µs. Note that there are two independent oscillators: the device controls the 96-kHz sample rate, and the host controls the 125-µs microframe rate.

As these clocks are independent, they will drift relative to each other, and there won’t always be 12 samples in each transfer. The vast majority of the transfers will have 12 samples, but sometimes there will be 13 or 11 samples.

The device uses the third isochronous endpoint to inform the host of the current speed. It is sampled once every few milliseconds and reports the current sample rate in terms of samples per microframe. The MIDI endpoints carry MIDI data as and when available. The standard provides flexibility, allowing us to easily add more audio channels or audio processing.

Figure 6 shows the software architecture for this device. Unlike the previous example, there is little that can be optimized. The class specification dictates the endpoint structure. With three isochronous endpoints, it is advisable to have three processes ready to accept and provide data on these endpoints. The only optimization that is feasible is for a single thread to handle Endpoint 0 and the MIDI endpoints.

Summary

USB devices comprise many interfaces that run concurrently and endpoints that are either bulk or isochronous. Bulk endpoints are for reliable data transport between host and device, whereas isochronous endpoints are for real-time data transport.

When programming USB device endpoints, it is easiest to see those endpoints as individual software threads. Some of those can be mapped onto a single thread, but the programmer has to understand the consequences. In particular, mapping multiple isochronous endpoints onto a single software thread will introduce an (unpredictable) latency in the real-time stream.