bluebox tech doc
Generelles
Das Gebäude "Blauer Bock" ist streng symmetrisch und hat acht Etagen, wenn man das Erdgeschoss mit einbezieht, wobei die oberen sieben jeweils 98 fast gleich große Fenster haben. Diese Etagen werden für die Lichtinstallation „bluebox“ benutzt, in deren Rahmen hinter jedem der 686 Fenster ein handelsüblicher Baustrahler positioniert wurde. Alle Lampen sind mit einem einzigen Computer verbunden, um das Gebäude in ein riesiges Display mit 98x7 Pixeln zu verwandeln, bei dem jedes Fenster ein Pixel ist.
Die Grafik [bluebox.svg] bietet einen Überblick über die Verkabelung des Gebäudes.
Räume
Die meisten Zimmer (22 auf jeder Etage) haben vier Fenster, während je zwei Räume pro Etage fünf Fenster umfassen. Deshalb basiert die gesamte Verkabelung auf vier Lampen in einem Zimmer und die Räume mit fünf Lampen werden einfach als zwei virtuelle Räume behandelt mit drei fehlenden Lampen im zweiten. Um klar definiert über einen bestimmten Raum reden zu können, wird jeder (virtuelle) Raum mit einem Buchstaben. Wenn man vor dem Gebäude steht, ist Raum "A" auf der linken und Raum "Z" auf der rechten Seite. Die oberste Etage wurde mit "7", die unterste mit "1" bezeichnet.
Die Grafik [bluebox.svg] zeigt eine schematische Darstellung des Gebäudes inklusive Nummerierung und Verkabelung der Zimmer.
Um Kosten und Kabellängen zu sparen, kontrolliert eine einzige elektronische Schaltung die vier Lampen in einem (virtuellen) Raum. Diese Schaltung heißt "BlueBrightnessControl4" ist als blaue Schaltung in der Grafik [bluebox.svg] abgebildet.
Energieverteilung
Jede "BlueBrightnessControl4" braucht Netzstrom für die vier ihr verbundenen Lampen. Jeweils vier Schaltungen (die zwei Schaltungen mit einer Lampe nicht mitgezählt) zusammen sind über normale Verlängerungskabel(dünne rote Linien in der Abbildung [bluebox.svg]) mit der Etagen-Stromverteilung verbunden – in der Grafik abbgebildet als roter Kreis. Dort befinden sich sechs Sicherungen und ein FI-Schalter.
Jede Etagen-Stromverteilung mit zusätzlichen Sicherungen ist mit dem Hauptverteiler (rotes Quadrat) im ersten Stock verbunden (dickere rote Linien). Das Haupt-Stromkabel führt von der ersten Etage in den Keller zum Stromzähler, wo der Strom ins Haus kommt.
Datenverteilung
Die Datenleitungen werden in der Grafik [bluebox.svg] durch grüne Linien symbolisiert. Jede „BlueBrightnessControl4" ist mit dem Etagenverteilermodul im L-Raum durch ein einfache verdrillte Leitung verbunden. Auf diesen Leitungen wird ein serielles Protokoll benutzt, das ähnlich zu dem ist, das von seriellen Ports normaler PCs verwendet wird.
Die Haupt-Verteilermodule auf den Etagen heißen "BlueDataDistributor" und stellen die Daten für die 26 seriellen Leitungen zur Verfügung, die sie über 10MBit Ethernet erhalten haben. Die Ethernet-Leitungen führen in die vierte Etage, wo ein einfacher 8-Port-Switch die sieben Ethernet-Leitungen zusammenführt. Dieser Switch ist mit einem 100MBit-Ethernet-Kabel mit dem Computer verbunden.
BlueBrightnessControl4 (BBC4)
Die BBC4-Platine kann in drei Hauptbestandteile zerlegt werden: Eingangsschaltung, der logische Teil und der Ausgang. Die einzelnen Bestandteile werden im folgenden erläutert. Die Grafik [BBC4.svg] zeigt den Aufbau der BBC4-Platine.
Die Energieversorgung für den logischen Teil könnte als vierter Bestandteil bezeichnet werden, wird aber hier nicht näher erläutert, da es um eine Standard Baugruppe handelt.
Eingangsschaltung
Die Aufgabe der Eingangsschaltung ist das Bereitstellen einer Halbwellenspannung, um die Pulsbreitenmodulation (PWM) zu realisieren. Es ist wichtig diese zu filtern, damit die Netzspannung nicht durch die schnell steigenden und fallenden Ströme gestört wird.
Natürlich beginnt die Eingangsschaltung mit einer Sicherung, um Ausbruch von Feuer wegen eines Kurzschlusses oder ähnlichen Problemen zu verhindern. Anschließend durchläuft der Strom eine Spule und den Gleichrichter. Am Ende befindet sich ein Kondensator in Parallelschaltung.
Der Gleichrichter ist ein voller Brückengleichrichter, der aus leistungsstarken Dioden besteht und die Netzspannung in die benötigte Halbwellenspannung umwandelt, das heißt in eine immer in die selbe Richtung pulsierende Spannung.
Die Spule und der Kondensator werden für die Filterung gegenüber dem Netzstrom benutzt. Dabei ist die Drossel so gewählt, dass sie den Strom während der PWM-Periode (32 Mikrosekunden) nahezu konstant halten kann ohne dabei nennenswerte Effekte auf die wesentlich längeren Perioden (eine tausendstel Sekunde) der sinusförmigen Halbwellen zu haben. Gleichzeitig wurde der Kondensator so ausgesucht, dass die Spannung während der PWM-Perioden beinahe gleich bleibt, darüber hinaus jedoch keine Spannung über die längeren Halbwellen-Perioden gespeichert wird. Daraus folgt, dass am Kondensator eine Halbwellenspannung anliegt und nicht eine fast konstante Gleichspannung mit einigen Wellen wie in einfachen Gleichspannungsversorgungen mit einem Brückengleichrichter und einem großen Kondensator. Somit sind der Strom und die Stromaufnahme immer in Phase mit der Netzspannung und erzeugen nur leises PWM-Rauschen.
Logischer Bestandteil
Der logische Bestandteil ist verantwortlich dafür, die Helligkeitsstufen vom seriellen Eingang zu empfangen und vier PWM Signale zu generieren. Außerdem überprüft er, ob Daten ankommen und zeigt den Status durch eine LED an. Ein Taster kann betätigt werden, um die ankommenden Daten außer Kraft zu setzen und die einzelnen Lampen ein paar Sekunden leuchten zu lassen. Diese Möglichkeit ist nützlich, um die Funktion der Lampen zu überprüfen.
Die seriellen Daten werden über einen Optokoppler empfangen, um den Draht, der die Daten transportiert, von der Netzspannung zu trennen. Der Mikrocontroller (CPU) benutzt die Masse der gleichgerichteten Netzspannung, um die Ansteuerung der Feldeffekttranistoren (FETs) zu vereinfachen. Er generiert die vier PWM Signale mit 32kHz auf Grundlage der zuvor erhaltenen Informationen über die Helligkeitsstufen.
Im Falle einer Zeitüberschreitung am seriellen Eingang bleiben die Lampen aus, sofern sie im Aus-Zustand waren oder es wird eine programmierte Animation abgespielt, falls die Lampen vor der Zeitüberschreitung in Betrieb waren. In jedem Fall können mit dem Taster sowohl serielle Daten als auch programmierte Animation für ein paar Sekunden außer Kraft gesetzt werden.
Die Status LED blinkt ein-, zwei- oder dreimal in Folge, bevor sie eine längere Zeit aus bleibt. Einmal blinken heißt, dass serielle Daten ankommen und verarbeitet werden. Falls die programmierte Animation läuft oder die Lampen ausbleiben, blinkt die LED zweimal. Dreimal blinkt die LED, wenn der Taster benutzt wurde, um eine einzelne oder alle Lampen anzuschalten.
Ausgangsschaltung
Die Ausgangsschaltung ist für jede der vier Lampen gleich und besteht nur aus einem leistungsfähigen Feldeffekttranistor (FET) und einer Treiberschaltung, die die FETs schnell genug an- und ausschaltet. Das schnelle An- und Ausschalten ist wichtig, da beim Schaltvorgang die meisten Verluste entstehen und den FET erwärmen. Um diesen Effekt zu minimieren, wird der FET so schnell wie möglich an- und aus geschaltet.
BlueDataDistributor (BDD)
Das Datenverteilermodul, der BlueDataDistributor (BDD), empfängt die anzuzeigenden Daten via Ethernet und und teilt diese auf 32 serielle Leitungen auf. Wie die BBC4-Platine zeigt der BDD ebenfalls mit einer Status LED an, ob Daten ankommen oder nicht. Die Grafik[BDD.svg] verdeutlicht den Aufbau.
Ethernet Schnittstelle
Die 10baseT Ethernet Schnittstelle wurde mit einem Chip realisiert, der dem Chip auf älteren ISA Netzwerkkarten aus normalen PCs sehr ähnlich ist. Dieser Chip ist zuständig dafür, die erhaltenen Ethernet-Informationen nach MAC-Ziel-Adressen zu filtern. Die Zieladresse wird vom Mikrocontroller (CPU) gebildet, indem das von den Konfigurationsschaltern gelesene Byte an einem feststehenden Teil angefügt wird und anschließend in das Filterregister des Ethernet-Chips geschrieben wird.
Alles andere, das auf dem einfachen Ethernet aufbaut, wie ARP, IP und UDP wird von der Software des Mikrocontrollers erledigt. Sie setzt eine IP Adresse aus einem feststehenden Teil und dem Byte vom Konfigurationsschalter zusammen und beginnt dann, auf ARP-Abfragen und empfangene UDP-Datagramme zu antworten.
Jedes auf dem richtigen Port erhaltene UDP-Datagram wird dann in Blöcke mit 32 Bytes aufgeteilt (die übrigen 0 bis 31 Bytes werden gestrichen). Diese Datenblöcke werden dann zu den Ausgängen weitergegeben.
Status-LED
Die Status-LED zeigt den Zustand der Datenankunft an. Sie blinkt einmal und bleibt dann einen längeren Moment aus, solange die Daten regulär eintreffen. Falls keine Daten ankommen, wird die Zeitüberschreitung erkannt und visualisiert, indem die Status-LED zweimal blinkt, bevor sie länger aus bleibt. Dadurch kann ständig überprüft werden, ob die Datenübertragung funktioniert.
Serieller Ausgang
Jeder Datenblock mit 32 Bytes, der auf dem UDP-Port ankommt, wird auf den 32 Ausgängen gesendet. Jedes Byte in diesem Block wird auf einer anderen seriellen Leitung mit 4800bps in NRZ-Kodierung ausgegeben. Das Start-Bit vor den eigentlichen Daten-Bits sowie das Stopp-Bit am Ende werden automatisch generiert.
Die 32 Ausgänge des Mikrocontrollers werden dann verstärkt: einmal nicht invertiert und einmal invertiert. Dadurch treibe jeder jeder Ausgang die beiden Leitungen antisymmetrisch mit 0V und +5V.
Pulsbreitenmodulation (PWM) des gleichgerichteten Wechselstroms
Es ist nicht ganz einfach, die Regelung der Helligkeitsstufen von 150W-Baustrahlern möglichst gleichmäßig mit relativ günstiger Elektronik umzusetzen. Das Hauptproblem besteht darin, dass normale Dimmer-Schaltungen ziemlich unsanft mit dem Netzstrom umgehen. Beispielsweise schalten diese für halbe Helligkeit das Licht nur für den zweiten Teil jeder Sinushalbwelle auf der Leitung ein. Das führt zu einem Strom, der nicht mit der Spannung zusammenhängt, was wiederum schlecht ist für die Umformer im Stromnetz (Es gibt auch Dimmer, die das Licht im ersten Teil der Sinuswellen anschaltet, was zwar besser, aber immer noch nicht gut ist). Jedenfalls ist es nicht erlaubt, mehr als zwölf 150W-Baustrahler auf diese Weise zu steuern.
Die Hauptidee war deshalb, stattdessen Pulsbreitenmodulation zu benutzen, wobei der Strom sehr schnell an- und ausgeschaltet wird. Soll eine Lampe hell sein, so ist der Strom die meiste Zeit eingeschaltet, soll sie dunkel sein, ist der Strom die meiste Zeit aus. Damit es möglich ist, die Pulsbreitenmodulation mit Wechselstrom zu erreichen, muss die PWM-Frequenz sehr viel schneller sein als die Wechselstromfrequenz. Das ist nötig, damit sich die Spannung während eines einzigen PWM-Durchgangs (d.h. Einmal einschalten und einem ausschalten) nicht signifikant ändert.
Um diese Idee umzusetzen, muss die Spannung beliebig oft sehr schnell ein- und ausgeschaltet werden. Daher kann kein Triac benutzt werden, da dieses elektronische Bauteil nur ausgeschaltet werden kann, wenn die Spannung (der Strom, aber das ist das gleiche für die Lampen) Null wird.
Die zweite Idee war es, den gleichgerichteten Netzstrom für die PWM zu nutzen, da es für die Lampen egal ist, in welche Richtung der Strom fließt. Daher kann die PWM-Schaltung durch Hochspannungs-Feldeffekttransistoren (FETs) realisiert werden.
Die Abbildung [ac.png] zeigt die Netzspannung, die an den BlueBrightnessControl4s ankommt. Diese Spannung wird dann gleichgerichtet (siehe Abb. [rect.png]) und man erhält eine Halbwellenspannung, die mit 100Hz pulsiert. Auf Basis der pulsierenden Spannung ist die PWM mit 32kHz angesetzt, so dass der Strom 320 Mal pro halber Sinuswelle ein- und ausgeschaltet wird. Das kann leider nicht in einer Grafik veranschaulicht werden, da es zu fein für die Abbildung wäre. Stattdessen zeigen die Bilder [pwm.off.png], [pwm.low.png], [pwm.medium.png], [pwm.high.png] und [pwm.on.png] PWM-Signale, die mit einer PWM-Frequenz von 1kHz bei fünf Helligkeitsstufen generiert werden (aus, dunkel, mittel, hell, an).
Serielles Datenprotokoll
Das serielle Datenprotokoll wird über eine verdrillte Leitung übermittelt, die das Standard-Protokoll benutzt, das auch die seriellen Ports normaler PCs verwenden, das heißt NRZ-Kodierung der einzelnen Bits. Die grundsätzlichen Daten sind acht Bits breit und werden mit einem einzelnen Start-Bit und einem einzelnen Stopp-Bit mit 4800bps übermittelt.
Physikalische Ebene
Die vereinfachte Version eines "Current-Loops" wurde anstelle der +12V/-12V normaler serieller Ports genutzt, um im Gegensatz zu diesen Ports von normalen PCs Störungen auf den Leitungen weitestgehend zu vermeiden.
Die Senderseite gibt für eine logische 1 0V auf Draht A und +5V auf Draht B sowie +5V auf Draht A und 0V auf Draht B für eine logische 0. Auf der Empfängerseite wird der Stromkreis von einem Widerstand und einer LED auf einem Optokoppler (mit einer gewöhnlichen Diode in antiparellel für die andere Richtung) geschlossen.
Dadurch entsteht ein Strom mit beinahe konstantem Wert, der sich aber in der Richtung für eine logische 1 und eine logische 0 unterscheidet. Störungen, die sich nun in die Leitung induzieren, führen zu beinahe der gleichen Spannung in beiden Drähten, was fast nichts am fließenden Strom ändert.
Bits werden mit Non Return Zero (NRZ) kodiert, das heißt, dass für eine eine komplette Bit-Dauer eine logische 1 oder eine logische 0 auf die Leitung gelegt wird. Die Bit-Dauer beträgt 208.333us, was 4800bps ergibt.
Verbindungsebene
Zur Veranschaulichung zeigen die Bilder [serial.x00.png], [serial.x01.png], [serial.x55.png], [serial.x7F.png], [serial.x80.png], [serial.xFE.png] und [serial.xFF.png] die Spannung zwischen den beiden Leitungen (A die negative und B die positive Anschlussklemme des Voltmeters), wenn bestimmte Werte (0x00, 0x01, 0x55, 0x7F, 0x80, 0xFE und 0xFF) übertragen werden. Das Start-Bit ist immer eine logische 0, gefolgt vom niederwertigsten Bit. Die anderen Bits werden der Reihe nach bis zum höchstwertigsten Bit gesendet und die Übermittlung endet mit einer logischen 1 als Stopp-Bit.
Anwendungsebene
Das Anwendungsprotokoll ist recht einfach. Das erste Byte jeder Nachricht kann am gesetzten höchstwertigsten Bit erkannt werden. Dieses Bit ist für alle nachfolgenden Bytes der Nachricht gelöscht.
Das erste Byte bestimmt den Typ der Nachricht und impliziert weiterhin die Anzahl der zusätzlichen Bytes. Das Kommando, um die Lampen auszuschalten, besteht nur aus einem einzigen Byte. Das übliche Kommando, das die Helligkeitsstufen der Lampen, die mit einer BBC4 verbunden sind, besteht aus vier zusätzlichen Bytes, die die Helligkeitsstufen von 0 bis 127 festlegen.
Folgende Bytes, bei denen das höchstwertigste Bit gelöscht ist, werden ebenso wie unvollständige Nachrichten (das heißt, das Byte mit dem gesetzten höchtwertigsten Bit kommt zu früh an) ignoriert.
Steuerung
Die Haupt-Steuerung von bluebox besteht aus einem normalen PC, einer ISDN-Karte und zwei Ethernet-Karten. Etwas zusätzliche Ausstattung sorgt für die Verbindung zwischen Computer und ISDN- bzw. Internetleitung.
Telefon- und DSL-Leitungen kommen im Keller an. Von dort aus führt ein verdrilltes Kabel zum Haupt-Steuercomputer in der ersten Etage.
Die Grafik [control.svg] zeigt, dass diese Leitung zunächst den DSL-Splitter erreicht. Alles das, was das Telefon betrifft, wird weitergeleitet an den NTBA, der die Signale an den ISDN-S0 bus überträgt, der mit der ISDN-Schnittstelle des Computers verbunden ist. Der Internet-Teil ist verbunden mit einem gewöhnlichen DSL-Router, der den Computer (und ein kleines lokales Netzwerk, das zum arbeiten benutzt wird) mit dem Internet verbindet. All das wird durch die erste Ethernet-Schnittstelle erledigt.
Die zweite Ethernet-Schnittstelle sendet die Daten an die BDDs. Von dort aus führt ein Netzwerkkabel (cat. 5) zum Switch in der vierten Etage, mit dem die sieben BDDs auf den Etagen verbunden sind.
Software
Die Software auf dem Steuercomputer besteht hauptsächlich aus vier Teilen (s. Abb. [software.svg]). Die ISDN-Leitungen werden in das sogenannte Extended Blinken ISDN Protocol (EBIP) konvertiert, um sie mit dem Haupt-Softwareblock zu verbinden, dem Blinkenlights Chaos Control Center (blccc), das um einige Module für bluebox erweitert wurde.
Die vom blccc generierten Pixeldaten werden dann vom Micrcontroller Unit Frame Protocol (MCUF) zum bl_proxy gesandt, der an dieser Stelle benutzt wird, um den Stream an die Internetnutzer und an blue_dist zu verteilen.
Letztendlich empfängt blue_dist den MCUF Stream und bereitet die Pixeldaten auf, bevor sie an die BDDs im passenden Format weitergeschickt werden.
blinkenisdn
blinkenisdn ist ein Perl-Skript, das von den Machern von Blinkenlights für Blinkenlights Arcade geschrieben wurde, um die ISDN-Leitungen zu steuern. Andere Programme können als Clients, das Extendend Blinken ISDN Prototkol (EBIP) benutzen, um die Informationen über eingehende Anrufe verarbeiten zu können.
Immer dann, wenn ein Anruf via EBIP von einem Programm akzeptiert wird, regelt blinkenisdn die ISDN-Arbeit und startet eine Hintergrund-Sounddatei auf der ISDN-Leitung. Zusätzlich wird erkannt, wenn Tasten auf dem Telefon gedrückt werden und die Informationen werden über EBIP an das Client-Programm weitergeleitet.
blccc
blccc (Blinkenlights Chaos Control Center) ist die wichtigste Kontrollanwendung von bluebox und wurde ebenfalls von den Machern von Blinkenlights für Blinkenlights Arcade geschrieben.
Die Hauptaufgabe besteht darin, Filme aus der Playliste abzuspielen. Abgesehen davon ist es möglich, die Playliste um sogannente BModules zu erweitern, die jeder schreiben kann, der mit C-Code umgehen kann. Ein BModule ist ein gemeinsam neutzbare Bibliothek, die genauso wie jeder andere Film aus der Playliste "abgespielt" werden kann. Das heißt, die Bibliothek wird geladen und generiert dann die anzuzeigenden Pixel-Daten.
Das BText Modul (ursprünglich geschrieben vom Blinkenlights-Team, aber erweitert für das bluebox-Projekt) sucht nach kurzen anzuzeigenden Textnachrichten und schreibt diese auf das Display, sofern eine Nachricht gefunden wurde. Dieses Modul sollte natürlich nicht zu oft eingesetzt werden, da die meiste Zeit Text auf die Dauer langweilig wird.
Pixel-Daten werden im Microcontroller Unit Frame Protokoll (MCUF) per UDP zu einem einzigen Empfänger gesendet, bl_proxy im bluebox-Setup.
Das blccc verbindet sich mit blinkenisdn via EBIP und nimmt dann Anrufe von den ISDN-Leitungen entgegen. Wenn angerufen wird, startet ein vorgegebenes BModule, BPongMulti, im bluebox-Setup. Durch Codes in Form von "*code#“ kann das aktive Modul verändert werden. Außerdem ist es möglich, die loveletter-Funktion zu starten, bei der ein Film nicht in der Playlist liegt, sondern mit einem Code abgerufen werden kann.
Während die ISDN-Verbindung aktiv ist, werden die gedrückten Tastem durch EBIP empfangen und an das aktive Modul weitergeleitet. Somit ist es möglich, auf dem bluebox-Bildschirm Spiele zu spielen.
Für das bluebox-Setup wurden drei Spiele geschrieben. BPongMulti ist ein Pong-Spiel mit mehreren Bällen. Die zusätzlichen Bälle mussten eingeführt werden, da das bluebox-Display sehr breit ist und das Spiel mit nur einem Ball schnell langweilig geworden wäre. Im Zusammenhang mit bluebox wird das Spiel dennoch einfach Pong genannt.
BPacman ist eine Implementierung von Pacman mit einigen Spielfeldern für verschiedene Display-Größen (natürlich ist auch eines auf den bluebox-Bildschirm zugeschnitten). Pacman muss bekanntermaßen die Punkte essen und jeglichen Zusammenstoß mit den Geistern vermeiden. Auf Grund der niedrigen Auflösung gibt es jedoch nur zwei Geister und keine Objekte, die Pacman dazu befähigen, die Geister zu fressen. Die Geister werden besiegbar, sobald Pacman alle Punkte gegessen hat.
BSitris4 ist ein Tetris-Derivat für breite Displays. Die Steine "fallen" von der Seite in das Spielfeld und müssen in der Mitte angeordnet werden. Um die Größe des Bildschirms logisch zu verkleinern, ergeben zwei horizontale Pixel nebeneinander ein logischen Tetris-Pixel. Zusätzlich dazu ist das Spielfeld in der Mitte gespiegelt, so dass ein logisches Pixel vier Mal auf dem Display zu sehen ist. Im Zusammenhang mit bluebox heißt das Spiel Symmetris.
bl_proxy
bl_proxy ist ein Werkzeug, um Pixel-Daten zu empfangen, auszuwählen und wieder zu verteilen, wobei es in der Lage ist, die Daten zwischen verschiedenen Protokollen und Bildschirmformaten umzuwandeln.
bl_proxy erkennt und filtert auf Grundlage einer Menge von flexiblen Regeln ankommende Streams. Es verteilt verschiedene Prioritäten und Zeitüberschreitungs-Werte an diese Streams basierend auf den Regeln. Danach werden die Stresma an einen oder mehrere Ausgänge verteilt.
Jeder Ausgang sucht den Stream mit der höchsten Priorität heraus, der noch keiner Zeitüberschreitung unterliegt und sendet die Frames dieses Streams zu denClients. Diese Clients können statisch konfiguriert sein oder sich dynamisch melden.
Währen der bl_proxy einen Stream empfängt und verschickt, kann er zwischen den Protokollen Blinkenlights Protocol (BLP), Extended Blinkenlights Protocol (EBLP) und Microcontroller Unit Frame protocol (MCUF) konvertieren. Weiterhin kann er die Größe der Pixeldaten und/oder die Anzahl der Kanäle und die Anzahl der Farben verändern.
Im Rahmen von bluebox wird der bl_proxy nur für MCUF-Streams mit 98x7 Pixeln und einem Kanal benutzt. Es erhält ausschließlich einen Stream vom blccc und leitet diesen an blue_dist und möglicherweise an mehrere dynamische Clients im Internet weiter.
blue_dist
blue_dist wird verwendet, um den MCUF-Stream aufzuteilen und in das richtige Datenformat für die BDDs zu bringen. Es kann alle erhaltenen Pixeldaten gemäß seiner Konfiguration in mehrere Teile aufteilen und verpackt diese in Kommandos für die BBC4s.
Diese Kommandos werden dann für alle BBC4s zusammengepackt, die mit einem einzigen BDD verbunden sind. Für den Versand dieser Datenblöcke über Ethernet wird UDP verwendet.
Falls blue_dist eine Zeitüberschreitung des ankommenden Streams erkennt, sendet es ein Ausschalt-Kommando an die BBC4s über die BDDs. Daraus ergibt sich die Möglichkeit, den bluebox-Bildschirm am Tag auszuschalten, indem einfach der Stream von bl_proxy zu blue_dist gestoppt wird.