See the minimum needed for a USB device to list in Device Manager
Вставка
- Опубліковано 28 тра 2024
- See a demonstration of how little has to go right for a USB device to show up in Windows Device Manager or Linux dmesg and understand what that means for troubleshooting USB microcontroller/Arduino projects.
The video I'd mentioned about beginning regarding wasting time looking for drivers: • Arduino not showing De...
00:00 Intro
00:15 Description
00:42 Demoboard overview
01:29 Demoboard circuit details
02:20 USB device enumeration
04:03 Speeds
05:17 Testing In Windows
07:03 Testing In Linux
08:39 Troubleshooting
08:57 Physical connections
09:35 Enable/RESET signals
10:27 A microcontroller seems to be trying to connect
11:19 Designs that try to connect by default - Наука та технологія
I don't have a hackaday account. But, I just wanted to clear up some confusion a poster over there seems to have, just in case you got some ideas about what this video was going to show you based on what you read there. Or you found this video yourself and also came to the same conclusions they did. Or were about to to come to these conclusions.
They seem to have gotten the point of this thing backwards. So, it's strangely easier to clarify things in reverse order. Starting from the end:
"He runs through a few other potentially useful scenarios, but really, the best use of something like this is to educate yourself on the lowest levels of USB connection negotiation".
*_The whole point_** and really **_only point_** of the board shown **_is_** to demonstrate the first (low level) thing a USB device does to signal for attachment, which in turn causes it to list in the mentioned utilities, in the way shown.* That is, the minimum thing that a USB device has to do right to cause that to happen, namely USB device pull-ups. The point _is to educate yourself on that topic and hopefully have that inform your debugging of USB device problems._ Or you can just find it mildly interesting. The board you see in the video was put together to help demonstrate the device pull-ups and nothing more. That "best use" was the _only intended use_ for it.
*_"[TM] points out, you could use this circuit to test that the physical port on the host at least minimally works."_*
You could use it that way. But that's not what I'm explaining at all. What I'm showing is what you can expect to see on your computer (in both Windows and Linux), if something successfully creates these signals alone. These signals are the minimum needed to list in same way in both Device Manager and dmesg. That's what I'm showing in the video.
*_"as this extremely minimal but functional USB device illustrates."_*
Well, the board is somewhat minimal. But, as many people pointed that you don't really need an actual linear regulator IC on it (more on that below). However, this is definitely not anything _I_ call a "functional USB device." It quite literally reports with failures to read the device descriptor and has nothing on it capable of sending USB messages, which are both things mentioned in the video. What it _is_ is a demonstration of the "minimum needed for a USB device to list in Device Manager", hence the video title.
So far as I can tell, the author thought the material at the end of the video was intended to describe ways to use the board shown, as though it were made to be a tool you could build and not what it is, a demonstration board. What's being talked about at the end of the video are ways you can use "this understanding"... understanding of USB pull-up resistors. These are the "something useful" I mentioned at the beginning of the video, the "something useful to use in your thinking when troubleshooting USB problems." Ways to use the under "understanding". *Not* ways to use the board.
I hope I'm not coming off as mean in the above. I'm glad someone was thoughtful enough to mention it on a site about electronics. It's crazy to me than anyone is watching this. I thought like maybe 5 people would watch it, maybe 50. But so long as people are watching it, I do want to make really clear about what is being said in the video and what is not. It is just demonstration and description of a basic thing that USB devices do and how you might use the knowledge of that which is demonstrated to help you in troubleshooting.
Regarding regulators and dividers:
Mostly I used a regulator to be more or less in analogy with what you actually find in USB devices. They're typically already 3.3V devices powered by a regulator. Or they're 5V devices that have an internal 3.3V regulator specifically for this purpose. And it's probably the least distracting thing to put there when you're explaining something not-that on the board. I'd also briefly considered using what the Digispark uses, which is essentially a zener regulator and because it features later in the video. And because I also happened to know where some of my zener diodes were. But, I also just had a regulator. And yeah, you could also probably just make a divider from VUSB to GND. I didn't try it. I expect it works. But also I simply had a regulator and cap at hand.
Could you use a divider? Yeah probably. If you wanted to rely on the 15k internal pulldown you won't wind up with 1.5K on the top. You'll need something more like 8K, I think. Which is not what is called for. Would it work? Probably, I think. If it worked for me would it work for you? I don't know. Maybe.
If you put 1.5K on the top with only 15K on the bottom you'll wind up above the 3.3V nominal signal range. Is that a problem? Maybe not. If it wasn't a problem (perhaps damaging something) for me would in not be a problem for you? I don't know.
So, you'd need a resistor in parallel with the 15K internal one, which is quite large compared to what you'd need externally. So you can more or less ignore the 15K and you don't necessarily need to run the parallel resistor calculation and just think of it as simple two resistor network. If you put a 3K resistor on the bottom of the divider that should be about right. With 1.5K on the top it divides 5V to about 3.3V. Would that work? Probably. However, the USB host is going to act on that divider when it tries to set a device address and ask for a device descriptor. Is that a problem? I don't know. If it worked for me, would.... Or you could just use a regulator. And then it will work and immediately be recognized as something that will work if you were trying to explain it someone else, say in a video for example. =)
If you want to play with voltage dividers or the Digispark/V-USB/bitbanged style zener setup, go for it. If you have TL431 kicking around, I'm sure you could get that to work. Or if you have a simple 3.3V fixed output linear regulator kicking around, maybe just use that. If you're not worried about the repeatability of your setup you have a lot more freedom. Try stuff way out of spec. I did and found at least on hubs that I tried it on it worked fine to get similar results. But, you can get a 3.3V regulator like for under 1USD, in quantity one, at least if you're in the US ordering anything from a US parts distributor.
Original Message:
I'm really surprised to find this sort of support. Especially on a video like this. Had a little more to say about it in a community post. But mostly I just want to say thanks for letting me know you're getting anything out of watching this. It's just good to see.
ua-cam.com/users/postUgkxvMno3tHF9bHJ4N3BiNBrIeZPUuBtQZWF
Keep going, this is really great content!
This is something I have always wondered, but never could put into words to make a question
Rad video. Good to see this kind of slightly deeper/different content! Cheers!
I just got randomly introduced to your channel by the algorithm, which is kinda weird tbh since I intentionally never watch any tech channels (I find the "geek as a way of life" philosophy of most tech channels very cringeworthy, but I digress).
Regardless, for a channel with 1k subs and sub-100k views on a week old video the content is pretty good, definitely good enough for me to gamble my time giving it a sub which is more than 99% of UA-cam channels can say.
If I had to make a suggestion I'd say invest in a good microphone. Right now the voice track sounds crunchier than a a bag of Cheetos, to the point that for a while I thought you were using a voice modulator of some sort. Nowadays you can get amazing audio for less than $100 and such investment would improve the overall quality of the videos tremendously, specially because the other elements are already pretty good.
I am glad I came across your channel. I hope to see more uploads from you soon. Great work!
Plot twist: there was a tiny microcontroller hidden inside the electrolytic capacitor package.
Plot twist: those jumpers on board are actually antennas and there's a strong radio emitter nearby to inject the signal wirelessly.
an ATTiny10 would work with ease
its well known that chinese capacitors (which this probably was) have microcontrollers built in to send all your data to the CCP
It also has wifi
In the cable
The internet needs more videos like these that help to demystify what have become everyday technologies an help the folks trying to utilize it to develop some basic debugging \ troubleshooting skills.
Especially considering how much manufacturers and developers have been broadly trying to obfuscate the underlying parts of their products in the hope of being able to maintain planned obsolescence, keep their platforms as closed as possible, and squeeze a little extra money out of end users.
@@zg-it I used to watch it on a science cable channel back when I had a TV - great stuff!
Well at some point in the past you had the whole schematic delivered with your pc.
People drive cars without having the slightest clue about what a combustion is or how gears work.
I wish this stuff was more common knowledge since a good percent of people are driving cars and are using computers.
@@theothergameygamer hey, turns out the host has a UA-cam channel called The secret Life of components. Still making content now!
This video is incredibly helpful to quickly narrow down on some USB problems, thanks for condensing all this information down!
Did you find this while you were troubleshooting something?
@@laughing5559 I think you meant to post this reply on the "Plot twist" thread, not this one?
@@Graham_Wideman To be honest I don't remember making the post or why so I will delete it.
Great video!
One small thing I caught: at 4:20 you say that SuperSpeed also pull up D+ to initiate the connection, but this is not strictly necessary. A SuperSpeed connection solely uses the SuperSpeed wires, so it'll even work with D+/D- completely disconnected. This allows for fun stuff like attaching a SuperSpeed-only and a *different* Low/Full/High-Speed device to the *same* USB port!
Interesting. I did have it in my head that the negotiation up to superspeed would require an initial enumerate and exchange of a few messages at full speed first. I'll have to look at that again when I'm back to reading about USB.
That's weird they didn't use the extra wires for the connection
@@TM-zs7ko I have a "fiber extender" device which, when opened up, doesn't have soldered D+ and D-, but only has the two pairs of "USB 3+" connections. Hence, it doesn't work for your average keyboards and mice. Which for me was a waste of 400 bucks(I mean, yeah, I can probably solder that in, if I had enough practice and time, because the chip would support it). Because, well, reasonably you don't expect something produced in 2020s to NOT be backwards-compatible.
On the side note, what did you do to this video so that it came up on yt recommended? 190k views on this one, but almost none on your other videos?
This is a good explanation for basic USB. Thank you.
@@kreuner11 I'm guessing that the synchronization overhead would be too large, and that it's more efficient to just leave the lower speed pins alone.
@@user-th3jl8mz7y the algorithm™ is weird. Sometimes random videos become popular for no reason.
My theory is that for channels with low numbers the algorithm™ suggests it to only few people, then bases how "worthy" the video is based on that. Basically, it seems to think that it's not worth to show videos of channels with few subs to many people to try to "push" them.
This means that if the first few people don't watch it, the video does bad. But every once in a while a video like that will be lucky and be suggested to people that actually watch it. This makes the algorithm™ think it's very good, and "worth" its time to show it to more people, which creates a snowball effect.
Got this video recommended to me in my feed. I wasn't looking for this, nor do I have a particular use case for it at the moment. But watching these well explained videos of small creators always reminds of UA-cam in it's early days where you got recommended all sorts of random videos because the algorithm wasn't that specific.
Keep up the good work!
USB C specs also support the “Audio Accessory Mode” so you can make a mic input and speaker output without even using adc or dac via USB
This makes sense to why some USB-C to headphones adapters don't want to work on some phones then!? 🤔
@@savagesarethebest7251 yeah your device needs to support it else it won’t even detect it. Many smartphones support it, but not all
@@savagesarethebest7251 you can thank Apple and Google for starting the trend of not supporting it
Next, grab the D+ and D- switches and manipulate them so they are on or off for roughly 570 ns with the following pattern...
At around 7:00 when you say the “system sees the pull up resistor” I would change that to the “the USB controller sees the pull up resistor and reports to the system”. Minor semantic change but it would maintain the different layers appropriately separate. Thank you for the great video!
Heh. I'll go nuts if tracked all of that down. I think I get what you're saying though. There's it can be helpful to have that extra specificity. Not much I can do about it now. I see stuff in it like effect glitches, I can hear myself pronouncing things like an idiot, but... yeah. It's done. I've had to transcribe my own unscripted speech before and it's painful listen to how incoherent I sound. So, I'm happy to be understood enough that anyone's getting anything useful out of it.
Is the USB controller not part of the system?
@@TM-zs7ko You did a fine job here mate, an impressive lack of ums and ahs for unscripted speech regarding technical concepts.
As a small-time youtuber myself, I always think I sound way more articulate in my head and then I cringe when I hear the actual unscripted audio track. :)
Oh this is definitely scripted or effectively the same with a detailed outline and then speaking naturally as I can but only in short bursts. On good days when I'm awake and talking about something really familiar I can minimize them. But this video probably has a ridiculous number of cuts in it. Less in the parts where I'm switching. I made a somewhat stupid video about mounting single ws2811 leds on headers and that's less edited and I think unscripted, just like a bullet list. And there are lots on ums and ahs in that. The ble sense watchdog one probably is like that as well. I'm not sure how much cutting was done there. I think to the extent that I had a script it was the code itself. But that video is kind of discursive also. It's good if this one sounds natural. But that's not really because I speak like that. Not in general anyway.
@@thewhitefalcon8539 "System" is an arbitrary term, it can mean whatever you want. But I think in this case it might have been better to specifically separate the usb controller from the rest of the 'system' because if you're having problems with usb it might actually be the usb controller that's bugged or broken in some way, and not the device you're trying to connect.
TM -- I have to commend you on a meticulously conscientious lesson in basic USB. A great job on focusing on the essentials that implement the basic functionality. And lovely attention to details that help everyone keep up, like having all the connections on the Veroboard on one side, and pointing out the number code on the resistors. Well done!
😢
11:31 instead of being pulled to 3.3 volts, it's pulled to 5V across a 1500Ω resistor. The whole 5V to 3.3V conversion is based on resistors and zener diodes. The necessary code for USB is controlled by bit bang software.
tinyurl.com/2ev6yq3y A reasonably simulated approximation of the Digispark-style bit-banging circuit if anyone wants to dig into it. I just tossed it together on seeing this. So, I may have done something wrong. Real Zeners are a bit more fiddly than the TL431 I think. But it captures the basic idea.
Good stuff all the way through. I'm really impressed with the illustration quality and thought that went into this video, I know that's a lot of work!
Heh. It's surprising much time you can sink into this sort of thing. I'm glad you like it.
Subscribed. You explain stuff flawlessly. Full of details, visual references and without overcomplicating it. I work as a technician and these type of videos are gold.
Comprehensive, detailed, simple and informative. Thank you for taking time to explain this. It will undoubtedly help in troubleshooting USB related issues for me.
Extremely good content, I had no idea it was so simple to have the OS see the device. Subscribed!
This is a wonderfully digestible video, yet also very comprehensive. Great job, and this is going to help a lot of people
This was an amazingly explained concept and a joy to watch!
For screenrecording (preferably with OBS) you have to choose the option "indistinguishable quality (very large files)" to get crisp recordings. (the files arent _that_ big)
Why not just use advanced mode and then choose an encoder that supports hardware encoding like nvenc or quicksync? Hevc has pretty small file size but x264 (software) should be fine too if there isn't much happening.
@@Sestain that sounds good. But too complicated for me. Tho nvenc (hardware) is the default encoder anyways
No, you just turn the bitrate up, thats the same result
We need more than 3 totally distinct but "bulletproof" solutions, guys.
Really!
**facepalm**
Not only is the content very well presented, but the production quality is exceptional. Thank you TM.
thanks for this video! I didn't know the first level of USB detection was that simple.
Very nice demonstration of how the USB device detection works.
This is an insanely well made video showcasing a clever thing. Kudos to you!
EVETHING SHOULD BURN IN VLEANSING FIRE
Wow this is incredible! Thanks for taking the time to make this video!
That was very useful, thank you.
Let me also take a moment to appreciate the beautiful weathered wood background!
I used to keep old siding boards around just for that special look.
What an amazing in-dept explanation. Thank you!
What a great video! Thanks! Your explanation is clear, to the point, and well explained. Love to see it. Gonna check out your other vids.
This is very neat, it’s cool to see a video like this become so popular despite a low number of subscribers
This is such a great educational video! Love the idea, explanation and video style!
Love this kinda stuff. Learned so much, will help with my development in the future 1000%
Thanks for making this!
This video is excellent. Very clear. A video that paints a thousand words kind of thing.
This is such a great demo!
I absolutely have a better understanding of how USB works now.
Thank you!
Ah, never thought of that before, I always thought it was digital devices talking to each other - very useful and informative! And I did read your channel description by the way!
This is helpful in so many ways: Linux & Windows device debugging, electronic circuit for USB connection, and more. Thanks 🙏
Great video! I love to see how the low level stuff works. It always helps in obscure diagnostic scenarios.. Thanks!
great video explaining something i hardly thought about! excited to see what else you make! keep up the hard work ! :)
Very good video about the lowest-levels of usb connections.
Great video and great explanation of the USB signals
This rocks and helps remind us that sometimes we overthink things.
Very nice and to the point video. Really helpful. Thanks a lot.
Thanks. I appreciate people, who know,what they are talking about. I learned a lot from this video.
Greetings from Germany.
Great video. Love knowing how pulling high or low on the data line hints the capabilities of a USB device and that it wants to communicate but also how the address is handled next by USB controller drivers.
I often see "Device not responding to setup address" with flimsy USBSATA adapters or bays and eventually they figure it out. As if the USB chipset is quick to wake up but the storage controller isn't. If not some other issue involving the cheap design of those ones.
Thanks for this video on USB. You've helped to lift the lid on the 'Dark Arts' of USB. Looking forward to more interesting videos from you.
The video is amazing, my mind is blown away. Maybe in the future i will make a usb sound card. I never knew how a usb is conected, now i do !
So amazingly explained and in a simple way! Especially 2:20 - 4:00 ! Thank you!
I don’t do much work with microcontrollers but this video was very informative and easy to understand, definitely will be a bit more aware next time I have to troubleshoot.
Awesome! Please do more USB hardware and software videos like that!
Thanks for making this. I love it when people show how much magical/cargocult/misunderstanding in thinking there is in common online advice for computer problems...
The thumbnail + naming of the video are perfect
This video is a masterpiece of clear and cogent explanation. Thank-you.
Didn't have any reason to click on the video other than to learn, and I wasn't disappointed. I think it will come in handy if I ever get around to making my breadboard computer. Subscribed and look forward to learning more from you :)
I wanted to do this experiment for sometime. Thank you.
Thank you for this informative video. I've been wanting to learn some of the USB fundamentals, starting from the ground up. This definitely started at the ground! I'd love to see something similar to this that shows the minimum messaging needed to send a minimum Device Descriptor in order to clear the Unknown Device error.
This is absolutely helpful and great video! It would have taken days to google and learn these information by myself. You have just explained everything in minutes. Subscribed for more videos. Thank you!
Glad this showed up in my recommended. As a computer nerd with 0 knowledge about electronics, this will come in handy when troubleshooting usb devices. That process can become frustrating very easily when stuff like this is perceived as "magic" by a noob like me. Great explanation :)
Today I learned about "new messages" and "time delta" in dmesg, too!
The algorithm has blessed me in this sacred night with a gift from the internet gods.
1k subs? Sir, let me up that by 1 right now.
Thanks for the info! It's amazing to me that I can have BSEE and never have learned this.
Sir, you got style! Realy good presentation. Thanks a lot for this video!
In my dreams you now start a video series, where you build any simple usb device on a breadboard level. It is not everyday when you love YT algorithm for showing a top notch of the top notch-quality video. I had to watch this 3 times to make sure I learnt every piece of details given in this video.
The outcome was to find just one reason more to hate Windows, lol.
Extremely insightful! Thank you
God what a great video! Please continue making videos- they're great!
I always wondered about this, so this was interesting. Thanks!
Wow thanks, I had no idea a connection could be that simple.
This video is very clear and answers some questions I've had while tinkering. Thanks so much, excellent work. I would watch anything else you put up that covers the basics of how USB and microcontrollers works. Or really any other low-level computer engineering topics that don't assume a BS in computer engineering :)
Great video. I was holding my breath waiting for you to explain what happens if switch both the D+ and D- resistors into circuit...
Somewhere in Alaska a railroad crossing signal turns on. =)
In all seriousness, my understanding was just that you're not supposed to that. So, I wasn't particularly worried covering it. I didn't dig deeply for proscribed behaviour for that situation or warnings against it. However, I was curious enough to turn both switches on and plug the device in and I got inconsistent behaviour in dmesg. Often it seems to detect as low-speed. Sometimes after having detected as low speed if I pull the plug and reinsert it, it doesn't show anything in dmesg. And I'll that repeated and still nothing shows. So, I switch ports on the hub and it shows again as low-speed. Re-insert, nothing. And there seems to be some memory of this event per-port. I'm not sure how much time I want to put into characterizing it though. Because it's possible that it won't be repeatable by anyone not using the same setup. Some of the random element I think I'm seeing may come down to just how I'm physically connecting the cable, it may be matter of which pin touches first. And the weird memory exhibited may be down to something about how my particular hub handles a non-standard situation. And the reason for that might ultimately just come back to "yeah, you're not supposed to do that." But I may look again at the standard if I get bored. They're all PDFs that you can freely download. So, if you're curious you might have a look.
@@TM-zs7ko Interesting you say that the PC remembers what is going on with USB ports. I have noticed this behaviour when I have been struggling with a dodgy USB cable. If you change the cable and it still doesn't work, try a different port. This is particularly noticable with printers. If you plug the same printer into a different USB port, often it assumes a different printer and creates an new instantiation of the driver. Anyhoo, thanks for your comprehensive reply. It was a genuine question - I've never read up on the USB protocol. And "Yeah, don't do that" seems like a good an answer as any. 😊
this is brilliant! and the video presentation is outstanding. bravo!
great video. clear, concise, and informative.
This video has blown up - can't wait to see more! USB is still a black box to most of us Arduino developers. I learned something.
Thank you for an amazing and interesting video!
now this is quality content. thanks for making the internet a better place!
TIL Wireshark can be used to monitor USB traffic. This is frickin cool. Thanks for sharing!
Just wanna let you know that I think this is super cool and I'm gonna finish it tomorrow, since it's late as heck.
It's always nice to see some low level stuff like this, and without a formal education in all of it, it's hard to find good resources.
Thanks, interesting that DM shows it that early, but I guess it makes sense to allow the diagnostics you have described.
really informative video i might try to make this myself more fun that way
that is honestly actually really interesting
Both useful and entertaining, thank you!
Well heck, learned something new today. Thanks for that 👍
Yes, very useful information! I'm not in IT but everyone at my work knows I'm technical so... well, you get it.. This is new information for me and I am positive it will help me out on more than one occasion to come!
This is an awesome video explaining it simple detail! Hat's off mate! I think I'd waffle on too much explaining the same thing.
Oh, I do. It's crazy unnatural for me to not use guarded language and not try to explain everything... and qualify my degree of confidence in it and... it's exhausting. I tend to just drop stuff or telegraph that I'm oversimplifying rather than listen to myself speaking in an overly assertive way about it. People have actually found this one and are asking about or saying all the stuff I'd left out. Just can't win. =)
@@TM-zs7ko I've been trying to get that sweet spot on my own vids. You can nerd out as one's desires; But most retro blokes are agnostic enough that I couldn't go free range fixing old dead chips.
That restraint was worth the effort. I wish more creators would do the same, so many don't "kill their darlings" and stick to the point. That will distinguish you from the masses that say you left things out. Of COURSE you did. The difficult part was (and usually is, when you explain fundamentals) figuring out WHICH PARTS to leave out.
Excellent video and very interesting! Thanks!
Please release your next one as soon as possible. This stuff is fascinating ! (and I'm not being sarcastic)
This kind of increased my respect for windows. The diagnostic message in the device manager is cool
You somehow managed to explain in a way that my Aspy brain understands completely 👍
Underrated! Keep this up!
Truly one of the divices of all time
Wonderful video! Thank you very much!
This is very interesting stuff. Had no idea USB device detection was so simple.
The very first stage of it, the minimum to get to list somehow in these utilities. I find it odd to display that way in Device Manager because I would normally tend to think of what's in there as fully detected devices. Really this kind of more like "I've detected a USB attachment request, but I've failed to complete the entire device detection process." Where a full detection would include at least getting as far as reading a device descriptor containing those hardware ids I'd mentioned aren't there.
Very cool, thanks for sharing your video! (subbed)
Excellent explanation!
No idea how I landed here but thank you for the amazing content
Brilliant video! I learned a lot of new stuff :-)
This video helped me to have an idea what happened to my CH340C yesterday when I finish populating my board components and tried to plug it into Windows 11. Got exactly the message shown in this video. The message was not very helpful to me until I watched this video. I resolved the issue though and the serial chip was recognized but this was a eye opener. Thanks.
Good deal. Yeah, the message itself doesn't tell you a lot. What did it end up being? A break in D-? No decoupling?
Coincidentally I have a board with a CH340G that I broke that might show up in a video if anything good or at least interesting comes from me trying to fix it.
@@TM-zs7ko , All I did was to simply resoldered all of the pins of the passive components that has anything to do with the CH340C, so I am guessing maybe one of the IC pin (D+ or D-) was not properly connected and when it got connected it started working. So, when I saw your video, it sure confirms this for me.
@@abdultairu Hard to tell sometimes after the fact. I'm glad someone got some analytical use out of seeing the demo.
Outstanding info .. Very good to know .. Thank You for sharing ... Cheers :)
Very useful info. Thanks!
Damn dude, that was awesome!
Not sure about personally useful, but VERY interesting! Thanks!
Thanks for the upload.
Dude this video is sick
This is really helpful! Thanks!
I learned a lot. Thanks.