Bus Pirate: Practical guide to pull-up resistors

Posted on Monday, July 27th, 2009 in Bus Pirate by Ian


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.

This entry was posted on Monday, July 27th, 2009 at 1:13 pm and is filed under Bus Pirate. You can follow any responses to this entry through the RSS 2.0 feed. You can skip to the end and leave a response. Pinging is currently not allowed.

11 Responses to “Bus Pirate: Practical guide to pull-up resistors”

  1. phoebus says:


    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 : )

    • Ian says:

      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.

      • phoebus says:

        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.

      • Ian says:

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

  2. phoebus says:

    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.

    • Ian says:

      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. phoebus says:

    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. phoebus says:

    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. Ian says:

    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. Probez says:

    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 Reply

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

Recent Comments

  • Edward Mallon: I've been oversampling those thermistors with the ADC and some pin-toggle noise for a while now, and that method is good. But lately I've been...
  • Marko: armature -> amateur
  • Crawford: Dibs,
  • bill: a sunny Sunday here
  • Iain NoSpam: A very random comment from a very random commenter