The Tale of Two Matrices: Wrestling With the Lindy 38153
My trusty ATEM 8×8 Matrix had been acting up lately, so I did what any overconfident tech tinkerer would do — I cracked it open, poked around a bit, and pretended I could fix it. Spoiler: I couldn’t.
So I sent it back to the shop I bought it from three years ago. Two months later (yes, two months), they shipped it back saying, “Works fine!”
Alright then. Let’s see about that.
Meanwhile, my inner hardware hoarder couldn’t resist — I found a Lindy 38153 8×8 HDMI 4K Matrix on Ricardo for just 100 CHF. Ethernet port? Check. RS-232 documentation? Check. Looked promising enough. I thought, “How hard can this be?”
Oh, famous last words.
Phase 1: The Windows App From Another Era
I started with the official Windows application to check if I could change the IP address or at least connect to the device.
Except… it wouldn’t even launch — unless I ran it in Windows 95 compatibility mode.
That should’ve been my first red flag.
Even then, the app didn’t detect any serial ports, nor would it connect over IP.
Digging deeper, I realized the “dynamic IP” the manual bragged about was a lie — it stubbornly used a static 192.168.0.100 address, and there was no way to change it (except through the non-working app).
I briefly considered spinning up a Windows 95 VM to trick it into working, but that turned into a retro-computing rabbit hole I had no time for.
In desperation, I grabbed one of my older laptops running Windows 11, launched the same app — and guess what? It worked.
It connected over serial, found the device on the network, and even let me change the IP to something that fit into my normal LAN. Success!
Phase 2: Enter Companion and Stream Deck
Now for the fun part: integrating it into my Bitfocus Companion setup so I could control it via my Stream Deck.
The RS-232 command guide was available, but there was zero documentation on how to control it over TCP/IP. So, I turned to my favorite debugging Swiss Army knife — Wireshark.
By capturing the traffic between the Windows app and the matrix, I could reverse-engineer the protocol.
It was surprisingly straightforward once decoded — a few bytes for commands, a few for parameters, and of course, a mysterious checksum that made absolutely no mathematical sense.
After some spreadsheet-assisted trial and error (thank you, Excel), I figured out how to replicate the commands directly from Companion.
Of course, the documentation had some… creative inaccuracies — like swapping the input and output port labels. But that was an easy fix.
The Checksum Saga
Now, the checksum formula was pure chaos. According to the docs, it should be calculated by “subtracting all command bytes from 0x100.” Which… doesn’t even make sense — that gives you negative numbers, and when those roll over in hex, you get weird results.
After comparing a few real packets captured in Wireshark, I finally reverse-engineered a working checksum logic.
Let’s just say the Lindy engineers back then probably tested this once, wrote the manual on a Friday afternoon, and called it a day.
The Verdict
So now my Lindy 38153 Matrix lives happily in my AV rack, fully integrated with Companion and Stream Deck control.
It took a detour through 90s software archaeology, some packet sniffing magic, and a bit of hex arithmetic — but it works.
Lindy References
- Lindy 38153 Manual
- Lindy command codes – RS-232
- Lindy App Download page
- Static IP address: 192.168.0.100
- Bitfocus Companion integration via the “Generic TCP-UDP” controller and then using the “Send HEX encoded Command” to send the commands directly
Matrix name | HEX code |
Lindy1_1 Lindy1_2 Lindy1_3 Lindy1_4 Lindy1_5 Lindy1_6 Lindy1_7 Lindy1_8 | a55b02030100010000000000F9 a55b02030100020000000000F8 a55b02030100030000000000F7 a55b02030100040000000000F6 a55b02030100050000000000F5 a55b02030100060000000000F4 a55b02030100070000000000F3 a55b02030100080000000000F2 |
Matrix name | HEX code |
Lindy2_1 Lindy2_2 Lindy2_3 Lindy2_4 Lindy2_5 Lindy2_6 Lindy2_7 Lindy2_8 | a55b02030200010000000000F8 a55b02030200020000000000F7 a55b02030200030000000000F6 a55b02030200040000000000F5 a55b02030200050000000000F4 a55b02030200060000000000F3 a55b02030200070000000000F2 a55b02030200080000000000F1 |
Matrix name | HEX code |
Lindy3_1 Lindy3_2 Lindy3_3 Lindy3_4 Lindy3_5 Lindy3_6 Lindy3_7 Lindy3_8 | a55b02030300010000000000F7 a55b02030300020000000000F6 a55b02030300030000000000F5 a55b02030300040000000000F4 a55b02030300050000000000F3 a55b02030300060000000000F2 a55b02030300070000000000F1 a55b02030300080000000000F0 |