Mijn Elgato Key Lights voorzien van native Matter

Mijn Elgato Key Lights stopten minstens één keer per week met reageren. Ik gebruikte ze via Homebridge, maar ik heb nooit precies kunnen vaststellen of de fout in de bridge of in de controllers van de lampen zat. De enige oplossing was altijd het opnieuw herstarten van de stroomvoorziening.

Daarom heb ik de controllers in beide lampen vervangen door ESP32-C3-boards die Rust-firmware draaien met native Matter-ondersteuning. Ze maken nu direct verbinding met Apple Home, inclusief bediening van stroom, helderheid en kleurtemperatuur. Homebridge is uit het besturingspad verwijderd. Het wegnemen van één afhankelijkheid is op zichzelf al een mooie verbetering.

Beide aangepaste lampen werken tot nu toe goed. Er is één irritatie overgebleven: een zwakke oranje gloed wanneer ze uitstaan. Een experiment met een resistor maakte dit minder zichtbaar, maar ik heb nog geen volledige oplossing bevestigd.

De firmware en build-notities zijn te vinden onder Key Right op GitHub. Dit is een aanpassing voor de originele full-size Key Light; andere modellen en revisies van het board kunnen afwijken.

Vijf draden, het grootste deel van de lamp ongewijzigd

De originele Realtek-controller communiceert met een aparte PCA9635 LED-controller. Dit maakte de vervanging relatief eenvoudig: de Realtek-module verwijderen, een ESP plaatsen en de PCA9635, de LED-stroomcircuits, de panelen, de behuizing en de originele voeding behouden.

De vervanging vereist vijf draden: stroom, massa, I²C-data, I²C-clock en output enable.

Als amateurhobbyist met ongeveer vier projecten op mijn naam vond ik dit project vrij eenvoudig. Het lastigste deel was het solderen van de draden tussen de ESP en de kleine pads. Dit is mogelijk met wat geduld, maar het controleren op solverbruggingen en het verifiëren van de continuïteit hoort bij het werk.

Het verwijderen van de oude module verliep goed met een verwarmingsbed op 130°C en een heteluchtpistool op 175°C. Begin in een hoek en til de module voorzichtig op zodra de soldeer smelt. Te hard trekken kan ervoor zorgen dat er sporen van de printplaat worden meegetrokken.

Mijn boards hebben externe antenneconnectoren, maar ik heb een stabiele verbinding gehad zonder het toevoegen van antennes, zelfs wanneer de lampen gesloten zijn.

Details: bedrading en solderen

Het afgebeelde board is gemarkeerd als ESP32-C3MINIV1. De firmware is gericht op de C3 en vereist 4 MiB flashgeheugen; controleer de chip en de capaciteit voordat u flasht.

Oriënteer het standaardboard met de witte stroomweerstanden aan de linkerkant en de verwijderde U4-voetafdruk onder de PCA9635. Tel de horizontale bovenste rij van U4 vanaf 1 aan de linkerkant. Dit zijn posities op de voetafdruk, niet de pincode-nummers uit het datasheet van de oude module.

DraadVerbinding standaardboardESP32-C3 pad
Rood / stroomJ6 DEBUG, linksboven pad3.3
Zwart / massaJ8 UART, bovenste pad in linker kolom van drieG
Geel / SDAU4 bovenste rij, tweede van rechts4
Groen / SCLU4 bovenste rij, meest rechts5
Blauw / OEU4 bovenste rij, vijfde van links6

De C3 haalt stroom uit de gereguleerde rail van de lamp, gemeten op ongeveer 3,37 V, via het 3.3-pad. De firmware gebruikt een 100 kHz I²C-bus en open-drain output enable. De standaard pull-ups blijven geplaatst.

Koppel de stroom van de lamp en de USB los voordat u gaat solderen. De verbindingen bij de connectoren vereisten geduld met de bout. Ik probeerde aanvankelijk 380°C, wat ik niet zou aanraden; 350°C werkte goed wanneer ik de verbinding de tijd gaf om op te warmen. Ik weet niet welke legering Elgato heeft gebruikt, maar het vervangen van het oude soldeer door mijn eigen soldeer maakte het makkelijker. Controleer op bruggen en verifieer de continuïteit terwijl de stroom is uitgeschakeld.

