6
6stringtheory
Registrierter Benutzer
- Zuletzt hier
- 13.11.24
- Registriert
- 24.05.20
- Beiträge
- 175
- Kekse
- 2.500
In diesem Thread werde ich meine Erkenntnisse über die Mackie Showbox teilen, die über die offizielle Dokumentation hinausgehen. Jeder der sich anschließen möchte ist herzlich willkommen.
Ziel ist es erstmal die Möglichkeit zu schaffen zusätzliche Hardware für die Mackie Showbox selber zu bauen, die sich den RJ-45 Anschluss zu Nutze macht. Beispielsweise ein Fußschalter, der den Looper mit mehr als nur einem Fußschalter steuern kann. (Ich bevorzuge es beim Loopen einen separaten Stop Schalter zu haben.) Aber auch Fußschalter um Presets zu wechseln sind denkbar.
Ich fange erstmal an mit einem Foto von der Platine des Breakaway Mixers:
Im Anhang liegt auch noch ein Bild von der Vorderseite, aber diese ist relativ uninteressant für den Rahmen des Projektes.
Weitere Erkenntnisse folgen morgen. Ich kann aber schonmal soviel verraten: Die RJ-45 Buchse ist nicht Ethernet-konform.
Durchgangsprüfung
Wenn ich hier von Orange, Orange-White, Green, Green-White, Blue, Blue-White, Brown und Brown-White rede, dann beziehe ich mich auf die Drähte im Cat 5 Kabel nach T568B:
Wenn ich von Pin X (mixer) rede, meine ich die Pogo-Pin Kontakte am Breakaway Mixer.
Wenn ich von Pin X (base) rede, meine ich die Pogo-Pins an der Box selbst (Mackie nennt sie oft einfach "Base Unit").
X -> Y, Z bedeutet, dass ein Durchgan von X nach Y, sowie ein Durchgang von X nach Z gemessen wurde.
Breakaway Mixer:
Box (Base Unit):
Spannungsmessung
Alle Messungen werden in folgendem Zustand durchgeführt:
- Showbox ist eingeschaltet
- Breakaway Mixer ist über Cat 5 Kabel mit der Box (Base Unit) verbunden
Für die Messungen der Verbindung der beiden RJ-45 Anschlüsse wird ein einfaches Breakout Board benutzt, welches nichts tut außer die einzelnen Pins/Drähte zugänglich zu machen:
Pogo-Pins (am Breakaway Mixer):
RJ-45 / Cat5 Verbindung:
Erkenntnisse
Es wird sofort klar, dass das keinem Ethernet Standard folgt, wenn die Ladebuchse am Breakaway Mixer erlaubt eine Versorgung mit bis zu 10W. Das wäre mit Ethernet nur über dem PoE-Standard möglich und dieser arbeitet mit wesentlich höheren Spannungen:
Was wir uns aber denken können ist:
- Orange, Orange-White, sowie die Cat 5 Abschirmung sind GND
- Brown und Brown-White übertragen zusammen ~12V welche im Breakaway Mixer dann für den USB Port in 5V gewandelt wird.
- Green, Green-White, Blue, Blue-White haben alle ungefähr 3,3V (was ist eine typische logic-level Spannung, die gerne für die Datenübertragung genutzt wird). Es ist also davon auszugehen, dass die Daten über diese Leitungen fließen.
Signal-Analyse
Nun nehme ich mir einen Logic-Analyzer (die sind für unter 10€ auf ebay und aliexpress zu haben und haben gleich 8 Kanäle, hier Z. B.):
Ich verbinde GND der RJ-45 Verbindung mit GND vom Logic-Analyzer. Und Green, Blue, Green-White, sowie Blue-White mit den ersten 4 Kanälen.
Am Rechner nehme ich mir dann den fx2lafw Treiber, welcher sich wunderbar eignet um mit der freien Software PipeView die Signale eines solchen Logic-Analyzers einzufangen und auszuwerten.
Wie ihr nun auf folgendem Screenshot seht, findet eine Datenübertragung lediglich auf den ersten beiden Kanälen statt (Das sind Green und Blue des Cat 5 Kabels (technisch gesehen Pin 6 und 4 des RJ45-Anschluss).
Protokoll-Analyse (Erste Schicht)
Da wir nur 2 Datenpins haben, können wir durch ein einfaches Ausschlussverfahren schon hunderte Protokolle ausschließen.
Zwei Protokolle, die naheliegend erscheinen, weil sie vom verwendeten MIMXRT1010 Mikrocontroller unterstützt werden, weit verbreitet sind und nur 2 Datenpins benötigen sind I²C und UART.
I²C benutzt eine Datenleitung allerdings nur für ein Taktsignal. Seht ihr auf dem Screenshot eins? Ich nicht und damit bleibt nur noch UART.
Aber welche Baudrate könnte es sein? Probieren wir doch einfach mal ein paar typische Baudraten aus. 9600 und 115200 sind wahrscheinlich die am weitesten verbreitetsten...
Siehe da 115200 passt PERFEKT. Wer genauer hingeschaut hat, dem wird schon aufgefallen sein, dass ich den Protokoll-Decoder für UART ganz unten schon entsprechend eingerichtet habe.
Protokoll-Analyse (Zweite Schicht)
Wenn man noch genauer hinschaut, fällt auf, dass die verdächtig oft mit 1011111011101111 (das entspricht den Bytes 0xBE 0xEF) anfangen und mit 1110111110111110 aufhören (das entspricht den Bytes 0xEF 0xBE). Auch nach längerer Analyze größerer Datenmengen, war dieses Muster ganz klar zu sehen.
Daraus lässt sich schließen, dass der Anfang jedes Daten-Packets mit 0xBE 0xEF gekennzeichnet ist und das Ende mit 0xEF 0xBE.
Protokoll-Analyse (Dritte Schicht)
Da mir kein auf UART basierendes Protokoll bekannt ist, welches seine Pakete mit BEEF ... EFBE kennzeichnet, gehe ich davon aus, dass es sich hierbei um ein proprietäres Protokoll handelt.
Da wir nun aber schonmal wissen, dass es sich um UART handelt, wechsle ich mal vom Logic-Analyzer auf einen einfachen USB UART Adapter (die gibt es für unter 5€ auf ebay und aliexpress). Dieser wird nun auf 3.3V gestellt. (Genaugenommen brauchen wir zwei Stück, weil Green und Blue für uns beide RX sind.) Aber gut, erstmal nur eine Leitung.
Nun schreiben wir ein kurzes Python-Script, welches den Inhalt der Datenpakete Zeile für Zeile ausgibt:
Der Output ist ein regelrechtes gespamme dieser beiden Pakete:
00ff00
010100ff
Aber jedes mal wenn ich die Showbox über den Mute-Button stumm schalte, taucht plötzlich dieses Datenpaket in der Leitung auf:
0503005900000001
und immer wenn ich wieder un-mute, dann wird dieses Paket geschickt:
0503005900000000
Ich weiß jetzt nicht, ob das das Signal vom Mixer an die Box war oder ob das die Bestätigung bzw das Status-Update der Box an den Mixer war, aber es ist klar, dass wir nun mit Leichtigkeit mitschneiden können, wann die Box stummgeschaltet wird.
Der nächste Schritt wäre mal eine Tabelle mit allen Datenpaketen und deren Bedeutung anzulegen und zu schauen was wohl passiert, wenn man diese Pakete in die Datenleitungen einschleust ohne, dass der Mute Button gedrückt wurde.
Ziel ist es erstmal die Möglichkeit zu schaffen zusätzliche Hardware für die Mackie Showbox selber zu bauen, die sich den RJ-45 Anschluss zu Nutze macht. Beispielsweise ein Fußschalter, der den Looper mit mehr als nur einem Fußschalter steuern kann. (Ich bevorzuge es beim Loopen einen separaten Stop Schalter zu haben.) Aber auch Fußschalter um Presets zu wechseln sind denkbar.
Ich fange erstmal an mit einem Foto von der Platine des Breakaway Mixers:
Im Anhang liegt auch noch ein Bild von der Vorderseite, aber diese ist relativ uninteressant für den Rahmen des Projektes.
Weitere Erkenntnisse folgen morgen. Ich kann aber schonmal soviel verraten: Die RJ-45 Buchse ist nicht Ethernet-konform.
Durchgangsprüfung
Wenn ich hier von Orange, Orange-White, Green, Green-White, Blue, Blue-White, Brown und Brown-White rede, dann beziehe ich mich auf die Drähte im Cat 5 Kabel nach T568B:
Wenn ich von Pin X (mixer) rede, meine ich die Pogo-Pin Kontakte am Breakaway Mixer.
Wenn ich von Pin X (base) rede, meine ich die Pogo-Pins an der Box selbst (Mackie nennt sie oft einfach "Base Unit").
X -> Y, Z bedeutet, dass ein Durchgan von X nach Y, sowie ein Durchgang von X nach Z gemessen wurde.
Breakaway Mixer:
Code:
RJ-45:
Cat5 Shield -> Pin 4 (mixer), Pin 7 (mixer), USB Shield (mixer), USB Gnd (mixer), Orange-White, Orange
Orange-White -> Pin 4 (mixer), Pin 7 (mixer), USB Shield, USB Gnd (mixer), Orange, Cat5 Shield
Orange -> Pin 4 (mixer), Pin 7 (mixer), USB Shield (mixer), USB Gnd (mixer), Cat5 Shield, Orange-White
Blue-White -> Pin 3 (mixer)
Blue -> Pin 5 (mixer)
Green-White -> Pin 6 (mixer)
Green -> Pin 2 (mixer)
Brown-White -> Brown
Brown -> Brown-White
Pogo-Pin Interface:
Pin 1 -> ---
Pin 2 -> Green
Pin 3 -> Blue-White
Pin 4 -> Pin 7 (mixer), Cat5 Shield, USB Shield (mixer), USB Gnd (mixer)
Pin 5 -> Blue
Pin 6 -> Green-White
Pin 7 -> Pin 4 (mixer), Cat5 Shield, USB Shield (mixer), USB Gnd (mixer)
USB:
Shield -> Pin 4 (mixer), Pin 7 (mixer), Cat5 Shield, Orange, Orange-White
VCC -> ---
Gnd -> Pin 4 (mixer), Pin 7 (mixer), Cat5 Shield, Orange, Orange-White
D+ -> ---
D- -> ---
Box (Base Unit):
Code:
RJ-45:
Cat5 Shield -> Pin 7 (base), Orange-White, Orange
Orange-White -> Pin 7 (base), Cat5 Shield, Orange
Orange -> Pin 7 (base), Cat5 Shield, Orange-White
Green-White -> Pin 6 (base)
Blue -> Pin 5 (base)
Blue-White -> Pin 3 (base), Pin 7 (base), Cat5 Shield, Orange, Orange-White, Brown, Brown-White
Green -> Pin 2 (base)
Brown-White -> Pin 7 (base), Cat5 Shield, Orange, Orange-White, Brown
Brown -> Pin 7 (base), Cat5 Shield, Orange, Orange-White, Brown-White
Pogo-Pins:
Pin 1 -> ---
Pin 2 -> Green
Pin 3 -> Pin 7 (base), Cat5 Shield, Orange, Orange-White, Green-White, Brown, Brown-White, USB Gnd, USB Shield
Pin 4 -> ---
Pin 5 -> Blue
Pin 6 -> Green-White
Pin 7 -> Cat5 Shield, Orange, Orange-White
USB:
Shield -> Pin 7 (base)
VCC -> ---
Gnd -> Pin 7 (base)
D+ -> ---
D- -> ---
Spannungsmessung
Alle Messungen werden in folgendem Zustand durchgeführt:
- Showbox ist eingeschaltet
- Breakaway Mixer ist über Cat 5 Kabel mit der Box (Base Unit) verbunden
Für die Messungen der Verbindung der beiden RJ-45 Anschlüsse wird ein einfaches Breakout Board benutzt, welches nichts tut außer die einzelnen Pins/Drähte zugänglich zu machen:
Pogo-Pins (am Breakaway Mixer):
Code:
Gnd -> Pin 1: 11.4V
Gnd -> Pin 2: 3.27V
Gnd -> Pin 3: 3.27
Gnd -> Pin 4: 0V
Gnd -> Pin 5: 3.3V
Gnd -> Pin 6: 3.3V
RJ-45 / Cat5 Verbindung:
Code:
Gnd -> Orange: 0V
Gnd -> Orange-White: 0V
Gnd -> Blue: 3.30V
Gnd -> Blue-White: 3.26V
Gnd -> Green: 3.26V
Gnd -> Green-White: 3.30V
Gnd -> Brown: 11.84V
Gnd -> Brown-White: 11.84V
Erkenntnisse
Es wird sofort klar, dass das keinem Ethernet Standard folgt, wenn die Ladebuchse am Breakaway Mixer erlaubt eine Versorgung mit bis zu 10W. Das wäre mit Ethernet nur über dem PoE-Standard möglich und dieser arbeitet mit wesentlich höheren Spannungen:
Was wir uns aber denken können ist:
- Orange, Orange-White, sowie die Cat 5 Abschirmung sind GND
- Brown und Brown-White übertragen zusammen ~12V welche im Breakaway Mixer dann für den USB Port in 5V gewandelt wird.
- Green, Green-White, Blue, Blue-White haben alle ungefähr 3,3V (was ist eine typische logic-level Spannung, die gerne für die Datenübertragung genutzt wird). Es ist also davon auszugehen, dass die Daten über diese Leitungen fließen.
Signal-Analyse
Nun nehme ich mir einen Logic-Analyzer (die sind für unter 10€ auf ebay und aliexpress zu haben und haben gleich 8 Kanäle, hier Z. B.):
Ich verbinde GND der RJ-45 Verbindung mit GND vom Logic-Analyzer. Und Green, Blue, Green-White, sowie Blue-White mit den ersten 4 Kanälen.
Am Rechner nehme ich mir dann den fx2lafw Treiber, welcher sich wunderbar eignet um mit der freien Software PipeView die Signale eines solchen Logic-Analyzers einzufangen und auszuwerten.
Wie ihr nun auf folgendem Screenshot seht, findet eine Datenübertragung lediglich auf den ersten beiden Kanälen statt (Das sind Green und Blue des Cat 5 Kabels (technisch gesehen Pin 6 und 4 des RJ45-Anschluss).
Protokoll-Analyse (Erste Schicht)
Da wir nur 2 Datenpins haben, können wir durch ein einfaches Ausschlussverfahren schon hunderte Protokolle ausschließen.
Zwei Protokolle, die naheliegend erscheinen, weil sie vom verwendeten MIMXRT1010 Mikrocontroller unterstützt werden, weit verbreitet sind und nur 2 Datenpins benötigen sind I²C und UART.
I²C benutzt eine Datenleitung allerdings nur für ein Taktsignal. Seht ihr auf dem Screenshot eins? Ich nicht und damit bleibt nur noch UART.
Aber welche Baudrate könnte es sein? Probieren wir doch einfach mal ein paar typische Baudraten aus. 9600 und 115200 sind wahrscheinlich die am weitesten verbreitetsten...
Siehe da 115200 passt PERFEKT. Wer genauer hingeschaut hat, dem wird schon aufgefallen sein, dass ich den Protokoll-Decoder für UART ganz unten schon entsprechend eingerichtet habe.
Protokoll-Analyse (Zweite Schicht)
Wenn man noch genauer hinschaut, fällt auf, dass die verdächtig oft mit 1011111011101111 (das entspricht den Bytes 0xBE 0xEF) anfangen und mit 1110111110111110 aufhören (das entspricht den Bytes 0xEF 0xBE). Auch nach längerer Analyze größerer Datenmengen, war dieses Muster ganz klar zu sehen.
Daraus lässt sich schließen, dass der Anfang jedes Daten-Packets mit 0xBE 0xEF gekennzeichnet ist und das Ende mit 0xEF 0xBE.
Protokoll-Analyse (Dritte Schicht)
Da mir kein auf UART basierendes Protokoll bekannt ist, welches seine Pakete mit BEEF ... EFBE kennzeichnet, gehe ich davon aus, dass es sich hierbei um ein proprietäres Protokoll handelt.
Da wir nun aber schonmal wissen, dass es sich um UART handelt, wechsle ich mal vom Logic-Analyzer auf einen einfachen USB UART Adapter (die gibt es für unter 5€ auf ebay und aliexpress). Dieser wird nun auf 3.3V gestellt. (Genaugenommen brauchen wir zwei Stück, weil Green und Blue für uns beide RX sind.) Aber gut, erstmal nur eine Leitung.
Nun schreiben wir ein kurzes Python-Script, welches den Inhalt der Datenpakete Zeile für Zeile ausgibt:
Python:
import serial
# Define the markers
START_MARKER = bytes([0xBE, 0xEF])
END_MARKER = bytes([0xEF, 0xBE])
# Open serial port
ser = serial.Serial('/dev/ttyUSB0', baudrate=115200)
# Buffer to store received bytes
buffer = bytearray()
while True:
# Read one byte from serial port
byte = ser.read()
# Append byte to buffer
buffer.append(byte[0])
# Check if buffer contains start and end markers
if buffer[-len(END_MARKER):] == END_MARKER:
start_idx = buffer.find(START_MARKER)
if start_idx != -1:
# Extract the packet (excluding markers)
packet = buffer[start_idx+len(START_MARKER):-len(END_MARKER)]
# Print packet in hexadecimal format
print('Packet:', packet.hex())
# Remove processed bytes from buffer
del buffer[:start_idx+len(START_MARKER)+len(packet)+len(END_MARKER)]
# Close serial port
ser.close()
Der Output ist ein regelrechtes gespamme dieser beiden Pakete:
00ff00
010100ff
Aber jedes mal wenn ich die Showbox über den Mute-Button stumm schalte, taucht plötzlich dieses Datenpaket in der Leitung auf:
0503005900000001
und immer wenn ich wieder un-mute, dann wird dieses Paket geschickt:
0503005900000000
Ich weiß jetzt nicht, ob das das Signal vom Mixer an die Box war oder ob das die Bestätigung bzw das Status-Update der Box an den Mixer war, aber es ist klar, dass wir nun mit Leichtigkeit mitschneiden können, wann die Box stummgeschaltet wird.
Der nächste Schritt wäre mal eine Tabelle mit allen Datenpaketen und deren Bedeutung anzulegen und zu schauen was wohl passiert, wenn man diese Pakete in die Datenleitungen einschleust ohne, dass der Mute Button gedrückt wurde.
Anhänge
Zuletzt bearbeitet: