yashsingh1/xdaforums huggingface dataset:
[Android Head-Units] donaldta:
Are you sure? I looked at the WinCen website and couldn't find a single Android 4.0.3 unit. I even looked at all of the Nissan models as you suggested. It looks like it is all Android 2.3 or WinCE units. I even tried a Google Search across their website for Android 4.0.3 devices and couldn't find anything.
[Android Head-Units] niton:
yes, i'm sure. that is why wincen manager says, the android 4 firmware is not compatible with s150.

I already share this link .

Another seller confirm, that he has only one s150 unit with this firmware inside, he say they testing it, and the official firmware will be after chinese new year holidays, or in April, nobody knows exactly
[Android Head-Units] donaldta:
Ah, okay. I see now that you're referring to their web front on AliExpress not their own website. But, I am actually confused by that listing since it says "A8 Dual Core" in the picture however it says "Samsung S5PV210" in the specifications. If it is the Samsung S5PV210 then the CPU is a single core Cortrex A8 processor not dual core.
[Android Head-Units] niton:
its single core
[Android Head-Units] donaldta:
Right. I know it is, you know it is, but I don't think the reseller does.
[Android Head-Units] niton:
I told you, that is why they say it's firmware is not compatible with s150 android 2.3 unit.

I ask the seller to sell me the firmware, but...."this firmware is incompatible"
[Android Head-Units] donaldta:
That doesn't make any sense. What does that have to do with the reseller not knowing whether or not it has a dual core CPU or single core CPU?
[Android Head-Units] niton:
all what we should do is to wait, another seller start to sell this items.

I wrote to seller, who sold me my unit, he is comfirm that its not fake.

and everyone, who has problems with head unit need to wrote to seller, attach photos off known bugs and ask seller about the update!

It's should work! there is no another way do get updates of the firmware!
[Android Head-Units] KoTiX2:
Winca/roadnav have always dispatched the unit as a dual core even if it's not, they did it since S100 came out more than 1 year ago.

I'm not even sure about the onboard ram size... 512 MB? Uhm... On my s100 i've seen just a single 256 MB chip...

Edit: on android task manager shows 380 MB ??
[Android Head-Units] rubyme8:
Ahhh that was it, thank you so much for that very helpful piece of info! The SD-Flasher did not work for me though, I had to run the sd_fusing.sh to get it to boot from the SD card. I'm now successfully running with 4.03. A few things I noticed quickly, the interface seems to behave much better and typing/scrolling seems much more precise. I really like everything about the android 4 interface. However the one big issue for me is the constant hissing that was not present before, also it seems there are no DSP options or subwoofer level adjustments.
[Android Head-Units] adit9989:
Don't take Chinese resellers advertising to serious. They tend to exaggerate. They advertised the SoC "A8 as the same as in iPhone" (is not, it's a Cortex A8 which is an older SoC found in tablets 2-3 years ago, which was upgraded to multicore A9s (and A15, A7 more recently).). S100 and S150 use the same hardware, an WinCE does not support multicores, it never did. Sometimes they refer to the DSP as a "core" which is misleading. I even seen advertising for some units where they add the CPU and DSP and Video chip frequencies together and get something like 2.4 GHz (where the CPU runs in fact on 1 GHz or lower). So always check the SoC spec sheet, before getting to enthusiastic about some new device.
[Android Head-Units] KoTiX2:
@rubyme8 Glad you got it working :)

A small update about my progresses:

1) Finally the GPS speed mod has worked! But... not as expected :( The speed now is almost 1/4 of real speed :confused: I need to investigate more on this code:

.method public getSpeed()F
.registers 6

.prologue
const v1, 0x3F03B2A1

.line 560
iget v0, p0, Landroid/location/Location;->mSpeed:F

mul-float v2, v0, v1
return v2
.end method

or maybe find an alternative number to this 0x3F03B2A1?

2) I was able to modify the installer (edify) script to don't use the packed system.img file but use the system folder unpacked instead, gaining some seconds in the update procedure and making mods more easy now :)

Next I'll try to remove the data wipes from the update script so I don't have to reset all my settings everytime.