Voor het flashen terwijl er lampdraden zijn aangesloten, gebruikt u de stroom van de lamp en USB waarbij VBUS/5 V is geblokkeerd, maar data en massa intact zijn. Een USB-datablokker doet hier het verkeerde. Bij gewoon gevoede USB moeten eerst alle vijf de lampdraden worden losgekoppeld; het alleen uittrekken van de stroomadapter van de lamp is niet voldoende.

Volg de hardwaremap en de bring-up procedure in de repository voor de volledige volgorde.

Waarom Wi-Fi in plaats van Thread?

Een ESP32-H2 die Matter over Thread draait, zou cooler zijn geweest. De H2 heeft de 802.15.4-radio hiervoor.

Ik wilde de applicatie en de Matter-stack in Rust, en de C3 bood me een rechtstreeks pad via Matter over Wi-Fi. Rust-bindings voor OpenThread bestaan, inclusief H2-ondersteuning, maar deze vormen een wrapper rond OpenThread in plaats van Thread in Rust te implementeren. Voor dit project was Wi-Fi de eenvoudigere route. De applicatie maakt gebruik van rs-matter met Embassy en esp-hal.

Betrouwbaarheid verhogen

Directe bediening via Home was slechts het halve doel. Het vervangen van de controller zou weinig zin hebben als de nieuwe controller ook regelmatig herstart zou moeten worden.

De firmware onthoudt de geselecteerde stroom, helderheid en temperatuur, probeert netwerkfouten opnieuw te herstellen en gebruikt een watchdog om te herstellen als de controller vastloopt. Testen op echte hardware bracht een bug in de afhankelijkheden aan het licht die een 'panic' veroorzaakte bij de tweede start van het Matter-transport. Dat was precies het soort fout dat ik wilde vinden voordat ik de lampen weer in elkaar zette.

De bediening voelt nu snel en betrouwbaar aan, en ik kan ze aanpassen aan hoe ik de lampen daadwerkelijk gebruik. Ik beperk de output tot de nominale 10% van de standaardcontroller, en verspreid dat bruikbare lage-helderheidsbereik over de volledige schuifregelaar van Home. 100% in Home is mijn maximum, niet het oorspronkelijke maximum van de lamp.

Het is nog vroeg, maar het feit dat het paar direct in Home werkt, is afgestemd op mijn setup en heeft één minder afhankelijkheid, voelt als een echte upgrade. Ik denk dat ze vanaf het begin zo hadden moeten werken.

Details: bediening en herstel

Elke lamp is één Matter Color Temperature Light met bediening voor stroom, helderheid en wittemperatuur. Koppel de lampen afzonderlijk en groepeer ze vervolgens in Apple Home.

Het niet-nul 1–100% helderheidsbereik van Home wordt gekoppeld aan het nominale 1–10% bereik van de standaardcontroller. De temperatuur varieert van 143–344 mired, ongeveer 7000–2900 K. Bij een lage output beperkt de acht-bit PWM-resolutie van de PCA hoe fijn de stappen kunnen zijn.

De eerste boot is 'Uit'. Latere boots herstellen standaard de opgeslagen stroom, helderheid en temperatuur, met een expliciete optie voor startup-Uit. Normaal reflashen behoudt de pairing en instellingen.

De hersteltests forceerden Wi-Fi-onderbrekingen, startten het Matter-transport herhaaldelijk opnieuw op en lieten de controller opzettelijk vastlopen. De Wi-Fi-associatie keerde na ongeveer vier seconden terug na een onderbreking. De watchdog resette een vastgelopen controller in ongeveer 15 seconden, waarna de opgeslagen status en pairing terugkeerden. Het validatierapport bevat de resultaten.

De resterende gloed

Wanneer Home 'Uit' aangeeft, straalden beide panelen nog steeds een zeer zwakke oranje gloed uit. Dit komt uit de LED-panelen, niet van de indicator van de ESP die door de behuizing reflecteert.

De PWM-registers van de PCA lezen nul uit, maar de panelen zijn niet volledig donker. Ik heb de elektrische oorzaak nog niet vastgesteld.

Een test met een bleeder-resistor maakte de gloed zwakker. Het idee is om een kleine ongewenste stroom een andere route rond de LED's te geven. Of de resterende gloed volledig verdwijnt nadat de lamp een tijdje uit heeft gestaan, moet nog worden bepaald. De onderzoeksnotities volgen het gedeeltelijke resultaat en de volgende stappen.