I'm working on an open source CAN bus box for these sort of situations. The idea is that it fits exactly into the connector for the existing standard CAN bus boxes all these units use (so it will work for PX5/PX6/intel/UIS7862 etc). I've had a similar problem with my Audi A3, where the button functions are incorrect and unchangeable. My car also has an OLED display on the gauge cluster which doesn't show anything useful without the stock head unit (my primary motivation for this project). I'll make a more detailed post about it here once it's working smoothly in my car. For now I'm still working out a few hardware and software kinks, especially since I also need it to control my external DAC and gauge display.
To configure it for your car you will need to know the CAN bus communication rate, as well as the packet ID and bits changed for the following functions:
- ACC on
- Headlight/interior illumination brightness
- Steering wheel buttons (if you want SWC)
- Dashboard display (if you have one - mine operates as 1 line 20 characters in my preferred configuration)
- Interesting parameters to monitor (fuel consumption, temperature, instantaneous speed, etc)
I'd also suggest being familiar with modifying Arduino code to change the packet values as I won't modify it for anything other than my Audi A3 8P. The way this data is coded can vary quite a lot car to car - for example in mine the brightness is coded as an integer from 0-100. You'll also need a way to solder the parts.
JLCPCB is insanely cheap for ordering boards if you're a new customer, and the rest of the components cost ~$30. I may build and sell some of my extra boards if there's interest, but I won't be providing any software besides for my Audi A3 8P. I'll update within the month, as I don't anticipate needing to change anything this point besides software, but only have 1 day a week to dedicate time to this project so progress has been slow.