and for last .... yes... I'm having fun :D
[Android Head-Units] donaldta:
I'd like to start off to convey the point that I hate reading Dalvik smali code. I can barely understand it but I tried to (poorly) translate above with my notes above. As I understand the problem is that the GPS in the affected units is reporting the speed in terms of knots which is 1.852 kilometers per hour, whereas the Location.smali class in the framework.jar expects the value in meters per second.

The idea of multiplying the received value by 0.5144444 makes sense, since 1 knot = 0.5144444 meters per second. So, 10 knots is equivalent to 5.14444 meters per second. What I do not understand is the value specified "0x3F03B2A1" in the modified smali code which is a 32 bit hexadecimal number that equals 1057206945 in terms of a base 10 decimal number. So, either I've lost the plot or the code doesn't make sense.

Btw, I used Dalvik opcodes table as a reference for translation.
[Android Head-Units] donaldta:
:eek:

Okay, this is what I get for reading top to bottom while overlooking "mul-float(ing point)" and assuming it was "mul-int(eger)". I corrected values in the previous post above so it makes more sense. The calculation actually uses floating point multiplication and not integer multiplication. Duh!

Btw, I was thinking about it and if the "workaround" is reporting quarter of the actual speed then maybe your GPS isn't reporting the value in knots but another unit of speed. Perhaps you and a friend can record the speed difference at each multiplication of 10 while one of you drives. Then we can figure out the actual reported measurement to adjust the calculation accordingly.
[Android Head-Units] DenisMS79:
At least some progress in that decision. Good job!
[Android Head-Units] KoTiX2:
Ok guys nevermind, I installed Sygic and it's reporting the RIGHT speed now!! :D:D:D:D:D:

The code is correct, the gps monitor utility from winca is reporting a wrong speed but sygic is right, even if I couldn't test it at high speeds because it's snowing today here.

I'll try maybe some other apps (any free suggestion?) but i beleive we can move over.
[Android Head-Units] stief:
The value looks good to me.

to bad it doesn't give the correct speed:crying:

---------- Post added at 08:42 AM ---------- Previous post was at 08:36 AM ----------

Oops...

Didn't read the last post :o

Good wok KoTiX !!! :good::good:
[Android Head-Units] DenisMS79:
I have three different applications shows equally wrong.

Can a problem with drivers for the GPS?
[Android Head-Units] KoTiX2:
You'll find the fix on the link below so you can test it:

https://www.dropbox.com/s/4214u7lmpunstms/update_S150A.zip

It's NOT the full ROM, use the zip to replace the one in your previous 4.03 fw.

It will NOT update the BT, Flash and MCU.
[Android Head-Units] DenisMS79:
At the weekend I'll try to deliver and test.
[Android Head-Units] donaldta:
I want to point out that WinCE does support multiple cores. It is true that Windows CE 6.0 (and below) had no support Symmetric Multi-Processing (SMP) but it has been supported from Windows CE 7 (and up) which was released in 2011. There is even a short Microsoft Technical Guide for SMP on WinCE 7.
[Android Head-Units] Franky692:
2544364 949

Has anybody replaced the main board of the head unit S150?

Probably I'm unlucky but after 1 week I have seriuos problems on PRE OUT connections with my amplifier...

So I'm taking agreement with the supplier about replacement for my main board, and in the while I think to ask for one with DSP.

I hope to be able to replace the board myself.... so every comment or advice is welcome :crying:
[Android Head-Units] KoTiX2:
Another good news today, i've found which application start the radio and the other winca services when running the default launcher and doesn't start with aftermarket launchers.

Now i need to understand how to run this apk at startup independently of the launcher used... Any idea? Possibly without using other apps?

