4 Channel I2C Multiplexer

$6.50 each
$5.85 per unit for buying at least 10
$5.53 per unit for buying at least 25
$5.20 per unit for buying at least 75

Out of Stock


The 4 channel I2C multiplexer gives you the ability to connect up to four I2C devices that use the same address.  The multiplexer also acts as a level translating device between the Master and Slave devices. 

The board comes pre-wired to be used with 5V and 3.3V devices. Since the active low interrupt pins can not be left floating, the board contains onboard 10k ohm pull-up resistors on the interrupt pins. If a lower voltage Slave device is used that uses the interrupt pin, the associated solder jumper trace will need to be cut and a separate pull-up resistor on the interrupt pin will need to be used. 

Supply voltage to the VDD pin needs to be set to the lowest voltage IO lines in the system.  As an example, if you are using a 5V microcontroller as a Master and several 3.3V Slave devices then the VDD pin needs to be tied to 3.3 volts.


  • 1-of-4 bidirectional translating multiplexer
  • I2C-bus interface logic; compatible with SMBus
  • 4 active LOW interrupt inputs
  • Active LOW interrupt output
  • 3 address pins allowing up to 8 devices on the I2C-bus
  • Channel selection via I2C-bus
  • Power-up with all multiplexer channels deselected
  • 0 Hz to 400 kHz clock frequency
  • Allows voltage level translation between 1.8 V, 2.5 V, 3.3 V and 5 V buses


Copyright © 2014 DSSCircuits.com. All rights reserved. 


# Akb 2013-01-19 19:43
I recently got this Multiplexer. I was trying to open the Eagle files and it looks like corrupted. Can some one please upload the pdf version of schematic for 4 Lipo Fuel gauge connected to the multiplexer.

# Akb 2013-01-24 18:50
# Wayne Truchsess 2013-01-25 02:55
Quoting Akb:

Sorry about that. There really is no schematic posted for connecting the MUX. You can email me directly at admin@dsscircuits.com if you need help wiring your specific application.
# denbo 2013-01-28 20:38
Bought two of these and have used them on both the Arduino and NXT. Generally the NXT doesn't need a mux since it has 4 separate I2C ports but we had a case where we had to add more many more sensors with the same address. Worked well as long as you get the pullup resistors right. 82K is what Lego says they want but it worked a little bit better with 100K for me.
# Wayne Truchsess 2013-01-30 00:18
Quoting denbo:
Bought two of these and have used them on both the Arduino and NXT. Generally the NXT doesn't need a mux since it has 4 separate I2C ports but we had a case where we had to add more many more sensors with the same address. Worked well as long as you get the pullup resistors right. 82K is what Lego says they want but it worked a little bit better with 100K for me.

That's odd? Typically I2C communication reliability increases as your resistor value decreases. Honestly I'm surprised it works at all with 100k...what bus speed are you running?
# Guest 2013-12-16 01:15
Here is how to use the PCA9544 I2C multiplexer (mux) on the Raspberry Pi (Rpi)

First find what address the MUX is at.

# i2cdetect -y 1

0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: 70 -- -- -- 74 -- -- --

Mine is at 0x74. The Rpi has one built in at 0x70 so avoid that address.

To select bus #0:

# i2cset -y 0 0x74 0x04 0x04

I have a device at 0x48 on multiplexed bus #0 so it shows up now.


# i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: 40 -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: 70 -- -- -- 74 -- -- --

To select mux bus #1

# i2cset -y 0 0x74 0x04 0x05

Select mux bus #2

# i2cset -y 0 0x74 0x04 0x06

Select mux bus #3

# i2cset -y 0 0x74 0x04 0x07

To set the MUX so that all mux buses are shut off.


#i2cset -y 0 0x74 0x04 0x00
# Guest 2013-12-16 01:23
There are a couple of typos in my posting above. Watch the i2c bus number.
# darryletter 2015-01-08 00:37
can someone tell me what size of header pins to use with this
# Wayne Truchsess 2015-01-08 01:41
Standard 0.1" headers will work fine
# darryletter 2015-01-17 05:08
i wired the it up as follows:

1 gnd to gnd
2 vdd to 3.3v on rpi
3 sda to sda on rpi
4 scl to scl on rpi
5 int no connection
6 a0, a1, a2 all to gnd

when i run i2cdetect -y 1 (rpi b+) it does not show up. only thing is the UU on 10 b.
now i also have 2 mcp23017 and when i wire them up they work fine so i know i have the i2c on the rpi set up right

PLEASE HELP tried to call no answer email pabe is down. must be a one man outfit
# mjelund 2015-01-18 19:26
Multiplexer / Arduino / BMP180 problems

Hi there
I got two of these multiplexers for use with four BMP180. They come with a fixed I2C address, and I therefore looked forward to get this MUX to work. It's seems that the wire.send() in the arduino example is no longer supported, and changed into wire.write().

My issue is that I'm not completly sure that changing this in the example/my code has the needed effect. I cannot get access to the BMP180 through the MUX. (And they work - tested them without to start with).

My guess is that the MUX hasen't changed at all due to the new wire.write command.

Could you please advise me?

