MCP23017 B side not pulling up?

I’m hoping for some help with MCP23017 chips from the wonderful community here. I am not able to get the B side to pull up, but the A side is. I am seeing this on 2 different chips so I think I can safely say it is my code not the chips.

I’m using C# in a Windows 10 IoT app running on a Raspberry Pi 3.

i2cPortExpander is a Windows.Devices.I2c.I2cDevice object and I am setting the B side immediately after the A side.

Side A, which is working uses:
i2CWriteBuffer = new byte[] {0x0C, 0xFF };
i2cPortExpander.Write(i2CWriteBuffer);

Side B, which is not working, uses:
i2CWriteBuffer = new byte[] {0x0D, 0xFF };
i2cPortExpander.Write(i2CWriteBuffer);

In case they were on split banks (didn’t think they were since 0x0D worked for A), I did try but also did not work:
i2CWriteBuffer = new byte[] { 0x16, 0xFF };
i2cPortExpander.Write(i2CWriteBuffer);

Reading from the pins works as expected when they are connected to ground or VCC, but when open they wobble. Interrupts are running in mirror mode if that makes any difference. Spec sheet says that the B side does support pullup. Testing with a multi-meter shows around 0.6v on the B pins, the A side is at VCC (3.3v). The pins I am measuring are the first 8 on each side (first relative to the U end).

The spec sheet I am using is http://ww1.microchip.com/downloads/en/DeviceDoc/20001952C.pdf.

I’m hoping to just rule out the obvious of misreading documentation or maybe someone has experience with MCP23017 chips and knows of a gotcha.

No clue why, but apparently initializing them as outputs and then setting them as inputs with pull up makes them work.

There were/are at least 2 errata for this chip, and perhaps even more. One of them bit me & after just I solved it (knowing what my fix was), I then found the errata! While these may not have any bearing on your problem, it seems like this chip series has had it’s share of issues

I just tested it with the sample code I wrote some days ago (G80, TinyCLR, MCP23017 DIL) and the pins are correctly pulled up to nearly Vcc.

 = the content that is written into the register
MCP.Write(new byte[] { 0x0D, 0xFF }); //Port-B-Pullups

The included pullups are weak (100k I think), are there maybe more things in your circuit that maybe try to pull the lines to GND?