Trying to figure out how my #ThinkPad Edge #E531 does the detection that it has a "genuine" battery.

Of course it has to be implemented inside the EC firmware.

It is an ENE KB9012. I have the datasheet as well as a dump of its firmware and the schematics for the laptop. But I cannot find where it writes to or reads from the right #SMBus registers.

Does anyone know where I can get in contact with the right people in this domain?

#reverseengineering #followerpower #firmware #hacking #8051

As the server PSUs feature #SMBus connectivity, we planned to display some metadata on an OLED.

I soldered up a small perfboard with a buck converter, #ESP32 and a few connectors.

The ESP32 only communicates with the low-side PSU, as I didn't want to implement isolated I²C.
But I noticed that the values coming from the PSU were pretty hit & miss anyways. Especially during light loads.
So I simply used the values that matched the actual values closest and doubled them.

#PDBrick

Making Your Own Technically-HDMI OLED Monitor

One day, [mitxela] got bored and decided to build his own HDMI monitor - the unconventional way. HDMI has a few high-speed differential pairs, but it also has an I2C interface used for detecting the monitor's resolution and issuing commands like brightness control. In fact, I2C is the backbone for a lot of side channels like these - it's also one of our preferred interfaces for connecting to cool sensors, and in this case, an OLED display!

[mitxela] describes his journey from start to end, with all the pitfalls and detours. Going through the pinout with a broken hence sacrificial HDMI cable in hand, he figured out how to probe the I2C lines with Linux command-line tools and used those to verify that the display was recognized on the HDMI-exposed I2C bus. Then, he turned to Python and wrote a short library for the display using the smbus bindings - and, after stumbling upon an FPS limitation caused by SMBus standard restrictions, rewrote his code to directly talk to the I2C device node, raising FPS from 2 to 5-10.

From there, question arose - what's the best software route to take? He tried making a custom X modeline on the HDMI port the display was technically attached to, but that didn't work out. In the end, he successfully employed the Linux capability called "virtual monitors", and found out about an interesting peculiarity - there was no mouse cursor to be seen. Turns out, they're typically hardware-accelerated and overlaid by our GPUs, but in [mitxela]'s case, the GPU was not involved, so he added cursor support to the picture forwarding code, too.

With partial refresh, the display could be redrawn even faster, but that's where [mitxela] decided he's reached a satisfactory conclusion to this journey. The write-up is a great read, and if videos are more your forte, he also made a video about it all - embedded below.

We first covered the ability to get I2C from display ports 14 years ago, and every now and then, this fun under-explored opportunity has been popping up in hackers' projects. We've even seen ready-to-go breakouts for getting I2C out of VGA ports quickly. And if you go a bit further, with your I2C hacking skills, you can even strip HDCP!

We thank [sellicott] and [leo60228] for sharing this with us!

#computerhacks #laptopshacks #linuxhacks #ddc #hdmi #i2coled #oled #oleddisplay #oledssd1306 #smbus #ssd1306

Making Your Own Technically-HDMI OLED Monitor

One day, [mitxela] got bored and decided to build his own HDMI monitor – the unconventional way. HDMI has a few high-speed differential pairs, but it also has an I2C interface used for detect…

Hackaday