Looking for USB Host overview

I haven't been able to find anything that gives an overview of using a USB Host with an Arduino. Perhaps someone can fill the gap or point me to some suitable reading material.

I know that it's possible to buy USB Host shields but I'm not sure what you can do with them. The Reference section only refers to mice and keyboards.

If one has an unusual USB device (I don't have anything specific in mind) can one connect it to the USB host and expect it to work as it would on a PC or would it be necessary to have specific drivers? - which in practice would mean it would not be usable.

Is there a common protocol for USB devices to use that the USB host supports? (Such as serial comms).

I know that each USB device has manufacturer and model numbers - does the USB host software need to know about these?

...R

Bump.

This escaped to page 3 without catching the eye of a suitable expert.

...R

Bump Bump

This time it escaped to Page 4 without catching the attention of any expert.

I am still optimistic that someone can help.

...R

Hi,
Google "US Host Shield" "arduino" gets thousands of links.

Thanks Terry,

I had not actually tried that Google combination but to be truthful the thousands of websites are much the same sort as the ones I found with other similar search terms.

Basically they seem to be about specific hardware add-ons and what few details there are only tell how to do specific things with them. There is generally little or no general explanation of the sorts of things you can and (perhaps more importantly) can't do with them.

I'm hoping somebody will be able to direct me to an essay that explains the abilities and limitations of USB hosting with an Arduino.

Thanks again.

...R

Bump Bump Bump ...

It's escaped to page 4 again without any expert seeing it.

Maybe I will be lucky this weekend.

...R

Robin2:
I'm hoping somebody will be able to direct me to an essay that explains the abilities and limitations of USB hosting with an Arduino.

To be honest, I think you're probably wasting your time expecting somebody to point you towards an article explaining exactly what you want to know - especially on an Arduino forum which is only very indirectly related to USB. Back in school the exact knowledge you need is spoon-fed to you, but in the real world you often have to do research for yourself. It's an easily recognisable subject and Google will give you all the information you need, if you look hard enough. Or you could look for technical books covering the subject - there are lots of them out there.

The question is too general, you need to know what USB device you want to use and start from there.

http://www.circuitsathome.com/products-page/arduino-shields
"The following device classes are currently supported by the shield:

HID devices, such as keyboards, mice, joysticks, etc.
game controllers – Sony PS3, Nintendo Wii, Xbox360
USB to serial converters – FTDI, PL-2303, ACM, as well as certain cell phones and GPS receivers
ADK-capable Android phones and tables
Digital cameras – Canon EOS, Powershot, Nikon DSLRs and P&S, as well as generic PTP"

Support for more devices is currently in development.

BTW that page does not display correctly for me in either Firefox or IE unless I make the browser fullscreen, which I vary rarely do. (Unless someone posts a megapixel picture to the forum) :smiley:

Well I'm only interested to learn what USB host capabilities exist on an Arduino so this seemed like the obvious place to enquire.

PeterH:
To be honest, I think you're probably wasting your time expecting somebody to point you towards an article explaining exactly what you want to know - especially on an Arduino forum

I have been slowly coming to the conclusion that relatively few types of USB device can work with a USB host shield. For example it doesn't seem to be possible to use it to connect to another Arduino !!

However even with that limited list I haven't found anywhere that explains how I would know if a particular device is likely to be compatible.

"The following device classes are currently supported by the shield:

Anyway, many thanks for the replies.

...R

Robin2:
I have been slowly coming to the conclusion that relatively few types of USB device can work with a USB host shield. For example it doesn't seem to be possible to use it to connect to another Arduino !!

It's pretty incredible you could come to this incorrect conclusion, when replying to a message with this:

USB to serial converters – FTDI, PL-2303, ACM, as well as certain cell phones and GPS receivers

All the modern Arduino boards are a communication class ACM protocol USB to serial converter. The old ones are based on FTDI chips.

Thank you Paul (seriously) for so clearly illustrating what is missing.

You obviously have a considerable body of background knowledge that enables you to find my ignorance incredible.

Perhaps you would be good enough to point me to some reading material that will allow me to catch up with your knowledge. That is the whole reason I started this topic.

Thanks again.

...R

Moderator edit: over-quoting removed.

Robin2:
There is generally little or no general explanation of the sorts of things you can and (perhaps more importantly) can't do with them.

What do you actually want to do? Be specific.

Right this minute all I want to do is learn the capabilities and limitations of the USB host shield system. I assume somebody knows what it can and can't do. It's beginning to feel like it's a big secret.

Perhaps if some article said that item X could be used it would spark an idea for a project.

For example I was tempted to recommend an Arduino to control model trains using a Sprog dcc controller (which connects to a PC by USB) but I realized I had no way of knowing whether it would work with an Arduino, or even what to look for in the product specifications that would help me to know.

...R

Robin2:
Right this minute all I want to do is learn the capabilities and limitations of the USB host shield system. I assume somebody knows what it can and can't do. It's beginning to feel like it's a big secret.

It's not a 'big secret', but it's a huge topic and such a vague question that no simple answer is possible. In order to understand any answer you would need to be familiar with USB and how it works, but you seem unwilling to acquire that understanding. I don't understand it - you obviously have a significant interest in it, given the number of times you've tried to encourage people to respond, and in that case it would make sense to me for you to start figuring out what USB is, what it does, how it works. The information is freely available, but you need to spend time reading and understanding it. (Despite appearing simple on the outside, under the covers there is a hell of a lot going on to make USB work.)

I apologize if I have given that impression.

I do realize that USB is complex. I know a little about the process of communicating with it but virtually nothing about what determines which devices can work with which hosts. This isn't a relevant concern for a PC - there are drivers for virtually everything, either built into Linux or downloadable. But AFAIK just because it works on a PC doesn't mean it will work on an Arduino.

Since there is a USB host capability for the Arduino it seems to me reasonable for someone to be able to point me to a document that sets out its capabilities without me needing to become a USB expert and work it out for myself. At the very least they must have written some sort of specification before they wrote the code and made the hardware.

Perhaps it's simply that the relevant "someone" doesn't participate in the Arduino forum.

Thanks

...R

PeterH:
[ but you seem unwilling to acquire that understanding.

Read this, the Arduino USB Host shields was design as the hardware interface, but the supported device was up to the user who use it to write the interface software to talk to a USB device.

USB in a NutShell

Making sense of the USB standard
Starting out new with USB can be quite daunting. With the USB 2.0 specification at 650 pages one could easily be put off just by the sheer size of the standard. This is only the beginning of a long list of associated standards for USB. There are USB Class Standards such as the HID Class Specification which details the common operation of devices (keyboards, mice etc) falling under the HID (Human Interface Devices) Class - only another 97 pages. If you are designing a USB Host, then you have three Host Controller Interface Standards to choose from. None of these are detailed in the USB 2.0 Spec.

USB defines class code information that is used to identify a device’s functionality and to nominally load a device driver based on that functionality.

Some of the USB device like the cheap wi-fi dongle, have only RF transceiver in the hardware, the wifi protocol and IP stack was all in the device driver, hence you are unlikely to get it work with Arduino, perhaps too large to fit in the AVR micro's flash.

Robin2:
For example I was tempted to recommend an Arduino to control model trains using a Sprog dcc controller (which connects to a PC by USB) but I realized I had no way of knowing whether it would work with an Arduino, or even what to look for in the product specifications that would help me to know.

To know the protocol for Sprog dcc controller, You will have to get a USB sniffer to be able to sniff the protocol.

Thanks Bill,

You have provided a lot of helpful information.

If one has to resort to a sniffer I won't bother wasting time on it. I could spend 100 hours at that and still be no wiser.

I had hoped (and assumed) that there is a document somewhere which says the Arduino usb host shield together with the relevant library can do X, Y and Z.

...R

Robin2:
Bump Bump Bump ...

Your idea of specific, and mine, must differ.

How to use this forum

You haven't said which Arduino, nor given a link to any proposed host shield. Your project is very vague indeed except that it is something to do with model trains.

I assume somebody knows what it can and can't do.

You may as well ask "Looking for an overview of what humans can do". It's too broad, no wonder no-one replies.

Your project (and we can only guess what it is) might be solvable with wireless, Bluetooth, RS485, IR transmitters/receivers, lasers, who knows?

If you want to control something from a PC, wouldn't a USB client (rather than host) be adequate?

I was tempted to recommend an Arduino to control model trains using a Sprog dcc controller

Link to this controller? Datasheet? Specs?

What do you mean by "control"? The engines? Signalling? Boom gates?

Google Search leads to this.

And this
http://www.oscale.net/en/simpledcc
No USB required?

Sorry @NickGammon and @Lakes but we are on different wavelengths altogether. @BillHo has recognized what I'm after.

If I went to a car (automobile :)) dealer there would be no problem getting an overview of what all the models could do - seating, load carrying, speed, handling, fuel consumption, colour range etc. etc.

All I want is the equivalent information about Arduino USB hosts.

@Nick has said "which Arduino" and "proposed USB shield". Right now I haven't even found anywhere or anyone to tell me that these are relevant questions. Do different Arduino's have different USB host capabilities? Is there a list of what each one can do? Are there different USB host shields with different capabilities? Is there is a list of the different devices and what each can do? Maybe some devices need particular types of Arduino?

[Rant] I am a regular user of Open Source software and it generally suffers very badly in the area of documentation compared with commercial software. If the Arduino and its shields was a Microsoft or Oracle product all of this would be fully documented. I can empathize deeply with people who prefer writing code to writing documentation (so do I) but there must be an enormous hidden cost worldwide as everyone using Open Source stuff spends unproductive hours trying to figure it out [/Rant].