I2C Multiple Devices Practices

I have 3 I2C devices running on board:
BME280 humidity sensor,
RTC 3231 Clock module,
GY302 light sensor.

I might have a 4th one if I switch the OLED display from spi to I2C.

I'm having issues with the I2C devices and a general instability in system including the oled display not working or flickering once in a while.

  1. Can this be related to I2C devices being directly wired to Clk and Data ports? Do I need pullup resistors for multiple devices?

  2. Do I need common ground for all my I2C devices? For example nnce i removed the GND of the spi oled display from the rest of the i2c devices the display seemed to become became a bit more stable.

What other improvements can I make, the make multiple i2c devices run more smooth?

You should only have the pullups at the end of the string, ideally.
4.7K to 3.3K should be good if the lines are not too long.
All grounds MUST be connected.

thank you. But what do you mean by at the end of the string? I have all I2C sensors connected in parallel to 5v and to i2c clock and data pins on arduino.

I connected all the I2c devices grounds together and system stability improved somewhat. I was having a "Could not find a valid BME280 sensor, check wiring" problem once in a while and that seems to have gone now.

however the issues with OLED display still continue. I'm not sure if its related to i2c devices anymore I think OLED are just generally difficult and unreliable to work with.