pico-feedback
pico-feedback copied to clipboard
Battery-Powered Pico W and USB Type-C Connection Issue
Hello, pico-feedback team,
I am reporting a consistent issue that occurs when the battery-powered Raspberry Pi Pico W is connected to a host PC via a USB Type-C connection. Below are the details and the results of our investigations so far:
Detailed Description of the Issue:
- When the Pico W is powered by batteries and connected to a host PC via a USB Type-C cable, USB communication does not initiate under certain conditions. The table below shows the voltage fluctuations of VBUS depending on the USB cable connection status:
| Device | Voltage with USB Disconnected | Voltage after connecting to device first, then host | Voltage after connecting to host first, then device |
|---|---|---|---|
| Pico | 0.42 V | 5.17 V | 5.17 V |
| Pico W | 1.36 V | 0.97..1.09 V (unstable) | 5.16 V |
- In the case of Pico W, the VBUS voltage measured without a USB cable connected is 1.36 V, which exceeds the
vSafe0V(0-0.8 V) defined by USB Power Delivery. This is considered to be the basis for determining that the USB controller of the host PC is not supplying power to the VBUS for safety reasons.
Circuit Diagram:
The circuit diagram used for this investigation is shown below.
The tests were conducted using the cable included with the Raspberry Pi Debug Probe, equipped with a Type-C adapter, and the Amazon Basics USB Type-C to Micro-B 2.0 Short Charger Cable - 6 Inches (15.2 Centimeters).
The connected Host PCs were also tested on an Apple MacBook Air (M2, 2022) macos 14.4.1, Microsoft SurfacePro 7 Windows 11 Home.
Summary of Community Discussion:
- Through discussions in the community, the following measures were tested:
- A temporary software solution by setting WL_GPIO 2 to Low.
- A temporary hardware solution by pull-down VBUS (pin 40) with a resistor of about 10kOhm.
- A permanent solution proposal to pull-down WL_GPIO 2 through firmware adjustments in the CYW43439. This measure is difficult for end-users to implement, hence strongly recommended for examination by the development team.
- Requesting that these temporary solutions be documented in the datasheet by the development team.
Useful Links:
- Detailed research organized in the GitHub repository: pico-w-usb-failures
- Community forum discussion: Raspberry Pi Pico Forum
- USB Type-C® Cable and Connector Specification
- Universal Serial Bus Power Delivery Specification
These measures mitigate the issue, but a permanent fix is necessary. We recommend further investigation and development of these hardware and software-based approaches by the development team.
Thank you for your attention.
This isn't an issue with the pico-sdk itself, so moving this issue to the pico-feedback repo.
I've recreated this issue. It turns out that it is something we have also been investigating. The easy fixed as you have found is to add a resistor to ground. A better fix is actually to change D1 on the Pico to a PMEG6010ELR. This diode has a significantly lower reverse leakage.