Suggest for RealDash app

Dear RealDash Development Team,

First, I would like to express my appreciation for your excellent work on RealDash. It’s a powerful and versatile tool that has become indispensable for many in the automotive enthusiast community.

I am writing to submit a feature request that I believe would significantly expand RealDash’s compatibility and ease of use for a specific and growing segment of users: those with Android-based instrument clusters and head units.

Suggestion:
I respectfully request that you consider adding native support within the main RealDash APK to read data directly from the Android system’s read_log function and catlog_service. This functionality is currently available through separate middleware tools, but integrating it directly would be a game-changer.
Make it second for those don’t have google play store
Problem & Justification:
Many modern vehicles, particularly from manufacturers like BMW, Mercedes-Benz, Volvo, and others, use Android-based clusters that broadcast a wealth of vehicle data (e.g., RPM, speed, coolant temp, fuel level, gear position) onto the vehicle’s CAN network, which the Android OS can access.

Currently, to make RealDash work with these systems, users must:

  1. Sideload a separate middleware app (e.g., a special logger tool) to act as a bridge.
  2. Configure this tool to read the catlog_service (read_log) and forward the data to RealDash via a virtual serial port or direct from the live data.

This process is complex, creates a potential point of failure, and can be intimidating for less technically-inclined users.

Proposed Solution:
By building the ability to read from catlog_service and parse the read_log stream directly into the RealDash app, you would eliminate the need for any intermediate adapter or tool. Users would simply need to:

  1. Install the RealDash APK on their Android.
  2. Grant the necessary permissions (potentially, but handled within the app).
  3. Select the appropriate data source within RealDash’s settings.

Benefits:

· Massively Expanded Plug-and-Play Compatibility: RealDash would work seamlessly on any compatible Android-based cluster without extra hardware or software.
· Simplified User Experience: It removes a significant technical barrier to entry, making the product accessible to a much wider audience.
· Performance & Reliability: A native implementation would likely be more efficient and stable than relying on an external middleware process.
· Market Leadership: This would firmly position RealDash as the most versatile and advanced dashboard solution on the market for both traditional and modern vehicle platforms.

This feature would not replace RealDash’s existing superb support for traditional OBD adapters and CAN hardware but would serve as a powerful additional data source option for a specific use case.

Thank you for taking the time to consider this request. I am confident that many users in the community would be thrilled to see this capability implemented.

I am available to provide more details, test beta versions, or assist in any way I can.

Sincerely,

[meshal88]
RealDash User

3 Likes

I did read your email but did not respond, sorry about that. I’m happy that you posted this to the forum so more RealDashers may chime in of how usable this feature would be in real life. This is a technique that I’m not familiar with.

Could you link me to these middleware tools that are extracting data from the logs, so I can take a look and better understand what is going on.

This sounds interesting. Assuming I understand correctly your proposal; At first, this seems like a very fragile approach. Any update could change/remove the output to the logs. Also, I’m assuming this requires root access to Android device so userbase is even smaller.

2 Likes

Hello my friend
thank you for your respond

it’s simple just some permission by ADB control for the app “no root required” ,the app does not interface directly with the vehicle’s CAN bus or sensors. Instead, it acts as a passive monitor for data that is already being broadcast by the vehicle’s hardware abstraction layer within the Android system,
core of the data retrieval is handled by a LogcatService . This service runs a background process that executes the logcat command, continuously reading the system log in real-time. The app specifically filters for log entries originating from the vehicle data service.

I’m more then happy to give you what it take to make it happen so i can use it in my car
and many who have new car with android built in
most of the new car have android cluster built in,

I hope this clarifies the process. Feel free to ask if you have any more technical questions.

any updates ? on this suggest ?

I have no experience with android logcat, but reading/parsing the text logs probably have more resource demand / lag than accessing the bus directly tru OBD port.

1 Like

I’m also suspicious of this working properly on wide scale. I think implementation should not be that hard, but I worry that we will be flooded by endless requests to change/update the logcat parsing. I’m sure there is no “Standard” of how vehicle information flows on the logcat, right?

The read log update the informations in seconds

Alright, please share an example log and parser and I will take a look.

Any update on this suggestion?

No. I need help with example log file and parser in order to investigate this further.

Check this

