Slashdot Mirror


USB Development Tools for Embedded Devices?

engywook asks: "I am thinking about putting a USB interface onto a real-time (home-brew kernel) embedded device, (naturally) with the intent that it talk to another device. I am thinking that it would be very useful to be able to monitor the USB traffic between my device and the other device, and between that other device and (say) a PC that already knows how to talk to it. Looking around, it seems that this capability is available, but at prices in the US$10K and up realm, which is a lot more than I can afford. I am looking for pointers to tools that would accomplish this for much less money. Any ideas would be appreciated! Thanks!"

31 comments

  1. Linux Journal #7605 by eburrows · · Score: 5, Informative

    Last month's Linux Journal has an article titled "Snooping the USB Data Stream", where the author talks about exactly what you want. He talks about using Linux to monitor the data, but you can still use this method to monitor Windows talking to your device by running Windows in VMware.

    1. Re:Linux Journal #7605 by Anonymous Coward · · Score: 5, Informative

      I was going to mod you up, but I thought I'd help out the lazy instead: link to the article. :-)

    2. Re:Linux Journal #7605 by engywook · · Score: 1

      I have seen this article, and I expect that it will be of help. But, since my unit is not running Linux, it will be of help only during the early stages of figuring out how the existing device is wanting to talk.

      Thanks!

      --
      "This signature quote intentionally left blank"
  2. from the /. fortune file: by mcmonkey · · Score: 0, Offtopic

    Reply hazy, ask again later.

  3. Cypress USB Kit by codexus · · Score: 4, Insightful

    I bought a Cypress USB kit a few years ago, it's quite cool. Is that company still in business? Their website seems to be gone.

    --
    True warriors use the Klingon Google
    1. Re:Cypress USB Kit by codexus · · Score: 4, Informative

      Actually it seems I was wrong, now their website is working and they still have affordable USB kits: http://www.cypress.com/

      --
      True warriors use the Klingon Google
  4. any linux-based usb-host-capable dev. board. by torpor · · Score: 4, Interesting


    there are tons out there, cheap. ARM, even ... google is your friend (so is linuxdevices...) they can be had for $99 or so, or free, in some cases, if you know your vendors ...

    that, and the linux kernel, is all you need to debug USB.

    --
    ; -- the corruption of government starts with its secrets. a truly free people keep no secrets. --
  5. Terrible. F by johnjones · · Score: 4, Informative

    your using a custom kernel so
    look at netbsd USB stack and see howto put that into your src

    you can dump out the usb traffic under netbsd look at the src

    if you want to reverse engineer a windows driver you can use VMware on linux and dump the traffic
    http://www.linuxjournal.com/article.php?s id=7582

    or

    insert a windows driver (that dumps usb traffic) and look at the dumps but this could taint the results see http://usbsnoop.sourceforge.net/

    or

    buy a hardware that sits inbetween the cables for $1000 see http://www.usbdeveloper.com/USBViewer/usbview.htm

    really I would look at http://www.fsmlabs.com/ as you can run real time tasks and use the linux drivers for usb because that part sure as hell is not going to be real time...

    it you have failed to do ANY RESEARCH at all

    Terrible. F

    regards

    john jones

  6. FPGA by psyconaut · · Score: 5, Informative

    Assuming that you're happy with USB1.1 and below, one approach is to use a low-cost FPGA (Altera Cyclones are great for this, and a suitable one is $20).

    Zip over to opencores.org, grab the USB 1.x MAC and PHY as a starting point....and you can start to build your own hardware USB sniffer.

    The beauty of this approach is that you can do *proper* sniffing type activities such as microsecond time stamping of samples, which gets (*ahem*) tricky doing things in the software domain under Linux or Windows.

    If you just want to see a vague picture of the wire, you can stick to operating system level sniffing as others have pointed out.

    -psy

    1. Re:FPGA by kisielk · · Score: 1

      And this is modded funny because??? Sounds like a good idea to me, you could do some really flexable analysis of the signals with an FPGA, and even integrate it in to the rest of your system.

    2. Re:FPGA by SleezyG · · Score: 1

      $20! Where do you get your prices? True, an FPGA chip by itself costs around $20 from someplace like DigiKey. Yet, an FPGA is completely useless by itself. As a hobbyist, he'll need some sort of PCB to plug in the FPGA, power it (they lose their bitstream once power is removed), and a cable to program it. More like $150 from my experience.

      I'm not too familiar with Altera, but www.xess.com makes terrific Xilinx-based dev boards starting at $150. They have an on-board i2c-usb chip, 8 MB DRAM, VGA, and tons of free reference designs. It's almost too easy... ya do like Verilog, don't ya?

      ~ SleezyG

  7. PC tools... by brianjcain · · Score: 4, Informative

    Seek out USB Snoop. You can monitor the goings-on between Windows and the USB device's driver. This probably won't replace a hardware USB debugger, but it's a good start.

    Your usage description seems to advocate a more node-to-node based relationship between devices on the bus. An interface like firewire seems much better suited to your application than USB (master/slave). Though I suppose it could be considerably more complex to implement?

    If you still need a hardware analyzer, this one looks more affordable.

    1. Re:PC tools... by engywook · · Score: 3, Insightful

      Yes, I'd also found USB Snoop. I think that it also may be of use in the early stages.

      You are right that there is a node=to-node relationship. In fact, I expect that my device and the other will be the only two connected at any given time. Unfortunately, I don't get to pick the interface. The other device already exists, at it is already USB.

      BTW, the only reason it is USB instead of RS-232 is that "someone" convinced (nearly) all the PC hardware manufacturers that RS-232 was Evil and USB was Good. So, PCs no longer have RS-232 ports. So, the manufacturers of the device I have to talk to are discontinuing their RS-232 versions and coming out with USB versions. So, we have to talk USB, too, even though the RS-232 stuff was working just fine. sigh.

      --
      "This signature quote intentionally left blank"
  8. FTDI transceiver by oojah · · Score: 3, Informative

    Use one of the FTDI USB tranceivers instead of trying to reinvent the wheel.

    http://www.ftdichip.com

    They make usb chips with serial interface (drop in replacement for an RS232 transceiver) or an 8-bit parallel interface. Comes with drivers for windows and there are drivers in the kernel already.

    Only does up to 12Mbit/s though.

    Cheers,

    Roger

    --
    Do you have any better hostages?
    1. Re:FTDI transceiver by psyconaut · · Score: 2, Informative

      AFAIK, they don't let you sniff the wire.

      -psy

    2. Re:FTDI transceiver by engywook · · Score: 1

      I didn't see anything there that would let me be a Host or do OTG. Did I just miss it? Since the thing I need to talk to is very much a Device that expects to be plugged into a Windows box....

      --
      "This signature quote intentionally left blank"
    3. Re:FTDI transceiver by oojah · · Score: 1

      Sorry, I was in a real rush when I wrote it. I didn't really read the write up...

      --
      Do you have any better hostages?
  9. Do you need it? by Solder+Fumes · · Score: 2, Informative

    If all you want to do is get your USB device working, I'm not so sure you really need this capability. USB analyzers are primarily useful for testing the device for compliance with USB signal standards. That way, you only have to get your device compliance-tested once.

    I've developed a few USB devices, and frankly I haven't needed an analyzer just to get the device to work. If something's happening you don't understand, set breakpoints or toggle some status LEDs to see where you are in the firmware. That, and software-based sniffing for the occasional sanity check, has been all I really needed.

    Learn the standard USB device types, and if you try to reverse-engineer a proprietary device, stock up on Advil.

  10. Another angle by xenocide2 · · Score: 2, Insightful

    I've seen a lot of USB snoop suggestions, which are a fine solution. But if you don't find that acceptable, I'd suggest looking into a Controller Area Network(CAN) module instead. You can find PC adaptors for this very cheaply, sometimes as little as 20 dollars. It's specifically designed for systems where you know exactly the kind of communications that will go on, and who's more important than who. It's used in a lot of automotive situations, though there's a growing group that doesn't think it's safe enough.

    --
    I Browse at +4 Flamebait

    Open Source Sysadmin

    1. Re:Another angle by engywook · · Score: 1

      CAN is very cool. I'd actually rather implement CAN for this, as my device already has CAN hardware on it and we've used CAN in the past. Thus, we already have software and experience in the CAN world.

      Unfortunately, the device I need to talk to already exists, is from another vendor (actually, potentially multiple other vendors), and has USB and no CAN.

      It's a real shame that they don't talk IDB (ITS Data Bus, SAE J2366). That would be too cool.

      --
      "This signature quote intentionally left blank"
  11. Three things for you to look at by raider_red · · Score: 3, Informative

    First, get a copy of USB Complete. This book provides a good reference to the USB interface, and is oriented to hardware design. It also gives a lot of useful advice on picking a USB controller.

    Second, visit the Silicon labs web site. They sell a development board for their USB enabled Microcontroller which includes all cables, an assembler, and a bunch of utilities and examples. They also include a development kit for implementing the Windows drivers for your new device.

    Finally, there's a utility available on the web called Snoopy which will let you capture USB packets.

    --
    It's good to use your head, but not as a battering ram.
  12. If you made the kernel/device... by fozzmeister · · Score: 1

    can you not just echo it somehow?

  13. Circuit Cellar by FrankSchwab · · Score: 5, Informative
    CircuitCellar just happens to have one part of a multi-part article on implementing a USB device up on their website here (Page 7, with other references). You'll probably have to check out your local university library or order backissues to get all the parts. They've had 3 or 4 similar articles over the last 5 years.

    /frank

    --
    And the worms ate into his brain.
  14. Try Belkin's USB to serial converters. by Futurepower(R) · · Score: 2, Informative


    I've had success with USB to serial converters. I bought a bunch of them for $12.00 apiece from Belkin, for example. Email me if you want more info.

  15. I think you're going backwards... by Myself · · Score: 1

    From my reading of the question, it looks like the "other device" is a USB slave device, and the author wants to make a USB host to connect to it. If you can find me a USB host device that lets me speak RS232 to a USB-only slave, please, speak up!

    On a somewhat related note, Delkin and Macally have USB bridges which play host to two devices simultaneously, shuffling files back and forth.

  16. He said he would like to get rid of USB... by Futurepower(R) · · Score: 1

    He said he would like to get rid of USB completely, and only use RS-232. This was a comment he posted to the story.

  17. USB analyzers by dizgusted · · Score: 1

    The Ellisys Tracker 110 (http://www.ellisys.com/) is usually regarded as the least expensive yet functional hardware USB analyzer. It's about $900. I have one and it seems to work well. It feels overpriced but, when you need it, you need it. Lots of other resources at http://www.usb.org. One of the Ellisys developers hangs out there as well.

    1. Re:USB analyzers by engywook · · Score: 1
      The Ellisys units look very promising, much less expensive than some of the others I'd found. I'm thinking that I may need OTG capability in my unit, if I want to both talk to the existing device and to be able to plug mine into a PC (for parameter setting and such). So, I may need to get the more expensive model that has the 2.0 and OTG support, even though I don't expect to need (or be able to support, with my cheap micro) the high speed USB.

      We'll have to see whether I can swing the higher price.

      Thanks!

      --
      "This signature quote intentionally left blank"
  18. Continuing from above: by Futurepower(R) · · Score: 1

    Continuing from above: New computers have no serial ports, so he could use a USB to RS-232 adapter to support RS-232.

  19. Not Getting Rid of USB by engywook · · Score: 1
    I'm not trying to get rid of USB. I'm forced to use USB. I need to make my device talk to an already existing device that talks USB and that expects to be plugged into a PC. I am not making a PC or anthing to do with a PC (mostly). I am making a small real-time device that needs to talk to this other device with no PC anywhere nearby.

    Now, if my device could also look like a USB/RS-232 adapter to a PC, that would be extra cool, as it would let me do some parameter setting, diagnostics, etc. from a PC.

    --
    "This signature quote intentionally left blank"
  20. You could try by Anonymous Coward · · Score: 0

    This sourceforge project. It's a USB sniffer for Windows.