Sorry if this has been done before. If so please just point me to the link. I've searched but could only find bits but not a completed DIY version of the ipod interfaces.
I currently own one of the premade Ipod interfaces (USA spec) but there a few things I don't like about it. I find myself needing another one and thought. What if I could make my own. I could make it work just how I want. For better or worse that is what I've done
The heart of the controller is an Arduino board. Currently using a Arduino Mega but when I put it in the car will probably use an Uno [edit. Found it best to just stick woth the Mega's]. The Arduino continuously montors the BMW I/K bus and sends the right responses to the Radio to make it think it has an CD changer when it doesn't (pre 2002 cars). This allows the Audio line out (in the dock connector) from the Ipod to be routed into the Radio similar what is described in this thread: (except without the CD changer present)
http://forums.bimmerforums.com/forum...highlight=ipod
The Arduino then interfaces with the Ipod using it's serial protocol. info on the Ipod protocols:
http://www.adriangame.co.uk/ipod-acc-pro.html
The text messages on the display of the radio are sent simulating mobile phone messages. It works but the Radio at times tries to over write with putting up the useless Disc and track numbers. The program needs a bit more work to over write them quickly so they are never seen.
The project has MOSTLY been to have some fun and learn. My son and I have been doing it together and have done major rewrites on the program about 4 times. It's still a work in progres but looks like it will work good enough to be used in my car.
************Edit: Program and schematic now located here https://drive.google.com/drive/folde...eJ?usp=sharing ************
Last edited by Thaniel; 04-11-2022 at 01:15 PM.
Youtube says video isn't available to mobile devices.
Stupid YouTube. Since music is playing during the demo you tube has limited the videos availability. I'll have to do another with some other sound or something.
Last edited by Thaniel; 06-08-2013 at 01:25 AM.
Uploaded a different video since youtube didn't like the music. Some of the Swedish letters don't display on the radio but the music doesn't get the copywrite error on youtube.
Been busy with things. But finally soldered up a board and got this working in the car. Made a video and took some pics. Can't seem to get it to link from the iPad. Maybe later.
Officially interested in this and does it need to be a specific unit to do this or is it like a dice,usa spec, etc..
Last edited by silv3rwind; 09-09-2013 at 03:55 PM.
Glad to see someone is interested. Not to modivated to post more otherwise
The unit mimicks the CD changer to put the radio into CD changer mode. Then it listens for messages over the K-bus sent by the Head unit and steering wheel. I think those messages are pretty standard. So would work on any BMW with the same message formats. But if the messages are slightly different then just alter the program to the new messages. The beauty of a DIY instead of a store bought. Don't like random being turned off everytime the car is restarted. Then change the program :-)
Here's a link to my latest you tube. Sorry won't play on portables due to you tube noticing there is actually music being played....Duh.
http://youtu.be/uM62oEMMmbc
Worked out some more bugs this weekend. No I'm going to work up a better curcuit to make the Ipod think it's in a Dock and charge it properly. Previously had just been plugging it into a car to USB charger. I'll post my program up on google docs here soon.
How is it wired? could you possibly post pics of the setup
Im new to this im currently going to college to get certified in software engineering but im still fairly new to this. In the video are you already using the arduino uno?
Yes in the video The arduino is in the mix. For the Audio signal the path is
Ipod -> CD changer cable -> Radio -> speakers
For song titles, skip, playlist, artist etc selection the path is:
Radio (or steering wheel button) -> Kbus -> Arduino -> Ipod
or
Ipod -> Arduino -> BMW Kbus -> Radio
The Arduino (and the program I put in it) is the interpreter between BMW and IPOD messages. It doesn't get into the actual audio signal.
Note here and in the future I use "ibus" and "Kbus" interchangeably. In the E46 the messages are sent on the same bus. Sometimes referred to as the I/K bus.
Here is the Arduino to BMW interface. (circuit is similar to what an OBDII tester would use to interface with the BMW) The ipod Serial Rx and Tx are connected to the Arduino as well (not shown in the schematic). The Line out from the ipod (not head phone jack) is also connected to the Audio input where a CD changer would go. There are MANY ways this could be accomplished and many choices of hardware that could be used. I often have a difficult time deciding which way to go when both ways would work. Anyway.
It's not that complicated. But then after adding in more components to charge the Ipod, let the ipod know it's in an ipod Dock, keep the Ipod from draining it's battery when the Arduino is off, it starts to look more crazy. the 4th Gen classic ipods I use in my cars don't need most that stuff. But will try adding it anyway as this is a hobby and it sounds interesting.
V3 schematic.png
Here is one of my test Circuits on a bread board. On the bread board columns 1-5 are left overs from something else. The connector in column 8-10 is where I plug the K-bus, power and ground connector that would go to the CD changer (in the trunk).
photo 1.jpg
Here is my first soldered up circuit / prototype if you will. it's a bit crude but it's to get things tested. I ended up having to rework it several times. My soldering was a bit rusty and I also made some design changes. The blinding LED's are comming from a Car USB charger that I dissasembled and mounted to the board. It takes the 12V and turns it into 5V for powering the Arduino and charging the ipod. The ipod is connected into things by taking a $4 dock extension chord and cutting into it to get the Rx, Tx and auduo line out connections. The thick black Cables are the BMW wiring for the CD changer. The Red/white and blue/white twisted pair are the audio connecions that go straight from ipod chord to BMW. The black/red twisted pair is the Rx & tx from the ipod (this is what controlls the ipod and the ipod sends song info etc). There is a 1K resistor in the Rx line of the ipod to drop the 5V output of the Arduno closer to the 3.3V of the ipod Rx line. The end of the Ipod dock extender i plugged in a standard USB ipod chord and plugged it into the USB charger (safe easy charging). This is the circuit as it is was in my wifes car. It seems to work. I've made some small changes since.
photo 2.jpg
Below is my version two of a soldered up board (arduino is not in the picture). Same as the above less the USB charger. I purchased 2 more USB chargers but couldn't find the exact one I bought before. I don't like them as much and after looking at them have decided I'm probably just as good to just put a voltage regulator and the associated resistors to get proper charging for later model ipods/iphones. Would make a cleaner easier install.
I'll also add a transistor circuit on the Ipod Tx line to break the flow when the power is off. When no power is applied to the ipod the power would drain out into the Arduino. I thought the car power to the CD changer plug would stay on all the time. So I wasn't worried about it. But it appears to go out after a period of time of inactivity.
photo 3.jpg
That's the Harware side. Honestly I hadn't expected to spend much time on the hardware side. But many of the Kbus (or Ibus) interface circuits I looked at and or tried were not really adequate or way over kill or aimed at interfacing with a PC and not a micro conroller. Wasted a bunch of time on that. But can't have the Kbus interface poor or it could interupt many of the accesories that use that bus. you'll notice I omitted the activity LED from the 2nd board. The less power pulled off the Kbus the better. And who is going to see it blinking in the trunk anyway.
The software side is where I had planned to play. Still learning some of the quirky things the radio and steering wheel controls do and making adjustments. For example. If skip on the steering wheel is pressed a message is sent on the K bus. then the radio hears it and sends skip again on the K bus. Originally the program was listening for both and would skip twice. Little things like that. There is a bunch of quirky things it does. And think that is why the "store bought" controller I have doesn't do what I want. They didn't account for those quirks. For example every time the car starts up the radio sends a "random off" message to the CD changer. WHY? Makes no sense. So in my program I ignore that message. And some others where the radio has no buisness doing things I don't want
How is the audio hooked up? Sorry for my ignorance
iPod line out to BMW audio in (where cd changer would plug in)Originally Posted by silv3rwind
great job! if you can get this working flawlessly and can provide a simple install method I will absolutely buy one from you as I want something like the grom/usa spec without the issues they create.
Thank you for the comliment. The install method is the same as the others. Just plug into the CD changer plug. However my plan is not to sell anything but to show people how to make one themselves. Then if the program isn't to their liking they can just change it
Thaniel
that sounds good, I am no engineer but with guidance and help with understanding the program language I'm pretty sure I can put it together. I really like the possibility for customization of the interface. is it possible to add a 3.5 jack and Bluetooth ? that would make this a complete package for me
Would definitely be awesome to do blue tooth connectivity. Thaniel, I will be picking your brain later in the E46 LS motor swap thread.
Yes it is quite fun to dislike something then change it. My daughter didn't like the message it displayed when waiting on the iPod. So in two minuets we changed it to what she wanted. A 3.5mm jack is no problem. Bluetooth? I'm sure it could be done. But I have no clue. However tonight I did drive the car and put on a Bluetooth adapter on the iPod cable. The sound would come through but no iPod control or song titles.
Yah. I need to quit fiddling with the iPod and tidy up some of those motor swap circuits.
Also interested in such a project, what do you think about using a mp3 shield for the arduino instead the ipod.
The gravitech one http://www.gravitech.us/mp3pladforar.html, or sparkfun https://www.sparkfun.com/products/10628
Here is a link to the program that I'm currently using. It's not polished and there are tons of debug statements in it but if anyone is curious what it looks like:
https://docs.google.com/file/d/0BwfS...it?usp=sharing
Few of the quirks of the BMW that I've also discovered. When the Radio starts up the Cd changer (ipod) it sends "scan off" and "random off" everytime. Also to put the titles up on the display it is done as if it is a cell phone sending information to the radio. So while a message (sent using this method) is on the display touching a radio button (skip for example) first takes the radio out of cell phone display (puts up the disc and track info on the screen) and then another press to make the change. So if you want to skip it requires 2 presses of the skip button on the radio. However. The steering wheel buttons do not suffer from this problem. I just use the wheel buttons. But a passenger wanting to change tracks or playlists will have to press twice . This is the case on the store bought ipod controlers too since it's a feature of the radio not the ipod controler.
Since I don't have this in my car (mine is an E36) I get feedback from My wife. She has been using this for awhile now and her complaint is that there is "noise" (alternator whine) "sometimes" when the song is quiet. I checked into it and there is alternator whine all the time coming through. Tracked the source to the ipod charger. If the ipod is playing using it's batteries then there is no noise. I'll look at some other power sources for the ipod and see if this can be easily eliminiated. I don't think this issue is unique to my setup.
Something like that should be very possible. The program parts I wrote to capture the key presses and messages from the wheel and radio of the BMW could be used. Would just need to change the ipod comunication to match the MP3 sheild.
Thaniel
Quick update. I found a old car ipod adapter chord. Used it to power the ipod instead. The alternator whine is virtually gone. So I've left it hooked up that way for now. I've ordered a "isolated" power supply chip to try on my version 2 board. Will post how it turns out.
This is the power isolator I bought
power isolator.jpg
Hooked it up on a breadboard last night. No alternator whine. It's $5 more than the USB chargers but the sound quality is worth it. Soldered it on to my version2 board. After I get some more testing done to ensure it's good I will supply the complete circuit diagram
I'm sure it could be done. Would require more hardware to do it.
Thaniel
Thaniel,
This is another great BMW Arduino project. Keep up the good work!
Got the version 2 to work. But bmf app is too stupid to shrink the picture .
This looks pretty interesting. I was originally looking for a way to simply get my HU to think my CD changer was working. I've installed the simple aux jack, but the CD player still needs to work for the HU to play the audio. If you know any way to sort this it would be great.
However, this idea looks much more fun. Only problem is that I have an iPhone 5, with the new plug. Do you reckon there's a way for it to still work, despite it all being digital?
If you have the older E46 radio it needs the responses sent to the HU to mimic the CD changer. The program and hardware I'm using and documenting do this. They also do a lot more but if you only wanted to fool the HU into "AUX" mode you could just leave out the ipod stuff.
I don't know anything about the Iphone 5. I expect one way or another there would be a way to make it work. But it would not be exactly the same. Personally I use old ipods and just leave them in the car all the time.
Update:
With that said I drove my wifes car and the program worked great. Many of the problems we had experienced lately were due to my old ipods having some trouble. Some of the problems may have been induced by me not wiring things up correctly some of the times... Oops Soldering up one's own cirucit board is full of opportunities to screw up. Another $15 ipod of e-bay and we are all good again.
Attached is more or less what I'm using now. the two 12v to 5 v power converters aren't really shown. One standard one feeds power to the arduino (in theory this shouldn't be needed). Another one with isolated grounds feeds power to the ipod for charging. Isolated grounds to attempt to reduce alternater induced whine. But seems some common grounds are needed to maintain comunication. Starting to get out of my depth on the isolated ground topic.
Obviously don't build the diagram if you don't understand what it is doing. Link to the program is in post#18 or something like that.
V4 Schematic.png
Bookmarks