top | item 30869140

The smallest and worst HDMI display

969 points| todsacerdoti | 4 years ago |mitxela.com | reply

162 comments

order
[+] phh|4 years ago|reply
Article makes fun of how slow i2c is compared to the super high speed pairs next to it on HDMI plug. Well, please note that there is a bus that is literally a thousand time slower than i2c on that same connector. It's CEC. Contrary to i2c it only occupies one wire rather than two though. CEC, which is used mainly to power TV on/off or switch sources has a whopping bandwidth of 400bps. No missing multiplier.

Maximum device name is 16B. If you have a TV, a tvbox and a game console, simply asking the name of those devices can take more than a second. I'm in the process of shortening my product's CEC name, in order to reduce congestion on the bus.

Mainline Linux CEC developer jokes that Voyager 1 which is on the other side of solar system, made 40 years prior to CEC, is faster than CEC.

Edit: Sorry for the atrocious original formating

[+] squarefoot|4 years ago|reply
> CEC, which is used mainly to power TV on/off or switch sources

CEC is much more than that as it allows the use of a single remote instead of two or more, which is super handy; the TV remote sends its commands through the HDMI cable to the active device, so if you switch from TV to an external source like PVR or media center on the TV remote, if that device supports CEC (Kodi on a Raspberry PI does that) you can control it seamlessly through the TV remote. I recently switched my media center from a Raspberry PI 4 to an older (but much faster) unlocked Chromebox whose video chipset doesn't support CEC, so I had to connect an external interface that does USB to CEC conversion. Unfortunately there is only one manufacturer of such interface, which means it's not that cheap. https://www.pulse-eight.com/p/104/usb-hdmi-cec-adapter

[+] babypuncher|4 years ago|reply
You sound like you know a lot about the HDMI CEC spec. Do you have any insight as to why CEC implementations are often buggy on so many devices? I.E. "one touch play" turning on unintended devices in addition to your display and receiver.
[+] m463|4 years ago|reply
> CEC, which is used mainly to power TV on/off

in my experience it doesn't even do that very well. I tried getting a raspberry pi to power off an attached display and support of on/off seems to be hit or miss and specialized.

I suspect it isn't supported because it will commoditizes the device, when manufacturers really want their own protocol that connects only to their own products.

much better sales of acme products if an acme tv can only connect to an acme soundbar and an acme dvd player using acme protocols.

[+] ziml77|4 years ago|reply
I wish they'd made CEC a little more powerful. I like that I can control my AV receiver's volume with the TV remote, but I don't like that I can't see what the volume is actually set to on the TV. Even if I had a receiver that could overlay onto 4K video, that wouldn't help for the cases where I'm feeding audio back from the TV to the receiver.
[+] anthk|4 years ago|reply
I played Slashem and edited files with ed(1) over 600bps. Not bad, but things start to get usable enough at 9600 BPS.
[+] mikestew|4 years ago|reply
Uh, oh. The work project I'm working on uses an OLED display that uses an I2C interface. And I happen to have a spare one sitting on my desk. And I'm no electrical engineer, so let's see how fast I smoke this thing. :-)

Should I succeed, TFA author will not have the worst HDMI display ever, as the one we're using is a two-line display looking something like this (it can do rudimentary graphics, though; we display a company logo at boot):

https://www.mouser.com/ProductDetail/Vishay-Dale/O020O002ALP...

[+] exikyut|4 years ago|reply
OT: I'm idly curious why that display (photo: https://www.mouser.com/images/vishay/hd/O020N002ALPP5N000A_t...) has what appears to be a detached single vertical column of presumably-unusable pixels on each side of the active area. Obviously to do with manufacturing, but... ?ˀ?

(I'm also curious about the "Pricing: Request a quote" bit. Doesn't seem to be "not for new designs", but does have a bit about "Factory special order", so perhaps this is just an indication of unusually limited supply or something.)

[+] dylan604|4 years ago|reply
Why not a simple LCD for this? What benefits from OLED attracts your interest?
[+] 58x14|4 years ago|reply
I love this. What is it about pointless technical projects that are sometimes so alluring? I wonder if it's the removal of secondhand stress since there is no 'meaningful' success criteria.
[+] ncmncm|4 years ago|reply
Anything that involves fooling with physical wires is fundamentally more satisfying than anything that doesn't.
[+] munificent|4 years ago|reply
> I wonder if it's the removal of secondhand stress

Yup, a key component of the sensation of "play" is low stakes.

