General Modding your Joying/FYT SC9853i unit without root

Search This thread

Gaugamela

Senior Member
Feb 12, 2016
89
19
The AF should find the strongest alternative frequency for the radio station.
If you use AF on the FYT radios it will simply search for the strongest radio frequencies, no matter the radio station.

But that was until the sc9853i. I do not know if they improved that on the 7862 and 9863a. I hope some owner of such a FYT unit can answer that.
The problem is if it doesn't catch the station that you memorized it won't look for it in the strongest frequency.
Example, I'm in city one listening 101.30Mhz station 1. In city two, this station is in frequency 105.00Mhz, but I memorized 101.30Mhz. I start the car and it won't change from 101.30Mhz to 105.00Mhz. Now do this for all my memorized radios.
 

PieterD82

Member
Nov 11, 2020
29
6
If i can just add my 2 cents on the (FM) radio debate. Why are we still chasing this aging tech that (in Europe) has been announced to die off in the coming years? I've invested in a cheap DAB+ USB stick and running @realzoulou 's DAB-Z with no complaints and much higher sound quality... I mean, just saying...
 
Last edited:

mashrom

Member
Oct 22, 2019
32
1
Good Day,
Is there an App that I can install to read from the CANbus and present some extra engine data on the screen instead of OBD?

Cheers!
 

Gaugamela

Senior Member
Feb 12, 2016
89
19
If i can just add my 2 cents on the (FM) radio debate. Why are we still chasing this aging tech that (in Europe) has been announced to die off in the coming years? I've invested in a cheap DAB+ USB stick and running @realzoulou 's DAB-Z with no complaints and much higher sound quality... I mean, just saying...
I'm asking about this because my country does not have nor will it have a DAB system.
 

PieterD82

Member
Nov 11, 2020
29
6
I'm asking about this because my country does not have nor will it have a DAB system.
Right, ok. That makes sense. It's a bit strange that your country would not invest in this technology. I would not dismiss it completely. Eventually they will have to get with the modern times i would assume.
 

surfer63

Senior Member
May 4, 2010
6,602
3,968
Zwolle
github.com
Can we change the default ringtone when someone called us on bluetooth ? I hate nokia tune music.
Yes.
Download the ringtone.zip file from my SC9853iBinRepo github.
Unzip it to a clean Fat32 USB-stick.
In the lsec_updatesh folder you copy your mp3 ringtone and make sure the ringtone is called "blink_ring.mp3".
Put the USB-stick in your unit and wait till it has rebooted and installed it.
It sometimes requires 2 reboots. I don't know why.
 

ScottScottC5

New member
Dec 28, 2021
1
0
Sorry if this has been addressed already....I am just finding this forum, searched and looked back a couple pages but couldn't find.

Has anyone figured out a way to adjust screen display down without rooting?
 

surfer63

Senior Member
May 4, 2010
6,602
3,968
Zwolle
github.com
To modify the radio stations, open the apk with 7-zip. Do not add or remove files. Only update the existing files. Keep the file names the same. This will be the easiest way to add/modify stations.

Modify the radio_freqs.json file within the res/raw directory. You can add entries or modify existing entries. Use a text editor that uses Linux type formatting, such as Notepad++. Each entry is something like:

"freqName": "KLOS Rock Station",
"freqLogo": "CA50",
"freqNum": 9550,
"cityName": "Los Angeles",
"userRadios": []

freqName is the text displayed for the station.

freqLogo is the filename of the station image. For example, in the above, the image file would be named CA50.png

freqNum corresponds to the radio station frequency. When tuned to 95.5MHz FM, then this information is displayed.

cityName corresponds to the city name that must be specified so the station data is used. For example, when "Los Angeles" is specified for the radio station, all stations that have cityName of "Los Angeles" will be used. You specify your city by going into the radio settings by clicking on the little disk image on the bottom of the radio screen...2nd from the right.

Make sure you don't miss or add any quotes. If you do, the whole file may be ignored as it won't be valid JSON format. If you're curious about JSON, there are many examples and lots of info found by Google.

Only 18 (6 x 3) stations can be selected for display on the screen. You can choose to only have 18 entries of your choice or all of those in you area. When scanning for stations, all entries that match will display the logo you specify.

