For new car enthusiasts diving into the world of automotive diagnostics, understanding the intricacies of modern vehicle systems can feel like deciphering a complex code. As a fellow explorer in this realm, I recently embarked on a project with my older Nissan Altima hybrid, aiming to tap into its hidden data streams. Like many, I started with a desire to monitor my car’s health, especially the hybrid battery, and this journey led me deep into the fascinating world of Controller Area Network (CAN) bus communication and the essential role of scan tools.
My adventure began after revitalizing my Nissan Altima hybrid by reconditioning its battery modules. With a new aftermarket double din head unit installed, the car felt almost new, but I yearned for more insight into its inner workings. Inspired by models like the Prius, I envisioned displaying real-time battery module voltages directly on the head unit screen. This sparked a project that would require me to understand how to access and interpret the data flowing within my car’s network.
The core challenge was that the battery module voltage data isn’t a standard OBD-II Parameter ID (PID). Nissan, like many manufacturers, uses proprietary protocols for deeper system information. This is where the power of a scan tool and tools like the Macchina M2 come into play. My initial approach involved using a cheap scan tool capable of accessing this specific battery data. By connecting the M2 inline with this scan tool, I could intercept and observe the communication happening on the CAN bus when the scan tool requested battery voltage information. This setup became my learning lab for understanding the Under Diagnostic Services (UDS) protocol, multi-frame messages, and flow control – concepts that initially felt as cryptic as assembly language from my computer science days.
CAN
Analyzing CAN bus data captured during a Nissan Altima scan tool diagnostic session, highlighting flow control frames and multi-frame UDS messages used to retrieve battery voltage information.
Through this process, I successfully isolated the specific CAN frames exchanged when the scan tool requested and received the battery module voltages. Decoding these frames was like solving a puzzle. I noticed patterns and sequences, particularly in multi-frame messages where data is transmitted across multiple packets. By carefully examining the hexadecimal data, I managed to reverse-engineer the data format, pinpointing the location of the voltage readings within the payload and even deciphering the formula used for scaling and offsetting the raw data to get accurate voltage values. It was a rewarding moment when the calculated voltages matched the readings on the scan tool!
My next objective is to replicate this data retrieval process without relying on the inline scan tool. This is where I’m currently focusing my efforts and seeking insights from the community. Understanding the initial request sequences and the subsequent responses, including flow control frames and potential error handling, is crucial. While the data frames containing the actual voltage readings are consistently structured, the preceding communication seems less predictable, sometimes involving multiple requests and responses that appear to indicate successes or failures.
One observation I made using SavvyCAN, a valuable tool for CAN bus analysis, is that all captured data seems to be on CAN Bus 0. Despite having all three CAN buses enabled on my M2, I haven’t yet seen traffic on the others, which might indicate a configuration issue or simply that the relevant communication for my Altima happens on CAN Bus 0. Additionally, all the data I observe in SavvyCAN is in the Rx (receive) direction, with no Tx (transmit) data, which raises questions about whether I might be missing something in the communication flow or if it’s expected in this passive monitoring setup. I’ve also experimented with SavvyCAN’s playback feature to replay captured logs, but filtering through the vast amount of CAN traffic to verify specific message sequences has been challenging.
This project is an ongoing learning experience, and I hope sharing my initial findings can benefit others exploring automotive diagnostics and CAN bus communication, especially Nissan Altima owners interested in leveraging scan tools and custom solutions for vehicle data access. The world of UDS messages and automotive network protocols can be initially daunting, but with tools like the Macchina M2 and a methodical approach, unlocking your car’s hidden data becomes an achievable and incredibly insightful journey.