(It's a system apk.)
[Android Head-Units] donaldta:
It is explained in this stackflow article, "How to Start an Application on Startup?. If you don't want to use another app to do it then you'll need modify its manifest and add a boot receiver to launch the intent. Otherwise you can create your own startup apk that launches that APK's intent.

A more non-technical approach is to use a boot manager or automation app, like Tasker to launch the app upon start up.

Btw here is an example of how to find the package name using package manager, dumpsys to get the intent and launch it using activity manager.

# [COLOR="RoyalBlue"][B]pm list packages | grep term[/B][/COLOR]
package:com.android.term
# [COLOR="RoyalBlue"][B]dumpsys package com.android.term | awk '/filter/ {print $2}'[/B][/COLOR]
com.android.term/.Term
# [COLOR="RoyalBlue"][B]am start -n com.android.term/.Term[/B][/COLOR]
[COLOR="gray"](the application appears on the screen)[/COLOR]

---------- Post added at 12:51 PM ---------- Previous post was at 12:36 PM ----------

Here's a small APK that does just that Starter_100.0.4.apk.
[Android Head-Units] KoTiX2:
Tnx Donald, quick answer as usual :P

I was thinking something like that too, I just had no time to google for it ;)

For the initail tests i'll try first a starter app but Tasker crash on our 4.03 fw (don't know why). I was thinking to use "llama" as starter app and i'll try yours too, btw i don't know if these apps will see the system apk because it doesn't show up in the drawer, maybe I'll need to mod it too to make it visible, (i've read somewhere how to do it).

I want to ask you another thing about the swc controls we have talked about...

I disabled all the "winca services" and ran again the keytest.apk but nothing changed. The only buttons that are recognized are the "menu" and the the "phone" buttons not the "next" and "prev" ones.

Btw in Poweramp the Menu button works, don't work the Next/prev ones (as expected). Do you have any idea why?

Ciao ;)
[Android Head-Units] royalhawk2002:
Is this system app, for the radio, launching only fmradio.apk, or it will start some other task (like drivers, etc)? I ask this because when I tested another radio apk I see everything on the UI, but the radio itself i not working.
[Android Head-Units] stief:
It's pretty easy to dismantle. You can easily spot the screws and connectors.
[Android Head-Units] stief:
Hey KoTiX,

Good to see you making progress.

Will try you GPS fix tomorrow.
[Android Head-Units] donaldta:
The manifest requires the following to show up in the App Drawer. It will appear with a generic icon if one is not assigned to it. This how most proxy launchers will pickup on whether an app is launchable or not.

<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>

One possibility is that the individual apps are listening to a special socket that MCU uses to communicate with it. Another possibility is that there is a different app that is running that is listening for those keyevents and cockblocking it for the rest of the unit. Maybe try plugging in a USB multimedia HID keyboard to see if the media keys work. Though, that will only tells us if it is cockblocking all the input devices as opposed to a specific one.

Maybe paste the output of "cat /proc/bus/input/devices"

Btw, I don't remember whether or not if you said a scancode and device id was found along with keycode and keyevents from the keytest app while pressing the menu and phone buttons.
[Android Head-Units] KoTiX2:
Great ;) my tachometer sometimes show 5-10 km/h more than sygic.

@donald yes keytest shows scancode etc for phone and menu.
[Android Head-Units] stief:
Maybe your driving to fast then an Sygic can't keep up :) :)
[Android Head-Units] donaldta:
I'm surprised that they didn't already setup the APK to launch on its own. I bet the stock launcher is starting it up via "com.winca.service/.StartService" intent. If I get a little free time I might download a copy from your deodex apps in the dropbox to take a look.

To bad you don't have root yet. lol. All of this is much easier to figure out with root access.

---------- Post added at 02:56 PM ---------- Previous post was at 02:55 PM ----------

Screenshots please. Need more info.
[Android Head-Units] donaldta:
This is because all the classes in this APK are being registered as services instead of activities. I believe that you would be able to get away with adding the following right below the application header but before the first service header.

[COLOR="Silver"] <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:name=".AppGlobal" android:persistent="true" android:theme="@style/Theme.Wallpaper">
[/COLOR] <activity android:name=".BootReceiver">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
[COLOR="Silver"] <service android:name=".StartService">[/COLOR]

I saw that. Are you sure this service isn't actually being loaded after it boots with a different 3rd party launcher? Check Settings > Manage Applications > All. Then open the package or application name, the "Force Stop" button will be greyed out if it isn't running.

The "android.uid.system" SharedUser ID is going to be the big problem trying to modify this package. This means the package will need to be signed by the same keystore as the ROM and all the other applications that share the same SharedUser. You won't be able to get away with signing it with a random key.
[Android Head-Units] KoTiX2:
Well, I'll have to check maybe better but I've used "service killer" app to check which services were running and none of the winca.services were there.