[+] micromacrofoot|4 years ago|reply
In the context of observing animals, often vague behavior that expends energy for no apparent reason is called "play." This fits the bill!
[+] exikyut|4 years ago|reply
Yes, I think removing the "must do a thing" component confounds macro-scale sensible classification and measurement of the discrete work that is being done. It's possible for manglement to see that effort is being invested, but the significance of the result cannot be perceived due to lack of resonance with the engineering mindset. This makes it possible to personally take ownership of engineering agency and may be the core reason engineers survive at all because they are able to take and own personal responsibility for their own learning.

Knowing it is not possible for others who don't "get" what we're doing to usefully measure or judge our work in turn disengages the "do thing in anger" stress associated with captive/acute focus, and (in ideal, spherical-cow-like situations providing infinite time) enables unbounded, open-ended introspection into reinforcing the mental solution-finding capacity within the domain in question. (In practice, infinite time would quite harmful as it would provide more space than our attention spans could fill; the practical ideal may be to find the right balance between work (acute focus) and zoning out, which might be trackable by identifying the precise points our ego lags slightly behind, but is cognizant of, our as-yet unused physical capacity.)

Being able to engage in this introspection is critical important for learning: it's almost like dreaming, in absence of any singular focus on finding an optimal solution to a given problem within a limited time frame. This makes it possible to pay attention to the problem-solving network as a whole, cross-reference and merge fragmented ideas that have developed independently, and drift toward blurrier edges of understanding to help reinforce them (ever noticed how the things you instinctively find super interesting that you really want to dive into - and often the itches you want to scratch - all depend on skills that happen to be right at the point of establishing minimum-viable cohesion and fundamentally clicking into place? We wander aimlessly... but we don't!).

[+] gorjusborg|4 years ago|reply
> no 'meaningful' success criteria

Other than personal enjoyment.

[+] dimatura|4 years ago|reply
Well, another "pointless" project this guy made eventually became a product, the flash synth. It's a tiny synthesizer that fits in a MIDI DIN5 plug. I own one because I love small and weird synths. It actually sounds pretty nice!
[+] drewlander|4 years ago|reply
Same here, I thought this was great. Even though I have been in the "computer field" for a loong time, there is still so much to learn! I love articles like this.
[+] lisper|4 years ago|reply
This design is devilishly clever, but a tad misleading. It's not really an HDMI display notwithstanding that it is a display that plugs into an HDMI port. HDMI has an embedded i2c bus, and this project uses that to send images to the display. That's why you need a layer of software (xrandr) to translate images that the system produces into i2c.
[+] utopcell|4 years ago|reply
(a) you're a buzz-kill; and (b) that i2c bus is part of HDMI so it is an HDMI display.
[+] technothrasher|4 years ago|reply
This isn't so much an HDMI display as an I2C display utilizing the DDC channel in the HDMI interface as the I2C bus. I've seen folks utilizing this on the Raspberry Pi as a generic I2C bus as well.
[+] hunter2_|4 years ago|reply
Eh, that's like saying phones don't charge over USB, just DC. We're referring to the physical connector more than to the typical bus.
[+] v-yadli|4 years ago|reply
SSD1306 can definitely do better than 6-10fps, which is close to the "software mode" driven by GPIOs, not an actual I2C interface.

Either the DDC is running at very low speed, or... the I2C in HDMI in this laptop is actually a software thing?

[+] madeofpalk|4 years ago|reply
What great timing. I've rearranged my desk and have trouble fitting a second monitor next to my ultrawide + big speakers, and I've been looking for a smaller monitor.

This might be a tad too small, but worth considering!

[+] stretchwithme|4 years ago|reply
20 years ago, we came across this tiny CRT display. I think it 4 X 5 inches. We pranked a coworker with it, replacing her large display with this tiny thing.

And left a note explaining how the black and white display was an upgrade. :-)

[+] stretchwithme|4 years ago|reply
I think we claimed it was an upgrade because it saved wear and tear on her rods and cones.
[+] InCityDreams|4 years ago|reply
A colleague of mine pranked a (much liked) co-worker: police and an anti-terrorism squad were called. Hilarity ensued....
[+] gotaquestion|4 years ago|reply
To me the cool part is that you get a free I2C output over an HDMI port.

I don't know any laptops that have native I2C output w/o a USB converter.

[+] iforgotpassword|4 years ago|reply
I recently learned about evdi, an out of tree Kernel module that can add as many virtual outputs as you want. Ideal for things like this, or where you'd normally use a dummy plug.
[+] follower|4 years ago|reply
That's exactly where my mind went when I read this post too.

