Turns out the e46 cluster won’t tween between values. It just shakes between the two values. So I severed the can bus connection from the chassis and made sure important features still worked. It turns out the e46 cluster is a combination of can bus, k bus, and analog inputs. The can bus inputs seem to only be a direct DME input. Maybe some ASC/DSC.
At this point, the tachometer works and the general can system has been setup. By reading this blog, I found out that the speedometer is actually a 12v output from the cluster that can be conditionally grounded to output a proper speed. A 2N2222 transistor with a 1k inline resistor in cahoots with the arduino tone operation go the speedometer working correctly.
The can bus managed to get most of the nasty lights out. I know the seat belt is done via K bus but I’m not sure about the red brake light. That’s likely the parking brake analog input. Also, the temp gauge is centered as a proof of concept. I’m not sure I will actually hook it up.
Next steps are to read rpm inputs from the LS PCM’s output and probably the start of the arduino to arduino communications to gather ELM and GPS data to feed to the cluster.