"VUSB NOT DETECTED" in self test

I’ve received recently my BP5 and experiencing a strange behavior.

Initially I couldn’t connect over the serial port, but this was fixed by flashing the latest firmware.

Now the self test is failing, because it can’t detect the USB voltage.
Also, when I apply voltage on IO0 it is detected on both IO0 and IO4. Same thing for:
IO1 and IO5
IO2 and IO6
IO3 and IO7

I guess there is something wrong with the analog multiplexing, as if the AMUX_S2 addressing input is stuck at high level.
So, I’ve checked it with a scope, but I see toggling on the addressing inputs of the multiplexer.

Sporadically, on a good day, the issue disappears and it works as expected.

Any advice? Thanks.

This is the self test log:

Screen Resolution changed
HiZ> i

This device complies with part 15 of the FCC Rules. Operation is subject to the following two conditions: (1) this device may not cause harmful interference, and (2) this device must accept any interference received, including interference that may cause undesired operation.

Bus Pirate 5 REV10
https://BusPirate.com/
Firmware main branch @ 08daec6 (Apr 8 2025 14:49:45)
RP2040 with 264KB RAM, 128Mbit FLASH
S/N: 2B2C385F68A863E4
Storage: 0.10GB (FAT16 File System)

Configuration file: Loaded
Active binmode: SUMP logic analyzer
Available modes: HiZ 1WIRE UART HDUART I2C SPI 2WIRE 3WIRE DIO LED INFRARED JTAG
Active mode: HiZ

Display format: Auto

