element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Raspberry Pi
  • Products
  • More
Raspberry Pi
Raspberry Pi Forum Raspberry pi usb output from GPIO
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Raspberry Pi to participate - click to join for free!
Featured Articles
Announcing Pi
Technical Specifications
Raspberry Pi FAQs
Win a Pi
Raspberry Pi Wishlist
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • Replies 10 replies
  • Subscribers 668 subscribers
  • Views 7714 views
  • Users 0 members are here
  • raspberry
  • python
  • from
  • pi
  • gpio
  • hardwarehacking
  • hid
  • program
  • programming
  • usb
  • raspberry_pi
  • raspberry-pi
  • raspberrypi
Related

Raspberry pi usb output from GPIO

Former Member
Former Member over 10 years ago

I've had this idea and I've googled a lot to find out if it would be possible to attatch usb cable to raspberry pi's GPIO pins. I already got an old usb cable and cutted the other end off and i tought that I just attatch the vireing to GPIOs and plug other end, whitch have still the USB A port on it, to computer and I would be able to control all data.  I mainly am trying to program it to act as HID device.... Is there any python lybrary or can i just somehow output the raw data in bytes? How would i be able to do it?image

  • Sign in to reply
  • Cancel
  • michaelkellett
    michaelkellett over 10 years ago

    Unless you can write kernel drivers for the RPI then you won't be able to do it.

     

    People have written (very poor performance - a hardware issue - not because their code isn't clever) USB code for some Atmel AVR processors which works by bit banging GPIO - have a look at that to get and idea of what you are attempting. And read the USB spec - it's free.

     

    V-USB - A Firmware-Only USB Driver for Atmel AVR Microcontrollers

     

    MK

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Former Member
    Former Member over 10 years ago in reply to michaelkellett

    I need to write own kernel drivers???? Seriously? To control USB data with GPIOs? Why do I need usb drivers to control GPIOs?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • michaelkellett
    michaelkellett over 10 years ago in reply to Former Member

    Did you read the USB spec or look at the AVR examples?

    You are trying to emulate a USB device with GPIO - that means that you must support the USB timing without the aid of any dedicated hardware, you have to serialise/deserialise at a minimum rate of 1.5Mbit/s (12 or 400 for full speed or high speed). You can't afford an interrupt during a data transfer even at the lowest speed. The only way you might be able do this is to take complete control of the processor.

     

    If  you want additional USB connectivity on an RPi then consider using one of the FTDI chips which can be controlled via GPIO, UART or SPI ports.

     

    MK

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • Cancel
  • Former Member
    Former Member over 10 years ago in reply to michaelkellett

    Thanks a lot for this information and thanks for fast reply. I'll maybe create own drivers. And i checked the v-usb's github repository

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • rew
    rew over 10 years ago in reply to Former Member

    The practical answer is: it is not physically possible: You need USB-hardware in the chip to be able to do what you want.

     

    Now, some fool managed to implement something for AVR in software that sort-of works. Normal hardware always implements the 12mbps mode of USB. The avr-software one only implements the 1.5mbps mode. If you want to do "HID" that's fine, but for other usb-standard-slave-devices, the standard specifies "at least 12mpbs". Some hosts don't mind and will allow such a function on a slow device, but others wiill enforce the standard.

     

    Getting the software-USB working on raspberry pi is a whole lot of trouble that is not worth it. There are many other more sensible ways to create a communications channel between your PC and the raspberry pi.

     

    The things you can easily get to work right niow are: ethernet and "serial". Get an USB-ttl-level-serial converter make sure the levels are 3.3V, and wire it up. Standard baud rates can go up to 115200bps, but both the USB-serial and the raspberry pi can go higher (but it's usually not worth the trouble)

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • Cancel
  • yeef46
    yeef46 over 8 years ago

    rpi.gpio may help

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • gadget.iom
    gadget.iom over 8 years ago in reply to yeef46

    Care to illustrate this recommendation further?

    All sources I've looked at indicate that USB is handled by a separate IC and is not connected to the GPIO pins.

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
  • fvan
    fvan over 8 years ago

    Would this be of any help? Turning your Raspberry PI Zero into a USB Gadget

     

    Becomes interesting, combined with something like this: Pi Zero USB Stem

     

    Edit: While the last replies are recent, the original post seems to date from long ago. Apologies.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • rew
    rew over 8 years ago in reply to gadget.iom

    On microcontrollers like the one on the raspberry PIs, USB is implemented as a peripheral: on the CPU chip some pins are dedicated to USB or might also be able to do GPIO if you don't need the USB function.

     

    The "separate chip" story comes from the LAN9514 on the raspberries. The broadcom CPU has only one USB port. This is fine when it is in a phone that has a single USB port, but as a more "general computer" more ports are required. So all model-B's have had a LAN chip that provides an USB hub for "more USB ports" as well as an Ethernet port.

     

    On the early model A's you can see the empty spot where the LAN-chip could have been mounted. See https://en.wikipedia.org/wiki/Raspberry_Pi   and look for the image of the "early raspberry pi 1 model a".

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • Cancel
  • pthat
    pthat over 8 years ago

    Back in the day of Serial Ports and Parallel Ports on PC's you could connect the TX and RX(Serial) or the D0 (Parallel) lines to GPIO pins via a voltage shifter such as MAX232 and by sending out bytes at a low baud rate, read the Bits in as the pins went high and low, known as Bit Banging.

     

    USB is different as you cannot just simply connect the data lines and do the same. Firstly is the data being sent is probably too fast to monitor the pins and it actually does a lot of other stuff such as handshaking before it even gets to this point.

     

    If you really wanted to send data out of a USB port and read it in by monitoring the GPIO ports then you can setup your own Bit Bang Routines with FTDI modules based on the FT232 chip for serial and FT245 for parallel Data.

     

    Probably easier just to use the onboard Raspberry Pi UART and connect the FT232 module to read in the serial data, as would be much quicker than doing your own Bit Bang routines.

     

    Or just use the USB port on the Raspberry Pi to receive 64byte packets at a even faster speed.

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube