IEBus Touchscreen Interface Module
Here you can read about my attempts to design, build, and integrate a module into my 2006 Acura TSX which will allow for the usage of the stock navigation display and touchscreen technology to interface with an after market computer (carputer) installed somewhere in the car for playing movies, music, and an even more endless array of applications beyond that. The reasons for installing a computer in a vehicle are obviously dependent on who you ask, however there is a large community of folks who do just that, and its growing by leaps and bounds every single day. (See mp3car.com). The reason I want to design a touchscreen interface module is simple; the touchscreen from the stock system is already there, built into the car. Why come up with some other way to interface with your carputer or even worse, use a keyboard and mouse style device when a perfectly good and proven technology is already embedded into the stock navigation screen. All thats required is to tap into the lines and grab the touch events as they are sent from the screen back to the stock navigation computer in the trunk. Sounds easy enough, right? Read on to see just how much is involved in tackling a project of this magnitude.
This project, still on going, will touch on fields which I have little to no experience in such as, developing an electronics circuit board complete with programmable integrated circuits. Programming the “chips”, as they are often refered to as, will require learning assembler at a much more detailed level than I have encountered it in the past. On top of programming my first ic, I will need to beef up my knowledge of electronics in general. Having only a limited idea of how general electronics devices work is not enough, I need to know how to make one myself, from nothing.
The Communications Bus
Discussing building my first circuit and programming my first ic does not even begin to touch on the work involved in researching the communications bus in which I plan to interface in my 2006 Acura TSX (the communications bus that the touchscreen information is transmitted over). This bus is referred to as the GA-NET II bus in the 2006 Acura TSX Electronics Troubleshooting Manual (ETM), but after some research it is evident that this GA-NET communications bus apears to be a direct implementation of the Inter Equipment Bus (IEBus) developed by NEC. Major automotive manufaturers have adopted this technology for implementing connectivity between devices in an automotive environment, namely multimedia devices such as stereo, navigation, and button panels on or around the center console. You can read more about the IEBus by reading the linked wikipedia article I also started when I was researching for this project.
The IEBus is simply a network in your car. Each device on that network has a unique id that differentiates it from the other devices, similar to an IP address for TCP/IP. It is with a device’s address that other devices on the network direct traffic (packets of data) towards it. One device (the master) will broadcast to one or more other devices (the slaves), and they in turn reply with a unqiue bit of information called an ACK (acknowledge) bit. When the master sends the broadcast over the network, all devices can see it but since the master device included the target devices address (slave address) in the packet header, all the other devices will ignore the packets except that intended recipient (the slave). If you’re familiar with TCP/IP, then this is not much of stretch to understand at this level; each device simply sends packets to another computer by specifying it’s unique address. Its my thinking that if I can create a module to listen to the packets being sent over the IEBus from the screen to the nav computer, then I should be able to decipher the data on the fly, sending it to my carputer where a driver is waiting to translate the XY coords into mouse location clicks. This could first be done with software during the research phase then later moved onto a chip by programming the logic in assembler.
Not the first to think of this…
In the early stages of my research I came across a few instances where others had tried this very idea in the past but none that I could find have been successful thus far, nor are any still pursuing the concept publcly. One such person was Dave DeLeo, aka 2002TLSNavi, from the AcuraZine Community Forums. He made the best effort that I could find in attempting to interface the IEBus going as far as to get good logs of the information sent over the IEBus in his 2002 Acura TL which uses the same technology as my TSX. He shared is research with the public in this post, but ultimately dropping the project when he had trouble securing IEBus specific chips manufacturered by NEC. Fortunately for me, he was kind enough to reply to an email (almost two years later) and share all of his research as well as C code he had written to decode packets which were saved to the PC during his data logging research. After a quick part to windows I had a console app which could decode the data files from his logs two years earlier. This was a huge step in the right direction and when I really started to get excited about the outcome of the project.
Rolling my own IEBus IC
Since Dave had so much trouble getting his hands on one of the NEC made IEBus chips in the past I directed my attention towards coding the protocol support into a chip which I could get easilly from a hobby outlet such as the Parallax Basic Stamp (I have been waiting for an excuse to play with these for some time). After researching for a couple of weeks (many late nights after work were spent reading tech specs) and a quick phone call to Parallax’s technical support hotline, it became evident that I would need a fairly fast chip (one much faster than the Basic Stamp series) in order to recieve each communication and send the acknowledge bit (ACK) back to the master in time enough to prevent the master device from dropping the transmission and returning to standby mode asuming that it had failed to reach the intended slave device. Upon suggestion from the Parallax tech support person, I looked into the SX series from Parallax as a viable option for implementing the IEBus protocol on my own. I excitedly ordered my first programming kit shortly thereafter.
Purchasing the NEC IEBus IC
While waiting for my SX programming kit to arrive in the mail, I figured it wouldn’t hurt to make a few phone calls to try and track down a dedicated IEBus IC. By this point I had come across a couple of IC’s which had the protocol integrated (listed in the wikipedia.org article). I phoned probly 25 distributors all over the nation being turned away each time for any number of reasons ranging from lack of local supply or not even being able to find the product in their system. Most of my troubles seemed to be stemming from my lack of detailed information about the product I was trying to order. Also, from what I gathered, since this chip was designed for the automotive environment, there was little demand for it outside of select automotive manufacturers therefor very hard to obtain outside of that (exactly the problem that others before me had run into). This made it increasingly hard to track down, of course, however I was determined to find this chip and that I did eventually. Finally, after calling an NEC company in California, I was put in touch with a woman who was very kind and helpful. She understood what I was trying to do and took the extra time and effort, over the course of 3 days, to track down 1201 of the NEC chips in a warehouse here in the USA. Fueled with the detailed product information she provided and phone numbers for local distributors, who according to her, would be able to get an order palced for me, I called to place my order. Once I had the proper terminology and detailed part information I was able to get through the conversation with a sales representative without them picking up on the previously obvious fact that I was just a hobbyist looking for a handful of these things. After much deliberation about who I was and what I wanted the chips for, I was able to secure a small sample of 5 chips in order to start my prototyping.