Ok so if there is no way to modify it, I'll try using startup managers to autorun it on boot.
[Android Head-Units] donaldta:
I'm curious. Are you referring to Service Killer? I installed onto my Nexus 4 to take a look at its accuracy. It did NOT even show my Volume Control which runs as a service so that I can see a volume slide on the right side of my screen in any app. Did you try it with the default Launcher to see if it can see service as well?

I'm still pretty sure the service is loaded at boot because of the "android.intent.action.BOOT_COMPLETED" receiver declaration in the AndroidManifest.xml file. It might not be following up with what needs to be done as with the stock launcher but I'm positive it is being loaded.

Try something in a terminal window, "am start -n com.winca.service/.StartService" to see if it loads. That should load the service via intent similar to how a startup manager would.
[Android Head-Units] Franky692:
Thanks, I will have the new board with DSP after chinese new year so after 5 of february....

Hope to see some differences in sound quality.
[Android Head-Units] stief:
Tried KoTiX's gps fix today. Big improvement. The speed seems correct. Will compare it with my phone tomorrow.

It still looses the GPS signal sometimes for about a second in Sygic but it's not problematic.
[Android Head-Units] donaldta:
Hmm... have you checked the connection of the GPS antenna? Maybe a loose cable is the reason for these losses. I've seen a lot of people complain about losing their GPS signal because the original installer fit the cable loosely and it became looser as they drove. Some of the cables even fell because they were so loose. All because some loser installer didn't bother to tighten the connection. Sometimes I wonder if these guys intentionally loosens the connections so they can re-charge their customers for a repeat visit when they lose signal.

I'm pretty sure the fix wasn't meant to prevent the GPS from signal losing the signal. I believe it was to address the speed translation due to GPS chip reporting the units in knots as as opposed to the expected meters per second.
[Android Head-Units] KoTiX2:
Hi donald, I did some more tests, I'll post some pics later today:

1. the command "am start -n com.winca.service/.StartService" don't work because it doesn't see any activity with that name

2. I'm sure that it is the service that is needed to run all the winca apps, and I'm almost sure the code is correct but somehow seems that the boot is not complete if the original launcher doesn't start. Is there a way to check if it's completed or not?

3. will it be possible to implement init.d to start the service without root access?

4. i'll post pics of buttons scancodes later.
[Android Head-Units] stief:
It's no hardware or connection error.

I'm having this since first flashed Android.

Its not a real problem. Connections sometimes drops for about a second. The main thing is speed is correct and makes navigation a lot easier now. Before I got instructions sometimes 20 sec. before I needed it.
[Android Head-Units] donaldta:
Hmm... I was afraid of that. I always get confused on how the AndroidManifest.xml declares the intents vs how they are registered on the Android system. I'd tell you to run "dumpsys package com.winca.service" if you had root or adb access then you would be able see the valid intents to launch them via Activity Manager.

Well, I don't doubt that service is needed to manage or initiate the other WinCa services. My doubt is in how your checking if it is loaded during boot and if it is still running when you check it.

As I indicated earlier, the "Service Killer" app is inaccurate as it did not show me half of the services that I know were running on my Nexus. It only showed me the services which are publically visible to the associated UserID of the app. That is why I asked you if you had checked if the WinCa service was shown in the app while the system booted up with the stock launcher set as default.

The most obvious way to get the information is from logcat but you would need either adb or root access to be able to get the boot sequence information. As for the boot complete broadcast, that is issued by Android OS not the launcher. So, it doesn't matter which launcher is used for the Boot Completed broadcast to be sent. You can always mimic it by sending "am broadcast -a android.intent.action.BOOT_COMPLETED" through a terminal app or adb shell and all the programs that react to it will respond accordingly.

My greater concern is that the stock launcher or some other app associated with it is actually initiating the intents through the WinCa service. Pretend you are a customer at fast food store. You go up to the clerk and order a burger. That clerk takes your money and relays your order to the cook which prepares your meal. In this analogy, you are the stock launcher (or some other app), the clerk is WinCA service, and the cook are the individual services and the the meal is the individual function.

