Maserati biturbo Koni ajustable shock system

There's been a lot of bullshit told by Maserati about how this system works.
Oil charged with metal particles, shocks able to sense the condition of the route and to adjust themself. Certainly many others. It's time to see how it really works.

I described internals of a QP4 adjustable here.
It's in French but pictures are sufficient to understand principles.
Note that 224/424/Ghibli/QP4 shocks are all built same way and can be mixed in the same car.
Actually front and rear shocks can be mixed as well.
The system works only if all four shocks work.

The system

The system contains:

The overall system is quite simple:
Driver selects the shock adjustment position. The computer try to make shocks to get to this position. If a failure is detected the system is shut down and the red status LED is switched on. That's it.
There is no magic system sensing the route condition. There is no real-time control except to follow the driver's will to adjust stiffness.

The Koni shocks have slightly different length compared to standart ones but they are still inter-changable.

Control panel

There are two versions of the control panel:

Both versions use the same computer.
The control panel contains circuits that sense the control button, show the choosen position on green LEDs and send the position 2-bit code to the computer. The panel is powered by the comptuter.
The status red LED is driven by the computer through a special wire.
The computer does not know whether control panel works as any combination of the 2-bit code that computer receives is valid.

Servo-motors

The pictures below show the servo-motor located in the shock.

We see a motor, gear, position pot and electronics. It's a classic servo-control design. It's powered by a 12v supply. And it's controlled by a classic PWM pulse signal.
Computer sends a 5v pulse every 10ms. Pulses are 0.5/1/1.5/2 ms long for four positions.
One may use a standart RC model servo-controller to adjust shocks. However beware of noise on the line that may make servo positionning not precise.

Computer

Inside the computer is like that:

We can see:

Each time there is a change of the shock adjustment the MCU expects it to consume current during some amount of time. The OpAmp senses this current and sends a binary signal to the MCU if consumption is significant. This is how MCU knows that each shock works.

All shocks get the same control signal and in the same time.

When computer is powered up it first sends two different positions to all shocks. If the observed consumption is compliant to its expectations then it switched off the status LED and the system is ready.
If an abnormal behavior was observed then computer makes 4 attemps to set these two positions and then lights on the error LED.
If no control panel is connected then shocks are left in position 1 (softest).

Next picture shows the whole wiring harness

Error codes

Even if MCU knows exactly which shocks have unexpected behavior it does not give us this information.
I observed two error codes:

Cheating the computer

There is way to cheat the computer to make it think all shocks are present even if only some of them are actually connected (see wiring below).
We can use the fact that the the control signal is the same for all shocks and that all the computer expects is a proper current consumption on each shock. If the ground wire of a not connected channel (of a shock) is connected to a ground of another actually connected channel then computer sees shocks on both channels. This is easy to do with a shunt on the computer's connector.

Diagnostic mode

The wiring harness contains a 1-pin red connector that should be near the control panel or the selection button. This connector is normally open.
If you close it (at any time) the system enters the diag mode in which computer cycles over the following steps:

In this mode computer does not care about how many shocks are connected and whether they work.
If a shock works you must hear its motor rotate.

Harness wiring pin out

The shock connector pin out:

I did not try to know where every shock is connected to the computer. So let's call them 1..4.

The computer 25-pin connector pin out:

Position inputs 1 and 2 receive a binary encoded number of the requested position from the control panel.
We get the four 00/01/10/11 combinations. I don't know which code is for which position.
The control panel can be replaced by two 2-position switches that close the inputs to the ground. The four combinations will encode the four adjustment positions.

Shock failure

It's not surprising that after some amount of working hours the servo-motor will wear and die.
However there is another source of failures: the cable. The servo cable that links motor to the shock connector can be worn exactly where it enters the shock.
Below is a picture of the cable wires as I found them: