|
|
|
|
|
|
BMW Garage | BMW Meets | Register | Search | Today's Posts | Mark Forums Read |
|
BMW 3-Series (E90 E92) Forum
>
BMW iDrive turned into bluetooth remote. An old project.
|
|
06-02-2018, 02:44 AM | #1 |
Banned
200
Rep 709
Posts |
BMW iDrive turned into bluetooth remote. An old project.
Hello everyone. I have finally managed to get a project working. One that I had in mind since 2013.
I have a 2011 BMW 328i, base with no iDrive, only bluetooth for handsfree, a USB port, and Aux jack in the arm rest. It started this project when I first got my Nexus 7 2013 tablet. It's the perfect size for car head unit and there are multiple posts online from people installing them in dash or mounting them with various custom mounts and off the shelf solutions. My setup is a bit different, I wanted a wireless solution. I need to be able to take the tablet with me and put it back in easily. I want the mount to be part of the dash, not an eye sore. And I wanted to keep charging the tablet. And that's when I found Xenomix 2X dash mount. It's decent looking and not overly expensive. but still not perfect to what my end goal is. Since the Nexus 7 2013 can be charged wirelessly, I thought why not attach a wireless charging board to the mount and use magnets on the mount and on the tablet to hold them together. And indeed I did, and it worked. But still not looking great. Anyway, this is a post about iDrive, so my next step was that I wanted to control the tablet. Driving and operating it is not something I wanted, nor I recommend. So I needed some sort of a wireless controller. So I set my goal to find a nice looking remote, preferably a bluetooth one. I searched for all kind of keywords on Google. "modern remote", "bluetooth remote", "cool remote", you name it, I searched it. The best I found and the closest looking to an iDrive was the TomTom bluetooth remote. I found one post online on how to connect it and use it to control an Android device. I managed to use Tasker and AutoInput apps to react to the different keys. It worked ok, sluggish because I was monitoring all the time, and I had/have so many other Tasker profiles specifically to control and change how the table work once connected to my car's bluetooth. Not to mention the batteries die after a while, and from that post; you can see that repairing the remote with Android is not the simple task. As a matter of fact, on newer Android OS; it became impossible. So I removed it. I had the "dream" of turning an iDrive controller into bluetooth remote, have it wired and not worry about batteries. And that's the best OEM look and function you can get. This beats all other solutions. But I'm no electrical engineer, I never soldered in my life (I should start doing that). So I made a post on rootzwiki website. Hoping for an answer from someone. But nothing. I found an eBay listing for a CIC iDrive controller, and the price was very tempting. the seller accepted my offer and now I have this controller in my hand. Not knowing what to do with it. Until in 2016 I came across this form post (Google translate is your friend, use Chrome browser for best results). That post had videos like this: At that time, when I contacted Yuriy, he said his controller doesn't do bluetooth. And I asked him if he will be adding that, but he said not yet. The I came across this: Same deal, no bluetooth support. Friend of mine introduced me to his friend, who tried to help me. But being busy with new job position and travel, he couldn't look into it anymore and was facing issues trying to "wake" the controller. So he sent it back to me early 2018. In March 2018, I bought from a junkyard the centre console trim with the iDrive opening. Mine is piano finish, but you get the idea. Look up your specific part on realoem or go on a junkyard hunt spree. I tried to search for local custom electronic shops in Calgary. And I contacted Chris Hartman <chris@hartmantech.com>. He was prompt in reply and he told me it would cost quite a bit since research is going to be conducted from scratch. It would be worth it if it was a commercial product, so I would regain my research investment. But since this was a personal project; the cost wouldn't be feasible. He advised me on looking up some online resources for Arduino and CAN sniffers, but that means way more time to invest than I have. So the project was put on hold. Until I contacted Yuriy again in April 2018, thinking I'll just do a wired solution since my requirement of having it wireless is really putting an obstacle. To my surprise he did add bluetooth. I was very excited. I couldn't wait. So, I arranged to send Yuriy the cost of the controller and the bluetooth module (you can buy only the controller if you don't need bluetooth). Yuriy is in Ukraine, (Yuri Molchanow <molchanow@hotmail.com>) and the only way he can accept money transfer is through Western Union. The shipping took 34 days, so maybe arrange with him to send it via DHL or some other express shipping if you can't wait. I didn't expect it to take that long. So after 34 days, I got the controller. Here is what you get:
See his form post. Here is the wiring diagram (it's posted on that thread as well) So here is what you will need to get it going:
After I got the connections all working, I plugged it into my computer, launched his software and it showed up. But it was all in Russian, so it was all jumbled as I don't have Russian language installed. But, after you close the program, you should see a new file generated. YAMDT_GUIV4_V0950.ini This file holds the configuration for the software. In there, one of the options (as you can see below) is for language, initially it's set to 0, go ahead and set it to 1. This will make it a bit more readable now Here is the content of my .ini file: [MainSettings] MainTop=0 MainLeft=-7 Lang=1 Log=0 Debug=0 KeyTop=352 KeyLeft=902 KeyVisible=0 TXHeight=251 [DirectoryConfig] YAMDROIDTOUCH=C:\Users\Sinan\Desktop\idrive\BMW_BT _KEYS.YDT [DirectoryProg] PROG=C:\YAM\droid_touch4V0951_CDC_IDRIVE_BT.ldr The program allows you to set the action/condition and what happens when that's set. Yuriy was able to login to my computer and he tried to set the software up. But there was an issue. When he switched the baud rate from 100kb/s to 500kb/s the controller board was being disconnected and connected rapidly. After about 40 minutes or so, Yuriy asked me if I have a voltmeter or multimeter (now you know why you need one) to confirm the leads are getting correct voltage. I didn't have it, so I had to ask for his help later on after I got my hands on a multimeter . I never used one before, now I love it . After I sent him an email about my findings, he told me to get a 510 ohm resistor and follow this info (now you know why you might need it) After I followed his instructions and I basically just inserted it in the port, it WORKED . First thing you will know if your setup works with or without the resistor is that after you plug everything and you load the correct settings/profile for iDrive; the controller will light up. The controller now -my controller- sends the button presses through the bluetooth module as serial commands. The only Android app that allows me to easily map those serial commands to actions is the Serial Manager app on the play store. It worked great on Android 6, but didn't detect a thing and crashed on Android 8, and I believe it will crash on Android 7 as well. I have contacted the developer yesterday, and he mentioned to me that within few days he might push and update . So hopefully that will be it. Now that my Nexus 7 2013 is really slow, I'm thinking of replacing it with a "phablet". This way I get calls and internet on a data SIM plan. The Samsung S9+ that I'll be getting soon should look nice and be fast. But that's another post altogether about the mount. I hope I didn't bore you with my "journey" story. I have done and plan to do more on my car. Until then, have a great weekend . ~ Sinan Last edited by gamesfrager; 09-03-2019 at 12:34 AM.. |
06-02-2018, 09:48 AM | #3 |
Banned
200
Rep 709
Posts |
|
Appreciate
0
|
06-04-2018, 03:21 PM | #6 | |
Private First Class
9
Rep 110
Posts |
Quote:
I transplanted your post from my thread to here. It seems like our projects are very similar. I have some experience with arduino & am also learning Tasker if you ever need help! For steering wheel controls, the ebay bluetooth box works. I wouldn't go with the tune2air (see my review in the other thread). I am trying another ebay bluetooth receiver which i can let you know if it works well. I think since I already have iDrive screen, I am going to go 1 step further from your project. I plan on: 1) adding miracast box to mirror my android phone 2) using my car built in idrive controller and combining it with your work to utilize it on my phone 3) bluetooth audio through aux but steering wheel controls for android So with my project I'll have to figure out 1) how to switch from android control while mirroring to OEM control with regular idrive. Is there an easy option that you noticed for that? 2) tap it into the steering wheel wiring. Anyway, thanks for the guide! I'll have to reread it again later to make sure I understand it fully ---- Also, do you speak Russian or does Yuri speak english? I do want to eventually order that controller but I will probably need some troubleshooting to get it set up . If yuri speaks english I'll probably contact him for the steering wheel controls. Last edited by PaKii94; 06-04-2018 at 03:29 PM.. |
|
Appreciate
0
|
06-04-2018, 10:21 PM | #7 | ||
Banned
200
Rep 709
Posts |
Yuriy does speak English. As for
Quote:
Yuriy's board can setup short and long presses. So maybe with Tasker detect that and your either pass along the controller buttons or stop reacting to them? As for Quote:
He can probably help guide you through this part. Last edited by gamesfrager; 06-04-2018 at 11:59 PM.. |
||
Appreciate
0
|
06-04-2018, 11:30 PM | #8 |
Banned
200
Rep 709
Posts |
My issue now is the slow Nexus 7 2013 I have. I already started thinking I should get one of these 7" LCD screens https://www.aliexpress.com/item/7-in...814637228.html
And get a powerful Android stick, maybe a Minix or something, then get a USB 4G LTE modem for internet and a USB GPS antenna. The problem with this setup means I need to find a way to make a frame for LCD. I don't mind having it mounted on the dash all the time. Hummm.... ideas...ideas... |
Appreciate
0
|
06-05-2018, 09:35 AM | #9 | ||
Private First Class
9
Rep 110
Posts |
Quote:
Quote:
I would say it's easier to get a new tablet but there really aren't any good ones out there recently... You could do a idrive retrofit but instead of the OEM stuff, stuff a LCD into it? |
||
Appreciate
0
|
06-05-2018, 09:37 AM | #10 |
Banned
200
Rep 709
Posts |
|
Appreciate
0
|
06-05-2018, 04:46 PM | #11 |
Banned
200
Rep 709
Posts |
I'm finding the slowdown is actually due to how the serial commands turn into Android commands. Since I'm using the Serial Manager app -by the way, there seems to be version one of it, which is better- to convert serial input into DPad action through shell, like so:
input keyevent KEYCODE_DPAD_LEFT There is 1 second delay from when I press a button to actually have a response. This is not good. If anyone know of a better way; please share. Here is the link for Serial Manager (1?) https://github.com/delletenebre/Seri...ree/master/apk |
Appreciate
0
|
06-07-2018, 12:08 AM | #12 |
Banned
200
Rep 709
Posts |
Here is an update.
Using the emulated DPad presses through shell (via Serial Manager) is slow. It's slow in general regardless of how you approach it. Doing input keyeven KEYCODE_XXXX is slow. As it opens a shell session, sends the command, then closes the session, every single time you press a button. Not good. I uploaded the controller with a different key profile. instead of sending Serial commands, I set the keys to send USB Key. This allows it to act like a USB controller or USB keyboard. I did plugin the controller through an OTG cable to my Nexus 7 2013 tablet. First thing you will notice is that pressing the keys on the iDrive will make it type those characters that you have set. So now I needed a way to remap them. From that post on how to turn the TomTom remote into an Android remote I remembered I can put custom keylayouts, and so I did. I duplicated the generic.kl file found in /system/usr/keylayout and named it Vendor_ffff_Product_0011.kl Here is a step by step on how to do that: http://www.thriveforums.org/forum/to...rd-rooted.html But the problem is the keylayout is not picked up. No matter how many times I restarted my tablet and disconnecting and reconnecting the controller. So, my next step was External Keyboard Helper Pro from the play store. It worked great. The response is so instant is amazing. BUT, and it's a big but you lose the soft keyboard because you have to set External Keyboard Helper Pro as your keyboard. So when I'm on a text field and need to enter something, I don't get any keyboard to show up. Ahhhh... this is frustrating. Also, if I go the route of wired, that means I will have to get one of these 7inch LCD screen and add an Android box/stick with hdmi cable, and then run a flat hdmi to it. Ugghhh...... |
Appreciate
0
|
06-08-2018, 12:47 AM | #13 |
Banned
200
Rep 709
Posts |
Success
And success!
Nothing can't be done without will and determination. So, looks like I'll have to go the wired route. I now can have both DPad and application shortcuts through External Keyboard Helper Pro, and switching (yes switching) to regular softkeyboard through Tasker, AutoTools (Tasker plugin) and AutoInput (also Tasker plugin). AutoInput detects if there is a focus on an input field and then use AutoTools to switch out the keyboard, and when the focus is out (not typing anymore) it instantly switches to External Keyboard Helper Pro. Not all fields reported focus (the address bar on Firefox and on Nova Launcher app drawer search bar), but that can be fixed by another Tasker profile to detect if these apps are in the foreground and do the same switching. Good news is Google Maps reports the focus on the search field. So no need for special profile. So now really the question is back to hardware. I'll need:
Or any other ideas? |
Appreciate
0
|
06-13-2018, 09:57 AM | #14 | |
Private First Class
9
Rep 110
Posts |
Quote:
So if I read your previous posts correctly, you decided to not use serial manager cause it lags in interpreting the serial commands? And the fix for this was using external keyboard pro. This eliminated the lag? If that is the case, why are you going wired route still? Is there still some problems? For my application, I'll need it to work wirelessly. TIA! |
|
Appreciate
0
|
06-13-2018, 04:10 PM | #15 |
Banned
200
Rep 709
Posts |
The lag is not from serial manager, it's how you have to emulate the dpad commands. Regardless if it's through serial manager, tasker or any other way that I know of.
I tried to get serial manager detect the serial commands through USB, but couldn't figure it out. The switching and detection is very fast that I couldn't notice it. But like I said, it doesn't seem detectable on all apps/field. I'm actually considering a wired setup for these reasons: - I don't need to deal with charging the device/tablet or forgetting it - since I need a more OEM mounting solution, might as well do it that way - I can replace the android box with newer one once the existing one becomes slow, they all slowdown eventually. So, easy to upgrade without restructuring it all - will allow me to wire my backup parking camera instead of having to switch to its wifi hotspot, which means killing the intetnet. And that leads to stopping any kind of online activity (call in progress, streaming music, etc.). Not to mention it will be much faster. Right now I have to disconnect the tablet from my phone's hotspot, connect to the camera's hotspot, then launch the app. So slow. |
Appreciate
0
|
06-13-2018, 04:31 PM | #16 |
Banned
200
Rep 709
Posts |
I also should add that External Keyboard Helper didn't detect the serial commands via bluetooth. Maybe I'm missing something, or it's because EKH doesn't detect it as a keyboard/HID (human interface device)
|
Appreciate
0
|
06-13-2018, 04:59 PM | #17 | |
Private First Class
9
Rep 110
Posts |
Quote:
What is the workflow for this? I thought it was idrive -> arduino board -> bluetooth -> external Keyboard Helper the External keyboard helper isn't helping you interpret the commands or reading it? What is it doing exactly? How are you reading it in? Sorry for the barrage of questions. There is just a bit of confusion. I want to make sure this is a project worth while to pursue before I buy all the parts and such. Doing this without wires for me would be a deal breaker. At that point I would just get a grom wirelinq |
|
Appreciate
0
|
06-13-2018, 05:09 PM | #18 |
Banned
200
Rep 709
Posts |
External Keyboard Helper can detect the commands from Yuri's controller board if I connect the controller board to my nexus 7 through an OTG.
External Keyboard Helper does have the option to select bluetooth, but it didn't detect the bluetooth module. Maybe there is some setting I need to adjust in External Keyboard Helper?! I'm just way to busy with the family to have a little break to sit down and play with it. As for the setup, yes: Controller board+idrive via bluetooth module => android (wirelesd but slow 1 - 1.5 second due to emulating dpad) Or Controller board+idrive via USB port on the controller board => android (fast, since it's not emulating rather remapping but wired) |
Appreciate
0
|
06-13-2018, 09:10 PM | #19 |
Banned
200
Rep 709
Posts |
Here is another thought. Just thinking out loud.
When I used the TomTom bluetooth remote, it did the same thing almost as this setup. But the difference that I was able to do and setup the .kl file to remap all the buttons. Remapping is very fast, that's what External Keyboard Helper is doing. But I could not get the .kl file working. If I or you figure it out, the wireless setup -which is still my goal- would be great. I'll try some other remapping apps that support bluetooth controllers. External Keyboard Helper is not the only one. I didn't come this far to have a 'simple' obstacle like this come between me and having this project done |
Appreciate
0
|
06-19-2018, 12:11 PM | #20 |
Banned
200
Rep 709
Posts |
Well, it's decided. Wired route.
I bought the 7inch lcd screen. Just trying to figure out the mount. I went wired instead of wireless for these reasons: - Android will get slow and needs replacement. To replace the Android part but not the screen part will save me from reconfiguring the mount - The lcd screen comes with a very thin bezel, much thinner than Nexus 7 - If I wire my Nexus or any other Android device, it's going to look ugly with all the wires sticking out. Not to mention the battery will heat up and risk a fire - I might be able to run a USB cable from the Android box to my USB port in the arm rest and might be able to use the steering wheel buttons. And if success; that saves me around $140 CAD. - Convenience. I don't need to remember to bring the tablet or remember to charge it - I can attach my backup camera and still be connected to the internet. Current setup uses a wifi hotspot from the camera that I have to switch to every time. Very slow operation |
Appreciate
0
|
06-24-2018, 02:54 PM | #21 |
Banned
200
Rep 709
Posts |
A quick update. I got the lcd screen from amazon. Surprisingly cheaper including shipping and much faster than ordering from aliexpress.
The screen is absolutely great. Thin bezels and the clarity is amazing. I wish there were 7 inch OLED, of course the price would be much higher. Oh and I got the touch enabled one Still need to finish figuring out the dash mount. Last edited by gamesfrager; 06-25-2018 at 06:57 PM.. |
Appreciate
0
|
07-03-2018, 02:31 PM | #22 |
Banned
200
Rep 709
Posts |
A tiny update on where I'm with this beast.
I have been thinking of 3D printing the custom mount. problem is I have not used or dealt with 3D printing. I downloaded Sketchup to start modeling the mount. It's crappy compared to 3D Studio Max. But maybe it's just me. Anyway, I downloaded Fusion 360. Seems better, but I still need to learn it. I might just go with the wood mount solution, but it's that bug in me that I keep feeling nothing will beat having me design my own model. So, if anyone of you guys/gals are into 3D; I can send you what I have and discuss ideas. |
Appreciate
0
|
Bookmarks |
Tags |
android, bluetooth, bmw, controller, idrive |
Thread Tools | Search this Thread |
|
|