Like the users in the below linked post, I have observed increased battery drain during sleep depending on what adapters are installed. Here are my approximate numbers:
No adapters, or only Type C adapters - 280mw
Type A adapter (Framework or one that came with a phone) - 550mw
HDMI adapter - 680mw
The additional power draw is undesirable, and since I only ordered 2 Type C adapters initially I have left 2 of the bays empty for the last while.
TCCOLD is the lowest power state TCSS is capable of, but it is an NDA case. The empty dongles/adapters still connect to the CC pin and will show up as a connect. I am wondering if it would work to create an adapter with a switch for the CC pin so that when devices aren’t in use they can be turned off, saving power. The Type A adapter should be no problem since I think it is just a pull-down resistor. HDMI might have additional concerns because I assume there are chips to convert DP to HDMI and to negotiate DP-Alt mode with the PD.
Would anybody like to weigh in on the feasibility? I have zero parts on hand so any prototype would take months to wait for parts to ship.
I plan on having my MicroSD card reader plugged in most of the time once my 3D printer arrives, and I think I saw it as extra drain as well. Unfortunately I don’t really have the experience or parts either on doing something like this. I think this would be a really cool idea though and wanted to voice my support.
Hibernate takes longer to wake from, and I tend to use my laptop every few hours for just a few minutes. Hibernate is great for overnight but being able to just open the lid and use the computer is the entire point I have a laptop instead of just booting up my desktop. I only occasionally need USB/HDMI, but I still find value in the convenience of having them available.
Not having USB adapters compromises convenience when I do want to use USB (which I am currently doing).
Hibernate compromises wake times.
Sleep with adapters compromises battery life.
Alright I have made some progress on this and learned a lot.
I got breakout boards for a Type-C connector and Type-A receptacle and the concept seems to work so far. Connect the resistor to A5/CC and the device attached to the Type-A board enumerates in windows. Disconnect the resistor and it goes away. Logically I knew that this would work but I really wanted this proof.
Some things I learned:
The silkscreen on my Type-C breakout board was meant for a receptacle and not the connector. By paying attention to the silkscreen instead of the pin location I got D+/- flipped and A5/A8 flipped.
Everybody seems to agree that the wire colors for a USB2 cable are Red, Black, Green, and White. Looking at DIY USB cable guides not everybody uses the same mapping of Green/White to D+/D-.
Because of the issues I was seeing, I cut an existing USB cable in half to solder to my Type-A receptacle breakout board. Whoever manufactured that cable did not agree with the convention that Red is for +5V and Black is for 0V.
It is late. I think my next steps will be:
Re-soldering or insulating the connections because right now there is a high risk of shorts with how badly everything is connected.
Verifying that when Rd isn’t connected that VBus isn’t powered.
Check power consumption when Rd is and isn’t connected to make sure it is as I expect.
Assuming everything above works well, start messing around with Kicad and trying to find components.
For anyone interested the relevant section of the USB Type-C Cable and Connector Specification is chapter “3.6.1 USB Type-C to USB 3.1 Standard-A Receptacle Adapter Assembly”
I’m surprised to read there is higher power draw for a Type A adapter vs Type C. I would have assumed the Type A had no circuitry or electrical components, and was only connecting the Type A socket pins to the corresponding Type C plug pins, so zero power draw as long as nothing is plugged in.
The issue isn’t the Type A adapter itself consuming power even when nothing is connected, more it is an issue with how the CPU’s Type C controllers behave with the empty dongle/adapter.
The lowest TCSS power state is TCCOLD, which requires no device attached. A BIG part of how TCSS sees whether a device is attached or not is the Power Delivery communication over the CC pins. The PD chip on the board sees something connected to CC and it sends a message to the EC (I think) which then communicates with the CPU/PCH to inform TCSS that there is something connected and it needs to wake up. With a Type-C to Type-A empty adapter that PD communication still takes place so TCSS thinks that there IS, or at least COULD be a connection. In order to still work as the user expects (plug something into the empty dongle and it shows up) enough of TCSS needs to be awake to respond. The Phy needs to be powered, FIA needs to be powered, XHCI needs some power. I think that need for connection sensing on the USB3 pins prevents TCSS from being in TCCOLD and during sleep it is probably in TC7 which will consume more power.
Awesome explanation, and exactly matches my experience testing minimum idle draw configuration. Each USB-A expansion card plugged in increases battery consumption around .1 or .2 W, even with nothing in the USB-A slot. Not seeing the same increase in draw for USB-C expansion cards. Now I understand why. Thanks!
Thanks @Luke_Mahowald (I would have quoted your post but can’t see the option for that).
So the Type A adapters must not be electrically dumb as I would have assumed then, but must have enough circuitry to inform the USB-C controller that something is attached, and that circuitry draws enough power to cause this issue.
Maybe a USB-A socket does not have the right connections to do a full wake of TCSS via a USB-C port/controller when a device is plugged in, so the adapter has to provide some current draw to prep TCSS for a future USB A connection? (I’m theorising, I don’t know how they actually work)
@D.H I have seen more than 200mW variation in the average power consumption during sleep so without seeing your data and how consistent it is I can’t really guess. I hadn’t really considered the number of connected ports. @Vectorspace I think we have a miscommunication. I would describe the Type-A adapter as being electrically dumb. Besides wires and physical connectors the only component would be a single 5.1 kΩ resistor connecting CC to ground. That resistor is the circuitry that informs the Power Delivery controller that there is a connection.
Within the Type-A adapter that resistor does consume power, but it is miniscule. If you want the details, check out the Type-C Cable and Connector specification sections 220.127.116.11.1 and 4.11.1. There are a couple of valid configurations but the most simple one is for the host to connect a voltage source to the CC pin using a pull up resistor and then look at the voltage at the CC pin to see if something (Rd to ground) is attached. Suppose the host is set up with a 5V voltage source and Rp value of 10 kΩ to CC. With our Rd of 5.1 kΩ, Rp and Rd together would consume about 1.7mW. This power consumption within the Type A adapter does not explain the 200+mW of power consumption that the system sees from the adapter being connected. The power is being consumed within the host.
Without something attached to the CC pin the data lines of the Type-C connector are not attached to any of the controllers within the USB4 subsystem. USB2 and USB3 both use their data pins to sense if there is a connection, so in order for the system to respond when a device is plugged into the Type-C to Type-A adapter something needs to be awake. What that something is and how much power that consumes is up to Intel.
No miscommunication, I think I was just using the terminology wrong. By electrically dumb, I meant no components that would draw current, just direct connections USB-C plug contacts to USB-A socket contacts. I realise now I uses the wrong term for that.
I suppose since this thread is getting some attention I should give an update. Even though this idea (adapter with a switch to disconnect the CC pin to tell TCSS nothing is plugged in) is totally workable, I probably won’t pursue it further.
Sourcing parts is hard. The adapter module format is small enough that many Type-A receptacles won’t work. Slim, mid-board mount Type-A receptacles exist but the last time I looked were hard to come by. Finding (and soldering) a SMD Type-C plug also isn’t trivial.
Changed jobs and I don’t have the extra bandwidth.
Not having Type-A ports all the time hasn’t ended up being that big of a problem.
Is this behavior something that could possibly be overridden by the EC firmware? i.e. during deep sleep, can the EC FW ignore the CC communication from expansion cards to allow the system to enter TCCOLD?