hello all,im new at this but to keep it short and simple,ive noticed that the type c receptacle has multiple vcc and ground connections on different pinouts (2x each) so my question essentially is;
since type c can work in either orientation is this because of the different pins and to get the same utility do i need to tie the vcc to the other vcc pin and the ground to the other ground pin within the receptacle pin out? to get the ability for either side of the cord to power the board?
It’s quite common and normal practice to have several GND pins (and Vcc pins) connected in parallel. They improve the current handling capability, reduce contact bounce and improve reliability. For example when a connector or plug is damaged, but one of the other power pins can take over so it still “works”.
I’m no expert in USB-C but I do know that the pinout is made explicitly in such a way that PWR and GND are still in the same relative locations when the plug is rotated. Signal data transfer pairs also just swap location with another pair. No rocket science, if there is anything astounding then it is that it took 40 years to figure this out.
I do not know how easy it is to obtain “official guidelines” for USB-C, but I’m sure there is plenty of well meant advice and guidelines floating around.
And without any nag screens or other bullshit I downloaded one of the documents.
A bit later…
Ouwtch, it’s… complicated.
Different specs for different uses of the cable, CC pins that detect configurations. Just saw something about active cables that require a temperature sensor, and hundreds of pages of other stuff…
That is one of the nice things that I like about the USB working group. They don’t charge to download any of their standards. They only start charging (by joining the USB working group) to actually get an interface certified to be allowed to use the USB logo. Quite unlike the (several) standards groups for making PCBs…
One of the things I don’t like about them is that you’re supposed to pay through the nose just to get a 16 bit number. That is simply unaffordable for lots of Open Source projects.
there have been some companies with a VID, selling their sub PID’s and those USB commitee people claim that is illegal. I doubt such a claim will hold up in an European court.
Obdev used to do this with their V-USB (software) stack
I had a short peek at their website and now it claims:
V-USB comes with a free shared Vendor- / Product-ID pair.
The whole VID/PID system is extortion through artificial scarcity. Those identifiers could just as easily have been an UUID or a text string.
I am pro USB certification to get some reliability into the system, but the VID’s are just bonkers.
One way around this for some projects is to buy USB interface chips that already have that 16bit number assigned. Most of the USB-Serial interface chips do this. I’m not sure about the microcontrollers that have native USB (for example the ones used on Adafruit’s Feather boards). I don’t recall if the USB id number on those boards are from AdaFruit or the microcontroller’s manufacturer. But if I buy a feather to integrate into a USB device, I’m not paying the USB working group directly.
That said, the feather board is more expensive than me just buying a bare uC and the support passives and then rolling my own USB interface.
A bit of both I guess.
I’m not interested in “official USB”.
Just the VID number costs USD 6000:
The logo costs extra.
Apart from the free pid.codes (Thanks for the link) apparently quite a lot of vendors of microcontrollers and other chips (such as USB <–> serial converters) have a program in place to obtain a VID/PID combination.
My biggest problem is a vehement allergy against artificial scarcity (such as those numbers) For the same reason I refuse to pay for software that uses registration numbers. I rather donate to open source software then pay a dime for commercial software.
A brother of mine recently told me about getting a new PC to work. Installing windows is apparently fairly quick these days, but it took him several days to install all his software, transfer licenses and other configuration.
I bought the parts for a new Linux PC last christmas. (It’s quite difficult to buy a pc without windoze or the fruit brand OS). Putting the parts together and verifying the hardware works took a few hours. installing Linux was 5 to 10 minutes, and I only had to use a web browser for a few programs (KiCad, FreeCAD, Sigrok/Pulseview) That got me most of the software I need. (Hmm, I have STM32 Cube, and standalone Eclipse versions too now).
Most of the programs I only use occasionally, (I still may have skipped a few), are usually one line and 20 seconds away from installation with
sudo apt install …
Using open source software exclusively has some problems,but overall I’m quite happy with this decision.
The USB c connector is not for the feint of heart. You need to know what you are doing. You need the correct resistor wiring to implement the connection based upon what you need to do. If you intend to connect to a USB-C host, you need to add the programming resistors or the device will not enumerate. That particular connector also has some issues with respect to the Kicad library in eschema. The power pins are not labeled properly and the schematic capture program will throw some errors. With
respect to the comments about the cost of VID/PID pairs, any usb compatible chip will provide the base VID/PID. It should also be noted that Linux has very strict rules about registering VID/PID if you intend to utilize any of the class drivers. The whole reason for the expense is to ensure that a rouge USB device won’t bring the OS down.
In 1992 (I think) at CeBit we (me and my brother) were asking many connector manufacturers for the USB sockets and plugs and no one knew what we are asking about. Those time our products (EPROM, GAL programmers) were driven by RS232 (57600) and powered (5V) from tee at keyboard socket. We thought that USB will be something like that + supply (TXD, RXD, GND, 5V) and will be accessed from PC in a similar way (under DOS reaching more than 9600 needed to write directly to UART registers).
In my opinion USB is too complicated because of idea of HUBs. As socket is so small (compared to COM socket) everything would be much, much simpler when the assumption would be made that PC will have 8 or more sockets and no HUBs allowed. I had that opinion those times and didn’t changed it till now.
I suppose if it would be defined that simply way no one would even thought about possibility of bringing the OS down (even 5V shortage should not bring it down).
But then there would be no reason to charge for VIDs and logo. And probably it is the reason things are as they are. No one offered the VIDs for COM devices.
The reason for VID and PID is so at enumeration time, the OS can choose the correct driver for the device. Now, It Would Be Nice if devices conformed to the standard classes, but even when they do, the host operating systems might not have drivers for those classes. I’m specifically talking about USB Audio Class 2.0, which took Microsoft 15 years to get around to supporting. I’m also talking about things like TMC and DFU.
So the idea is that you could have a device that conforms to whatever class, and if you wanted, you could provide a custom driver for that device. At enumeration time, the host OS says, “Oh, you’re a Class Thing,” and then it checks PID and VID to see if there’s a custom driver for that device, otherwise it falls back to a standard driver.
Serial ports, Centronics parallel ports and ISA bus cards never had VID and PID because there was no notion of device classes and standard drivers and all of that. If you plug in any random device into your computer’s serial port, your computer has no idea what it is – or indeed even if it was plugged in! There is no standard way for the computer to detect connection, interrogate the device to see what it is, and handle it properly.
All that said, the price the USB Implementer’s Forum charges for VIDs is extortionate. 26 years after the ratification of USB 1.0, it’s well past time to reduce the price. Those dummies made a huge mistake by making the VID a 16-bit number. That’s artificial scarcity in action.
I think 16 bit VID + 16 bit PID should be changed to 24 bit VID + 8 bit PID, or at least a significant batch of VIDs not yet sold should be changed to this structure. Then VID price could be automatically 256 times lower. If some VID holder would need more then 256 PIDs the next VID could be assigned to him so one owner could be identified by different VIDs. Computers today should be able to handle this.
We had to buy a VID but till now we used probably about 10 PIDs and I not expect we use more than 50 ever.
There is no correlation between the size of the number and the price. The’ve just created an artificial shortage and have no competition and can ask whatever they feel like.
USD5000 for a number is peanuts for big companies which mass-produce USB devices, but an enourmous chunck of money for the small guy. They obviously just don’'t care about small companies.
VID’s and PID’s are no secret, if you’re curious you can download a text file with all known numbers from The USB ID Repository
The text file is about 25000 lines long and 21438 lines start with a tab (and are PID’s), so there are approx 3600 known PID’s, so that’s USD18e6 for them.
For fun I browsed through the list:
600 for Brother
600 for Canon
500 for HP.
450 for Logitech.
300 for microsoft. (They don’t get a capital M from me).
Some 15 to 30 companies who have more then 100 Pid’s.
Some companies have more then one VID, Intel both has 8086 and 8087.