docs(sacn): Multicast weiter eingekreist - vier Theorien ausgeschlossen
Nicht die Ursache: der netif-Ausstieg im SDK-Filter (tls_get_netif liefert das STA-Interface), fehlender Multicast-Empfang (mDNS kommt an), fehlendes Multicast-Senden (die mDNS-Ankuendigung der Lampe ist ueber die Luft sichtbar), die zweite Filterebene tls_filter_mcast_mac (gebaut, aufgespielt, getestet, zurueckgenommen) und Stromsparen/DTIM. Uebrig bleibt das Indiz, dass die Lampe keine IGMP-Meldung sendet - beweisbar nur per serieller Konsole oder Monitor-Mitschnitt.
This commit is contained in:
+30
-6
@@ -73,13 +73,37 @@ if (netif != tls_get_netif())
|
|||||||
aus - sie meldet also Erfolg, OHNE den Filter gesetzt zu haben, wenn die Schnittstelle nicht
|
aus - sie meldet also Erfolg, OHNE den Filter gesetzt zu haben, wenn die Schnittstelle nicht
|
||||||
die vom SDK als aktuell gefuehrte ist. Dann nimmt der Chip die Frames nie an.
|
die vom SDK als aktuell gefuehrte ist. Dann nimmt der Chip die Frames nie an.
|
||||||
|
|
||||||
Naechste Schritte, wenn es weitergeht:
|
### Was in derselben Nacht noch geprueft und AUSGESCHLOSSEN wurde
|
||||||
|
|
||||||
1. Serielle Konsole an eine Lampe haengen und mitlesen, was beim Beitritt passiert.
|
- **Der Ausstieg in `ethernetif_igmp_mac_filter` greift nicht.** `tls_get_netif()`
|
||||||
2. `imr_interface` einmal mit `INADDR_ANY` statt der STA-IP versuchen - das aendert, welches
|
(`sdk/Src/Network/lwip2.0.3/netif/wm_ethernet.c:473`) liefert `nif`, und das ist das
|
||||||
netif lwIP waehlt, und koennte den Ausstieg oben umgehen.
|
STA-Interface - genau das, auf dem der Beitritt laeuft. `netif != tls_get_netif()` ist
|
||||||
3. `sacn.multicast` ehrlicher machen: aktuell behauptet es einen Erfolg, den das SDK nur
|
also falsch, der Hardware-Schluessel wird gesetzt. Meine erste Theorie war damit falsch.
|
||||||
zurueckmeldet, aber nicht garantiert.
|
- **Die Lampe empfaengt Multicast.** Sie beantwortet eine mDNS-Anfrage, die ausschliesslich
|
||||||
|
als Multicast an 224.0.0.251 ging.
|
||||||
|
- **Die Lampe sendet Multicast.** Nach einem Neustart sah der Pi ihre mDNS-Ankuendigung auf
|
||||||
|
224.0.0.251 - Multicast von WLAN-Geraet zu WLAN-Geraet ist also sichtbar und die Messung
|
||||||
|
taugt.
|
||||||
|
- **Im IGMP-Mitschnitt schweigt die Lampe.** Querier-Abfragen (vom Gateway) und Meldungen
|
||||||
|
anderer Geraete sind zu sehen, von der Lampe kommt weder eine Beitrittsmeldung noch eine
|
||||||
|
Antwort auf die Abfrage. ABER: Bei aktivem Snooping leiten Switches Meldungen nur Richtung
|
||||||
|
Router weiter - das Schweigen ist damit ein Indiz, kein Beweis.
|
||||||
|
- **`tls_filter_mcast_mac(gruppen_mac, 1)` nach dem Beitritt aendert nichts.** Die zweite,
|
||||||
|
im SDK-Header dokumentierte Filterebene wird aus dem Quelltext nie aufgerufen; sie
|
||||||
|
ausdruecklich zu oeffnen wurde gebaut, aufgespielt und getestet - Multicast kam weiterhin
|
||||||
|
nicht an. Der Versuch wurde danach zurueckgenommen, die Lampe laeuft wieder auf `main`.
|
||||||
|
- **Stromsparen/DTIM scheidet aus**: Waere das die Ursache, kaeme auch mDNS nicht an.
|
||||||
|
|
||||||
|
### Naechste Schritte, wenn es weitergeht
|
||||||
|
|
||||||
|
1. Serielle Konsole an eine Lampe haengen: sieht man beim Beitritt einen Sendeversuch der
|
||||||
|
IGMP-Meldung? Das ist die einzige Messung, die das verbleibende Indiz zum Beweis macht.
|
||||||
|
2. Mitschnitt im Monitor-Modus (Laptop auf demselben Kanal) - zeigt, was wirklich ueber die
|
||||||
|
Luft geht, unabhaengig davon, was der AP weiterreicht.
|
||||||
|
3. IGMP-Snooping einmal ganz aus und dabei mitschneiden: dann fluten Switches auch
|
||||||
|
IGMP-Meldungen, und das Schweigen der Lampe waere eindeutig zu belegen oder zu widerlegen.
|
||||||
|
4. `sacn.multicast` ehrlicher benennen: es meldet den Rueckgabewert von
|
||||||
|
`IP_ADD_MEMBERSHIP`, nicht die tatsaechliche Empfangsbereitschaft.
|
||||||
|
|
||||||
Zwei Fehlversuche auf dem Weg dorthin, damit sie niemand wiederholt:
|
Zwei Fehlversuche auf dem Weg dorthin, damit sie niemand wiederholt:
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user