How I got the Amazon Echo to control the factory remote start via wifi on my car (I got cellular working too, but that’ll be in a later post).
Quick Outline Vid: https://www.youtube.com/watch?v=_GTH1A73xwc&feature=youtu.be
I bought my Echo in January 2015 and received it at some point in March 2015. I honestly thought it was a weird product without any real use. The only reason I bought it was due to the $100 discount Amazon was giving out to early adopters/prime members. It couldn’t control any of my smart devices yet, and didn’t have any third party skills of any value. It turned out to be a glorified alarm clock and weather reporter. I wasn’t even sure why I bought it.
In the coming months, more and more was released to make the Echo what it is today. In April, Amazon announced Wemo and Philips Hue support. By the end of April, a talented programmer going by the handle “Armzilla” released his Amazon Echo Bridge for Vera smart home hubs.
I soon had Echo controlling multiple aspects of my smart house. It was controlling my lights, locking my doors, controlling my thermostat, and I even had it turning my TV on and off. Now the Echo was becoming seriously appealing.
As the months went by, I continued to ask myself “Why in the hell can’t this thing start my car yet?!” on Sunday, November 28th, I finally decided to do something about it.
I began to break down the project. What are the components I actually need to gather to make this work, and is it even possible? No matter what I was going to do, I had already decided a Raspberry Pi would need to be the main control for all of this. Then, all I needed was a way to interface the Pi with the can bus of my car, and a way for the Echo to reach the Pi. Simple right? I came to find out, not so much.
At first, I settled on sacrificing one of my key fobs. I already had the Raspberry Pi and a wifi usb dongle for it, I just needed a relay board. I was going to hook the relay board to the gpio pins, solder some wires to the buttons on the fob, and make a python script to fire the relays and press the buttons in the correct order. Happy with my plan, I ordered a relay board from Amazon for ~$8 and went to bed.
The next morning, the cogs in my head began to turn “How hard would it be to do this by jumping on the CAN Bus of my car?” Oh crap, here we go. I scrapped the key fob idea before I even attempted it. I could always fall back on it if the CAN Bus defeated me.
I began to research CAN Bus hacking. I read through every blog I could find. The information was seriously lacking. Not many people mess around with the CAN Bus on their cars. I only found a few decent blog posts on the topic:
I ordered an Arduino and a CAN Bus Shield after my research that day. The Chad Gibbons blog said it was a pain in the ass, but it didn’t register with me how much so. I just looked at the ~$45 price tag for the hardware and ordered it.
Once again, before I even received my next hardware order, I continued searching, but this time, for GM specific information about hacking the CAN Bus. I quickly found out GM uses a standard that NO OTHER AUTOMAKERS USE! Thanks guys… I’m sure there was some awesome reason for you to deviate from the rest of the industry.
GM uses something called Single-Wire Can. Going forward, I you will see me using SW CAN and GMLAN interchangeably. It is used for all infotainment, key fob, and On-Star commands (among others). This rang a bell as I have installed half a dozen aftermarket remote starters on GM vehicles and some of the immobilizer bypass modules had a single can wire. Damnit… I did find a few threads/blogs on the matter:
Even with the mention of getting the Arduino to work with GMLAN, I didn’t spend much time on trying it after seeing the g8gt blog ($45 wasted on the Arduino… and I didn’t want to return it if I found some other need for it later in the project). He detailed how he modified someone else’s modification of a cheapie Elm327 clone off of Ebay to work on GMLAN. I found the exact clone he bought and went on Digikey to price out all of the parts. It came out to be $10 for the clone adapter and ~$30 for enough parts from Digikey to make 5 transceiver mod chips.
Once again, (do you see where this is going?) I continued to research GMLAN capable adapters, AND I FREAKIN’ FOUND ONE. AHHHH! SON OF A… Another $40+ wasted on the clone and Digikey parts (another fallback idea though). I purchased an OBDLink MX Bluetooth (which has a lot of its own problems, more on this later) for $100 on Amazon.
While I was waiting for the adapter to arrive, I read through the entire STN1170 datasheet and found the protocol commands cheat sheet.