HiZ> ~
SELF TEST STARTING
DISABLE IRQ: OK
ADC SUBSYSTEM: VUSB NOT DETECTED (0.03V). ERROR!
FLASH STORAGE: OK
PSU ENABLE: PSU ERROR CODE 2
VREG==VOUT: 25 = 25 OK
BIO FLOAT TEST (SHOULD BE 0/<0.30V)
BIO0 FLOAT: 0/0.04V OK
BIO1 FLOAT: 0/0.04V OK
BIO2 FLOAT: 0/0.04V OK
BIO3 FLOAT: 0/0.04V OK
BIO4 FLOAT: 0/0.04V OK
BIO5 FLOAT: 0/0.04V OK
BIO6 FLOAT: 0/0.04V OK
BIO7 FLOAT: 0/0.04V OK
BIO HIGH TEST (SHOULD BE >3.00V)
BIO0 HIGH: 0.04V ERROR!
BIO1 HIGH: 0.04V ERROR!
BIO2 HIGH: 0.04V ERROR!
BIO3 HIGH: 0.04V ERROR!
BIO4 HIGH: 0.04V ERROR!
BIO5 HIGH: 0.04V ERROR!
BIO6 HIGH: 0.04V ERROR!
BIO7 HIGH: 0.04V ERROR!
BIO LOW TEST (SHOULD BE <0.30V)
BIO0 LOW: 0.04V OK
BIO0 SHORT->BIO1 (0.04V): ERROR!
BIO0 SHORT->BIO2 (0.04V): ERROR!
BIO0 SHORT->BIO3 (0.04V): ERROR!
BIO0 SHORT->BIO4 (0.04V): ERROR!
BIO0 SHORT->BIO5 (0.04V): ERROR!
BIO0 SHORT->BIO6 (0.04V): ERROR!
BIO0 SHORT->BIO7 (0.04V): ERROR!
BIO1 LOW: 0.04V OK
BIO1 SHORT->BIO0 (0.04V): ERROR!
BIO1 SHORT->BIO2 (0.04V): ERROR!
BIO1 SHORT->BIO3 (0.04V): ERROR!
BIO1 SHORT->BIO4 (0.04V): ERROR!
BIO1 SHORT->BIO5 (0.04V): ERROR!
BIO1 SHORT->BIO6 (0.01V): ERROR!
BIO1 SHORT->BIO7 (0.04V): ERROR!
BIO2 LOW: 0.04V OK
BIO2 SHORT->BIO0 (0.04V): ERROR!
BIO2 SHORT->BIO1 (0.04V): ERROR!
BIO2 SHORT->BIO3 (0.04V): ERROR!
BIO2 SHORT->BIO4 (0.04V): ERROR!
BIO2 SHORT->BIO5 (0.04V): ERROR!
BIO2 SHORT->BIO6 (0.05V): ERROR!
BIO2 SHORT->BIO7 (0.04V): ERROR!
BIO3 LOW: 0.04V OK
BIO3 SHORT->BIO0 (0.04V): ERROR!
BIO3 SHORT->BIO1 (0.04V): ERROR!
BIO3 SHORT->BIO2 (0.04V): ERROR!
BIO3 SHORT->BIO4 (0.04V): ERROR!
BIO3 SHORT->BIO5 (0.04V): ERROR!
BIO3 SHORT->BIO6 (0.03V): ERROR!
BIO3 SHORT->BIO7 (0.05V): ERROR!
BIO4 LOW: 0.04V OK
BIO4 SHORT->BIO0 (0.04V): ERROR!
BIO4 SHORT->BIO1 (0.04V): ERROR!
BIO4 SHORT->BIO2 (0.04V): ERROR!
BIO4 SHORT->BIO3 (0.04V): ERROR!
BIO4 SHORT->BIO5 (0.04V): ERROR!
BIO4 SHORT->BIO6 (0.05V): ERROR!
BIO4 SHORT->BIO7 (0.05V): ERROR!
BIO5 LOW: 0.04V OK
BIO5 SHORT->BIO0 (0.04V): ERROR!
BIO5 SHORT->BIO1 (0.04V): ERROR!
BIO5 SHORT->BIO2 (0.04V): ERROR!
BIO5 SHORT->BIO3 (0.04V): ERROR!
BIO5 SHORT->BIO4 (0.04V): ERROR!
BIO5 SHORT->BIO6 (0.05V): ERROR!
BIO5 SHORT->BIO7 (0.04V): ERROR!
BIO6 LOW: 0.04V OK
BIO6 SHORT->BIO0 (0.04V): ERROR!
BIO6 SHORT->BIO1 (0.04V): ERROR!
BIO6 SHORT->BIO2 (0.04V): ERROR!
BIO6 SHORT->BIO3 (0.04V): ERROR!
BIO6 SHORT->BIO4 (0.04V): ERROR!
BIO6 SHORT->BIO5 (0.04V): ERROR!
BIO6 SHORT->BIO7 (0.05V): ERROR!
BIO7 LOW: 0.05V OK
BIO7 SHORT->BIO0 (0.04V): ERROR!
BIO7 SHORT->BIO1 (0.04V): ERROR!
BIO7 SHORT->BIO2 (0.04V): ERROR!
BIO7 SHORT->BIO3 (0.04V): ERROR!
BIO7 SHORT->BIO4 (0.04V): ERROR!
BIO7 SHORT->BIO5 (0.04V): ERROR!
BIO7 SHORT->BIO6 (0.08V): ERROR!
BIO PULL-UP HIGH TEST (SHOULD BE 1/>3.00V)
BIO0 PU-HIGH: 0/0.04V ERROR!
BIO1 PU-HIGH: 0/0.04V ERROR!
BIO2 PU-HIGH: 0/0.04V ERROR!
BIO3 PU-HIGH: 0/0.04V ERROR!
BIO4 PU-HIGH: 0/0.04V ERROR!
BIO5 PU-HIGH: 0/0.04V ERROR!
BIO6 PU-HIGH: 0/0.05V ERROR!
BIO7 PU-HIGH: 0/0.04V ERROR!
BIO PULL-UP LOW TEST (SHOULD BE <0.30V)
BIO0 PU-LOW: 0.04V OK
BIO0 SHORT->BIO1 (0/0.04V): ERROR!
BIO0 SHORT->BIO2 (0/0.04V): ERROR!
BIO0 SHORT->BIO3 (0/0.04V): ERROR!
BIO0 SHORT->BIO4 (0/0.04V): ERROR!
BIO0 SHORT->BIO5 (0/0.04V): ERROR!
BIO0 SHORT->BIO6 (0/0.04V): ERROR!
BIO0 SHORT->BIO7 (0/0.05V): ERROR!
BIO1 PU-LOW: 0.04V OK
BIO1 SHORT->BIO0 (0/0.04V): ERROR!
BIO1 SHORT->BIO2 (0/0.04V): ERROR!
BIO1 SHORT->BIO3 (0/0.04V): ERROR!
BIO1 SHORT->BIO4 (0/0.04V): ERROR!
BIO1 SHORT->BIO5 (0/0.04V): ERROR!
BIO1 SHORT->BIO6 (0/0.05V): ERROR!
BIO1 SHORT->BIO7 (0/0.04V): ERROR!
BIO2 PU-LOW: 0.04V OK
BIO2 SHORT->BIO0 (0/0.04V): ERROR!
BIO2 SHORT->BIO1 (0/0.04V): ERROR!
BIO2 SHORT->BIO3 (0/0.04V): ERROR!
BIO2 SHORT->BIO4 (0/0.04V): ERROR!
BIO2 SHORT->BIO5 (0/0.06V): ERROR!
BIO2 SHORT->BIO6 (0/0.04V): ERROR!
BIO2 SHORT->BIO7 (0/0.04V): ERROR!
BIO3 PU-LOW: 0.04V OK
BIO3 SHORT->BIO0 (0/0.04V): ERROR!
BIO3 SHORT->BIO1 (0/0.04V): ERROR!
BIO3 SHORT->BIO2 (0/0.04V): ERROR!
BIO3 SHORT->BIO4 (0/0.04V): ERROR!
BIO3 SHORT->BIO5 (0/0.04V): ERROR!
BIO3 SHORT->BIO6 (0/0.05V): ERROR!
BIO3 SHORT->BIO7 (0/0.05V): ERROR!
BIO4 PU-LOW: 0.04V OK
BIO4 SHORT->BIO0 (0/0.04V): ERROR!
BIO4 SHORT->BIO1 (0/0.04V): ERROR!
BIO4 SHORT->BIO2 (0/0.04V): ERROR!
BIO4 SHORT->BIO3 (0/0.04V): ERROR!
BIO4 SHORT->BIO5 (0/0.04V): ERROR!
BIO4 SHORT->BIO6 (0/0.05V): ERROR!
BIO4 SHORT->BIO7 (0/0.05V): ERROR!
BIO5 PU-LOW: 0.04V OK
BIO5 SHORT->BIO0 (0/0.04V): ERROR!
BIO5 SHORT->BIO1 (0/0.04V): ERROR!
BIO5 SHORT->BIO2 (0/0.04V): ERROR!
BIO5 SHORT->BIO3 (0/0.04V): ERROR!
BIO5 SHORT->BIO4 (0/0.04V): ERROR!
BIO5 SHORT->BIO6 (0/0.04V): ERROR!
BIO5 SHORT->BIO7 (0/0.05V): ERROR!
BIO6 PU-LOW: 0.05V OK
BIO6 SHORT->BIO0 (0/0.04V): ERROR!
BIO6 SHORT->BIO1 (0/0.04V): ERROR!
BIO6 SHORT->BIO2 (0/0.04V): ERROR!
BIO6 SHORT->BIO3 (0/0.04V): ERROR!
BIO6 SHORT->BIO4 (0/0.04V): ERROR!
BIO6 SHORT->BIO5 (0/0.04V): ERROR!
BIO6 SHORT->BIO7 (0/0.05V): ERROR!
BIO7 PU-LOW: 0.04V OK
BIO7 SHORT->BIO0 (0/0.04V): ERROR!
BIO7 SHORT->BIO1 (0/0.04V): ERROR!
BIO7 SHORT->BIO2 (0/0.04V): ERROR!
BIO7 SHORT->BIO3 (0/0.04V): ERROR!
BIO7 SHORT->BIO4 (0/0.04V): ERROR!
BIO7 SHORT->BIO5 (0/0.04V): ERROR!
BIO7 SHORT->BIO6 (0/0.04V): ERROR!
CURRENT OVERRIDE: PPSU CODE 2, ERROR!
CURRENT LIMIT TEST: OK
PUSH BUTTON (ANY KEY SKIPS): OK
RELEASE BUTTON (ANY KEY SKIPS): OK

