Bidirectional io

I hope this is in the right section.

I trying to interface the display and the stalk control in my car. My plan is to switch out the old head unit with a Raspberry pi/Arduino combo but still being able to use the stalk buttons and the display.

The display and the head unit talks via i2c with the head unit as master. The stalk is wired as a 3x3 keypad and is connected to the display unit that decodes the key presses and sends a message to the head head unit.

There are 5 wires between the display and head unit.
1 - GND
2 - 12v (display enable)
3 - SCL (5v TTL)
4 - SDA (5v TTL)
5 - IO (5v TTL, active low)

The io-wire is pulled low by the display whenever it wants the head unit to read data. It is also pulled low by the head unit when the head unit wants to send data to the display.

Now I can read messages from the display but I can not write anything to the display. My problem is that I can't pull the io-wire low from the Arduino. Even though I do a digitalWrite(2, LOW) the line is still high according to my logic analyzer.

The io-wire is connected to pin 2 on the Arduino Due which is configured with

pinMode(2, INPUT_PULLUP)

What do I have to do be able to pull the io-wire low from the Arduino?
Do I need to reconfigure it as an output whenever I need to write to the display? and then configure it back as input to detect when the display wants the Arduino to read?

You need to reconfigure that to an output when you want it to act as an output.

Thanks! That's what I thought but wasn't sure and a bit worried to damage something.