I would suggest the following workaround:
Power MCP4715 and other I2C devices with an external 3V3 power supply.
It is true that MCP4725 SDA and SCL pins need pull up resistors, BUT since RPI SDA and SCL pins already have on board pull ups (strong 1k8 pullups), then MCP4725 now shares Rpi's built in pullups.
In other words, there is no need for any ...
I don't see how disabling pullups would cause any problems.
In general you can access an I²C device powered by 5V provided there are no pullup to 5V.
How much current do these unnamed devices use?
I doubt it would exceed the ~800mA the Pi can safely supply.
Yes - and since the introduction of the RPi 4B and the BCM2711 SoC, the number of I2C buses available has increased. The number of physical pins didn't increase with the RPi 4B, but these additional I2C buses are accessed through the the i2c_mux_pinctrl kernel module. Most of these "newly exposed" i2C channels may be configured through the /boot/...
An easy way to set the ADS1015/ADS1115 devices is to hardware pull up/down the four Address pins A0, A1, A2, A3.
See the Q&As in the reference list for more details.
(1) Rpi Thonny Python cannot ADS1015/ADS1115 Problem - RpiSE 2019apr16 Viewed 1k times
(2) How can Rpi3/4 interface multiple ADS1015/ADS1115 ADCs? - RpiSE 2019oct12
Rpi I2C audio mixer TDA7318 communication question: Should all command bytes sent each time?
The short answer is NO. You only need to send the command bytes needed.
TDA7318 uses standard I2C to interface with Rpi. The only constraint is that the highest I2C bus speed is 100kHz.
Datasheet Page 5 of datasheet ...
The Pi 4 appears to support clock stretching on the software I2C bus:
The hardware I2C bus is affected by the same bug as earlier models which makes it incompatible with clock stretching, as the screenshot in your referenced post shows:
Models earlier than the Pi4 (those based on the BCM2835 SOC) are known to have a buggy implementation of clock stretching.
I do not know if this bug has been fixed in the BCM2711 SOC used by the Pi4B and the Pi400.
When I try to ls -l I2C devices, I see the group is i2c.
# ls -l /dev/i2c*
crw-rw---- 1 root i2c 89, 1 Mar 18 04:36 /dev/i2c-1
Therefor, I add my user to the group:
# usermod -a -G i2c ubuntu
Then, I exit and login again. And it is works.
By the way I using Ubuntu for Raspberry Pi with Ubuntu Server 20.04.2 LTS image.
Errno 121 usually occurs when running an I2C python program with the following situation:
2.1 The hardware wiring connection is bad, eg,
2.1.1 Forget to plug/connect the cable,
2.1.2 Too long cabling, eg, over 30cm,
2.1.2 I2C frequency too high, over 400kHz,
2.1.3 I2C device, eg. I2C I2C MCP23017, which is sensitive to noise,
2.1.4 I2C bus overloaded, ...