# Wayne Truchsess 2015-01-18 19:34
Did you connect A0, A1 and A2 to GND? The example code assumes a default address of 0x70 for the MUX with those pins grounded.
# 0amh 2015-08-17 21:08
I'm having the same problem using proximity sensors. Were you able to get any acknowledgement of the mux at all? I'd love to know if you came up with a solution to your problem!
# darryletter 2015-01-20 16:27
look guys if i can't get any support on these chips i want my money back i have called 2 times and left messages and my problem has been posted here since the 17th. i have not been able to get them to work
# Wayne Truchsess 2015-01-20 16:40
Hi Darryl,
I had sent you an email on the 17th with regards to this issue. The Rasberry Pi already uses an onboard MUX configured to address 0x70 so there may be a conflict. You'll need to change the address to something other than the default address of 0x70 by using the A0 - A2. Try setting pin A0 high and using the address of 0x71 in the example. In the future, the best way to contact me is via email at admin@dsscircuits.com . I would be more than happy to provide a full refund to you as well, just let me know.
# darryletter 2015-01-22 19:44
sorry i have been working 16 to 18 hrs a day i missed the emai i read it and the only thing i have showing up on i2cdetect is 3 mcp23017 chips on the 20 line and something UU.

With or without this mux chip on i have nothing on the 70 line at all i am using a B+ so maybe its different then a B when it comes to i2c but you would think that the i2c standard would be the same.
# darryletter 2015-01-22 19:48
i will try the address pin change but i don't have anything on 70 now so the default pin settings should be ok
# j ferguson 2015-02-01 13:08
Surely these must be for channels 0 through 3, not all channel 0?

mux(0); //select Lipo Fuel Gauge on channel 0
initializeFG(FG );
mux(1); //select Lipo Fuel Gauge on channel 0
initializeFG(FG );
mux(2); //select Lipo Fuel Gauge on channel 0
initializeFG(FG );
mux(3); //select Lipo Fuel Gauge on channel 0
initializeFG(FG );
mux(0xFF); //disable all channels. This is not required
# Wayne Truchsess 2015-02-01 13:31
Yes that's a typo.
# darryletter 2015-02-01 15:33
ok have done every thing i can except solder the chips to the header pins so that is next if that doesn't work i guess i just will have to find someone else to deal with that actually has support other then this dumb chat.
# darryletter 2015-02-01 15:37
i have been trying since jan 17 to get these chips to work with virtually no help or no offer to even replace them
# Wayne Truchsess 2015-02-01 16:36
Hi Darryl. I'm more than happy to send you two replacement chips and refund your money (and I will be doing both) as I have offered to do. I agree that troubleshooting using the comment section is not ideal and I have provided the email address you can send your questions too but have received no emails. I prefer using email because it's easier to send pictures and everything else, which is why I recommend it. If afterwards you would prefer to come back and post comments about how you are unhappy with the level of service I provide then you may do so. As always I do what I can to help people out where I can and I take great pride in trying to offer the best support I can. I've never hooked the MUX up to a Rasberry Pi so the only thing I can rely on is what I find on Google for possible reasons why it doesn't show up. Again I'll ship you out two replacement chips and also refund your money. If you like send me some pictures of your wiring, or screenshots from a scope or meter readings showing the I2C lines are being pulled up to the correct voltages. The more information you provide the easier it is to troubleshoot.
# darryletter 2015-02-05 21:41
i am sorry for the way i have been thanks to wayne i have got them working now

# Wayne Truchsess 2015-02-06 01:12
Glad to hear you got it working.
# suinkim 2015-03-12 05:50
Hi, I have some technical inquiries:
1) can I read data from the multiple channels?
2) I have to determine hardware selectable address (A0, A1, A2), and do you mean I have to connect them to the ground or the high voltage with pull-up resistors to assign 0 or 1?
3) do you mean I have to connect the interrupt inputs to high voltage with pull-up resistors when I don't use them?
4) what is the proper value of the pull-up resistor? (I am using 4.7 kOhm)
5) how can I creat a sequence to read data from the sensors connected to a channel of the multiplexer? (I am using LabVIEW)
- first, I have to write a byte for control resister to select a channel : start a sequence > multiplexer address + write > control resistor (00000100 for channel 0) > and next? do I have to call the multiplexer again before the sensor is called?
# GaboAhumada 2015-08-10 19:21

When will stock this product soon??
# Wayne Truchsess 2015-08-11 01:33
We should have them back in stock by the end of the week.
# Gumby54 2015-08-31 19:57
Hello Wayne,
I purchased 2 I2C multiplexer earlier in the spring. I was not sure how to use them so I left it for later. I am ready to try using it but still unsure of the connection scheme and the sketch format. I use both Arduino Uno and Mega. I would like to use for example; an RTC DS3231 with an LCD 4 lines display using I2C. I have sketches for both to work individually but how do I use the MUX to use them together.
If you need to reply personally my email address in my account info. Thank you ahead of time for your help.
# Wayne Truchsess 2015-09-02 00:43
Hi Gumby,
As for wiring, the most import thing to remember is you need to use pull up resistors on the input and each of the connected output channels. There is a picture in the datasheet on the product page. Also if using the default MUX address in your sketch, connect A0 - A2 to GND. The product page also shows a sample sketch on how to implement the code. Give it a try and let me know of you have any further questions.
# sash 2018-01-02 10:51
# sash 2018-01-02 10:55
.Wanna buy three of your 4 Channel I2C Multiplexers (one for the 3 fuelgauges and 3 extra) because i am exactly looking to connect 3 lipo fuel gauges on one arduino uno, but you're out of stock. When will it become available again?

So I would buy 3 of them, but these are also sold out, when do they become available again? Send me an email at tholl@fh-aachen.de



Go to top