BMW "oDrive" Car-PC

Post Reply
User avatar
FntX
Posts: 63
Joined: Mon Jun 03, 2019 7:15 pm
languages_spoken: english, german
ODROIDs: N2
Has thanked: 7 times
Been thanked: 11 times
Contact:

BMW "oDrive" Car-PC

Post by FntX » Mon Feb 24, 2020 7:26 pm

I've been working on this project for almost a year now and feel confident enough now to present it to the public.
The almighty iDrive supplemental solution for all people who don't have interest in fitting a 1500€ retrofit solution.

The Project consists of the following:
  • Odroid N2 4GB with 32GB eMMC and Android as the car-pc itself
  • Odroid VU7a+ Screen
  • Screen casing assembly to be fitted as a replacement for the small glovebox on the dashboard (See: https://www.ebay.de/itm/Monitorhalter-f ... 1438.l2649)
  • iDrive 7-Button Controller (Facelift)
  • Matching center console assembly for the iDrive Controller
  • Custom command & control board with: Arduino Nano 33 IoT, RN42HID Bluetooth Module, MCP2515 + TJA1050 CAN interface, INA219 voltage sensor, 2 pwm headers for fans (See: https://github.com/Neuroquila-n8fall/od ... rpc-nano33)
  • Teltonika RUT850 automotive 4G access point
  • LTC3780 power supply module
  • A few wires to connect everything
  • A little bit of tinkering
Fitted VU7a+ Display on the dashboard running Torque App
Image

Vu7a+ mounted inside dash casing
Note the pin header on the power button side (left hand side). I've soldered these on to have a proper connection for triggering the power button remotely.
Image


At the heart of the project is the Odroid N2 itself. It resembles the computer which can be found on the iDrive system as well. It doesn't do much, however, because it is either on or off and any change to the power state would mean pushing a button of some sort. It works on its own but to get a integrated solution the N2 has to be powered on or off depending on the current state of the car and "drivers demand".
Also it has no integrated 4G connectivity which makes it, at first sight, useless as an infotainment system with navigation and streaming services.
Because there are harsh conditions in a car it has to be supplied by a power supply which not only delivers enough oomph but also has a high input tolerance and temperature range. At this point I'm very surprised the N2 itself holds together quite nicely under these conditions!

Startup & Shutdown in a Car

We could trigger the power by checking components that will come online if the car is opened or the ignition is turned on. This would mean that as soon as we launch the engine, the PC would start. This would work but isn't the same as we know it from the original iDrive system. It boots very fast and we simply can't achieve these speeds if we want to keep the android system as it is.
So I decided to hack into the CAN Bus of the car and check if I can get any messages that would tell what the current state of the car is and what is expected. This way we could start the N2 as soon as we push the "open" or "close" button on the key fob. The time it takes to walk up to the car the N2 has enough time to boot up and as soon as we enter the car it's ready to do its job.
I've also tinkered with the possibility to have the pc always on and put it to sleep or shut it down if the battery is too low. Simply put this didn't work out in the end because I swapped to a Due MCU and couldn't make it work with a matching voltage divider network to monitor the battery. The code still exists but now that I have all the correct facilities in place, I could re-activate the mechanisms.

Screen Brightness

A problem when driving a car is that the light conditions change continuously. This makes it hard to read a display and that's the reason why we only see now big displays coming to cars in the recent years which replace the whole dashboard instruments. These screens need to be glare-resistant, hellish bright and very robust. But that's not the whole story. The screen needs to adapt to the actual outside light levels so the display is readable at bright sunlight and doesn't dazzle you at night.
Usually we would rely on a photo diode to measure light levels and react on them but in this case, since we're already on the CAN Bus of the car, we can use the light level sensor on the windscreen. This is a whole module fitted on the foot-end of the rear-view mirror called "RLS" (Regen-Licht-Sensor = Rain-Light-Sensor). It reports the current light levels at intervals or if it changed. We can use that to feed in a PWM signal to the VU7a(+) backlight regulator as described on the Wiki.(See: https://wiki.odroid.com/accessory/displ ... th_android)

Command & Control Board

The "Command & Control" Module is the interface between the Car and the N2. It bridges the gap between the Android system and the Cars CAN-bus network and takes care of all the tasks that would otherwise mean a customization of the android system or writing apps.
The first iteration of the control board was a mixture of a loose Arduino Due, Bluetooth module and MCP2515 CAN Interface module. What a mess!
Image

The picture above shows the first iteration. It's really a complete mess but somehow I needed a evaluation platform.

One year later, the whole thing is going to be "final":
New integrated "Command & Control" board
Image

Source code and detail can be found at the Github repo:
https://github.com/Neuroquila-n8fall/od ... rpc-nano33


Note: I will upload more pictures of the whole setup as soon as the weather plays along and I am finally able to swap out the cable mess with the integrated board.
These users thanked the author FntX for the post (total 7):
tobetter (Mon Feb 24, 2020 7:35 pm) • istanbulls (Mon Feb 24, 2020 7:41 pm) • jackinho (Tue Feb 25, 2020 7:18 am) • odroid (Tue Feb 25, 2020 9:48 am) • mad_ady (Thu Mar 12, 2020 2:50 pm) • joy (Mon Apr 20, 2020 3:27 pm) • RahimTux (Sun Apr 26, 2020 8:45 pm)

User avatar
FntX
Posts: 63
Joined: Mon Jun 03, 2019 7:15 pm
languages_spoken: english, german
ODROIDs: N2
Has thanked: 7 times
Been thanked: 11 times
Contact:

Re: BMW "oDrive" Car-PC

Post by FntX » Mon Feb 24, 2020 7:26 pm

----- Reserved for future use -----

User avatar
rooted
Posts: 7626
Joined: Fri Dec 19, 2014 9:12 am
languages_spoken: english
Location: Gulf of Mexico, US
Has thanked: 668 times
Been thanked: 179 times
Contact:

Re: BMW "oDrive" Car-PC

Post by rooted » Mon Feb 24, 2020 7:38 pm

I love what you have done with the control board.

Payano
Posts: 17
Joined: Sat Mar 02, 2019 8:57 pm
languages_spoken: english
ODROIDs: XU4
N2
Has thanked: 9 times
Been thanked: 3 times
Contact:

Re: BMW "oDrive" Car-PC

Post by Payano » Tue Feb 25, 2020 5:08 am

FntX wrote:I've been working on this project for almost a year now and feel confident enough now to present it to the public.
The almighty iDrive supplemental solution for all people who don't have interest in fitting a 1500€ retrofit solution.

The Project consists of the following:
  • Odroid N2 4GB with 32GB eMMC and Android as the car-pc itself
  • Odroid VU7a+ Screen
  • Screen casing assembly to be fitted as a replacement for the small glovebox on the dashboard (See: https://www.ebay.de/itm/Monitorhalter-f ... 1438.l2649)
  • iDrive 7-Button Controller (Facelift)
  • Matching center console assembly for the iDrive Controller
  • Custom command & control board with: Arduino Nano 33 IoT, RN42HID Bluetooth Module, MCP2515 + TJA1050 CAN interface, INA219 voltage sensor, 2 pwm headers for fans (See: https://github.com/Neuroquila-n8fall/od ... rpc-nano33)
  • Teltonika RUT850 automotive 4G access point
  • LTC3780 power supply module
  • A few wires to connect everything
  • A little bit of tinkering
Fitted VU7a+ Display on the dashboard running Torque App
Image

Vu7a+ mounted inside dash casing
Note the pin header on the power button side (left hand side). I've soldered these on to have a proper connection for triggering the power button remotely.
Image


At the heart of the project is the Odroid N2 itself. It resembles the computer which can be found on the iDrive system as well. It doesn't do much, however, because it is either on or off and any change to the power state would mean pushing a button of some sort. It works on its own but to get a integrated solution the N2 has to be powered on or off depending on the current state of the car and "drivers demand".
Also it has no integrated 4G connectivity which makes it, at first sight, useless as an infotainment system with navigation and streaming services.
Because there are harsh conditions in a car it has to be supplied by a power supply which not only delivers enough oomph but also has a high input tolerance and temperature range. At this point I'm very surprised the N2 itself holds together quite nicely under these conditions!

Startup & Shutdown in a Car

We could trigger the power by checking components that will come online if the car is opened or the ignition is turned on. This would mean that as soon as we launch the engine, the PC would start. This would work but isn't the same as we know it from the original iDrive system. It boots very fast and we simply can't achieve these speeds if we want to keep the android system as it is.
So I decided to hack into the CAN Bus of the car and check if I can get any messages that would tell what the current state of the car is and what is expected. This way we could start the N2 as soon as we push the "open" or "close" button on the key fob. The time it takes to walk up to the car the N2 has enough time to boot up and as soon as we enter the car it's ready to do its job.
I've also tinkered with the possibility to have the pc always on and put it to sleep or shut it down if the battery is too low. Simply put this didn't work out in the end because I swapped to a Due MCU and couldn't make it work with a matching voltage divider network to monitor the battery. The code still exists but now that I have all the correct facilities in place, I could re-activate the mechanisms.

Screen Brightness

A problem when driving a car is that the light conditions change continuously. This makes it hard to read a display and that's the reason why we only see now big displays coming to cars in the recent years which replace the whole dashboard instruments. These screens need to be glare-resistant, hellish bright and very robust. But that's not the whole story. The screen needs to adapt to the actual outside light levels so the display is readable at bright sunlight and doesn't dazzle you at night.
Usually we would rely on a photo diode to measure light levels and react on them but in this case, since we're already on the CAN Bus of the car, we can use the light level sensor on the windscreen. This is a whole module fitted on the foot-end of the rear-view mirror called "RLS" (Regen-Licht-Sensor = Rain-Light-Sensor). It reports the current light levels at intervals or if it changed. We can use that to feed in a PWM signal to the VU7a(+) backlight regulator as described on the Wiki.(See: https://wiki.odroid.com/accessory/displ ... th_android)

Command & Control Board

The "Command & Control" Module is the interface between the Car and the N2. It bridges the gap between the Android system and the Cars CAN-bus network and takes care of all the tasks that would otherwise mean a customization of the android system or writing apps.
The first iteration of the control board was a mixture of a loose Arduino Due, Bluetooth module and MCP2515 CAN Interface module. What a mess!
Image

The picture above shows the first iteration. It's really a complete mess but somehow I needed a evaluation platform.

One year later, the whole thing is going to be "final":
New integrated "Command & Control" board
Image

Source code and detail can be found at the Github repo:
https://github.com/Neuroquila-n8fall/od ... rpc-nano33


Note: I will upload more pictures of the whole setup as soon as the weather plays along and I am finally able to swap out the cable mess with the integrated board.
Very nice indeed!

Sent from my SM-G973F using Tapatalk


that_kid
Posts: 16
Joined: Wed Sep 21, 2016 4:36 am
languages_spoken: english
ODROIDs: C2,N2
Has thanked: 1 time
Been thanked: 0
Contact:

Re: BMW "oDrive" Car-PC

Post by that_kid » Thu Mar 12, 2020 12:00 pm

Very nice, I'm in the process of installing an Odroid N2 in my Touareg. It'll be replacing an aging Nexus 7 tablet install.

RahimTux
Posts: 4
Joined: Sun Apr 26, 2020 7:25 pm
languages_spoken: english, german
ODROIDs: 1 N2, 2 HC2
Has thanked: 1 time
Been thanked: 0
Contact:

Re: BMW "oDrive" Car-PC

Post by RahimTux » Sun Apr 26, 2020 8:52 pm

That is a really cool project, sir! Where did you fit the N2 and control board? Guess the screen casing does not provide enough space for them.

Post Reply

Return to “Projects”

Who is online

Users browsing this forum: No registered users and 1 guest