[eta] found herself in a flat with several LKV373 HDMI extenders. Find the corresponding transmitter, plug it into your device, and you’ve got a connection to the TV/sound system, no fussing with wires behind the TV. However, [eta] wanted to get rid of the need to plug in a laptop and start sending packets directly to play music. As her flatmate [dan] had already reverse-engineered the receiver, she tested her prototype against their virtualized receiver, de-ip-hmdi.
The actual sending of images was surprisingly straightforward — just a JPEG sliced into 1024 bytes chunks and sent over. However, early testing showed nothing on the receiver. The end of a frame needed marking by setting the most-significant bit of the chunk number to one. Now de-ip-hdmi showed the image, but the actual hardware would not. With something missing, [eta] returned to Wireshark to scan packets. Noticing some strange packets on port 2067, she analyzed the pattern to reveal it sent another packet just before a new frame and included the frame number. With this tweak, it was still not enough. Ultimately, heartbeat packets sent every second synchronize things, but compared to the noise of the video packets, they were easy to miss. Now [eta] had some functioning video streaming rust code.
In theory, audio for the LKV373 followed the same thought process as video. Two channels of 32-bit big Endian integers at 44,100 hz chunked into 992-byte sections and sent as a packet formed the audio stream. With only 992 bytes, two streams, and 4 bytes per sample, each packet only held 2.812 milliseconds of sound. The first tests resulted in no audio output or distorted crunchy sound. Of course, this was every audio engineer’s worst nightmare: jitter. With a spin loop and an efficient ring buffer, the audio packets were soon slinging across the network reliably.
The code is available on a hosted version of GitLab. It’s a beautiful journey through reverse engineering some obscure but relatively cheap hardware. Along the way, there is nicely annotated Rust code, which makes it all the better.
Many other ways to achieve this without having to reverse engineer HDMI over IP adapters.
Indeed. There are almost always other ways to get to a goal, but you certainly can’t be saying that you think the article shouldn’t have been written, right? I read through the comments on articles a lot, and there is always the “this could have been done with a 555” easier among them, but I don’t understand why one would not want to see alternative ways to do things to the simplest method. Hacks are, in my opinion, almost always about “another path” towards the same goal. I apologise if my comments seem to target you directly, because that is not my intention. I simply was voicing my concerns about not always being able to see the merit in alternative ways of solving a problem. Who knows, maybe someday this will help someone in pursuing a related problem where this knowledge is key to their project moving forward.
It’s practically a hackaday tradition. It’s the equivalent of “first post!”. If no one has left such a comment, someone will feel a compulsion to leave one, guaranteeing that there always is one.
I think some people develop a case of “engineer brain” where they’re so fixated on finding optimal solutions to problems that they forget that you can make things for fun or to learn, because you had part X lying around but not part Y, or even because you personally find the “hard” way easier than the supposedly more efficient route.
There’s also people who turn absolutely everything into a dick measuring contest, where they just *have* to be cleverer or more thorough or more efficient than whoever the article is about. But I think most of the time it’s just tunnel vision.
Someone finally said it!! Thank you.
I think there’s a slight confusion on the “who’s who” at the start – reading [eta]’s blog: their flatmate is [benjojo] (who wrote de-ip-hdmi) and [benjojo] used the original work of [danman]
Hackaday mission statement:
“Just Send It.
We are committed to providing articles that are never checked for typos. If you cannot leave a typo in an article, leave it in the tags. We do not want anyone to find the article.”.
Unless the car manufacturer Audi has something to do with this.
HaD comments and pedantry, what a classic combo
I don’t know about you, but I don’t see any ads around here. I don’t see anyone pushing me to buy anything at all. I do see a lot of content I enjoy and a lot of content I’m sure others enjoy.
On top of that there’s the contests and get togethers they organize and get funded.
Maybe stop and think about the hard working individuals you’re criticizing, and exactly how much you’re not paying them.
Since pictures are sent as simple JPEG data, that means these extenders are re-compressing original HDMI data, so certainly do degrade quality.
Are all extenders doing the same, or is there any device that could send unaltered HDMI data, and able to handle latest evolutions (4K, HDR, …)?
I think standard 1080p HDMI data is ~5 Gbps. For 4K, it’s 4x that. Equipment for those rates (over distance) is not cheap yet, but I suspect should be findable.