element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • 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 USB joystick only works through unpowered hub?
  • 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 665 subscribers
  • Views 1928 views
  • Users 0 members are here
  • usb
  • retropie
Related

USB joystick only works through unpowered hub?

andywest
andywest over 7 years ago

I'm nearly finished building a handheld game system running RetroPie. However, there's one thing I can't get working.

 

I'm using a USB joystick encoder (https://www.amazon.com/Reyann-Arcade-Encoder-Joystick-Fighting/dp/B00UUROWWK/). I've hand-wired a USB cable to the test pads of a Raspberry Pi 1 Model A+ with 512MB RAM. The cable is terminated with an A-type female connector. The encoder has a hand-wired cable with an A-type male connector.

 

When the encoder is connected directly to the Pi, the power light illuminates for less than a second and then goes out. RetroPie does not detect it. However, if I plug the encoder into a USB 2 hub (https://www.adafruit.com/product/2998 ) then it works. It's important to note that I am NOT supplying external power to the hub.

 

The fact that it works with the hub suggests that it's not a problem with incorrect wiring or lack of power. Just in case, I built a separate test extender cable with the data wires swapped. As expected, it didn't work. I also tested the encoder on a Windows 10 PC (without swapping the wires) and it works fine.

 

Can anyone think of why this might be failing or know a way to fix it? Thanks!

  • Sign in to reply
  • Cancel
Parents
  • richard_damon
    richard_damon over 7 years ago

    The fact that it works on a unpowered hub is NOT proof that it isn't a power issue. USB has several different power draw limits depending on what the device negotiates. Some devices will enforce the lower limits pre-negotiation and disconnect a device that draws too much and some do not. A hub will automatically negotiate a higher limit as it may have multiple devices plugged in which may exceed the default limit. It may be the Pi is fussier about power draw than the hub.

     

    It is also possible that the Pi doesn't have a USB driver loaded for the device. When you plug in a device the computer will ask it what it is and enable the right driver. If it doesn't have one, it will tend to shut down the device. Since Pi's are running on a different processor than most home computers, sometimes it is harder to find drivers, did you find a driver for this designed for the Pi?

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • Cancel
  • andywest
    andywest over 7 years ago in reply to richard_damon

    Thanks Richard, but I don't fully understand your answers.

     

    A hub will automatically negotiate a higher limit

     

    So if the hub automatically requests a higher limit than the joystick, then why would the joystick be disconnected but not the hub? Why would the Pi disconnect the device that negotiates less power?

     

    It is also possible that the Pi doesn't have a USB driver loaded for the device.

     

    This makes even less sense to me. If the Pi requires a driver for the device, then why wouldn't it require a driver when the device is connected through the hub? It clearly doesn't need an additional driver, because it works without one. Anyway, this is a generic USB joystick. No extra driver is necessary, nor was one provided.

     

    Based on this experience and what I've read, I'm starting to think the A+ just has a flaky USB implementation.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • richard_damon
    richard_damon over 7 years ago in reply to andywest

    Why would the joystick get disconnected? Because USB says that if a device draws more current than it has negotiated then the controller may (and a bit stronger than may, it is sort of expected) disconnect the device. The issue is that some cheaper implementations just set the kick off current to the maximum a device might negotiate, and not worry about changing the threshold with negotiation. By default devices get 100mA of current draw. If the device is drawing say 150 mA, and doesn't negotiate the higher current before using it, then the controller might just kick it off. The hub probably just begins by negotiating 500mA of draw just to be ready, and may ignore the fact that the joystick didn't negotiate its current draw.

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
Reply
  • richard_damon
    richard_damon over 7 years ago in reply to andywest

    Why would the joystick get disconnected? Because USB says that if a device draws more current than it has negotiated then the controller may (and a bit stronger than may, it is sort of expected) disconnect the device. The issue is that some cheaper implementations just set the kick off current to the maximum a device might negotiate, and not worry about changing the threshold with negotiation. By default devices get 100mA of current draw. If the device is drawing say 150 mA, and doesn't negotiate the higher current before using it, then the controller might just kick it off. The hub probably just begins by negotiating 500mA of draw just to be ready, and may ignore the fact that the joystick didn't negotiate its current draw.

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
Children
  • andywest
    andywest over 7 years ago in reply to richard_damon

    Thanks for the clarification. I think I get what you're saying now. Unfortunately I don't think that's the problem in this case since I'm measuring a current draw of less than 10 mA when it's working and when it's not.

    • Cancel
    • Vote Up 0 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