The link for anyone interested: https://github.com/DisplayLink/evdi

It's unfortunate it wasn't accepted in-tree because while it was initially developed for a specific commercial product, I do think it has the potential to be generically useful.

The ability to conjure up a display "in software" & then just have the rest of the system automatically treat it as any other physical display is pretty powerful.

There's a couple of projects on my long "projects to do" that would make use of it...

[+] bskrobisz|4 years ago|reply
I'm sure that those with a lot more hardware experience than me have the intuition to make guesses like this but I was surprised at:

>You have to register to download the HDMI spec which is more effort than I have for this, but the Hot Plug Detect pin has a pretty descriptive name. I guessed that this either has to be pulled up or pulled down to signal that a cable is connected. Sticking a 20K resistor to the 5V pin seemed to do the trick. With the oscilloscope, we can now see activity on the SCL/SDA lines when it's plugged into the laptop.

Is it really not that concerning to just guess what amperage will/won't fry something? I mean, you could test from very high resistances downwards, but you might overshoot, right? Or is there an assumption that the hardware on either end will provide the appropriate resistance, in this case?

[+] dghughes|4 years ago|reply
The slot machine company IGT (now Atronic?) on the AVP platform slots had buttons that were two colour small OLED screens using HDMI as a connector.
[+] jzer0cool|4 years ago|reply
Unrelated but wanted to ask here since this forum may have the knowledge.

Recently I bought one of those 1) USB-C 4-in-1, 2) USB-C 7-in-1 (Anker) to attach an external monitor with HDMI. When connecting to a laptop is there details how to retrieve more details of all the capabilities and ports?

What might also be some easy recommended way to start understanding how something like this works. To start, just sending a "high/low" signal to a data pin either straight connection into HDMI port, USB port as a direct connection (and how about when using a multi-port)?

Thanks!

[+] mjlee|4 years ago|reply
> Here is some trivia: did you know that the mouse cursor is rendered by hardware?

Ah! That perhaps explains why often the cursor moves around just fine when other elements of the stack have completely given up.

[+] MayeulC|4 years ago|reply
As far as I know, it isn't really rendered by HW, but composited in HW.

GPUs usually have multiple "Hardware planes" that are composited together in hardware before sending the signal. The OS is free to put whatever it wants there. Most HW include a designated "cursor plane", but it could be used to display whatever.

IIRC a minimum of 3 HW planes is specified somewhere, it could be the Wayland protocol, or the Linux Direct Rendering Manager API. Some devices can have less though. That would be the case for that display, which could use an actual framebuffer driver (although planes could be emulated).

You can thus have a layer for the background, one for the windows, and one for the cursor, and avoid re-painting too often, even though it should be pretty cheap for GPU-accelerated surfaces (like with compositors that rely on OpenGL).

[+] makach|4 years ago|reply
omg, i just bought and installed this display for my rpi4 and you tell me I can use it as a second monitor!? this is why I am a tech geek. :heart:
[+] jrockway|4 years ago|reply
You don't need to go through all the steps involving HDMI. Linux can create framebuffers on I2C/SPI displays like this. Many years ago, I connected two to a Beaglebone and it ran Emacs just fine. Much device tree hacking is involved, though, unfortunately.
[+] eternityforest|4 years ago|reply
HDMI is a pretty crazy protocol. CEC, HDMI, and then on top of that a dedicated hot plug detect? Is all this really needed? Can't I2C do everything?

They could use a 1M pull down on SDA, and pull it up at the display side instead of the host side, and have that be hot plug detect, and then just use i2c for control as well.

[+] kimburgess|4 years ago|reply
It doesn't stop there, you have an audio return channel and 100Mbps Ethernet too.
[+] epiecs|4 years ago|reply
I saw the author looking for the hdmi pinout. For anyone who wants a quick reference you can check this website: https://pinouts.org/
[+] Unit520|4 years ago|reply
Very cool hack indeed! One thing I learned from this is that having an HDMI port gives you a free I2C port on top as well, as long as you have an old HDMI cable lying around to cut open.

Small note on using these OLEDs with 5V: Typically they expect 3.3V Vcc and logic levels, although almost all of them seem to work just fine with 5V. In my experiments with a regular 5V Arduino some OLED modules made weird coil whining noises, I presume this is from the charge pump circuitry. Driving them with 3.3V as specified removed the coil whine completely.

[+] alana314|4 years ago|reply
Oh cool, I already follow mitxela for his crazy MIDI contraptions.