I was looking at the I2C in RaspberryPi and I saw that they are pulled by 1.8K resistors(I am not talking about the ID pins). On the other hand, I got one of those RTC and they got two 222Ohm pull up resistor on board. My questions are:

First, why the would put a pull up resistor if the RaspberryPi got one?

Second, This resistors will divide the overall pull up resistors as they will be connected in parallel, this wouldn't effect I2C communication overall?

  • Still I2C communication is the same. The only one extra thing HAT uses is the ID pins for identification and preparing the GPIO's.
    – Mero
    Commented Jun 15, 2016 at 7:36
  • You right. HAT confusing I change it to add on. The main question is about the I2C communication. I dont know if it is poorly designed or not . Actually, this is my question. However, this look like the most official RTC . I couldn't find there schematics. However if you zoom the picture you can see those resistors and I got one of them and test it by multi meter .
    – Mero
    Commented Jun 15, 2016 at 8:05

4 Answers 4


The Pi has external 1k8 pull-ups to 3V3 fitted to SDA (pin 3) and SCL (pin 5).

I don't know what criteria the manufacturer of I2C slave devices use to decide if they fit pull-ups or not.

It's best if I2C slave devices do not have pull-ups fitted, especially if they are pull-ups to 5V which can damage the Pi's GPIO.

  • I do agree with you. What made so confused this suppose to be official RTC board.
    – Mero
    Commented Jun 14, 2016 at 15:36

I can't find any pull-up resistors for SDA1 and SCL1 on the schematics for the Raspberry Pi 4B. I don't know if this is because they have been removed on the new boards or it is just an omission on the simplified schematics. Maybe including the pull-up resistors on the add-on/HAT boards, although redundant in the RPi 3 and previous models, was a good decision to make the boards inmune to these types of changes.


The 222 smd resistor code is 22 x 10² or 2.2K, which has a few benefits:

  • by Ohms law this brings the resistance down to 990 Ohm, about the minimum for 3.3V i²c operation (see I2C Bus Pullup Resistor Calculation, section 4.) This means the bus will be as fast as it can be up to its max capacitance load, allowing it to shim under modules that are designed exactly at the RPi's maximum load with the 1.8K pull-up.

  • If you swap out the RPi with another device and neglect to replace the 1.8K pull-up, this 2.2K pull-up alone is sufficient to about 150pF, which should provide good tolerance for load beyond the device.

The drawbacks of this approach are:

  • With the RPi, it draws the highest power possible to achieve the best speed with any load even though few users will stack this with another module.

  • Stacking multiple modules that each take this approach is incompatible as the resistance will drop bellow the minimum. So two of these shims can't be reliably stacked even if their addresses differ.


If we are talking about cheap Chinese modules, they are usually copy-paste designs of the example designs in the documentations. These designs usually show, where you would put your pull-up resistor, IF necessary.

There was never any thought given to how the modules will be used.

As it is, it is just a wasted opportunity to make a little bit bigger profit margins and leaner designs.

Most of the time, you should remove those extra resistors. Even if the bus does not have a pull-up resistor, and low consumption is an issue, the 1k resistors can be replaced with bigger ones, depending on frequency and cable length.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.