ERRORS: 7
FAIL! :frowning:

HiZ>

1.Vout 2.IO0 3.IO1 4.IO2 5.IO3 6.IO4 7.IO5 8.IO6 9.IO7 10.GND
OFF - - - - - - - - GND
0.0V 0.0V 0.0V 0.0V 0.0V 0.0V 0.0V 0.0V 0.0V GND

2 Likes

Interesting issue. I suspect some soldering issue or damage on the PCB, but I don’t yet see a single point that would cause all this.

The 3.3V power supply must be stable, otherwise the RP2040 wouldn’t run. 3.3V is created with a LDO regulator from VUSB. VUSB is distributed on the backside (the one where the lcd sits) of the PCB with a big trace.

Is there some visible damage to this trace, so that just some parts of the PCB get it?

One key error is that the integrated variable voltage regulator U403 can’t be enabled (PSU ERROR CODE 2). It is needed to provide power for the ports (VREF_VOUT). Can you measure if pin 1 (Vin) of U403 gets about 5 volts?

What about the voltage your USB port is supplying? Could it be too low or your cable damaged? You should be able to measure it on the big VUSB-trace on the backside, just below the USB-C socket. You should see about 5 volts there.

In case you haven’t seen yet, you can get the PCB design files in kicad format here:

Having this on screen will probably make probing and other debugging much easier.