For station logos, replace existing files in the res/drawable-nodpi-v4 directory with the logo file(s) you provide. They should match the same format as those you replace. Some formats may not work. If the image has an issue or can't be found, a default image is displayed.
@mastrv
Reviving this very old post.
I tried to do this with all Dutch, Belgian and German FM-stations (3675 entries, 600 logos), but can't get it to work.
I did it like this as I don't want to do it only for myself but for the community. Not just add my 5-7 own favorites (and to that point: I removed a number of German favorites, which were really send in by some egoist where he did not even specify the correct city but the city where he lived (I assume)).
I did exactly what was in the Russian 4pda posts and what you describe here, but I can't make it work.
I ran my radio_freqs.json through jsonlint and two online json validators and it is a perfectly fine json.
The "original" radio_freqs.json contains 26163 lines. My version contains 48216 lines.
It simply doesn't work.
Then I realized that all resources need to get an id in "older" android versions (in /res/values/public.xml), so I used "apktool d" and updated that one as well. And recompiled with "apktool -c b" and "apktool b", but that doesn't work either.
And indeed: not one city works afterwards.
(Using unzip/7zip or apktool doesn't make a big deal if you know what you do)

You write
Only update the existing files. Keep the file names the same. This will be the easiest way to add/modify stations.
.....
.....
freqLogo is the filename of the station image. For example, in the above, the image file would be named CA50.png
.....
.....
For station logos, replace existing files in the res/drawable-nodpi-v4 directory with the logo file(s) you provide.

What did you do?
  1. Add your CA1234.png files?
  2. Replace the necessary number of ru123.png (or one of the other countries) with your CA123.png files?
  3. reneamed your CA123.png files to ru123.png files (or one of the other by*.png de*.png gr*.png kz*.png md*.png my*.png ru*.png ua*.png files?
This all as preparation for my soon to receive FYT 7862 ;), but if I can't make progress, I will switch back to DAB or to the Navradio+, if it has proper RDS.
 
Last edited:

mastrv

Senior Member
Jul 1, 2010
316
101
@mastrv
Reviving this very old post.
I tried to do this with all Dutch, Belgian and German FM-stations (3675 entries, 600 logos), but can't get it to work.
I did it like this as I don't want to do it only for myself but for the community. Not just add my 5-7 own favorites (and to that point: I removed a number of German favorites, which were really send in by some egoist where he did not even specify the correct city but the city where he lived (I assume)).
I did exactly what was in the Russian 4pda posts and what you describe here, but I can't make it work.
I ran my radio_freqs.json through jsonlint and two online json validators and it is a perfectly fine json.
The "original" radio_freqs.json contains 26163 lines. My version contains 48216 lines.
It simply doesn't work.
Then I realized that all resources need to get an id in "older" android versions (in /res/values/public.xml), so I used "apktool d" and updated that one as well. And recompiled with "apktool -c b" and "apktool b", but that doesn't work either.
And indeed: not one city works afterwards.
(Using unzip/7zip or apktool doesn't make a big deal if you know what you do)

You write


What did you do?
  1. Add your CA1234.png files?
  2. Replace the necessary number of ru123.png (or one of the other countries) with your CA123.png files?
  3. reneamed your CA123.png files to ru123.png files (or one of the other by*.png de*.png gr*.png kz*.png md*.png my*.png ru*.png ua*.png files?
This all as preparation for my soon to receive FYT 7862 ;), but if I can't make progress, I will switch back to DAB or to the Navradio+, if it has proper RDS.
The key is not to add any files. This is all from memory as it was a while ago.

Any new logos should replace existing logo files. So replace RU01.png with the new logo but retain the same file name. Case is significant and matters so it must have the exact name.

For the JSON changes, you can add the new stations to the end of the file pointing to existing logos. More than one station can point to the same logo.

When I was doing this, I was having a problem when I was updating my JSON file. It seemed no matter what I did, changes weren't being picked up. It ended up being a quote/apostrophe near the end of the file that was throwing off the strings and causing the entire file to be invalid. I found it using Notepad++ with a JSON syntax file. I prettified the text which put it into a readable format and visually colored the elements. I could then see the error easily. If you've validated it, it should be OK, though.

You can send or post the json file and I'll have a look. Couldn't hurt.
 

surfer63

Senior Member
May 4, 2010
6,602
3,968
Zwolle
github.com
Any new logos should replace existing logo files. So replace RU01.png with the new logo but retain the same file name. Case is significant and matters so it must have the exact name.

For the JSON changes, you can add the new stations to the end of the file pointing to existing logos. More than one station can point to the same logo.

You can send or post the json file and I'll have a look. Couldn't hurt.
Thanks for your quick reaction.
The current apk has 766 logos. My 600 logos will fit in that range. Just a case of comparing/renaming/vlookup from some spreadsheet (and keep the administration).
Otherwise I simply send my entire spreadsheet, json and logos to T'eyes and wait till they have added it :)

I am pretty sure my json is correct. Like mentioned I did a (very rigid) json validation with jsonlint and two online json validators.
 

mastrv

Senior Member
Jul 1, 2010
316
101
I would try a few before doing the entire 600 just to make sure it works before spending too much time on it.
 

surfer63

Senior Member
May 4, 2010
6,602
3,968
Zwolle
github.com
:)
Of course. I finally ended with adding 6 stations, but that didn't work.
Now I will start with 6 stations.

I tried with a few and that works. But not with a full set. I am 100% sure my json is correct, but I think the json parsing is bad. The file has to be UTF8, but I assume they do not correctly parse all UTF8 characters. And probably they do something special for Cyrillic and Chinese characters.
I simply give up. It is too tedious. And then the RDS-AF is really terrible.
I go back to DAB+. Works great and I have nothing to do.
 

mastrv

Senior Member
Jul 1, 2010
316
101
Yes, it has to be UTF-8. You can send or post the json and I'll have a quick look, if you want. Hopefully, there won't be too many issues with your new head unit.
 

surfer63

Senior Member
May 4, 2010
6,602
3,968
Zwolle
github.com
Yes, it has to be UTF-8. You can send or post the json and I'll have a quick look, if you want. Hopefully, there won't be too many issues with your new head unit.

I really appreciate that, but that would really take a lot of your time. I added below manually to radio_freqs.json (before the "end hook" and "end bracket").
Code:
, {
            "freqName": "Radio 538",
            "freqLogo": "gr044",
            "freqNum": 10230,
            "cityName": "Overijssel",
            "userRadios": []
        }, {
            "freqName": "SkyRadio",
            "freqLogo": "my004",
            "freqNum": 10100,
            "cityName": "Overijssel",
            "userRadios": []
        }, {
            "freqName": "NPO 3FM",
            "freqLogo": "gr015",
            "freqNum": 9620,
            "cityName": "Overijsssel",
            "userRadios": []
        }, {
            "freqName": "NPO Radio 2",
            "freqLogo": "gr018",
            "freqNum": 10460,
            "cityName": "Overijssel",
            "userRadios": []
        }
And copied my logos over the existing logos.
All work apart from the "NPO 3FM". I checked by now the json also on hidden strange characters, I checked the logo. I even replaced that logo simply by the NPO Radio 2 one, I made it use the SkyRadio logo, I changed the order, I simply completely retyped that NPO 3FM part. And to keep it simple: I replaced the cities with a few big stations with regional (county/state) coverage.
It doesn't work for "NPO 3FM", but does for the other 3.
And in general: I do everything automatically from tables, using scripts, spreadsheet vlookups, etcetera. If it goes wrong, it should go wrong for all.

And like mentioned before: The RDS-AF only works for memorized stations. If I want to follow one station through the Netherlands, I need to add 4 frequencies (or more) and memorize them. It seems the radio app/mcu does not interpret the RDS-AF signal itself, but it seems to check (part of) the RDS data it has for a certain station, with RDS-data from other memorized stations. If part of it is equal (which part?) with that other station (which you have to have memorized, otherwise it can't compare) and that station is stronger, it will switch to that station. "Real" RDS-AF should check the alternate frequencies inside the signal. Not do a "does some of the data look like one I already have in memory".
I am a "restless" listener and listen to multiple stations. I switch when there is talking I don't like, a song I don't like, etcetera. I can't even memorize those in 18 presets.

So again: Thanks for your offer, I really appreciate it, but I am now completely done with that stupid, incorrectly programmed FYT radio app. It will never suffice my needs.
 

hide598

Senior Member
Jul 3, 2011
74
5
Is there a way to change the night mode timer so night mode is on all the time? Thanks.
 

surfer63

Senior Member
May 4, 2010
6,602
3,968
Zwolle
github.com
Is there a way to change the night mode timer so night mode is on all the time? Thanks.
Yes, connect the ILL wire to the ACC wire. In that case, as soon as you switch on your contact, the unit will always think the headlights are on and will switch to night mode. Note that this will also make the leds in your buttons constantly on.
I use this as well and personally like the buttons to lit up constantly.
 
Last edited:
  • Like
Reactions: marchnz

hide598

Senior Member
Jul 3, 2011
74
5
Yes, connect the ILL wire to the ACC wire. In that case, as soon as you switch on your contact, the unit will always think the headlights are on and will switch to night mode. Note that this will also make the leds in your buttons constantly on.
I use this as well and personally like the buttons to lit up constantly.
Thanks. I know that’s the easiest way but I don’t know how to hardwire.. so I’m trying to see any method to solve it through software side..
 

PieterD82

Member
Nov 11, 2020
29
6
Thanks. I know that’s the easiest way but I don’t know how to hardwire.. so I’m trying to see any method to solve it through software side..
I went a step further and put a switch in that wire. My car has automatic headlights and i don't always want the screen to dim as it flicks on the headlights at dusk or dawn. My switch is set up that it only interrupts the wire but you could connect it in the way @surfer63 suggests and put a switch making it effectively a manual hardware switch for turning it on and off independant of your headlights.
 
  • Like
Reactions: surfer63

Top Liked Posts

  • There are no posts matching your filters.
  • 11
    See title: Only for SC9853i Joying/FYT 8.1 units.
    Due to some changes in the flashing process since the previous PX5 and Sofia 3GR models it is now partly possible to mod your unit without root.

    Some info to start with:
    (partly from 4pda, partly from a "hint" from @julien_blanche, mostly from own knowledge)

    Contents of a firmware zip:
    Code:
    6521_1.zip           # The zip that contains the boot.img; the system/vendor/oem partitions and a few other things.
    Allapp.pkg           # Special file that contains all FYT apps (actually a special XAR archive.)
    config.txt           # file comparible to the build.prop which can contain additional properties
    lsec6521update       # The binary that really does the update
    oem                  # Folder containing some additional apps
    Stm32ud.bin          # The MCU binary. It is not always in every firmware
    updatecfg.txt        # Contains instructions for the flashing process
    crruptoff            # Special file for "WiFi only". Not in the normal firmwares. Be careful!


    Some commands that can be put inside updatecfg.txt
    Code:
    twipe_all     # Wipe entire system
    twipe_data    # Will wipe data partition (but not /sdcard, internal memory). Wiping the /data partition will wipe all config, all 3rd party apps and updates of system apps. This is the same as a "reset to factory defaults"
    twipe_sd      # Will wipe internal memory /sdcard (but not the data partition)
    dellapp       # Remove all 3rd party apps
    make_updates  # Make an upgrade U-disk boot file
    test             # test unit and firmware before flash

    Some properties that can be put inside config.txt. Say you live in Brazil and you want your locale settings immediately on Brazil, you can add that, for example:
    Code:
    ro.product.locale = pt_BR

    The file crruptoff:
    If you have a unit with a 4G module, but you don't have 4G (or don't want to use it), you can use this file. Put one line in this crruptoff being "fixwifi" and save it to the sdcard/usb-stick you use for flashing.
    You can use it to get rid of the "No SIM" notification in your notification bar.
    Does not work anymore on the later firmwares. Chances are minimal but maybe it might work again "some day".

    The Allapp.pkg
    The Allapp.pkg file is a special XAR archive with a directory structure. You can use ApkPack.exe to create or extract it.
    Folder path: This is where your files are being extracted to, or packed from
    File path: This is the file that is being created (packed), or where the files are extracted from.
    All apks (*.apk) and all libraries (*.so) will be installed as system apks and libraries, which means you can't uninstall them, but on the SC9853i units they are installed under /oem and not under /system.
    Inside this Allapp.pkg you will also find two other files: fyt.prop and skipkillapp.prop.
    The fyt.prop is identical to the build.prop but gives the option to add extra properties or replace/modify properties in the build.prop.
    The skipkillapp.prop contains apps (package names) with values from -15 to 15.
    When going into "deep sleep" the packages not mentioned in this list will be killed. Applications in this list with positive values will absolutely be killed (unstable otherwise??). The ones with higher values first. The ones with values 1 and 0 as last, where the app with value 0 will be the last killed before going into deep sleep.
    The apps with negative values are considered system apps and will not be killed. In this case the most negative number (-15) has the highest priority. My assumption (not tested, not verified) is that negative numbers approaching 0 might be killed if the system needs the memory?
    So in other words: If you do not want that some of your apps are killed, you can add them to this "skipkillapp.prop" by their package name. Say you use @realzoulou's DAB-Z app, you would add a line for DAB-Z (com.zoulou.dab). Or for example if you are a Tasker user, which is normally killed as well:
    Code:
    com.zoulou.dab = -10
    net.dinglisch.android.taskerm = -10
    (I would suggest not using values like -15, -14, -13 to make sure you do not really interfere with the real system apps).
    And then you need to add this file to your own allapp.pkg

    The lsec_updatesh folder and lsec.sh script
    Practical applications:
    • Making patches, an alternative to creating the Allapp.pkg package.
    • Work on all folders in the unit (which Allapp.pkg cannot do).
    • Delete unnecessary files or applications (who uses the calculator app?), or overwite files like the fyt.prop or others.
    • Modify/overwrite config files that are otherwise not modifiable (like bluetooth config?)
    • Setting properties that normally require root/admin rights.
    • Creating backups of your partitions using the dd command. This can be handy on a device for which you do not have a firmware yet as backup.
    • Rooting your unit, also if you do not have a firmware from your supplier.
    • Make a Custom ROM by simply doing all kind of modifications after the "normal" firmware flash.

    See for more info about the "The lsec_updatesh folder and lsec.sh script" in post #228.

    Creating an Allapp.pkg and flash it to your device (post #2)
    Some pre-build flashable images (post #3)
    And if everything goes wrong and your unit ends up in a boot loop or doesn't get past the boot logo. (post #4)
    8
    Creating an Allapp.pkg and flash it to your device

    Use the (English) version of ApkPack.exe (english version attached) to unpack/repack an Allapp.pkg. (It also works with wine on Linux/MacOS)

    (See this youtube link for a really quick & dirty (and unsharp, sorry) video about what scrolls on your screen when flashing such a mini Allapp.pkg)

    (1) Quick example:
    • Create a folder Allapp
    • Copy some wanted apks or mods into the folder.
    • Use the ApkPack.exe to create the Allapp.pkg
    • Simply copy the "Allapp.pkg" and "lsec6521update" onto a clean FAT32 formatted SD-card or USB-stick.
    • Put the USB-stick into your unit and it will recognise the update and flash it to your unit.
    • Other options:
      • Copy the "Allapp.pkg", (optional) "updatecfg.txt", (optional) "config.txt" and "lsec6521update" onto a clean FAT32 formatted SD-card or USB-stick.
      • In my case having a 4G unit without using 4G and wanting to use Google Assistant for calls: Copy the Allapp.pkg, config.txt (see above), crruptoff (see above) and lsec6521update onto a clean FAT32 formatted USB-stick.
      • Note that when NOT using an updatecfg.txt, nothing will be wiped on your unit. Only added/replaced.

    (2) Another example:
    • Create folder Allapp on your pc/laptop
      • add (2019-08-14) main server mod with extended navi_app.txt and "BT to background" hacks. (see my github repo. Be careful to choose the one for your specific firmware date)
      • add BW-RDS radio mod (see my github repo. Only choose version for Android 8.1 if you want full functionality)
      • add oandbackup (dk.jens.backup_305.apk) (Free and open source backup restore apk)
      • add latest MagiskManager-v7.3.2.apk
    • Use apkpack.exe (attached) to create a new Allapp.pkg by selecting the folder to be packaged, the name of the file being Allapp.pkg, and select button "Packed" (sloppy translation from Chinese)
    • Copy created "Allapp.pkg" and "lsec6521update" onto a clean FAT32 formatted USB-stick.
    • Insert in your unit and the flashing process will start (Note: It will mention "Setting to factory defaults" before flash reboot, but it is really not doing that)
    • After the (very quick) flash and normal reboot, you will have 2 new apps and 2 modded apps.

    (3) Example for a FYT compatible SC9853i, like a Sinosmart or Zhan or "unnamed":
    You can also create your own Allapp.pkg, also with a modded Joying apk as the apks are actually identical, but there is one big naming issue to take into account!
    Even though the apks are identical having the same package name, they have different apk names. A normal install will check for the package name and replace the apk with that same package name, whatever its apk name (think of versions or build time stamps behind the the "normal" name). The flashing method simply looks at the apk name and will create an /oem/app/<apk_name>/<apk_name>.apk. In this case versions numbers of build timestamps will create again and again a new folder with the exact same apk and none will work.
    As an example for the radio app:
    • Joying: 190043001_com.syu.radio.apk
    • Sinosmart: 190042001_com.syu.radio.apk
    • "Some" unbranded: 190101001_com.syu.radio.apk
    Again: The apks are exactly the same but have a different name. If you simply flash one next to the other, both will not work anymore as both have the same internal package name being "com.syu.radio". So you have no radio at all.
    So, how to create an Allapp.pkg with a modded Joying apk for your FYT compatible SC9853i unit?
    • Check the name of your unit's radio app (or BT, Video, Music app). (If you don't know how you can use my HWGet_info.apk and open the resulting HWget_info.zip and look inside the "oem_listing.txt")
    • Find the name of the modded Joying app.
    • Rename the modded Joying app to the name of your app. So for example for Joying-> Sinosmart radio app: rename 190043001_com.syu.radio.apk to 190042001_com.syu.radio.apk (Joying to Sinosmart)
    • Create a folder Allapp
    • Copy the modded and now renamed Joying radio apk into the folder (repeat if relevant for other mods).
    • Use the ApkPack.exe to create the Allapp.pkg
    • Simply copy the "Allapp.pkg" and "lsec6521update" onto a clean FAT32 formatted SD-card or USB-stick.
    • Put the USB-stick into your unit and it will recognise the update and flash it to your unit.
    • Also create an Allap.pkg for your original app so you can always flash back the original app if you want (or need) to.
    7
    Some pre-build flashable images

    Only for real Joying SC9853i units. Other FYT compatibles are not supported.
    All SC9853i FYT models are actually the same, but boot images are mostly different and apks have different names. In the latter case you would have 2 identical apks with the same package name, but with a different apk name residing in different folders. Neither of them will work anymore as Android doesn't know which one is the correct one.

    The zips that can be found in this post can be directly unzipped to a clean, empty Fat32 formatted USB-stick or SD-card. You do not need to be rooted and you don't need my JET apk.
    When this USB-stick or SD-card is inserted into your unit, the unit will recognize it as a flashable firmware and start flashing the files to your unit.

    Notes:
    • These flashable firmware files will leave all your installed apps and settings as they are. Only the files in these Allapp.pkg files will be overwritten.
    • The zips containing boot images will only overwrite the boot image. All apps and settings remain as they are.
    • The "combi" zips are just combinations of possible mods and/or boot images. They behave the same as the previous two.
    • The zips that can be downloaded from this post are all on one of my github repositories. You can find it here: SC98531BinRepo.
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------
    Boot images
    2019-11-28 | 20191128-rooted-boot-image (thanks to @rigattoni) | 20191128-normal-boot-image
    2019-09-17 | 20190917-rooted-boot-image | 20190917-normal-boot-image
    2019-08-14 | 20190814-rooted-boot-image (thanks to @julien_blanche)

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------
    Main server apk mods (the 190000000_com.syu.ms.apk)
    The ORG version is the apk as delivered by Joying in their firmwares.
    The ORG_extended is the Joying one including an extended navi_app.txt, extended player_app.txt, extended navi_audio_from_playstatus.txt.
    The NoKill is the extended version where the normal functionality to kill all apps when going into "deep sleep" (turn of ignition), has been disabled.

    2020-04-07 | 2020-04-07-com_syu_ms-ORG | 2020-04-07-com_syu_ms-ORG_extended | 2020-04-07-com_syu_ms-nokill | ( Zips, modified smali files, modified assets text files, some info)
    2019-11-28 | 2019-11-28-com_syu_ms-ORG | 2019-11-28-com_syu_ms-ORG_extended | 2019-11-28-com_syu_ms-NoKill | ( Zips, modified smali files, modified assets text files, some info)
    2019-09-17 | 2019-09-17-com_syu_ms-ORG | 2019-09-17-com_syu_ms-ORG_extended | 2019-09-17-com_syu_ms-NoKill | ( Zips, modified smali files, modified assets text files, some info)
    2019-08-14 | 2019-08-14-com_syu_ms-ORG | 2019-08-14-com_syu_ms-ORG_extended | 2019-08-14-com_syu_ms-NoKill

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------
    Other mods
    There are currently two mods for the radio: One very nice one from user @Soiski71 and one which I made.
    The ORG version in this case is the one delivered with the Joying firmwares.

    Radio | SC98531-Radio-ORG | SC98531-Radio-Mod (preview) | SC98531-Radio-Mod-Soiski71 (preview)

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------
    Combinations
    These are combinations of above files which I found useful. Undoing them can be done by using one of the above ORG zips.
    2019-09-17 | 2019-09-17-radio_mainserver | 2019-09-17-rootedboot_radio_mainserver
    4
    If everything goes wrong and your unit gets in a boot loop or stops on boot logo

    - Download a fresh firmware from the Joying blog.
    - Unzip it to an SD-card/USB-stick (as normal)
    - Put the USB-stick/SD-card in your unit and "push" the Reset (RST) with a paperclip or something like that. When the boot logo appears, reset the unit again. Now the flashing process should start.
    4
    This post recaps some of the work done to enable voice calling using Google Assistant (GA) through a Bluetooth attached phone on an sc9853i FYT compatible Android Head Unit (HU). I have a TEyes SPro 4/64 with CC2 firmware installed. This should work on other FYT compatible, including Joying units, but no guarantees. This includes required files and instructions/steps for those that may find this at some point in the future.

    Attached is the software to enable GA voice calling:
    • Telecom script to update the Telecom server, if required. FYI, the Telecom server on my head unit was missing code to handle the voice call.
    • The updated simple phone app that is called by the GA when a voice call is made. The Telecom server calls this app when the voice call is made. This is a release version and not a debug version of the app.
    • GVC CallHandler I used. This app is called by the simple phone app. This app passes the details to the Bluetooth app to make the call.
    Instructions:
    • Ensure you have up to date/latest Google Assistant, Google app and the Google Contacts app and they have appropriate or all Permissions given...from Play store if you don't already have them.
    • Install the attached GVC CallHandler and CustomGVCBluetoothPhoneHandler applications normally and give them permission to make calls. Root is not required. The GVC app is available from the Google Play Store. That may work, but the attached is a version that I tested with.
    • Try voice calling using Google Assistant...say "Call xxxxx" where xxxxx is any of your contacts from Google Contacts. i don't believe that Google Assistant uses contacts from the Bluetooth phone app on the HU. If prompted, set the GVC CallHandler as the default app to make calls. One of two things will happen:
      1. It works and no messages or errors occur....the call will be made and you are finished! Note that there seems to be an issue where the first and/or second attempt don't work. Try the voice call a second or third time.
      2. It doesn't work and a message similar to "App isn't installed." then you need to replace the Android Telecom server app that is currently installed on your head unit.
    • To replace the Telecom server, unzip the attached telecom_script.zip to a usb drive and insert into the HU. This should invoke the standard update process. The script includes the original TEyes Telecom server from my unit and the new one from another Joying unit, as described in a previous post. When it runs, it creates some information from your unit as well as copying the existing Telecom server on your head unit to the USB drive. If you need it or want to re-install it at some point, save it somewhere. You can also get it back from your own firmware.
    • If it didn't work previously and you replaced your Telecom server, try the voice call again.
    • That's it...it should have worked.

    I'll be trying to figure out more info about the voice call not working on the initial attempt(s). I suspect I won't be able to determine the issue as I believe it occurs within the GVC app.

    If you update to a different / newer firmware in the future, you will probably have to repeat this process.