u/Kesztio

[ALFA 159 FACELIFT] Alfa 159 HVAC panel multiplexing for Joying head unit — does the display depend on CAN ACK?

[ALFA 159 FACELIFT] Alfa 159 HVAC panel multiplexing for Joying head unit — does the display depend on CAN ACK?

I upgraded the OEM navigation on my Alfa Romeo 159 (facelift) to a Joying Android unit. It fits beautifully, but the lack of physical controls is killing me.

Reading all 10 steering wheel buttons directly from CAN using my own ESP32 + SN65HVD230 setup is not a big deal. (The Chinese CAN boxes only decode 5–6 buttons). That part presumably will work great.

Now I’m considering something more ambitious:
multiplexing the HVAC control panel so it can control both the climate system and the Joying unit.

Concept

  • Climate mode: HVAC works normally, all CAN frames pass through untouched.
  • Infotainment mode: I intercept HVAC CAN frames and convert them into USB HID events for the Joying.

The problem

I don’t know how the HVAC panel’s display logic works.

  1. If the HVAC is OFF, it might not send any CAN frames at all → no input for Joying.
  2. If HVAC is ON, I can intercept the frames, but the panel might still update its own display (temperature, fan speed, etc.) even though the car never receives the command.

The only way this works cleanly is if the HVAC panel waits for some kind of ACK or status message from the car before updating its display.
If it doesn’t, the display will show fake values while I’m using the knobs to control the Joying.

Questions

  • Has anyone reverse‑engineered the Alfa/Fiat HVAC panel logic?
  • Does the display update immediately based on local MCU input, or does it wait for a CAN response?
  • If not, is there a minimally invasive way to test this? (I have a CANable 2 Pro and can isolate the HVAC CAN lines temporarily.)

Any insight from people who have hacked Fiat/Alfa HVAC panels or built CAN gateways would be extremely helpful.

Thanks!

u/Kesztio — 1 day ago

I recently purchased a ThinkPad P16s Gen 4 (AMD, UHD touch OLED), and its power button behaves very differently from all my previous laptops, including different Lenovo models.

A short, brief press is not enough to power on/wake the machine (or to put it on sleep).
It only registers if I hold the button for about 0.5–1 second.

This happens:

  • in Windows
  • in Linux (Live USB)
  • and even in the BIOS

So I assume it’s not OS‑related.

The service center claims this is intentional to “prevent accidental presses”, but I find it uncomfortable and inconsistent with every laptop I’ve ever used.

Can anyone with a P16s Gen 4 confirm or deny this behavior?
Is this really expected, or should I push for a hardware replacement (power button board / cable)? If so, Is there a workaround to revert to the old-school behavior?

Thanks in advance.

u/Kesztio — 16 days ago