The brief
The X3's aircon had stopped cooling, blowing hot air out of the vents however it was set. He brought it in, which makes sense in this climate, in Singapore a working aircon isn't optional. After a proper diagnosis the fault was the evaporator, the cooling coil. The evaporator is the heat exchanger buried in the dash that the cold refrigerant flows through, and the cabin air blows over it to be chilled. They corrode and pinhole over the years, and once the evaporator leaks the system loses its refrigerant, so there's nothing left to cool the air. It's the one AC part that's a big job, getting at it means taking the dashboard out, but a leaking evaporator can't be patched in place, so it needs replacing, and properly: the system flushed, the receiver-drier renewed, and the whole thing recharged.
The diagnosis
A leak check on the aircon traced the loss to the evaporator, it had pinholed and was bleeding refrigerant inside the dash, which is why there was nothing left to cool with. The compressor, the condenser and the lines checked out, but with a failed evaporator the system gets flushed regardless before the new core goes on. That's an evaporator replacement, a dash-out job, with a fresh receiver-drier and a flush, not something a recharge alone touches.
The work
The refrigerant was recovered, the dashboard taken out to reach the heater-and-aircon box, and the leaking evaporator core removed and a new genuine BMW-spec evaporator fitted, the box resealed. The system was flushed to clear any debris, a fresh receiver-drier and new O-rings fitted, the dash rebuilt, the system pulled down to a long, deep vacuum, and recharged with the correct weight of refrigerant and the right oil charge. A check at the vents confirmed cold air at idle, holding cold under load, with no leak.
The outcome
Cold air at the vents at idle and on the move, strong cooling, the charge holding, and the dash back together properly. The X3 went home with the aircon working the way it should. A leaking evaporator is the AC fault that empties the system and can't be reached without a strip-down, so doing it properly, new core, flush, drier and a full recharge, fixed the cooling for good.