jilleb / mib2-toolbox

The ultimate MIB2-HIGH toolbox.
MIT License
575 stars 142 forks source link

[REQUEST] Virtual Cockpit use CarPlay google map or apple map #159

Open Gold-TW opened 3 years ago

Gold-TW commented 3 years ago

I wonder if this idea can be implemented?

Virtual cockpit using CarPlay Output google maps or apple maps.

Or can install GOOLE EARTH in MIB2 high

Thanks for the suggestion.

andrewleech commented 3 years ago

Various people have been attempting to get carplay/AA into the virtual cockpit with little success, it's a real shame VAG don't support this. Efforts are also being made to prevent blocking built in maps on VC when AA nav is started.

The enabling of Google Earth in cars that don't have it though is generally a licencing issue which is outside the scope of this project unfortunately.

jasoriab commented 3 years ago

Until the version of Waze 4.66.0.1 there was a trick to make it work, which was to start a route (the virtual cockpit map was deactivated), stop the planned route (the map reappeared on the dashboard) and start a route again planned in Waze, without losing the car map on the dashboard. Version 4.66.0.1 can be downloaded from the web apkmirror.com

But since version 4.66.90.900 they modified Waze and said trick stopped working :(

There is an open thread on the Waze support forum about this:

https://waze.centercode.com/project/feedback/view.html?cap=c4c17e7b1c714fd4811d8431529d23aa&uf=e8ddabb7f2d94bef9eab137fa1b5a448&slsid=1080d884f753465c83cbce1789d9a405

This trick never worked with Google Maps, at least on my Leon. It also does not work with the new Tomtom AmiGO.

It would be great if with mib2-toolbox it could be possible to have both again, the map in the virtual cockpit, and an active navigation with android auto in the infotainment.

andrewleech commented 3 years ago

Yes there's a long running thread here already about that: https://github.com/jilleb/mib2-toolbox/issues/10

That trick was technically a bug in Waze, where it didn't properly flag to Android that navigation was started. I'm not surprised that fixed it.

I've found the flags in Java code in MIB already where this navigation_active status of tracked but they're in strange compiled Java code (jxe file) that's proving hard to override so far.

jasoriab commented 3 years ago

Thanks @andrewleech for the URL of thread # 10, which I hadn't read ...

The funny thing is that, at least in the new SEAT León Mk4, its MIB3 unit does allow to have active navigation in android auto, and simultaneously displaying the car's own navigator map on the dashboard ...

I don't know what is the reason given by the VAG group for not allowing it in the MIB2 units.

DAP56 commented 2 years ago

The Audi TT has CarPlay in the VC, so why stop at the maps? The display in the VC is horrible during all CarPlay functions. I'll be watching this one.

I talked to a seller on Alibaba.com, he said if I purchased VC through him, he could/would enable the CarPlay in VC and program the dual RS tach's that I don't have on my RSQ8 (2021's have dueling tachs, they are awesome).

54fa08e19e7770d3708a1c71c377c163

a992d9210e4c5b554e7c2d3040a5af61

XPepino1 commented 2 years ago

It should be very nice!!! Have to exist some way how to enable Carplay in VC or in least original MAP in VC if Carplay is running

airsky98 commented 2 years ago

Those are like android based VC. You can even watch video inside your speedo. ....

On Tue, Jul 13, 2021 at 6:09 AM DAP56 @.***> wrote:

The Audi TT has CarPlay in the VC, so why stop at the maps? The display in the VC is horrible during all CarPlay functions. I'll be watching this one.

I talked to a seller on Alibaba.com, he said if I purchased VC through him, he could/would enable the CarPlay in VC and program the dual RS tach's that I don't have on my RSQ8 (2021's have dueling tachs, they are awesome).

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fjilleb%2Fmib2-toolbox%2Fissues%2F159%23issuecomment-878630492&data=04%7C01%7C%7C6ce7b45dfe1f4647796308d94581b288%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637617245616944734%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=yHQxiK2tusXebVIToh3Q9dSaBfLSKBZFLy9gkAlsNTo%3D&reserved=0, or unsubscribe https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAPPZMUTRZN6Q23EJQFVQNVDTXNRY7ANCNFSM43CW7ULQ&data=04%7C01%7C%7C6ce7b45dfe1f4647796308d94581b288%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637617245616954729%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=%2FNIDYCubePVJXSrtTh9wn2eikRJk2ZXCoiTJNEvufrs%3D&reserved=0 .

XPepino1 commented 2 years ago

Only original is interesting, i have with android based systems not good expirience :-(

DAP56 commented 2 years ago

All of the VC sellers on Aliexpress and Alibaba say that the VC's lock after 100km, so if its possible to enable CarPlay in VC (like TT and R8) then it has to be done on a new VC. I'm tempted to spend the $600 Euro and find out, but I realize that won't buy me happiness. That only comes from within.

andrewleech commented 2 years ago

Unfortunately I don't think it'll be so easy to just swap out a TT VC into a different car, as I believe the ability to show full maps / carplay / androidauto in them is based on a separate LVDS connection, eg it acts like a separate monitor, not just a MOST connection like other VC's. These cars don't have a screen in the dash, so they use the VC as the main / only screen.

Eg. TT VC (https://it.aliexpress.com/item/1005002826165506.html) image Note LVDS connector: image

Compared to Passat VC (https://it.aliexpress.com/item/1005001369470372.html) image

DAP56 commented 2 years ago

Thanks for the photos of the VC. In my RSQ8, there's night vision. I'm trying to bereft, but I think that means LVDS.

DAP56 commented 2 years ago

Thanks @andrewleech for the URL of thread # 10, which I hadn't read ...

The funny thing is that, at least in the new SEAT León Mk4, its MIB3 unit does allow to have active navigation in android auto, and simultaneously displaying the car's own navigator map on the dashboard ...

I don't know what is the reason given by the VAG group for not allowing it in the MIB2 units.

Interesting that your Skoda MIB3 functions that way, my Audi MIB3 does not.

olinek2 commented 1 year ago

Unfortunately I don't think it'll be so easy to just swap out a TT VC into a different car, as I believe the ability to show full maps / carplay / androidauto in them is based on a separate LVDS connection, eg it acts like a separate monitor, not just a MOST connection like other VC's. These cars don't have a screen in the dash, so they use the VC as the main / only screen.

Eg. TT VC (https://it.aliexpress.com/item/1005002826165506.html) image Note LVDS connector: image

Compared to Passat VC (https://it.aliexpress.com/item/1005001369470372.html) image

andrewleech consider, that all MLBevo VC (and even MQB for Audi A3 for example) have LVDS connector as well TT, because maps with 3D view are showed only by LVDS (generated in MIB), so maybe it would be even possible to clone Carplay/AA view and redirect to it. Also that can be the difference in the software, because map view stream is on different interface.

andrewleech commented 1 year ago

all MLBevo VC (and even MQB for Audi A3 for example) have LVDS connector as well TT, because maps with 3D view are showed only by LVDS (generated in MIB), so maybe it would be even possible to clone Carplay/AA view and redirect to it.

Sure, maybe. I don't have one of these cars so can't look into it myself.

What I have seen though is it's currently quite hard to access / clone the view as it's implemented as a h264 steam directly from the phone. This stream is hardware decoded by the Tegra chip direct to display. The command line tools to take screenshots work fine on normal screens, but only get a black frame when AA/CP is on screen - much like computers 10 years ago when movies needed to be hardware decoded direct to screen.

The raw h264 steam can be sent to a file of disk as well on screen, but I never found any other way to decode / frame grab from that on unit.

olinek2 commented 1 year ago

But somehow it is send from unit to VC to visualize the maps in 3D, and it is rendered in unit not VC, then transferred by LVDS/HSD. OFC it's just theoretical talk, newer dived in the unit code... As far I know in Audi TT it was done, but there VC was acting as a main screen for unit, because it was the only screen i the car.

andrewleech commented 1 year ago

Yeah, when it's LVDS, they acts just like a computer monitor and the hardware decoding sends it straight to that monitor.

If you mean the internal navigation engine running in 3d / Google Earth mode then that's generated internally and could be screenshot / copied easily enough.

It's the display of AA/CP that's a stream needing hardware (graphics) decoding on the MIB2 / 2.5 platform.

There's certainly some more hardware capabilities in newer platforms, but I haven't seen any of them personally: https://forums.macrumors.com/threads/review-2021-volkswagen-tiguan-adds-wireless-carplay-with-multi-screen-support-for-apple-maps-directions.2295243/

olinek2 commented 1 year ago

I know how LVDS looks like, but I just wonder if ti can be redirected/copied from display view to signal from unit to VC.

andrewleech commented 1 year ago

Yeah as I tried to describe earlier, I've tried to do exactly this - to screenshot / capture / clone / redirect the AA/CP video stream onto VC. I have been able to send PNG images to VC, in theory I could do this one after another to simulate video.

root@mmx:/eso/bin/apps> export LIBIMG_CFGFILE=/etc/imgprocessing.cfg
root@mmx:/eso/bin/apps> LD_LIBRARY_PATH=/eso/lib:/armle/lib:/root/lib-target:/armle/lib/dll /eso/bin/apps/loadandshowimage /fs/sdb0/triplej.png &
[1] 13144184
root@mmx:/eso/bin/apps> /eso/bin/apps/dmdt sc 4 -9                                                                                                

IMG_20220906_210727_315

But I have not been able to get decoded video in any way. Possibly with a C program and intimate knowledge of the Tegra processor it might be possible to read frames back out of the graphics engine frame buffers, but I couldn't find any info about doing this.

OneB1t commented 1 year ago

This is actually very promising what about sending screenshot of what is visible on mib2 display to vc this way? To obtain screenshot I believe there are some functions already on mib2 which can be used

andrewleech commented 1 year ago

Yes that's what I was attempting, but unfortunately screenshots of AndroidAuto / Carplay come up blank / black as the tegra cpu hw acceleration is used to directly decode the h264 AA/CP streams to screen. I've been unable to find a way to grab / screenshot frames from this.

jilleb commented 1 year ago

Yeah as I tried to describe earlier, I've tried to do exactly this - to screenshot / capture / clone / redirect the AA/CP video stream onto VC. I have been able to send PNG images to VC, in theory I could do this one after another to simulate video.

root@mmx:/eso/bin/apps> export LIBIMG_CFGFILE=/etc/imgprocessing.cfg
root@mmx:/eso/bin/apps> LD_LIBRARY_PATH=/eso/lib:/armle/lib:/root/lib-target:/armle/lib/dll /eso/bin/apps/loadandshowimage /fs/sdb0/triplej.png &
[1] 13144184
root@mmx:/eso/bin/apps> /eso/bin/apps/dmdt sc 4 -9                                                                                                

IMG_20220906_210727_315

But I have not been able to get decoded video in any way. Possibly with a C program and intimate knowledge of the Tegra processor it might be possible to read frames back out of the graphics engine frame buffers, but I couldn't find any info about doing this.

@andrewleech , This is pretty awesome. Maybe we can make it in such a way that the Virtual Cockpit is called as a specific display manager context number. Android Auto gal.json has a config item which allows you to change the context number to something else, as well as selecint a different output device/channel. This can maybe help to get the live image working on the VC. I've played a lot with these contexts, and for instance I got it working in such a way that Android Auto would start when I would shift in reverse (instead of the main screen shifting to the rear view camera).

andrewleech commented 1 year ago

Maybe we can make it in such a way that the Virtual Cockpit is called as a specific display manager context number

By memory the VC is already a context, well the small map for it is available as a context that can be switched to on the main screen... but as far as I can tell the Tegra decoder is pointing straight to the display interface, whereas the VC isn't a standard display / framebuffer.

jilleb commented 1 year ago

Hmm good point. I tried switching the AA context to VC and vice versa, but was never succesful there.

An other idea would maybe to have the VC handle the info from Android Auto, like the navigation directions, and media metainfo. The VC is able to handle it, I've seen people installing a Golf8/Leonmk4 MIB3 into the Golf7/Leonmk3, and suddenly got this data displayed on their virtual cockpits.

andrewleech commented 1 year ago

The AA settings have an option to dump the h264 steam to disk too, I had thought of trying to send that to a named pipe into a sw decoder, but not sure where to find a decoder I could realistically compile for arm/qnx

andrewleech commented 1 year ago

I did think of trying to render the nav/media meets 6 to send yeah, but couldn't find any such meta in the Java code handing AA at all :-(. The main AA interface is via a binary application, I don't know that it receives / shares this information at all?

jilleb commented 1 year ago

I'll check. I would expect it's handled in a similar way as the "mobile navigation is active" data

jilleb commented 1 year ago

There's a bunch of stuff related to all kinds of media and navigation metadata inside the gal bin: image

[DSIAndroidAuto2Impl] %s : road='%s', turnSide=%s, event=%s, turnAngle=%i, turnNumber=%i, valid=%i

as well as here: image Which could maybe be used to get data from AA to the cluster (not the map stream or AA video stream, but just navi and media metadata instead of "Android Auto" on screen.

And maybe we could use the renderer area of the gal.json to force AA to be shown on the VC?


                # DISPLAYABLE_EXTERNAL_SMARTPHONE = 59 (previously used DISPLAYABLE_EXTERNAL_DVD_VIDEO = 34)
                "displayableID":59,
                # preferred renderer (defaults to lowest available if preferred is not available)
                # 0 - default
                # 1 - nvss
                # 2 - nvmedia
                # 3 - qc
                # 4 - cinemo
                "type":0,
                    "nvss":{
                    # NvSSVideoOutputDevice_LVDS = 0 (default), NvSSVideoOutputDevice_HDMI = 1
                    "outputDevice":1,
                    # Setting provideTimestamps = false disables the NV decoder "late frame dropping" functionality
                    "provideTimestamps":true```
andrewleech commented 1 year ago

Interesting, those details all being in DSI functions should mean they're shared to other apps, my understanding is DSI is the system-wide messaging system. Perhaps there's a way to access them from some command line system, or even if the main Java so doesn't have handlers for then currently they could possibly be added!

I did have a play with those gal.json settings previously but saw no change at all... I don't know if I exhaustively tried everything but remember it not appearing to do much so gave up. Maybe searching through the gal bin in ghidra would shed some more light on these settings, perhaps find some other debug / export decoded frame settings...

jilleb commented 1 year ago

These DSI functions are quite interesting.... I never found a way to interface with them, but maybe I didn't look too hard ;-) And then there's also the Exlap channel, which is capable of exchanging car data to and from the MIB. I was able to interface this externally (from a phone connected to AA), and it's possible to connect to this interface via the wlan connection with the MIB.

andrewleech commented 1 year ago

grep -R DSI /mnt/app/eso/bin/ does highlight a few apps worth closer investigation...

jilleb commented 1 year ago

connectionmanager and dio_manager look promising.. I have to dive into this.

update: there's also some DSITracer.jar, let's see if I can get it working 😄

andrewleech commented 1 year ago

I was also just thinking /mnt/app/eso/hmi/lsd/DSITracer.jar is worth pulling apart!

jilleb commented 1 year ago

So far I haven't really been able to interface with this DSI data.

Lanye-z commented 1 year ago

Some people in China have tried this work in the past few years. They said that Volkswagen MIB 048 can project carplay to the VC. But,it was only supported at Volkswagen 791/A/B/D,790/B, and all Audi Virtual Cockpit. So far, this technology still seems to have some bugs and has not been widely used. Screenshot_20230204-115641_Gallery Screenshot_20230204-115615_Gallery Screenshot_20230204-115607_Gallery Screenshot_20230204-115448_Gallery

OneB1t commented 9 months ago

Can you point to Chinese forum where this is discussed? Also what about capturing the image on phone itself and sharing it to the unit?

As i finally installed my virtual cluster i wil also try to take a look what is going on there. Maybe check which process is responsible for intergrated navigation streaming over MOST and modify it to take different context or something like that

OneB1t commented 9 months ago

maybe this "video sink dumping" can create a video of android auto? inside \app\eso\hmi\engdefs\scripts\galDumpEnableVideoSink.sh

#!/bin/sh

mount -uw /mnt/system

echo "enabling video sink dumping"
sed -i '/#vsidump/{n;s/.*/"enabled":true,/}' /etc/eso/production/gal.json

echo "... done."
echo "Please reconnect your Android Auto device for changes to take effect!"

then also this script can be usefull to dump to /tmp file c\app\eso\hmi\engdefs\scripts\CP_video_dumping_tmp.sh

#!/bin/sh

/eso/hmi/engdefs/scripts/CP_video_dumping.sh "/dev/shmem"

some other interestil parts

\app\eso\bin\apps\videoovermost \app\eso\bin\apps\vom_debugtool

and MOST encoder setup inside \system\etc\eso\production\displaymanager.json

        #<-

        # this block configures most encoder
        #--->
        "most_encoder" : {
            "device" : "/dev/mlb/isoTX2",
      # 8:   94 kBytes => Audi ca 100kB | max BPF 20.000B 
      # 18: 210 kBytes => VW  ca 200kB | max BPF 40KB
      "queue_size" : 18,
            # Set FramesPerGOP to 1 to encode each frame as I-frame, else I+P BP encode.
            "nv_frames_per_gop" : 5,
            # BytesPerGOP = BytesPerFrame * FramesPerGOP. This acts as a guidance value, the actual number of encoded bits will be different
            "nv_bytes_per_frame" : 40960,
            # Input channel data rate - (socket bandwith * MOST rate * byte) 32*48000*8 = 12288000 bps 
            "nv_channel_data_rate" : 12288000,
            # Input encoder data rate, it should be less then channel * data rate - (min. <10-20%) 9.6 Mbps 
            "nv_encoder_data_rate" : 9600000,
            # To enable NULL packet stuffing, set to 1
            "nv_maintain_mux_rate" : 0
        },  
        #<---

        # video over most 
        #--->
        "video_over_most" : {
            # default: if not defined use "context_switch"
            # empty/invalid use first hmi call to decide
            #"force_routing" : ""       
            #"force_routing" : "context_switch"     
            #"force_routing" : "component_control"      
        }   
andrewleech commented 9 months ago

@OneB1t yes! I saw the video dump stuff too and tried the Android auto one. It saves the raw h264 video stream to a file.

I couldn't find any software available that could decode this on the unit, nor any I could compile for qnx / Tegra. Certainly the Tegra gpu is capable of hardware decoding it, but I could find any way to get access to this to either grab frames or convert into a form the dash might handle.

I did also see references to the video over most stuff, but never figured out how to use it.

jilleb commented 9 months ago

Maybe instead of rendering video, it could be used to send data to the AID.. not sure which data we have access to on this layer, but if we are able to get exlap data and display it as a PNG which we can push to the cluster... then we can have an indicator of DSG temperature on the AID, a bit like PolarFIS does, but without the additional hardware: image

OneB1t commented 9 months ago

I will try to see which process is responsible for sending video into instrument cluster by killing them one by one until it stops then try to decompose that file inside ghidra and try to get some knowledge like that :-D

i can see that this videoovermost is used mainly when there is tv tuner in car (maybe some audis?)

EDIT: there is DSITracer which i believe is able to record all DSI messages and there definitely will be way to send some from command line to achieve basically anything on VC

jilleb commented 9 months ago

Indeed. DSI would allow us to share much more data with the cockpit. Imagine if we can use the instruction arrows with Android Auto/CarPlay like with the regular navigation.

OneB1t commented 9 months ago

Those are all running processes on MIB when map in VC is active with arguments (that can be interesting)

root@mmx:/mnt/app/root> ps -A -o args
COMMAND
procnto-smp-instr -S 8192,128 -v -mL -F 9000
devc-ser8250-tegra2 -e -t12 -T12 -F -S -b115200 -M -c408000000 0x70006300^2,122
slogger -s 1024k
/usr/sbin/cap_app
devg-nvsku
i2c-tegra2 -c5 -f12000000
devb-mmcsd-tegra3-devlite blk alloc=upfront,cache=10m,stack=100k,vnode=8192,noatime,exclusive mmcsd ioport=0x78000600,irq=63,bs=nocd,bw=8,timeo=2900,devtype=1,skipinit,nolv,rfsh=60,inpclk=102000000,log=0x8 disk name=mnand,translation=64
cartimeprovider
devg-nvpower
devg-nvgpio
usblauncher -e -vv -c /etc/usblauncher.lua -M /etc/mcd.mnt -t -l -m /ramdisk/pps -p 2 -s /mnt/app/armle/lib/dll/pubs -n /dev/io-usb/io-usb -S 0 -O
random -pt
mqueue
pipe
nvmemctrl
devg-nvclock -v 1
i2cioc -c INFO -s WARN
ooc -l INFO
/eso/bin/apps/telephone telephone 3
devg-nvos
devg-nvrm
io-pkt-v6-hc -S -ptcpip threads_max=1000,enmap=0,stacksize=16384,guardpage,stackguard,pkt_typed_mem=/ram/dma,random -ppf-v6
i2c-tegra2 -c1
i2c-tegra2 -c4
pci-bios -v -p 1
devf-generic-tegra2 -x 1 -s0x48000000,64M -r -b5 -w0 -p400,32
systracker
/sbin/devg-nvcapture -w 1280 -h 640 -o v -v 2 -p 15 -b 4 -t 250
tinit
mcd -Vv /etc/mcd.conf
sh /etc/boot/boot.sh
login
grep -F dumping to
dumper -v -m -z 9 -w -n -d /mnt/ota/system/core
devc-pty
io-usb -c -d tegra3-ehci-arc ioport=0x7D004100,irq=53,has_hostpc,cache=1 -n /dev/io-usb/otg
tee /dev/stderr
/eso/bin/apps/bluetooth bluetooth 4
/eso/bin/broker
devg-nvtmon
/eso/bin/apps/displaymanager
info
heartbeat -p11 -%4
devb-mmcsd-tegra3-devlite blk cache=2m mmcsd ioport=0x78000000,irq=46,bs=cd=D3:wp=V2:rs=V6,bw=4,inpclk=45333333,nolv disk name=sda cam retries=3:0:0:0,cache
devb-ram blk cache=512k ram capacity=40960 disk name=sysramdisk
devb-mmcsd-tegra3-devlite blk cache=2m mmcsd ioport=0x78000400,irq=51,bs=cd=D4:wp=V3:rs=V7,bw=4,inpclk=45333333,nolv disk name=sdb cam retries=3:0:0:0,cache
devb-ram blk cache=512k ram capacity=20480 disk name=organizer
io-usb -c -d tegra3-ehci-arc ioport=0x7D000100,irq=52,has_hostpc,cache=1,ioport=0x7D008100,irq=129,has_hostpc,cache=1
/armle/sbin/io-sdiorm-mib2 -p33 -c45000000 -h ioport=0x78000200,irq=47,inpclk=45000000 -d nowlan_reset
/eso/bin/traceserver
./bin/apps/sdtool -sm-name sdtool -sm-id 352 -sm-time 4834 -sm-restart 0
memmonit -c /etc/memmonit/memmonit.cfg
/root/bin-target/deva-nvaudio -2 -1 -p 21 -i 26
/eso/bin/servicemgrmibhigh
autorunner
/ifs/jre/bin/j9 -Dipl.config.dir=/etc/eso/production -Dipl.config.myProcName=hmi -Djava.library.path=/ifs/jre/bin:.:/root/lib-target:/armle/lib:/armle/usr/lib:/armle/lib/dll:/eso/lib:/navigation:/navigation/lib -Dcom.ibm.oti.vm.bootstra
usblauncher -w 10000 -r -e -v -c /etc/usblauncher_otg.lua -M /etc/mcd_otg.mnt -t -l -m /ramdisk/pps -p 2 -s /mnt/app/armle/lib/dll/pubs -n /dev/io-usb/otg -S 1
sh /etc/boot/startup.sh
/eso/bin/apps/mediaconnector -v1 -map 0x11,0x10
./IRCOutpost
./bin/apps/fec -sm-name MMXFecService -sm-id 326 -sm-time 4840 -sm-restart 0
pps -m /ramdisk/pps -p /ramdisk/pps_dummy_persist
challenge -p 22111 -f
./bin/apps/persistenceTNG_mibhigh -sm-name persistence_mibhigh -sm-id 104 -sm-time 2572 -sm-restart 0
./bin/apps/diagnosis -sm-name MMXDiagService -sm-id 319 -sm-time 4836 -sm-restart 0
/sbin/ejectd
./slf -f /etc/slf/slf.cfg
devc-serusb -I 8192 -O 8192 -v -d path=/dev/io-usb/io-usb,vid=0x1e2d,did=0x60,busno=0x1,devno=0x1,ign_remove,module=wireless_modules
devp-iso-mmx-mib2 -R -S196 -i0 -B3 -P32 -Q24 -m/dev/mlb -MisoRX1 -v5 -p16
devp-iso-mmx-mib2 -T -S188 -i2 -B3 -P64 -Q18 -m/dev/mlb -MisoTX1 -v5 -p16
devb-eide-mmx eide noslave blk marking=none,cache=2m,ro cam resmgr,quiet mem name=/ram/dma cdrom timeout=20:10:7:7,retries=3
devp-iso-mmx-mib2 -R -S196 -i1 -B3 -P32 -Q24 -m/dev/mlb -MisoRX2 -v5 -p16
./bin/apps/medialauncher -sm-name medialauncher -sm-id 307 -sm-time 3081 -sm-restart 0
./bin/apps/connectivity_launcher -sm-name connectivity_launcher -sm-id 315 -sm-time 3087 -sm-restart 0
devp-iso-mmx-mib2 -T -S188 -i3 -B3 -P64 -Q18 -m/dev/mlb -MisoTX2 -v5 -p16
./bin/apps/smartphone_integrator -sm-name smartphone_integrator -sm-id 353 -sm-time 3091 -sm-restart 0
./bin/apps/systemservices -sm-name systemservices -sm-id 332 -sm-time 4844 -sm-restart 0
/armle/usr/sbin/wpa_supplicant -Bi mlan0 -c /ramdisk/wpa_supplicant.conf
/mnt/app/eso/bin/apps/media
/sbin/mnand_tlog -d /dev/mnand0 -p /mnt/persist/mnand_tlog.txt
/mnt/app/armle/bin/mmcsdpub -l -f /dev/sda0 -f /dev/sdb0 -m /ramdisk/pps -s /mnt/app/armle/lib/dll/pubs
/sbin/devb-ram blk cache=0k ram capacity=71680 disk name=hd13
/mnt/app/armle/bin/cdpub -l -f /dev/cd0:/dev/cam0/000 -m /ramdisk/pps -p 250:500 -n 12 -s /mnt/app/armle/lib/dll/pubs
/eso/bin/apps/connectionmanager connectionmanager 0
/mnt/app/eso/bin/apps/sseProc -sm-name sseProc -sm-id 347 -sm-time 7100 -sm-restart 0
./bin/apps/swdlclient -sm-name swdlclient -sm-id 318 -sm-time 7102 -sm-restart 0
./bin/apps/cinflash -sm-name cinflash -sm-id 343 -sm-time 7106 -sm-restart 0
/eso/bin/apps/btstack btstack 1
/eso/bin/apps/nad nad 2
inetd
/mnt/app/armle/usr/sbin/qdb -c /ramdisk/pps/qdb -o threadhi=16,threadlow=2,tempstore=/fs/tmpfs,profile,verchk=major -s de_DE@cldr -W 2500 -X /mnt/app/eso/bin/apps/database_corruption_handler
/eso/bin/apps/dnsmasq
/eso/bin/apps/dnsmasq
/mnt/app/armle/usr/sbin/mm-sync -c /etc/mm/mm-sync.conf
/mnt/app/armle/usr/sbin/mm-renderer -r /ramdisk/pps/multimedia -k
/mnt/app/root/bin-target/devm-nvavp -c
/eso/bin/apps/dev-upnp dev-upnp 5
./bin/apps/organizer -sm-name organizerProc -sm-id 310 -sm-time 10515 -sm-restart 0
/speech/SpeechLauncher -sm-name speechProc -sm-id 300 -sm-time 11013 -sm-restart 0
/navigation/navStartup -sm-name navigationProc -sm-id 311 -sm-time 11016 -sm-restart 0
./bin/apps/esosearch -sm-name esosearchProc -sm-id 336 -sm-time 11020 -sm-restart 0
ps -A -o args
./bin/apps/trufflesSpeech -sm-name trufflesSpeech -sm-id 455 -sm-time 13025 -sm-restart 0
/navigation/DRController deadrec /navigation/DRController.cfg
./bin/apps/esoposprovider -sm-name EsoPosProviderProcess -sm-id 349 -sm-time 11098 -sm-restart 0
/navigation/IconProviderApp iconprv /navigation/IconProviderApp.cfg
/navigation/PNavApp pnav /navigation/PNavApp.cfg
/navigation/AppStartATF navi /navigation/SignalMapper-1.5.cfg
./bin/apps/trdevapp -sm-name trdevapp -sm-id 345 -sm-time 29099 -sm-restart 0
./bin/apps/rselight -sm-name rselightProc -sm-id 358 -sm-time 29102 -sm-restart 0
./bin/apps/radiodata -sm-name radiodata -sm-id 350 -sm-time 31866 -sm-restart 0
./bin/apps/explorer -sm-name explorerProc -sm-id 317 -sm-time 33521 -sm-restart 0
devb-ram blk cache=512k ram capacity=10240 disk name=logos
/eso/bin/apps/messaging messaging 6
./bin/apps/rdv_controller -sm-name rdv_controller -sm-id 327 -sm-time 40274 -sm-restart 0
./bin/apps/mediarouter -sm-name mediarouter -sm-id 344 -sm-time 37146 -sm-restart 0
./bin/apps/rdiserver -sm-name rdiserver -sm-id 341 -sm-time 46464 -sm-restart 0
./bin/apps/voice_encoder_app -sm-name voice_encoder_app -sm-id 330 -sm-time 47846 -sm-restart 0
/bin/sh /net/mmx/mnt/app/eso/hmi/engdefs/scripts/ssh/usr/sbin/start_sshd
/net/mmx/mnt/app/eso/hmi/engdefs/scripts/ssh/usr/sbin/sshd -i -f /net/mmx/mnt/app/eso/hmi/engdefs/scripts/ssh/etc/sshd_config
-sh
OneB1t commented 9 months ago

regarding the DSI control i would try following try to connect to port 1797 after running DSITracer.jar based on this

extension.ctrl=de.audi.tghu.dsitrace.extension.ExternallyControlExtension extension.ctrl.port=1797

then try to execute following commands: "RegistryDump", "Mark", "VersionDump", "FileGet", "FilePut", "FileDelete", "MkDir", "Mount", "ScopesSet", "UserFunction", "StatsDump"

it looks like plain telnet but complete format of message is kind of unknown.. i believe that by this way it will be possible to add DSI message for VC

OneB1t commented 9 months ago

ok so today i managed to do little progress :-)

MicrosoftTeams-image (19) MicrosoftTeams-image (20)

by running this im able to show different picture on main screen and dashboard

export LIBIMG_CFGFILE=/etc/imgprocessing.cfg
export LD_LIBRARY_PATH=/eso/lib:/armle/lib:/root/lib-target:/armle/lib/dll IPL_CONFIG_DIR=/etc/eso/production
dmdt sc 4 -9
dmdt sb 0
loadandshowimage /mnt/app/eso/media/default.png
OneB1t commented 9 months ago

my idea now is to create image using pure bash :-D then send it to cluster this is working prototype but it will require to be much faster in order to make it work (any idea like writing using dd or something like that or can we create small java app?)

#!/bin/bash

# BMP dimensions (1280x640)
width=1280
height=640

# Calculate image size in bytes
image_size=$((width * height * 3)) # 3 bytes per pixel (RGB)

# BMP header
header=(
  0x42 0x4D 0x00 0x00 0x00 0x00 0x00 0x00
  0x00 0x00 0x36 0x04 0x00 0x00 0x28 0x00
  0x00 0x00 0x40 0x05 0x00 0x00 0x80 0x02
  0x00 0x00 0x01 0x00 0x18 0x00 0x00 0x00
  0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
  0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
)

# Function to convert decimal to little-endian hex
decToHexLE() {
    printf "%04x" $1 | xxd -r -p | tac -rs ..
}

# Output header as binary
for byte in "${header[@]}"; do
    printf "\\x$(printf "%x" $byte)"
done > monochromatic.bmp

# Create black pixel data (all zeros for a black background)
for ((i = 0; i < image_size; i++)); do
    printf "\\x00\\x00\\x00"
done >> monochromatic.bmp

# Function to draw a white line
draw_white_line() {
  local x1="$1"
  local y1="$2"
  local x2="$3"
  local y2="$4"

  local line_length=$((x2 - x1 + 1))  # Calculate line length in pixels
  local line_offset=$((54 + (height - y1 - 1) * width * 3 + x1 * 3))  # Calculate line offset in BMP data

  # Create a white pixel line (255, 255, 255)
  for ((i = 0; i < line_length; i++)); do
    printf "\\xFF\\xFF\\xFF"
  done | dd bs=1 seek=$line_offset conv=notrunc of=monochromatic.bmp status=none
}

# Draw a white horizontal line from (100, 100) to (500, 100)
draw_white_line 100 100 500 100

echo "Monochromatic BMP file 'monochromatic.bmp' created with a white line."

writing text will be hard but not impossible i think i can create each letter as texture then "put" it to black background to create working moving values

jilleb commented 9 months ago

Impressive work man.

I'll try to see if I can find some interesting source for data, like navi instructions. The cluster is capable of receiving data for navigation from Android/CarPlay, maybe we can make use of this.

OneB1t commented 9 months ago

My problem is that i can work like 1 hour in car as i do not have garage and my 12V battery have its limits 😄 anyway i will try to run small java program using j9 virtual machine.

this software is able to generate bmp file with text using just plain java :-D

https://gist.github.com/OneB1t/2241cab4aff77b733bc946880e8fbcaa

this managed to generate following :-) so letters and numbers are possible image

so basically this will be able to generate any informations and render them via MOST this code on my machine runs 6ms so even that it will be like 50ms on MIB2 it can be still quite fast :-)

OneB1t commented 9 months ago

ok so i been able to run j9 somehow with following line in shell export LD_LIBRARY_PATH=$JAVA_HOME/bin:.:$MOUNT_DIR/root/lib-target:$MOUNT_DIR/armle/lib:$MOUNT_DIR/armle/usr/lib:$MOUNT_DIR/armle/lib/dll:$MOUNT_DIR/eso/lib:/navigation:/navigation/lib

Licensed Materials - Property of IBM

J9 - VM for the Java(TM) platform, Version 2.3
(c) Copyright IBM Corp. 1991, 2011  All Rights Reserved
Target: 20110831_00000_lEdFGV (QNX 6.5.0 arm)
JIT  - 20070220_1806_r8

IBM is a registered trademark of IBM Corp.
Java and all Java-based marks and logos are trademarks or registered
trademarks of Sun Microsystems, Inc.

Usage:  /ifs/jre/bin/j9 [options] classname [args...]
Usage:  /ifs/jre/bin/j9 [options] -jxe:<jxeFile> [args...]
Usage:  /ifs/jre/bin/j9 [-jxe] [options] <jxeFile> [args...]

[options]
  -classpath <path>
  -cp <path>       set classpath to <path>.
  -jxe:<jxeFile>   run the named jxe file.
  -jxe <jxeFile>   places jxeFile on the classpath and executes the startup
                    class found in jxeFile.
  -jxespace:<physicalAddr>,<size>,<logicalAddr>
                   map memory region for jxes, (values are in hex).
  -jxeaddr:<logicalAddr>
                   run a jxe directly from memory, (address is in hex).
  -D<prop>=<val>   set the value of a system property.

  -debug:<options> enable debug, JDWP standard <options>.

  -jcl:<config>[:options]
                   specify which JCL DLL to use (e.g. cdc, cldc, ...).

  -verbose[:class,gc,stack,sizes]
                   enable verbose output (default=class).

  -verify          enable class file verification.
  -X               print help on non-standard options.

problem is that it requires .jxe file which i have no idea how to create... so maybe back to first idea to run it all inside bash also when im trying to run just j9 it is writing JVMEXEX015E which basically means out of memory :/

tayler-king commented 9 months ago

@OneB1t You can create a JXE file from a JAR file (and vice versa) using https://github.com/spacemeowx2/jxe2jar/

OneB1t commented 9 months ago

@tayler-king and is this also usable for IBM java? or there is different format?

tayler-king commented 9 months ago

@tayler-king and is this also usable for IBM java? or there is different format?

Yes it should work.