01-21 19:03:59.672 I/ActivityManager(775): Start proc 4739:ru.zinovin.hiddencontrol/u0a106 for broadcast ru.zinovin.hiddencontrol/.BootReceiver
01-21 19:03:59.800 I/ActivityManager(775): START u0 {flg=0x14000000 cmp=ru.zinovin.hiddencontrol/.StartActivity} from uid 10106
01-21 19:03:59.847 I/ActivityManager(775): Start proc 4780:ru.zinovin.tankspeedometer/u0a175 for broadcast ru.zinovin.tankspeedometer/.BootReceiver
01-21 19:03:59.976 I/ActivityManager(775): START u0 {flg=0x14000000 cmp=ru.zinovin.tankspeedometer/.StartActivity (has extras)} from uid 10175
01-21 19:03:59.978 W/AppOps  (775): Noting op not finished: uid 10106 pkg ru.zinovin.hiddencontrol code 24 time=1769011439974 duration=-1
01-21 19:03:59.995 I/GDC_CARPLAY(2949): SysDialogStatus onGwmSysDialogChanged : dialogInfo:PlatformSysDialogInfo{gravity=8388659, isFocusable=false, type=2038, bound=Rect(0, 0 - 0, 0), packageName='ru.zinovin.hiddencontrol', visible=false, gwmFlags=0}, visible = false, gravity = 8388659
01-21 19:03:59.995 I/GDC_CARPLAY(2949): SysDialogStatus onGwmSysDialogChanged : dialogInfo:PlatformSysDialogInfo{gravity=85, isFocusable=false, type=2038, bound=Rect(0, 0 - 0, 0), packageName='ru.zinovin.hiddencontrol', visible=false, gwmFlags=0}, visible = false, gravity = 85
01-21 19:04:00.021 I/ActivityManager(775): START u0 {flg=0x14000000 cmp=ru.zinovin.touchcontrol/.StartActivity} from uid 10167
01-21 19:04:00.051 I/GDC_CARPLAY(2949): SysDialogStatus onGwmSysDialogChanged : dialogInfo:PlatformSysDialogInfo{gravity=8388659, isFocusable=false, type=2038, bound=Rect(128, -60 - 1920, -60), packageName='ru.zinovin.hiddencontrol', visible=false, gwmFlags=0}, visible = false, gravity = 8388659
01-21 19:04:00.051 I/GDC_CARPLAY(2949): SysDialogStatus onGwmSysDialogChanged : dialogInfo:PlatformSysDialogInfo{gravity=85, isFocusable=false, type=2038, bound=Rect(1870, 1030 - 1920, 1080), packageName='ru.zinovin.hiddencontrol', visible=true, gwmFlags=0}, visible = true, gravity = 85
01-21 19:04:00.201 I/GDC_CARPLAY(2949): SysDialogStatus onGwmSysDialogChanged : dialogInfo:PlatformSysDialogInfo{gravity=8388659, isFocusable=false, type=2038, bound=Rect(128, -60 - 1920, 1080), packageName='ru.zinovin.hiddencontrol', visible=true, gwmFlags=0}, visible = true, gravity = 8388659
01-21 19:04:00.247 I/GDC_CARPLAY(2949): SysDialogStatus onGwmSysDialogChanged : dialogInfo:PlatformSysDialogInfo{gravity=8388659, isFocusable=false, type=2038, bound=Rect(386, 1036 - 386, 1036), packageName='ru.zinovin.touchcontrol', visible=false, gwmFlags=0}, visible = false, gravity = 8388659
01-21 19:04:00.247 I/GDC_CARPLAY(2949): SysDialogStatus onGwmSysDialogChanged : dialogInfo:PlatformSysDialogInfo{gravity=8388659, isFocusable=false, type=2038, bound=Rect(128, -60 - 1920, 1080), packageName='ru.zinovin.hiddencontrol', visible=true, gwmFlags=0}, visible = true, gravity = 8388659
01-21 19:04:00.282 I/GDC_CARPLAY(2949): SysDialogStatus onGwmSysDialogChanged : dialogInfo:PlatformSysDialogInfo{gravity=8388659, isFocusable=false, type=2038, bound=Rect(386, 1030 - 596, 1080), packageName='ru.zinovin.touchcontrol', visible=true, gwmFlags=0}, visible = true, gravity = 8388659
01-21 19:04:02.365 W/AppOps  (775): Noting op not finished: uid 10175 pkg ru.zinovin.tankspeedometer code 24 time=1769011440624 duration=-1
01-21 19:04:02.371 I/WindowManager(775): Window{d0ba382 u0 ru.zinovin.tankspeedometer}: viewVisibility=false, win.mAppToken=null
01-21 19:22:58.202 E/BitmapFactory(4780): Unable to decode stream: java.io.FileNotFoundException: /data/user/0/ru.zinovin.tankspeedometer/files/_ (No such file or directory)
01-21 19:22:58.286 I/WindowManager(775): Window{7b49937 u0 ru.zinovin.tankspeedometer}: viewVisibility=false, win.mAppToken=null
01-21 19:22:58.299 I/GwmNotificationService-1.0(2450):  GwmNotificationListenerService.onNotificationRemoved  (GwmNotificationListenerService.java:8) sbn.getKey():0|android|0|com.android.server.wm.AlertWindowNotification - ru.zinovin.tankspeedometer|1000
01-21 19:22:58.416 W/SurfaceFlinger(766): Attempting to destroy on removed layer: 7b49937 ru.zinovin.tankspeedometer#0

If you are referring to GDC_CARPLAY messages in logcat, I do not see any engine data there.

I bring logcat

Link does not work for me.

To be clear, I know what logcat is. I have stared at Android logcats for more than I dare to admit. What I need is an example snippet of the logcat that contains vehicle data and an example parser to use as a reference for the development.

Ok
Just check this

Alright, that looks promising. Don’t have a lot of inputs in it though.

Any idea where we could find a complete list of inputs appearing in logcat, like this:

GA-server: setData car.basic.vehicle_speed=0.0

Ok you can Check this I bring it from my car I install Matlog and start the car and also give it some acceleration , 1000 of tasks appear and I but in search bar “GA-server so here is the list

I do have a prototype of this feature. I do not know how well this will work in practise as logcat in Android is so busy that this sort of readers will at some point miss a line or two.

I implemented 6 values from your example log:

  • RPM
  • Vehicle Speed
  • Battery Voltage
  • Longitudinal acceleration
  • Inside temperature
  • Coolant temperature

If you want to give this prototype a go, send me an email to contact@realdash.net and I will provide a link for you.

Ok I already send you email