Bus Pirate: Practical guide to pull-up resistors


See the latest version in the documentation wiki.

There’s often some confusion about how the Bus Pirate’s on-board pull-up resistors work. It doesn’t help that the implementation changes drastically from one hardware revision to the next, a lot of the original device tutorials are difficult to follow if you have a Bus Pirate v2go.

The figure outlines the basic parts of the Bus Pirate v2go on-board pull-up resistors. A pull-up (or pull-down) voltage supplied through the Vpullup (Vpu) pin is fed into a  CD4066 analog switch (IC3). The 4066 distributes the pull-up voltage to four 10K resistors (R20-23) that connect to the MOSI, CLOCK, MISO, and CS bus pins.

Continue reading our practical guide to the Bus Pirate v2go’s pull-up resistors after the break.

I2C>v <<< voltage monitor report
VOLTAGE MONITOR: 5V: 5.0 | 3.3V: 3.3 | VPULLUP: 5.0 |

You must connect the Vpullup pin to a voltage. The pull-up resistors aren’t hard-wired to a power supply, you can apply any voltage level that’s needed (from ground to +5volts). Type ‘V’ in the Bus Pirate terminal to see the current voltage on the Vpullup pin.

When the main microcontroller (IC1) holds the 4066 enable pin at 0volts the pull-up voltage is blocked and nothing goes through the resistors. When the enable pin is high, the pull-up voltage is allowed through the 4066 and the resistors hold the bus pins at the level of the Vpullup pin.

I2C>p <<< pull-up resistor menu
1. Pullup off
2. Pullup on
(1) >2 <<< enable pull-up resistors

Use the ‘p’ menu in the Bus Pirate terminal to configure the pull-up resistors. Option 2 enables the 4066, and the voltage on the Vpullup pin is applied to the 10K pull-up resistors.

The latest firmware uses P/p to control the pullups. Read the updated guide in the documentation.

Read more about pull-up resistors and the Bus Pirate’s open collector output mode (HiZ) at Hack a Day: Mixed voltage interfacing with the Bus Pirate.

Join the Conversation


  1. hello,

    I am making a I2C communication with the bus pirate, but i couldn’t turn poll-up resistors on. Every time I tape “p”, the answer is “Pull-up resistors OFF”, there isn’t any option like 1 or 2 to choose.
    Does anybody know why, i really appreciate your help : )

    1. Hi phoebus,

      This is a pretty old article. The latest firmware uses P/p to enable and disable them. I’ll update the post now.

      1. Thanks and i find the answer just now.
        I have another question if you know the answer. I tape (1) to find the address of my device, the answer is “Searching I2C address space. Found devices at : ” there is now answer. Do you know what is the problem.

      2. What hardware and software versions do you have? The latest version usually reports if there is an error.

  2. hardware is bus pirate v3.5 and i use the termite as the software. and i tried tera term web 3.1 it’s the same result.

    1. Please press the i key to get the firmware version info, that will help tell a lot. 6.1 is the latest.

      Do you have Vpu connected to a voltage? would you please post the output of the v command.

  3. This is the information. Is it necessary to active the power supplier? I have tried “e” but i think it’s just for hareware 4. Thanks for your information.

    Firmware v5.10 (r559) Bootloader v4.4
    DEVID:0x0447 REVID:0x3043 (24FJ64GA002 B5)
    CFG1:0xFFDF CFG2:0xFF7F
    1.(BR) 2.(RD) 3.(OR) 4.(YW) 5.(GN) 6.(BL) 7.(PU) 8.(GR) 9.(WT) 0.(Blk)
    GND 3.3V 5.0V ADC VPU AUX SCL SDA – –
    P P P I I O I I I I
    GND 1.32V 0.00V 0.00V 1.32V L H L L L
    Power supplies OFF, Pull-up resistors ON, Open drain outputs (H=Hi-Z, L=GND)
    MSB set: MOST sig bit first, Number of bits read/write: 8
    a/A/@ controls AUX pin
    I2C (mod spd)=( 0 2

  4. Ian, thanks i have done as you said, normally the voltage was added, but i couldn’t find my device anyway. There si “Warning: *Short or no pull-up”.

    What could I do? Thanks

  5. Please see the wiki documentation for this feature:

    If you get the error Warning: no voltage on Vpullup pin check the voltage report (v) and verify that a voltage is attached to the Vpullup pin.

    If you connected Vpullup to the Bus Pirate’s 3.3volt or 5.0volt supply, be sure to use the ‘W’ command to enable the power supplies.

    If both those are working, it could be that your target chip is holding the pins low, but that is very unusual. Please post the terminal output and a v command when the error occurs.

    If possible, please also join us in the forum, there are many more people who can help.

  6. Hi I had just some fun with the MAX7219 display driver with SPI. The MAX7219 runs on 3.3V even that is said to run with a minimum of 4V. I therefore tried the pull-up function. And yes i forgot to wire the VPU to 5V. I looked in the guide and here it says at it will tell if the VPU pin is not connected (low voltage). I therefore cheked it with command v and it said 2.2-2.3V I the disconnected the MAX7219 and now it said 2.5. This is the reason for it not saying that i has done it wrong. I then tried the I2C mode and here it worked and it was telling that VPU wasnt connected is this a bug? FW 6.1
    I may buy a BP 4. Soon :-)

Leave a comment

Your email address will not be published. Required fields are marked *

Notify me of followup comments via e-mail. You can also subscribe without commenting.