I drive the least interesting car in the world, a gray 2004 Toyota Camry. To stave off death from boredom while driving, I use a tape adapter connected to an A2DP receiver to wirelessly listen to music from my iPhone. A few weeks ago, the tape deck developed an extremely irritating clicking noise. The easy options, the ones that most Camry owners would choose, would be to turn on the radio, get an FM transmitter for the iPhone, listen to CDs, or just let the tape deck click. Being an engineer, I refuse pick the easy option, but rather the one that seems best, which inevitably devolves into a weekend of hacking, cursing, and setting things on fire, with a best case of eventually restoring the object of interest to something resembling a functioning state.
The plan was to enable direct auxiliary input, which the Internet claimed was possible on this model. The backup plan was to resolve the clicking noise by just unplugging the tape motor, which we assumed was unnecessary to operate the adapter. My roommate Will and I popped the head unit out of the car with much effort and two trips to the hardware store. Apparently stealing a radio isn’t easy, even from your own car.
Attempting to power the unit off of the 12v rail of a 350w ATX power supply resulted in it shutting off immediately. With a 450w PSU connected to the battery and accessory voltage lines, a tiny laptop speaker from my spare parts bin connected to the massive amp, and another speaker being used as an antenna, we managed to pull in the beautiful sound of late 70’s hits on FM radio.
I’m not entirely sure what happened, but Will managed to break the tape deck in about a dozen different ways over the course of the next couple of hours. It wouldn’t play at all without the drive gears spinning, it refused to eject tapes because it believed it was empty, and still, the clicking gear clicked.
It was then up to me to get aux in working. Apparently, Toyotas from around my model year use AVC-Lan, a communications bus based on IEBus for the head unit to connect to things like a CD changer. There is some pretty solid research across the web on how to emulate a device on the bus to message the head unit to use its aux input. I used the circuit and software from SigmaObjects, as it required only parts I already had or could get from Halted. The code there is designed for an ATmega8, but with some trial and error, I managed to port it to the current ATmega48/88/168 series. Unfortunately, the code doesn’t mention being under any permissive license, so I can’t share my modifications.
While hooking it up to the head unit, the wire connecting the device to ground actually burst into flames, burning part of a connector and melting copper. On later inspection, we found that the wires were extremely high gauge internally, and it is likely that only a single thin strand was carrying the current in the area that caught fire. Miraculously, neither the radio nor the ATmega168 was damaged by the incident. I switched to lower gauge higher quality wire, checked my car insurance terms relating to explosion due to user error, and continued.
After a few more hours of debugging, I realized that I had the two data lines backwards, and after switching them it worked instantly. We repurposed the TAPE button to switch to aux in. I taped the board down, put the head unit back together, and we stuck it back into the car. There was an unnerving startup delay the first few times, but I am now the proud owner of a gray 2004 Toyota Camry with auxiliary audio input… and no tape deck.
Why not extract the A2DP guts from your earlier setup and hack that in to your new aux IN? In fact, you could go the extra mile and repurpose all of the buttons on the tape deck to control the A2DP buttons (I’d expect volume buttons, maybe a pairing button, etc).
I was considering it, but I decided against it mainly because the A2DP receiver I have doesn’t sound all that great. I wouldn’t want to leave it permanently installed, when direct line in sounds much better. I am considering sticking a dock in the center console and using the buttons on the head unit for iPod control, but I am planning on selling this car soon, so I want to minimize modifications.
Nice.
We did a similar thing to a friend’s car. He didn’t have a tape deck but his stereo had a CD player. We opened it up and found the pins where the CD player connected to the main board. We soldered the aux cable directly to those pins. We burned a CD with a single silent track of 60mins. So when you pop the silent CD in, and connect your ipod, the music comes through perfectly and the stereo thinks it’s playing a CD.
A lot more cruder than your solution, but it worked for him.
Neat hack.
You might not be able to share the entire code after your modifications due to the lack of a license, but you can probably share a patch (i.e. using /usr/bin/diff or an equivalent tool). The patch would be entirely your own work, and could be applied to the original source by others trying to do the same to produce code for more recent boards.
Stealing a radio from any car is much easier if you break everything instead of neatly removing it.
Nice man,
I had a car stereo a while back(which is now my home audio system, running off of a 480W ATX power supply) and I needed an auxillary input for my laptop as thats where all my music is, so I opened up the radio and found the pins labeled “Lout””Rout” and “Gnd” from the fm modulator circuitry, and connected wires to them and to a 1/8″ jack, and that’s my auxillary input. works on FM, and when ipod starts playing fm signal is silenced completely automatically. When ipod is paused, FM starts playing again. Ive done this to 3 car stereos now to be able to carry them around connected to a drill battery and a few relays and a charger and switch to have a portable yet powerful music system that fits into a duffel bag 😉 my friends love it lol