Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 3282994
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 17, 20262026-05-17T19:59:26+00:00 2026-05-17T19:59:26+00:00

I’ve got an embedded Linux project where I need to read video in through

  • 0

I’ve got an embedded Linux project where I need to read video in through a USB port, make some modifications to that video (such as compression), and then send it back to the host via preferably the same USB port. It would also be a preferred feature if we could send commands to change things such as the video compression level from the host to the device.

The host can be assumed to be a desktop running some version of Linux, and the device which actually does this video processing is a Gumstix running embedded Linux.

I’m basically at a lost as to how to start this project or what to research in the division of input/output in Linux. First off, does it sound possible to both read video, write video, and send commands through the same USB port? The video is relatively small, especially after compression by the device, so bandwidth isn’t a problem. The main problem is knowing where to start research for this project. Is there anything like TCP/IP for USB where you could open multiple connections between the host and device to transfer data?

Will we have to write our own USB device drivers? Develop our own protocol or does USB support doing multiple things on the same port relatively easily?

Should I begin researching Linux drivers, user level programming and APIs, or the USB protocol? Or something entirely different?

I’m a senior computer engineering student, so my experience level is a mix of programming in C, C++, Java, Verilog, TCL, etc. Almost all socket related programming has been in Java (OS independent) so I really am not sure where to start on writing a Linux application to perform such a task. I’ve had a decent amount of experience with microprocessor programming (AVR, coldfire), but again despite being close to what I need, it isn’t really helping me figure out where to start this.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-17T19:59:27+00:00Added an answer on May 17, 2026 at 7:59 pm

    USB ports come in two flavors; host which is the controller of the bus and is found on PC’s and device or in Linux speak a gadget (there is a version commonly found in stills cameras where the port can switch type at connection called USB on the go). A host port can connect to multiple gadget ports (via hubs). The host is aways very much in control with gadgets operating as slaves.
    The hardware for the two port types is very different and many embedded cores contain examples of each type of controller. The Linux kernel contains host drivers for OHCI EHCI and UHCI host controller hardware and various protocol drivers (printers, keyboards etc). For some device types the USB organization has implemented standard protocols so you don’t need manufacturers drivers for USB disk drives as they should all comply to a free and publicly available standard.

    If you want your device to talk to a PC host you will need to implement a device/gadget interface, there is far greater variety in hardware designs for the other end of the cable, but you should find the Linux kernel supports a selection of the more common ones.

    The gadget directory also includes a selection of protocol drivers as well. One trick that could save a lot of work would be to configure your device to appear as a USB network interface, this avoids writing a lot of low level stuff and you can take advantage of the network diagnostic tools and the USB layer is abstracted out of your application on both ends. This even works with a Windows host without needing to write custom Windows drivers (XP only supports the Microsoft RNDIS USB protocol and the Windows driver is buggy and can hang on disconnects but the kernel includes a RNDIS wrapper and this solution can be made to work well).

    I wasn’t sure from your question is the video source was an independent USB device in which case it will need a separate USB host port on your device or if it was supplied by the host.

    Get your self set of kernel sources and study the USB gadget directory, also download the USB specifications from USB.org You will want to understand chapters 8 9 10 11 as they explain what happens once a host detects a gadget and also the concept of endpoints. Mindshare did USB book that was a ok as a quick introduction to USB.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

No related questions found

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.