You cannot do anything with init.d without root. Besides, that's the Linux layer of things. You seem to be having problem after the init.d is complete and launches the Android at the current runlevel.

:good: Thanks. The extra information might give us a better idea of where to look.

---------- Post added at 10:23 AM ---------- Previous post was at 09:31 AM ----------

Heh, heh. I was kidding. That was my not so subtle yet very elaborate away to point out that you misspelled, "loses" and instead used a word that is the opposite of tight as opposed to gain.
[Android Head-Units] KoTiX2:
Terminal error trying to run the service:

Input devices:

Scancodes for menu and phone:

Service killer:

I used "service killer" because the winca service doesn't show up in the "Settings\apps\running" screen, there is only a wincaservice in the "all" section but that wouldn't tell me if it was running or not.

The temptetion to open the unit an solder the otg cable is becoming bigger every day. :P
[Android Head-Units] donaldta:
I was playing with Service Killer and Activity Manager a little bit with services that I could see. Found out that "am start" is for actions, whereas "am startservices" are for services.

Hmm... since this is a service let's try "am startservice -n com.winca.service/.StartService -a com.winca.service.StartService"

I probably should have told you to use "cat /proc/devices/input/devices > /mnt/sdcard/input.txt" so you could have just uploaded a file. A screenshot is nice but was there further information going down or were they the only two listed?

This is actually good news. Are you able to customize the SWC to Function pairing? If so then we might to be able to use a customized.kl file to spawn key events of your choosing.

That would make things a billion times easier. Even more if we had root.
[Android Head-Units] KoTiX2:
OK tomorrow i'll try the "am startservice" command but i don't understand how could we use that command if it works.

How will we run it at startup?

The input devices were only those two, just the last 2 lines are missing from the pic.

I don't understand what you mean by customizing swc to function pairing, can you explain it a little more.

Next week i'll solder the USB otg and maybe i'll try cydia impactor to gain root.

Thanks man for all your help, sooner or later i'll start calling you "master"! ;)
[Android Head-Units] donaldta:
Well, this is one of those things where we need to learn how to crawl before we can run, right? The idea is check to make sure that specific service works and if it does anything for the system while using a third-party browser as default. Besides, I'm sure there are plenty of other apps that you haven't tried. I know tasker force closes on you but there are Tasker alternatives which might also work. Btw, did you try all three versions of Tasker? Just because one fails doesn't mean they all do.

Heck, I may be even have a go and try to program an app to do it.

Well, you have physical SWC buttons on your steering wheel and you have S150 functions. So, when you push a button then a function is initiated. I was wondering if you can customize it so that your SWC buttons are actually calling other functions. Here's my idea, if you can change all the buttons on your steering wheel so that they all have unique scancodes then we can remap the scancodes to keyevents using a custom keylayout.

For example, let's say you have eight keys on your SWC. If you can program the S150 so each key program the "Next" button to "MCU_RADIO" function, the "Prev" button to "MCU_DVD" fuction and so on. That way when you press "Next" button on your SWC the S150's MCU will emulate the 594 scancode in Linux. If we had a custom keylayout file that says "key 594 MEDIA_NEXT" then that button will execute the keycode 87 which is the MEDIA_NEXT key event.

Cool.

You're welcome. Glad to help.
[Android Head-Units] KoTiX2:
Ok , the "am startService" command did the job perfectly this time, the strange thing is that the radio screen show up without pushing the radio button, playing normally of course but it seemed like if the winca service maybe "remember" the last running app before turnig off the unit(maybe??)...i need to investigate more.

I just need to find the one that can set as action an hidden system app.. it will take some more time, I hope somebody else S150 owner will help me on this. :confused:

Well, if you can write down a small shortcut app that I can put in the system folder so we don't need a tasker to do the job, will be great

I know we can change the buttons functions throught this file:

https://www.dropbox.com/s/1qpevlo4x8j8iim/ADSet.xml

and this one is used to store the keys values:

https://www.dropbox.com/s/km2iag6kjdd30h0/WheelValue.xml

I hope these files are what you were looking for :)
[Android Head-Units] donaldta:
Hmm, a little confused by your request. I made this using Tasker and Tasker App Factory plug-in. Not sure it will work. I found some OS versions require this method to be ran as root.