I'm using an I/K-Bus transceiver IC from Melexis.
This is the one which has collision detection and other functions that makes it easy to send and receive data from the bus.
The I/K Bus is a common bus used in BMWs starting from the early 2000s to control windows, doors, and receive their status (and much more).
It has a pin name "SEN/STA" which is a bidirectional pin used to detect and control the bus state. When you read this pin, it shows logic 0 when the bus is free, and logic 1 when it is busy (thus you should not start sending your message). When you write to this pin, you can disable the "transmission path" (logic 1), or you can force it to be free (logic 0).
Although the chip has a lot of cool features I'm not able to use it to transmit any single message onto the bus.
My schematics is here (tried with the SEN/STA wire removed too):
Here is a scope image of the TX coming from the serial port (yellow), and the BUS line (purple). You can see that the IC tries to start the transmission on the BUS line, but immediately stops it.
Here is a scope image of the SEN/STA pin (yellow) and the BUS (purple): You can see that the SEN/STA goes up during the requested transmission which is okay, but it should NOT stop the current transmission. It seems the IC thinks the BUS is busy and stops its transmission!
Here is a scope image of the SEN/STA pin (yellow) vs. serial TTL TX pin (purple): You can see the SEN/STA is high during the transmission (a bit later the yellow line went down, similar to the picture above).
I'm using PuTTY to send data at 9600 baud, 8N1. This is the specification for the I/K Bus.
I think the bus logic of the TH3122 is fine, however it should not disable its own transmission.
Now I tried to force the SEN/STA to logic 0 during the TX. Here are my scope images for this:
BUS (yellow), TX (purple), you can see that transmission is disabled after each falling edge of the TX:
BUS (yellow), SENSTA (purple), you can see SENSTA is controlled to be logic 0 for the whole transmission operation as marked on Figure 3 in the datasheet: