J1939 Integration and Middleware Software Development for an Android Infotainment Head Unit Solution
About the Customer:
Our customer is a Tier-1 supplier of the In-vehicle infotainment solution, along with other multimedia products.
Our customer had a well-defined road-map for the development of an Android based Infotainment System, for Commercial Trucks.
This Android Infotainment solution supported multimedia features like Navigation Maps, Music Play-back; Bluetooth supported Smartphone synchronization – among others.
However, in order to gain competitive advantage and to launch an Infotainment Solution with advanced features, customer realized the need to integrate real-time data
This data was required to be fetched via Vehicle CAN and Camera/Sensors via three critical Automotive Electronic Control Units (ECU)
The following are the details of the three Vehicle Control Units (ECU):
The customer encountered the following roadblocks during the Infotainment Product Development Project:
- Source code for Android infotainment device was not available. This meant that developing code libraries, communication level configurations necessary for data transmission – would be a daunting task.
- They had the necessary hardware infrastructure and in-house team with expertise in hardware design and development. However, they lacked the embedded software development expertise.
Thus, the customer decided to collaborate with an expert software development partner.
Our reputation as a leading provider of Advanced Automotive Embedded solutions, combined with its deep domain expertise- made us an ideal choice as a solution partner.
After initial discussion with customer’s Automotive Infotainment team, it was decided that we will collaborate to develop a PoC.
Embitel’ s Infotainment solution development team comprised of the following talent:
- Android Application development expert
- Embedded Firmware developer
- Linux Device Driver Development Expert
- Embedded Software Developer – Middleware
- UI/UX developer
Here is a snapshot of the project development roadmap:
- Design and development of touch screen User interface elements, including wireframe to display ECU vehicle parameters on the Android infotainment Head Unit.
This included the customization and design of separate icons for Vehicle Information management, Tire Pressure Management System, Driver Warning System on the home screen.
Additionally, a feature supporting configurable settings that enabled the end-user to adjust the settings associated with each of the above parameters was included on the infotainment Head Unit.
- Integration of J1939 stack and CAN stack with Android OS of the Infotainment Head Unit. Configuration of Receive ( Rx) and Transmit (Tx) messages between J1939 stack and Infotainment device. This facilitated easy communication between vehicle ECUs and end-user devices.
- Development of API , Software Library: The source code for the Android Infotainment Head Unit was unavailable. Hence, to facilitate the data transmission between J1939/ CAN bus (that runs on ANSI C code) and Android Infotainment device( that runs on Java) – was quite challenging .
After a detailed analysis, our Infotainment Software Developers suggested an innovative approach to address this challenge.
Necessary software libraries and APIs were designed and were compiled using ARM based cross-compilation toolchain. A socket communication between J1939/ CAN Bus and Android device, was established to enable smooth exchange of data streams between the two modules.
- Middleware Development:To initiate and manage the socket communication between the J1939/CAN bus and the Android Infotainment head unit, a middleware software module was designed. The Middleware layer consisted of application libraries, algorithms for data filtering and more.
This solution enabled a seamless communication between vehicle ECUs and infotainment device.
- Functional testing: Testing of the PoC solution using PCAN for CAN-to-USB connection along with the BusMaster tool.
- Embitel used ready-to-integrate J1939 communication stack, for ECU communication. This helped in significantly reducing the development time and cost.
- The J1939 Advantage: The reason to choose J1939 for transmitting ECU data can be summarized as:
- Offers better scope for network management.
- Being a standardized communication protocol, it supports interoperability and ease of configuration while using components, sourced from diverse manufacturers.
- Offers better data bandwidth as compared to other vehicle communication protocols.
- Has a lower data rate for data transmission. This helps in easy identification of the network node from which data is transmitted.
Tools and Technologies:
- Android 6.0 Marshmallow OS
- BusMaster: Software tool for Simulating, Analyzing and Testing
- PCAN-USB adapter for interfacing with CAN bus
- ARM based cross compiler Toolchain