Just thought I’d post this in case it helps someone else.
My 2007 E91 335i initially developed an intermittent 9CBE fault (right SMC), which eventually became permanent, followed by 9CBD (left SMC). The adaptive headlights eventually stopped swivelling altogether.
After removing both SMC modules, I found the left one had major corrosion across the PCB and connector pins, to the point where white powder was literally flaking off it. The right one, on the other hand, had very minor corrosion just at the bottom of the top two pins.
Replaced both with cheap Chinese aftermarket SMCs. This cleared the fault codes, but the adaptive headlights still weren’t working properly.
Although the aftermarket modules had matching BMW part numbers (7189312), they were missing the BMW and LEAR markings, and the PCBs were visibly different from the originals, even just looking through the casing. I only noticed this later. If you’re buying aftermarket SMCs, compare the PCB with your original. If it’s visibly different, I’d honestly save yourself the hassle and get a genuine BMW/Lear unit instead.
Moving on, I tried reading the modules (CODIERDATEN_LESEN) using NCS Expert and kept getting COAPI-2020 / IFH-0009 communication errors on both SMCs. INPA couldn’t access the AHL functions either. Same communication error.
Interestingly, swapping the original genuine right SMC back in made no difference. This makes me think the left SMC is some sort of master, because it didn't let me read RSMC even though it was still functional. Just an observation though, don't quote me on that.
Eventually bought a genuine BMW/Lear SMC for the left side, and immediately NCS Expert could read both modules without errors. Coded the replacement left SMC using SG_CODIEREN, and the adaptive headlights started working again.
INPA can now access all the AHL functions, and both headlights respond to actuator tests.
TL;DR: A faulty/cheap aftermarket left SMC appeared to interfere with communication to BOTH SMCs. If you’re getting 9CBD/9CBE or NCS Expert communication errors, don’t automatically assume both modules are faulty, and replace only with genuine new or used.