2 Likes

Oh, and by the way: Probing and debugging your BusPirate is just necessary when you enjoy it and like the challenge of finding & fixing a problem.

@ian, the BusPirate inventor and main developer is quite accommodating. So it is very likely that you will end up with a working BusPirate, regardless if you find the issue yourself or not.

2 Likes

Thank you for the bug report, I’m sorry about the issue. Apologies for a short reply, I’m on a train at the moment.

VUSB isn’t detected, and the PSU fails with an error. Does the PSU actually fail, or is it a measurement issue that makes it appear so… You could scope vout during the self test and see if it actually hits 3.3 before the auto shut down happens.

The other IO pin tests fail due to lack of supply to the pins. You could connect an external 3.3v supply to vout and run the test again to see what happens with regard to the double pin measurements.

The 4 split pins connecting is really odd. Adjacent pins sure, but that is an odd pattern. You could check the resistor arrays nearest the pins of the 10 pin connector, they sometimes get shorted during hand assembly phase. That would still be adjacent pins at best though.

My guess at the moment is the CD4067 mux has lost its magic smoke some how. I’d suggest you open a support ticket and well ship out a new one on Monday, or depending on destination as soon as practical.

2 Likes

The issue seems not to be permanent, but just most of the time. Yes, it could still be an issue in the IC, but I’d say a soldering or other pcb issue is more likely to be temporary than somthing within the IC.

So it could be some small solder blobs left on the PCB: Most times they create a low-ohmic connection, but not a dead short between VUSB and GND. This causes VUSB to drop. 3V3 would probably be low, but still in a range where the RP2040 can operate.

Locating such solder blobs isn’t that easy. I’d start with measuring the voltage along the big VUSB-trace on the backside and compare the voltages there. If there are significant differences between the left and right branches for example that would point to such an issue.

3 Likes

Thank you for the suggestions guys.
I couldn’t find anything shorted on the PCB and the Vusb and V3v3 are consistent all over the board.

The Vusb and Vout look normal to me, when the self test fail:

I’ve tested Vout and all the IOs by applying external 3.3V in Hiz mode. This is what the display show:
VOUT → VOUT and all IOs are 0V.
IO0 → IO0 and IO4 show 3.3V. The rest are 0V.
IO1 → IO1 and IO5 show 3.3V. The rest are 0V.
IO2 → IO2 and IO6 show 3.3V. The rest are 0V.
IO3 → IO3 and IO7 show 3.3V. The rest are 0V.
IO4 → all are 0V.
IO5 → all are 0V.
IO6 → all are 0V.
IO7 → all are 0V.

I will try to replace the multiplexer IC next.
Thanks for the support.

3 Likes

What a strange issue.

You mentioned that you saw toggling on the AMUX_S2 pin. But could it be that there is a short between AMUX_S2 and the neighboring AMUX_S3 or AMUX_S1 pins?

This could be in multiple places: there is a '595 that creates the signal, a 'HCT245 that level-shifts it and a 510 Ohms resistor network afterwards. I suggest to check all these places.

1 Like