How to access Engineering Mode for AC8227L - Android Head-Units

I am brand new to the Head Unit world and have been on a VERY steep learning curve (sadly begun AFTER I purchased a unit #lessonlearned).
I bought on ebay an aftermarket chinese Android head unit and have been pouring over your website (THANK YOU for existing btw) looking for answers to all sorts of questions.
I have found most of what I was looking for between resources here and on Youtube, however, the one that I still need help with is figuring out how to access "Engineering Mode" from my menu. Most videos show it under the Factory Settings menu, but my menu is extremely limited compared to what I've seen on other units.
I've seen tons of videos of people with units very similar to mine, but with different interfaces.
I'm attaching my specs, a screenshot of my Factory settings, and one of the Factory Settings I've seen on other units.
Is anyone familiar with my settings and know of a hidden secret way of accessing the Engineering Mode??
Specifically, I want to figure out how to raise the external microphone volume which is currently so low that it might as well not be there.
I've emailed the seller for assistance, but so far his responses have been one step above useless so I'm not holding out hope that that will change any time soon.
Please let me know if I need to post additional information. Like I said, I'm new to this and don't know what I don't know.
Thank you in advance for your help. I truly appreciate everyone sharing their knowledge so generously.

Engineering mode is activated/accessed with pin code just like entering in factory settings, I don't know what pin is but you should serch for thread about 8227l pin codes on this forum. There are all codes and pins.

Anton TNT said:
Engineering mode is activated/accessed with pin code just like entering in factory settings, I don't know what pin is but you should serch for thread about 8227l pin codes on this forum. There are all codes and pins.
Click to expand...
Click to collapse
Thank you but when I enter my code on Factory settings it takes me to a limited menu, not like the one I've seen in other videos. It looks like the chip is the same, but the interface is different. I was hoping someone here had the same interface and knew how to access Engineering mode.

It is accessed by numeric pad (same as would for factory settings, but only entering specific code in number pad).
Code is 7788 so you must enter it in numeric pad in order to access directly to engineering mode.
Also, there are other codes accessed with numeric pad directly :
Code: 0 - Opens MCU update window (com.ts.can.CanMcuUpdateActivity)
Code: 1 - Opens some sort of window (com.ts.main.CStudy.CStudyMainActivity)
Code: 5 - Checks chip version and if matches opens some sort of LCD settings
Code: 2 - QR code that redirects to url with head units serial id that redirects to wechat
Code: 3 - Shows Phone device id?
Code: 4 - Sends signal to MCU to reboot - HARD reset just like with reset hole on unit
Code: 8 - Resets audio settings for Navi
Code: 9 - (DONT TRY THIS) Opens some sort of head unit activation window (com.ts.main.auth.AuthActivity)
Code: 6 - Sets Bluetooth id to 10000
Code: 12 - Opens a window that shows head units production id
Code: 22 - QR code that redirects to url with head units production id
Code: 5678 - Opens custom boot logo window (com.ts.logoset.LogoSetMainActivity)
Code: 8888 - Opens factory settings window (com.ts.factoryset.FsMainActivity)
Code: 4321 - Deletes files from "/mnt/sdcard/demo"
Code: 1234 - Copies files to "/mnt/sdcard/demo"
Code: 1101 - Something with screenshots
Code: 1313 - Sends signal to radio to reset
Code: 1414 - Reboots system and saves changed device settings or factory settings
Code: 1616 - Display Brightness, Contrast, Hue, Sat, Sharp, GrassToneH, GrassToneS, SkinToneH, SkinToneS, SkyToneH, SkyToneS settings (Saved to /storage/emulated/0/Ts/filter.txt)
Code: 1515 - Opens test mode window? (something for head unit activation?) (com.ts.main.auth.FactoryMainActivity)
Code: 6666 - Copies and installs some sort of APK files (maybe all default apps)
Code: 7777 - Shouldn't do anything
Code: 7788 - Opens engineering window (debugging information, you can view all logs etc.) (com.mediatek.engineermode.EngineerMode)
Code: 8877 - Opens a window where you can change all audio volume settings, boot logo, other settings (com.ATCSetting.mainui.MainActivity)
Code: 120 - Checks for system update?
Code: 2134 - Opens app info list (com.qiner.appinfo.AppListActivity)
Code: 12345678 - Sends some sort of signal to the MCU and opens some sort of tscanupdate window (com.ts.tscanupdate)
Code: 3699 - Check if some system files exists and opens tscanupdate window with some custom flags sent to it (com.ts.tscanupdate.MainActivity2)
Code: 5699 - Check if some system files exists and opens tscanupdate window with some custom flags sent to it (com.ts.tscanupdate.MainActivity2)
Code: 7758258 - Android stress-test, executes a command "monkey --throttle 500 --pct-touch 90 --pct-motion 10 -v -v 100000 >"
Code: 1111 - Opens some sort of window (Memory status real-time) (com.ts.phonestate.PhoneStateService)
Code: 140 - Closes GPS
Code: 141 - Opens GPS
Code: 123 - If DSP is supported opens alert with DSP version
Code: 0128 - Opens some sort of window (CanAllUpdateActivity)
Code: 0129 - Starts some sort of Can service (com.ts.can.CanDataLogService)
Code: 5555 - Opens a window where you can export advanced settings to SD or USB (com.ts.factoryset.FsMPModeActivity)
Code: 860 - Checks for disk
Code: 1717 - Should play some audio track
Code: 002446 - Roots head unit, installs google services, unroots head unit, reboots -> REPORTED THAT DID NOT WORKED ON ANY DEVICES

Anton TNT said:
It is accessed by numeric pad (same as would for factory settings, but only entering specific code in number pad).
Code is 7788 so you must enter it in numeric pad in order to access directly to engineering mode.
Also, there are other codes accessed with numeric pad directly :
Code: 0 - Opens MCU update window (com.ts.can.CanMcuUpdateActivity)
Code: 1 - Opens some sort of window (com.ts.main.CStudy.CStudyMainActivity)
Code: 5 - Checks chip version and if matches opens some sort of LCD settings
Code: 2 - QR code that redirects to url with head units serial id that redirects to wechat
Code: 3 - Shows Phone device id?
Code: 4 - Sends signal to MCU to reboot - HARD reset just like with reset hole on unit
Code: 8 - Resets audio settings for Navi
Code: 9 - (DONT TRY THIS) Opens some sort of head unit activation window (com.ts.main.auth.AuthActivity)
Code: 6 - Sets Bluetooth id to 10000
Code: 12 - Opens a window that shows head units production id
Code: 22 - QR code that redirects to url with head units production id
Code: 5678 - Opens custom boot logo window (com.ts.logoset.LogoSetMainActivity)
Code: 8888 - Opens factory settings window (com.ts.factoryset.FsMainActivity)
Code: 4321 - Deletes files from "/mnt/sdcard/demo"
Code: 1234 - Copies files to "/mnt/sdcard/demo"
Code: 1101 - Something with screenshots
Code: 1313 - Sends signal to radio to reset
Code: 1414 - Reboots system and saves changed device settings or factory settings
Code: 1616 - Display Brightness, Contrast, Hue, Sat, Sharp, GrassToneH, GrassToneS, SkinToneH, SkinToneS, SkyToneH, SkyToneS settings (Saved to /storage/emulated/0/Ts/filter.txt)
Code: 1515 - Opens test mode window? (something for head unit activation?) (com.ts.main.auth.FactoryMainActivity)
Code: 6666 - Copies and installs some sort of APK files (maybe all default apps)
Code: 7777 - Shouldn't do anything
Code: 7788 - Opens engineering window (debugging information, you can view all logs etc.) (com.mediatek.engineermode.EngineerMode)
Code: 8877 - Opens a window where you can change all audio volume settings, boot logo, other settings (com.ATCSetting.mainui.MainActivity)
Code: 120 - Checks for system update?
Code: 2134 - Opens app info list (com.qiner.appinfo.AppListActivity)
Code: 12345678 - Sends some sort of signal to the MCU and opens some sort of tscanupdate window (com.ts.tscanupdate)
Code: 3699 - Check if some system files exists and opens tscanupdate window with some custom flags sent to it (com.ts.tscanupdate.MainActivity2)
Code: 5699 - Check if some system files exists and opens tscanupdate window with some custom flags sent to it (com.ts.tscanupdate.MainActivity2)
Code: 7758258 - Android stress-test, executes a command "monkey --throttle 500 --pct-touch 90 --pct-motion 10 -v -v 100000 >"
Code: 1111 - Opens some sort of window (Memory status real-time) (com.ts.phonestate.PhoneStateService)
Code: 140 - Closes GPS
Code: 141 - Opens GPS
Code: 123 - If DSP is supported opens alert with DSP version
Code: 0128 - Opens some sort of window (CanAllUpdateActivity)
Code: 0129 - Starts some sort of Can service (com.ts.can.CanDataLogService)
Code: 5555 - Opens a window where you can export advanced settings to SD or USB (com.ts.factoryset.FsMPModeActivity)
Code: 860 - Checks for disk
Code: 1717 - Should play some audio track
Code: 002446 - Roots head unit, installs google services, unroots head unit, reboots -> REPORTED THAT DID NOT WORKED ON ANY DEVICES
Click to expand...
Click to collapse
Oooh, thank you!! I'll try this later and report back.

Anton TNT said:
It is accessed by numeric pad (same as would for factory settings, but only entering specific code in number pad).
Code is 7788 so you must enter it in numeric pad in order to access directly to engineering mode.
Also, there are other codes accessed with numeric pad directly :
Code: 0 - Opens MCU update window (com.ts.can.CanMcuUpdateActivity)
Code: 1 - Opens some sort of window (com.ts.main.CStudy.CStudyMainActivity)
Code: 5 - Checks chip version and if matches opens some sort of LCD settings
Code: 2 - QR code that redirects to url with head units serial id that redirects to wechat
Code: 3 - Shows Phone device id?
Code: 4 - Sends signal to MCU to reboot - HARD reset just like with reset hole on unit
Code: 8 - Resets audio settings for Navi
Code: 9 - (DONT TRY THIS) Opens some sort of head unit activation window (com.ts.main.auth.AuthActivity)
Code: 6 - Sets Bluetooth id to 10000
Code: 12 - Opens a window that shows head units production id
Code: 22 - QR code that redirects to url with head units production id
Code: 5678 - Opens custom boot logo window (com.ts.logoset.LogoSetMainActivity)
Code: 8888 - Opens factory settings window (com.ts.factoryset.FsMainActivity)
Code: 4321 - Deletes files from "/mnt/sdcard/demo"
Code: 1234 - Copies files to "/mnt/sdcard/demo"
Code: 1101 - Something with screenshots
Code: 1313 - Sends signal to radio to reset
Code: 1414 - Reboots system and saves changed device settings or factory settings
Code: 1616 - Display Brightness, Contrast, Hue, Sat, Sharp, GrassToneH, GrassToneS, SkinToneH, SkinToneS, SkyToneH, SkyToneS settings (Saved to /storage/emulated/0/Ts/filter.txt)
Code: 1515 - Opens test mode window? (something for head unit activation?) (com.ts.main.auth.FactoryMainActivity)
Code: 6666 - Copies and installs some sort of APK files (maybe all default apps)
Code: 7777 - Shouldn't do anything
Code: 7788 - Opens engineering window (debugging information, you can view all logs etc.) (com.mediatek.engineermode.EngineerMode)
Code: 8877 - Opens a window where you can change all audio volume settings, boot logo, other settings (com.ATCSetting.mainui.MainActivity)
Code: 120 - Checks for system update?
Code: 2134 - Opens app info list (com.qiner.appinfo.AppListActivity)
Code: 12345678 - Sends some sort of signal to the MCU and opens some sort of tscanupdate window (com.ts.tscanupdate)
Code: 3699 - Check if some system files exists and opens tscanupdate window with some custom flags sent to it (com.ts.tscanupdate.MainActivity2)
Code: 5699 - Check if some system files exists and opens tscanupdate window with some custom flags sent to it (com.ts.tscanupdate.MainActivity2)
Code: 7758258 - Android stress-test, executes a command "monkey --throttle 500 --pct-touch 90 --pct-motion 10 -v -v 100000 >"
Code: 1111 - Opens some sort of window (Memory status real-time) (com.ts.phonestate.PhoneStateService)
Code: 140 - Closes GPS
Code: 141 - Opens GPS
Code: 123 - If DSP is supported opens alert with DSP version
Code: 0128 - Opens some sort of window (CanAllUpdateActivity)
Code: 0129 - Starts some sort of Can service (com.ts.can.CanDataLogService)
Code: 5555 - Opens a window where you can export advanced settings to SD or USB (com.ts.factoryset.FsMPModeActivity)
Code: 860 - Checks for disk
Code: 1717 - Should play some audio track
Code: 002446 - Roots head unit, installs google services, unroots head unit, reboots -> REPORTED THAT DID NOT WORKED ON ANY DEVICES
Click to expand...
Click to collapse
Sadly, these codes work for the units I've seen in videos, but not with my interface.
I've added a video (second video) of the menu I have under factory settings.
None of the other codes I tried worked either (8888, 8877).
The original interface didn't even have the full standard android menu. No access to Apps or Build number for example, but I was able to get around that by installing Agama where those menu options are accessible. Which makes me suspect that Engineering mode menu is in the system. I just can't figure out how to access it from my interface.
With access to build number through Agama I was able to activate Developer mode but I didn't find what I needed there either.
Any ideas?

Newbie_75 said:
Sadly, these codes work for the units I've seen in videos, but not with my interface.
I've added a video (second video) of the menu I have under factory settings.
None of the other codes I tried worked either (8888, 8877).
The original interface didn't even have the full standard android menu. No access to Apps or Build number for example, but I was able to get around that by installing Agama where those menu options are accessible. Which makes me suspect that Engineering mode menu is in the system. I just can't figure out how to access it from my interface.
With access to build number through Agama I was able to activate Developer mode but I didn't find what I needed there either.
Any ideas?
Click to expand...
Click to collapse
There are codes for your unit, you must find correct ones.
Try searching the net and youtube for it, enter model of your unit and search for pin codes

Anton TNT said:
There are codes for your unit, you must find correct ones.
Try searching the net and youtube for it, enter model of your unit and search for pin codes
Click to expand...
Click to collapse
Thank you. I've searched but I haven't found any which is why I was hoping someone here had my same unit/interface and could help me.

1234 is for factory setings as I saw in video you posted, developer mode should be 7890+current hour (if now is 08:12 you input like 789008->which 08 is current hour)
In factory settings you can adjsut almost everything but developer mode serves as debugging there is no much to do there. Advanced mode is 123456, there are system settings regarding all configuration of all functions.
This codes are specific for TS10-TS18 units. What unit do you have , provide some info of device from car settings / about device menu.

Anton TNT said:
1234 is for factory setings as I saw in video you posted, developer mode should be 7890+current hour (if now is 08:12 you input like 789008->which 08 is current hour)
In factory settings you can adjsut almost everything but developer mode serves as debugging there is no much to do there. Advanced mode is 123456, there are system settings regarding all configuration of all functions.
This codes are specific for TS10-TS18 units. What unit do you have , provide some info of device from car settings / about device menu.
Click to expand...
Click to collapse
Oh, this is promising. I'll give it a shot, thank you.
I posted images with information about my model in my original post.
Copying it here again for convenience.

Newbie_75 said:
Oh, this is promising. I'll give it a shot, thank you.
I posted images with information about my model in my original post.
Copying it here again for convenience.
Click to expand...
Click to collapse
The code 7890+hour didn't work on my unit, however messing around in the Car Launcher FREE settings, I found an icon for Car Settings (different from the one under factory settings). In there, I found 3 sub menus. Under the "other" menu, I found Engineer mode!!! I forgot to take a picture, but I this is a screenshot from a youtube video to showing the same menu options I see.
Once there, you scroll over to Hardware testing and then Audio. That's where you find ALL the audio levels you need. I'm still playing around with it as I haven't gotten the mic to the level I want, but at least I'm one step closer.
I've also seen other threads where folks have had better success after disabling the front facing mic.
I don't know if I have the guts to open it up and cut the connections, but I've done crazier things so ... we'll see.
THANK YOU everyone for your help. I hope my post can help anybody after me looking for a same info.

Newbie_75 said:
The code 7890+hour didn't work on my unit, however messing around in the Car Launcher FREE settings, I found an icon for Car Settings (different from the one under factory settings). In there, I found 3 sub menus. Under the "other" menu, I found Engineer mode!!! I forgot to take a picture, but I this is a screenshot from a youtube video to showing the same menu options I see.
Once there, you scroll over to Hardware testing and then Audio. That's where you find ALL the audio levels you need. I'm still playing around with it as I haven't gotten the mic to the level I want, but at least I'm one step closer.
I've also seen other threads where folks have had better success after disabling the front facing mic.
I don't know if I have the guts to open it up and cut the connections, but I've done crazier things so ... we'll see.
THANK YOU everyone for your help. I hope my post can help anybody after me looking for a same info.
Click to expand...
Click to collapse
So you have JCAC system version from 2019 as I saw in image, that changes a few things... like PIN codes.
Will find correct ones for your system.
PINS FOR ANDROID
Try with these.
Play arround , enter each one and see what PIN activaes what menu. Eventually you will find correct one.

Related

[REF] Diagnosis Codes

Samsung Focus Diagnosis Codes​Lets get a list started.
To access the diagnostic program you will need to dial ##634# from the phone pad. Below is a list of commands that I could find. Post more here and lets see what we can do.
If you are experiencing any issues with accessing the diagnosis main menu press and hold the app from the applist and uninstall it the reinstall using the procedure above. This is due to some having an updated app.​
Function Codes
!!WARNING SETTINGS CHANGED IN 197328640 MODE DO NO RESET ON HARD RESET THESE SETTING STAY WITH THE PHONE YOU MIGHT GET THINGS BACK TO NORMAL BY USING *2767*3855# - Full Reset (Caution every stored data will be deleted.)!!​*#197328640# - Root Menu (See attached for full menu layout)
Things you can do with this code​
Improve your Signal
*#197328640#
1,8,3,6,1,[END] and reboot.
Speed up your internet by enabling hspda/hsupa
*#197328640#
1,8,3,5,2,3,[END]​
Teather your phone​*#7284#
Modem, Teathered Call
Remeber you have to move it back to ZUNE to USB sync
Increase your default volume. (Confirmed working now!! )
*#0002*28346#
Click Get under the Device Gain (max/min)
In the first box keep the number 7
In the second box put 16000
In the third box put 0
Click Set
Click Start​Click the home button.
Restart your phone. To verify the setting took click the get button and it should show your values.
Run a system diagnostic.
*#05#​
Single function Code
*#0*# - LCD Test
*#0002*28346# - Audio control utility.
*#0011# - Power and Temprature settings
*#0228# - Battery Information
*#0289# - Melody Test\Test External and Internal Speaker
*#03# - SMDInfo
*#05# - Simple test menu
*#06# - Show IMEI #
*#0673# - MP3 Test Menu\Shows Audio sound tests
*#0782# - Shows Clock & Alarms settings
*#0842# - Vibrate test menu
*#0987# - Multitouch test
*#1111# - Show FTA software version
*#1234# - Shows the PDA and the Phone version number
*#197328640# - The Root Menu
*#2*# - Battery Information
*#2222# - Show FTA hardware version
*#2263# - RAT Selection option is resricted
*#232331# - BT RF Test Mode
*#232332# - BT Audio
*#232333# - BT Search Test
*#232337# - Bluetooth MAC Adress
*#232338# - WLAN MAC address
*#232339# - WLAN Test mode
*#2580# - Integrity Control
*#3*# - Test Brightness
*#32489# - (GSM test) Shows the ciphering status and options to enable or disable it.
*#7284# - USB Path control
*#745# - Operation (2): Ril log done
*#7450# - Operation (99):Error Report off done
*#7451# - Operation (99):Error Report off done
*#7465625# -Shows status of the Network, Service Provider, SIM or Corporation lock
*#770# - Operation (99):Vphone 770 done!
*#771# - Operation (99):Vphone 771 done!
*#772# - Operation (99):Vphone 772 done!
*#773# - Operation (99):Vphone 773 done!
*#774# - Operation (99):Vphone 774 done!
*#775# - Operation (99):Vphone 775 done!
*#776# - Operation (99):Vphone 776 done!
*#777# - Operation (99):Vphone 777 done!
*#778# - Operation (99):Vphone 778 done!
*#779# - Operation (99):Vphone 779 done!
*#780# - Operation (99):SR Test done!
*#9090# - Diag Config\UART/USB settings
*2767*3855# - Full Reset (Caution every stored data will be deleted.)
vphone
what is vphone 777?
*#7465625# Personalize Menu - Examine the various phone locks
*#232337# Bluetooth MAC Adress
This is the best set of posts I have seen on this forum for the Focus yet. Thanks!
Hope you don't mind I added this to the wiki.
When you use *#2580# it brings up " Phone Integrity". Default is "ON". This is purely a guess, but if that is "ON" then possibly no options explored or mistakenly changed will be permanent. The reason for my guess is, that I explored many of the screens and changed setting and changed them back with out any negative affects. However, after I mistakenly changed phone integrity to "OFF" (option 2, on that menu) Thats when my accelerometer craped out on me. With phone integrity off and I entered the LCD TEST screen and opened the Accelerometer Test screen.
Does anyone know what " Phone Integrity " represents?
Wow, I like that this list keeps on growing. This thread deserves a sticky.
Spent about 5 hours to get the info and also updated the wiki. I want this to be the next most hackable phone.
Dyslexia
Dyslexia.
*#7248# - USB Path control
Should be
*#7284# - USB Path control
Great work on getting all these codes. I exchanged my focus because of a noticeable audio hiss when playing music or listening to podcasts. The new one has the same issue. But the audio control utility looks like I can change some settings to minimize this. Anyone else having this issue and found a solution through this audio menu?
Any way to turn off echo cancel?
I'm finding the echo cancel during phone conversations is horrible. For example, plug in the headset/mic, if I call my phone from a land line and hum, I can't hear myself in the ear buds. But if I mute the phone, I hear myself fine.
I've only been on a few calls and I can hear this behavior ALOT.
Does anyone know what might be the setting to turn this off?
I have a unlocked rogers focus.
i can make calls and receive text messages but i get no data connection.
I've accessed the diag and when entering *#197328640# and nothing happens.
did a hard reset, and same thing.
any suggestions?
APN
Did you set your apn correctly?
try
*2767*3855#
download the pdf go to the main menu possibly here.
​3. AUDIO LOOPBACK
1. PACKET LOOPBACK ON
2. LOOBBACK OFF
I hope there is something to adjust the horrid quality for streamed video such as youtube and movie trailers
karelj said:
I hope there is something to adjust the horrid quality for streamed video such as youtube and movie trailers
Click to expand...
Click to collapse
amen!!! It would be awesome if someone could figure out something
What code gets the wifi MAC address? I could swear I've seen it...
Nevermind it's *#1234#
I had hopes of boosting the headset audio by going into the root menu to section 5.2. but when I get there, no menus exist.
There must be an audio defeat occurring at the headset level for our own protection or something...
TOA Duck said:
amen!!! It would be awesome if someone could figure out something
Click to expand...
Click to collapse
Switch your IE from Mobile to Desktop. Enjoy quality video. Drive through.

[Guide][Tasker] Check cell network type

***Requires Root*** (unless someone can show me a way that doesn't)
Checks the cell network type, NOT DATA TYPE.
Background: I am a truck driver for three months a year during my summer break from university. I love streaming music, but I love Nexus phones (and my $30 a month truly unlimited everything from T-Mobile!). Because I am on T-Mobile, my data connection on the interstates SUCK. So, I went ahead and got a prepaid Verizon mobile hotspot with the 10GB a month plan to use while on the road. However, I go through large cities frequently, so using the hotspot all the time is not ideal. I came up with the idea to use Tasker to track which mobile network type I am connected to, and turn off wifi when I gain HSPA or LTE, or turn wifi on when I lose HSPA or LTE. Sounds simple right? WRONG! The problem is that the only state context that Tasker has is Mobile Data, and can be set to 2G, 3G, 3G-HSPA, or 4G. I thought this would be enough, however, once wifi is connected, the mobile data state becomes None. So instead, I had to figure which string I needed from a dumpsys, output that string's value to a Tasker variable, and from there I could set If / Else statements. So let's begin:
First, I had to open up a terminal emulator and type in:
Code:
su
This will ask for Superuser access, simply allow always, and accept.
Next, type in:
Code:
dumpsys | grep DUMP
This will show you the different services you can view with dumpsys! Quite a bit of info there.
Now, from the helpful people over in the Tasker groups forum, I learned that network status is in
Code:
telephony.registry
So to only show that (instead of a huge long list of all the info), you will type in:
Code:
dumpsys telephony.registry
From here you can scroll through all the states. There will be a lot of values, but the one we are looking for is
Code:
mServiceState
In this case, I see it as (will vary between phone and provider):
Code:
mServiceState=0 home T-Mobile T-Mobile 310260 HSPA CSS not supported -1 -1 RoamInd=-1 DefRoamInd=-1 EmergOnly=False
"That's cool. Now what do I do with it?"
I'll tell you! With this info, head over to Tasker and make a profile (I used a time profile to activate every two minutes). After you make your profile, name a new task (I named it Celltype). Now add an activity, select Shell, then Run Shell. We've got some cool stuff here right? Yes, we do. It is a good idea to simply type in the command:
Code:
dumpsys telephony.registry | grep mServiceState | awk '{print}'
and set your timeout (mine is 4 seconds). Check the Use Root box, then in the Store Output In field, type a new variable name (I used %STATE); don't use a variable that is already in use! Dandy! Now just hit the back button and add another action. This time, select Alert and pick one (I picked popup, so that is what I am using in this guide).
Find the Text field, and enter your variable (%STATE) for me. Now just hit the back button, then hit the Play button in the lower left hand corner. You should get a Superuser request, allow it. Then, you should get a popup with the output of mServiceState, which for me is:
Code:
0 home T-Mobile T-Mobile 310260 HSPA CSS not supported -1 -1 RoamInd=-1 DefRoamInd=-1 EmergOnly=False
If you do not get a string like that, try changing '{print}' to '{print $0}' in the Command field in your Run Shell action.
Now find your network type. For me it is HSPA. Then count the position that network type text is in the mServiceState string. This is separated by spaces, so if I count mine, HSPA is in the sixth position (your's may vary). Did you notice I had you put at the end of the dumpsys in the Run Shell action:
Code:
awk | '{print]'
Well that prints out the result to whatever you tell Tasker to. You can do a lot of cool things with the print function, but I'm only going to cover what is relevant to this guide, which is the position identifier, $. In this case, since the text I want is in the sixth position, I will change the Command field in the Run Shell action to:
Code:
dumpsys telephone.registry | grep mServiceState | awk '{print $6}'
Your's may be in a different position, say it is in position three. Then you will put '{print $3}' at the end of your Command field. Again, make sure Use Root is checked and Store Output In has your created variable typed in.
Hit the back button to bring you to the main Task screen, and hit the play button in the lower left hand corner again. This time, in your popup, you should get the network type only. In my case, I got a popup that had the text, HSPA. If all goes well, and you do get ONLY the network type, then congrats! If you didn't, go back and make sure everything is correct (variable matches across actions).
If everything is dandy at this point, you can go ahead and delete the popup action (or keep it until you are all done with everything, like I did). What I did next is add a new action, selected Task and selected If. In the If action; type your created variable into the field on the left, then choose your matching method (mine is Matches) and type what you want it to match (or not match, etc) in the field on the right (for me, I typed HSDPA/HSPA/HSPA+/HSUPA/LTE, the / meaning OR).
After that, you can add whatever sub actions you want executed if your If statement is met. Once you have those done, you can add an Else action and any sub actions you want executed if your If statement is NOT met!
I have attached my XML from Tasker (just unzip, then import the XML), so you can go ahead and check out my whole project, break it apart and turn it into your own, whatever. If you share it, just please mention me. Or don't :crying:
P.S. If I missed anything, let me know! However, I AM a truck driver right now, I don't have very much time, but I will try to help if anyone needs it.
A truck-driving, college-studying, android-coder... Art Bell would be so proud.
:good:
Thanks, appreciate the tutorial. Interesting...
Thank you so much for this tips
It's very nice to improve my 2g/3g switching profile.
Here's what im using now:
Profile Name: Display On + 3g
Events: Display Unlocked + Not Wifi Connected ***
My task: 3g Enable
1 - Send Intent
Action
action.intellig.CHANGE_NETWORK_TYPE
Extra
extra.intellig.NETWORK_TYPE:0
2 - Flash
Text 3g
3 - Wait
1 minute
4 - Run Shell
Command
dumpsys telephony.registry | grep mServiceState | awk '{print $7}'
Use Root checked
Store Output In %STATE
5 - If
Condition
%STATE ~ GSM
6 - Send Intent
Action
action.intellig.CHANGE_NETWORK_TYPE
Extra
extra.intellig.NETWORK_TYPE:2
7 - Flash
Text 3g Forced
Hey.
Amazing share but im trying it doesnt work right now on lolipop i think.
Or i cant do it i dont know
Do you use this task right now?

[Interop] Windows Phone 8+ Registry Hacks + hosts file source

[size=+2]Discontinued; but the hosts files below are always updated[/size]
This is a recompilation of registry hacks for Interop-unlocked Windows Phone devices.
I have tested this on my freshly hard-resetted Lumia 730; Windows Phone 8.1 GDR1 (Also tried on Win10 v14393.189 as of 2 weeks ago).
I have used CustomPFD to explore the whole WP Registry, I will update this thread if I find something new and unusual.
- Created registry values are tested while there are some that says 'create a value for this key', I did not include it without initial and further testing
- Most WPTweaker tweaks are not here though, I still haven't consulted them for replicating their list of tweaks. All of the tweaks below are the ones I always use/alter on my device.
- Several tweaks might still apply on W10M but I haven't tested it all yet.
- Useful things are in here, I will dig down further to add more to this thread
Credits:
- CustomPFD
- WP10 WPTweaker
- WPTweaker
________________
Code:
HKLM\SYSTEM\ControlSet001\Services
(Start: 4 (Disable), 3 (Manual), 2 (Automatic), 1 (System), 0 (Boot))
- DataCollection
- DiagnosticSvc
- DiagTrack
- dmwappushsvc
- DnsCache → You might want to disable this service if and only if you are using a large hosts file
- FeedbackSvc
- telrepsvc → Telemetry, haven't confirmed yet but somehow breaks clearing of Telemetry files in Storage
- telwatsvc → Telemetry
Code:
HKLM\SYSTEM\ControlSet001\Control
- WaitToKillServiceTimeout
Code:
HKLM\SYSTEM\Maps\Storage
- UseSmallerCache
Code:
HKLM\SOFTWARE\OEM\VolumeLimit
- EnableVolumeLimit
- VolumeLimit
Code:
HKLM\SOFTWARE\OEM\Nokia\Onboarding
(I do not know what this does)
- EnableNokiaCare
Code:
HKLM\SOFTWARE\Microsoft\CommandChannel\Internal
(Testing; Disables Push Notifications?)
- IsWNSEnabled
Code:
HKLM\SOFTWARE\Microsoft\DataCollection\Default\WifiAutoConnectConfig
(Disables Wi-Fi Sense)
- AutoConnectEnabled
Code:
HKLM\SOFTWARE\Microsoft\DeviceEncryption
(Testing; Bitlocker?)
- Enabled
Code:
HKLM\SOFTWARE\Microsoft\Internet Explorer
- Disable Display Inline Images → Enables IE's Show Pictures Automatically option
Code:
HKLM\SOFTWARE\Microsoft\Internet Explorer\GestureNavigation
(Testing; IE Swipe Gesture)
- FlickThreshold
Code:
HKLM\SOFTWARE\Microsoft\Internet Explorer\Main\TabStore
(Testing; Max Tabs? I think this one is the tabs to be kept in memory, or else.. It will be unloaded)
- NumberToKeep
Code:
HKLM\Software\Microsoft\Messaging\GlobalSettings
- ShowSendingStatus → Useful if you want to see the "Sending..." status in your outgoing sms
Code:
HKLM\Software\Microsoft\PolicyManager\current
(Works like Group Policy Editor? Feedback in Settings now says Disabled by policy/administrator or something like that)
- ...\System\AllowTelemetry, it is set to 2. Setting this to 0 disables Telemetry and Feedback.
Code:
HKLM\Software\Microsoft\SEMgr\UI
(NFC Settings)
Code:
HKLM\Software\Microsoft\Shell\CustomHoldDelays
(Contains Hold Delays for touch taps, higher=longer tap to activate)
Code:
HKLM\Software\Microsoft\Shell\NavigationBar
- IsBurnInProtectionEnabled → This is the one that makes your software navigation bar grayish
- IsDoubleTapOffEnabled → This option is hidden in the Navigation Bar settings for Windows Phone 8.1 GDR1 users, double tapping the navbar will lock/turn-off the screen; good for hardware key prolongation
Code:
HKLM\Software\Microsoft\Shell\Start
(Tile Flipping Delay)
- NotificationCycleTimer
Code:
HKLM\Software\Microsoft\SQMClient\Windows
(Windows Customer Experience Improvement program)
- CEIPEnable
Code:
HKLM\Software\Microsoft\Windows\CurrentVersion\Control Panel\Theme
(Use 59, 64, or 75)
- UserPreferenceWidth → 75 in my device gives 5 Quick Settings instead of the usual 4
Code:
HKLM\Software\Microsoft\Windows\CurrentVersion\Audio
(Testing; Allows compressed format like FLAC?)
- AllowCompressedFormatSupport
Code:
HKLM\Software\Microsoft\Windows\CurrentVersion\Internet Settings
- ReceiveTimeOut
- SendTimeOut
Code:
HKLM\Software\Microsoft\Windows\CurrentVersion\WINEVT\Channels
(Testing; Event Logging)
~ I tried setting Enabled to 0, I do not see/feel any changes though.
Custom Hosts file
hosts sources are now posted here.

Joying 2GB - Steering wheel key customization - V6 (NO KILL)

THIS MOD IS ONLY FOR THE JOYING / 2GB / Sofia models - It is stable and working well .
Please use V4.1 if you have not upgraded to Marshmallow!
History:
V6.4: Update using code base 9/1/2017 Joying Update ( Android 6.0 ) (updated Oct 7)
Changes:
- Meida keys - Removed support for media keys customization. No longer sent to launcher.sh due to slow response time.
- Media keys - Modified code to only send media keys to the active media player.
- Changed reboot timer from 1/2 second to 2 seconds. Should help eliminate random reboots when coming from standby.
- Updated player_app.txt and navi_app.txt to latest from @surfer63
- Fixed issue with button 33 not working
- Files included:
- V6.4-Sofia-1-C9-Server_NOKILL.zip - Original file with task killer removed
- V6.4-Sofia-1-C9-Server_NOKILL_GVS.zip - Task killer removed, Google Voice Search on 'SRC' key
- V6.4-Custom_Keys-Mods.zip - Complete key modifications ( requires launcher.sh - description below )
V6.3: Update using code base 5/25/2017 Joying Update ( Android 6.0 )
- Files included:
- V6.3-Sofia-1-C9-Server_NOKILL.zip - Original file with task killer removed
- V6.3-Sofia-1-C9-Server_NOKILL_GVS.zip - Task killer removed, Google Voice Search on 'SRC' key
- V6.3-Custom_Keys-Mods.zip - Complete key modifications ( requires launcher.sh - description below )
V6.2: Updated using code base 5/8/2017 Joying Update ( Android 6.0 )
- Added fix for google maps voice output on radio from @xdamember2
V6.1: Updated code base using 5/8/2017 Joying Update ( Android 6.0 )
V6: Updated code base using 4/27/2017 Joying Update ( Android 6.0 )
Android 5.1.1
V4.1 - Fixed issue with "Google Voice Search" not lowering music volume (3/23/2017) - Android 5.1.1
V4: Updated code base using 3/14/2017 Joying ROM
Changes/Added support for:
- MEDIA KEY - hard key on unit
- BAND KEY - hard key on unit
- ACC_ON - Triggers on key on
- Minor changes to example shell scripts to add cases for MEDIA, BAND, ACC_ON ( launcher.sh )
- FIX/UPDATE - Updated list of NAVI APPS in assets/property/navi_app.txt ( allows more applications to speak during radio )
- Many thanks to @surfer63 for navi app radio fix and windows install script
V3 - Rebuilt using latest Joying ROM dated 2/22/2017 - Includes V1 & V2 steering wheel / key modifications.
Changes/Added support for:
- ACC_OFF - Added support for running actions at key off (case 98 )
- Added case 98 to example scripts to perform "PAUSE" - to stop current music player when key off
V2 Removed killAppWhenSleep(); - Eliminates tasks being killed on sleep
Added support for additional keys / Minor changes to example shell script ( launcher.sh )
- HANG - steering wheel softkey
- DVD - hard key on unit (if available)
- EJECT- hard key on unit (if available)
- CALL/BT softkey - Fixed issue where key would not respond after call disconnect.
V1 Initial version
There is little risk with this mod, but please understand what you are doing, and make backup of the original apk file ( in case you want to revert back ). The installer script does make a backup, but will overwrite the backup if installed more than once.
I also added a simpler "launcher_simple.sh" into the zip, which only changes the functionality of the Source (rotates radio, pandora, spotify ) and Call buttons ( google voice command ). These scripts are working examples of what can be done. If you want the simpler version, just rename "launcher_simple.sh" to "launcher.sh" before installing.
---------------------- Original Post -----------------
I have spent quite a bit of time working on being able to customize the steering wheel keys of my Joying 2GB headunit (JY-UL135N2 / 2GB / Sofia unit). I have made some good progress and thought I would share what I have done so far.
The system package /system/app/Sofia-1-C9-Server-V1.0/Sofia-1-C9-Server-V1.0.apk has been modified to intercept the keys sent by the MCU, and thus able to change the behavior of the key presses. The keys listed below are supported, and will launch a "shell" process, so any action that can be done by the command line can be performed. If your not familiar with the Android command line, you might be surprised how powerful it is. As a side note, this works very fast and efficient. From my testing the overhead of the system call and shell script is almost non-existent, and key presses are registered with no delay. In other words, it is working very nicely.
In addition to the steering wheel button mods, also provided is the ability to launch a command or series of commands when a RESUME is received.
Included is my shell script (example) that can be used as a model for your own customization. The example script included performs the following actions:
CALL/BT PHONE(27) - One press is HOME, 2 presses is BACK, 3 presses brings up Google Voice Commands
MODE/SRC(37) - Rotates through music apps: Radio, Pandora, Spotify, Stock Music App - If it has been longer than 1 minute since the last press it will return you to the last selected music app with first press, then continue with the rotation. ( I'm working on a more intelligent way of doing this, that looks at the process list and will post soon)
NAVI(9) - One press is Torque, 2 presses is google maps
PAUSE/PLAY(85*),NEXT(87*), PREVIOUS(88*), FASTBACK(89*), FASTFWD(90*),HOME(3), BACK(4) - Currently set to perform stock functions. They ARE passed to script so they can be assigned other functions if wanted.
ACC_ON(97) - Executes at ignition switch on. Sample script has a 'play' here to restart music player that was paused at key off.
ACC_OFF(98) - Executes at ignition switch off. I suggest you assign "pause" on this case, to stop current music player. Resolves issue of music player advancing for several minutes after key is turned off.
RESUME(99) - Executes on system resume.
Please note the media control keys marked with a (*) are hardcoded to specific functions within the stock Joying applications. They are only passed through to the shell script when you are NOT using a Joying media application. They will ONLY work as the original keys when you are within the Joying media applications.
Remember, the apk is just handing codes to you, what you do with them after that is up to you! I have tried to comment the example script enough to be understandable to someone with basic programming knowledge.
Attached is a zip file with the updated Sofia-1-C9-Server-V1.0.apk, launcher.sh ( my example script), and install script. The launcher.sh script must be placed in the /data directory ( /data/launcher.sh ), as it is hardcoded in the apk file.
The install script is a shell/linux script, but you can easily copy/paste the adb commands if your using windows.
[NOTE: Please update to the latest version of busybox! I found some bugs in the version included by Joying that caused several issues.]
Awesome work. I will mess with this sometime this week. I still need to root my unit. Just installed it last week.
Sent from my SAMSUNG-SM-G935A using Tapatalk
Excellent work, sir! Before I start modifying the script for personal taste, could you help how to find key number for DVD and Eject buttons that currently have no function as the DVD drive is non-existent? Maybe logcat or something?
sonof said:
Excellent work, sir! Before I start modifying the script for personal taste, could you help how to find key number for DVD and Eject buttons that currently have no function as the DVD drive is non-existent? Maybe logcat or something?
Click to expand...
Click to collapse
I see a few references in the code for the DVD/eject button in the common code. My 'best guess' would be to add a system call to the cases listed below, but I seriously doubt the MCU would even send the codes if there is no DVD present.
bsp/FinalBsp.java
public static final int KEY_CODE_DVD = 242;
public static final int KEY_CODE_EJECT = 231;
bsp/HandlerBspKey.java
public static void keyEvent(int paramInt1, int paramInt2)
case 242:
bspKeyDvd(paramInt2);
return;
case 231:
bspKeyEject(paramInt2);
return;
gustden said:
I see a few references in the code for the DVD/eject button in the common code. My 'best guess' would be to add a system call to the cases listed below, but I seriously doubt the MCU would even send the codes if there is no DVD present.
bsp/FinalBsp.java
public static final int KEY_CODE_DVD = 242;
public static final int KEY_CODE_EJECT = 231;
bsp/HandlerBspKey.java
public static void keyEvent(int paramInt1, int paramInt2)
case 242:
bspKeyDvd(paramInt2);
return;
case 231:
bspKeyEject(paramInt2);
return;
Click to expand...
Click to collapse
Seems that MCU does send the codes as seen here.
I will see what I can do but I doubt I am able to do anything as I just installed apktool the first time today and am new with apk's. Thanks for your efforts! Very appreciated.
sonof said:
Excellent work, sir! Before I start modifying the script for personal taste, could you help how to find key number for DVD and Eject buttons that currently have no function as the DVD drive is non-existent? Maybe logcat or something?
Click to expand...
Click to collapse
sonof said:
Seems that MCU does send the codes as seen here.
I will see what I can do but I doubt I am able to do anything as I just installed apktool the first time today and am new with apk's. Thanks for your efforts! Very appreciated.
Click to expand...
Click to collapse
If I create and send you a apk file with additional debug statements, would you be able to install it, and capture the 'logcat' of the buttons being pressed? It makes it much more difficult since I don't have the DVD buttons. Hacking smali code is a LOT of trial and errors. Their code is quite complex, and doesn't decompile into Java very nicely in some critical areas.
gustden said:
If I create and send you a apk file with additional debug statements, would you be able to install it, and capture the 'logcat' of the buttons being pressed? It makes it much more difficult since I don't have the DVD buttons. Hacking smali code is a LOT of trial and errors. Their code is quite complex, and doesn't decompile into Java very nicely in some critical areas.
Click to expand...
Click to collapse
Yes I am capable of doing that!
sonof said:
Excellent work, sir! Before I start modifying the script for personal taste, could you help how to find key number for DVD and Eject buttons that currently have no function as the DVD drive is non-existent? Maybe logcat or something?
Click to expand...
Click to collapse
sonof said:
Yes I am capable of doing that!
Click to expand...
Click to collapse
I put in debugging code that parses the data stream from the MCU and dumps the first 4 bytes of EVERY message that is received from the MCU (skipping checksum info). Simply replace the original file (make a copy first ) and reboot. When looking for the keys, I suggest you do not use the radio, as it sends a constant flood of messages, such as RDS updates.
Even when the radio is off, there are still messages constantly being sent. If you filter on the debug messages MCUKEY in adb, and press the button in question a few times quickly, you should see a consistent pattern. I was able to identify the 'HANG' key in a couple minutes using this method. You should see something like this in the logcat:
D/MCUKEY ( 693): MCUKEYINPUT: B1=1 B2=0 B2=5 B2=224
D/MCUKEY ( 693): MCUKEYINPUT: B1=1 B2=7 B2=16 B2=0
D/MCUKEY ( 693): MCUKEYINPUT: B1=1 B2=0 B2=0 B2=49
D/MCUKEY ( 693): MCUKEYINPUT: B1=1 B2=7 B2=16 B2=0
D/MCUKEY ( 693): MCUKEYINPUT: B1=1 B2=3 B2=34 B2=0
In this case the HANG key is in bold ( 1, 7, 16, 0 ) messages. IF the DVD and eject keys are sent, they should definitely show up here. Not every key is sent by the MCU, if it is not relevant to the current state of the system. For example the media buttons are not sent when the radio is on, since the MCU is in control of the radio, however it does send the results such as a frequency change resulting from the button press.
It is possible that the MCU knows there is no DVD present and suppresses the messages. From looking at the code, it may be the action of a disc being ejected that is sent from the MCU, with the eject button press handled internally by the MCU. Your more likely to find the press of the DVD button than the eject button, but may find both.
When your done searching, you want to put back the original file and reboot. If you find the codes, I can certainly add them to trigger the shell script and you can take whatever action you want with them.
Thank you! I will try this the first thing next week when I get back home from a weekend trip.
Question: if I remove a customization from the script file for a key, the key should then perform its default functions, correct?
vassandrei said:
Question: if I remove a customization from the script file for a key, the key should then perform its default functions, correct?
Click to expand...
Click to collapse
The keys being passed to the shell script (launcher.sh) is hard-coded in the APK file and is just sent to the script. If you remove it from the script, the key would no longer do anything.
If you want to keep the stock functionality of a specific button, it should be fairly easy to duplicate it in the shell script. For example:
BT/CALL button: "am start com.syu.bt/com.syu.bt.BtAct"
NAVI: By default, I think NAVI just toggles between a Navi app, and the previous activity on the stack.
The code below should behave the same as the original for both the NAVI an BTPHONE buttons ( assuming your using google maps )
Code:
case $key in
9) # NAVI
x=`dumpsys activity activities | grep "Run #" | cut -f 13 -d" "| head -1 | grep maps`
if [ "$x" = "" ]
then
$maps
else
am start `dumpsys activity activities | grep "Run #" | cut -f 13 -d" " | grep -v launcher | grep -v systemui | grep -v maps |head -1`
fi
;;
27) # BTPHONE/PTT
am start com.syu.bt/com.syu.bt.BtAct
;;
Play/Pause: you can just remove the 85 case, it would just hit the default case and pass "input keyevent 85" which is identical in functionality.
gustden said:
The keys being passed to the shell script (launcher.sh) is hard-coded in the APK file and is just sent to the script. If you remove it from the script, the key would no longer do anything.
If you want to keep the stock functionality of a specific button, it should be fairly easy to duplicate it in the shell script. For example:
BT/CALL button: "am start com.syu.bt/com.syu.bt.BtAct"
NAVI: By default, I think NAVI just toggles between a Navi app, and the previous activity on the stack.
The code below should behave the same as the original for both the NAVI an BTPHONE buttons ( assuming your using google maps )
Code:
9) # NAVI
x=`dumpsys activity activities | grep "Run #" | cut -f 13 -d" "| grep -v launcher | grep -v systemui | head -1 | grep maps`
if [ "$x" = "" ]
then
$maps
else
am start `dumpsys activity activities | grep "Run #" | cut -f 13 -d" " | grep -v launcher | grep -v systemui | head -2 | tail -1`
fi
;;
27) # BTPHONE/PTT
am start com.syu.bt/com.syu.bt.BtAct
;;
Play/Pause: you can just remove the 85 case, it would just hit the default case and pass "input keyevent 85" which is identical in functionality.
Click to expand...
Click to collapse
brilliant! thank you so much!
Last thing: I want to have viper4android launch on resume (in the background ideally). where can I find the "app identifier" to put in the shell script?
vassandrei said:
Question: if I remove a customization from the script file for a key, the key should then perform its default functions, correct?
Click to expand...
Click to collapse
vassandrei said:
brilliant! thank you so much!
Last thing: I want to have viper4android launch on resume (in the background ideally). where can I find the "app identifier" to put in the shell script?
Click to expand...
Click to collapse
I made a slight change to the 'CODE' section of my previous post, so if you copy it make sure you get the edited version. I tested it and made a couple of changes.
There are several ways to get the package name and activity.
What I typically do is start the application on the unit and do the following in adb:
> adb shell
> dumpsys activity activities | grep "Run #"
This shows you a list of the activities ( package/activity ) in the task list with most recent at the top.
You should be able to pick it out pretty easily. If it is the app that I found with google, this should work to start it.
> am start com.vipercn.viper4android_v2/.activity.ViPER4Android
In most cases, you can just give the package name when using 'am start' with no need for the activity. It will default to the 'LAUNCHER' activity in the package. I usually always give the activity, just to be safe. I would sleep for a couple seconds to give it time to initialize and then $home to take you back to the Home screen. So whole command would look like this. It is easy to test using adb.
am start com.vipercn.viper4android_v2/.activity.ViPER4Android ; sleep 2 ; $home
Thanks for this, it's working great on my Joying (JY-UL135N2 ).
My only issue is that the CALL/BT PHONE (27) button is assigned to my "Pick Up/Call Out" button on my steering wheel. So I can't use it to pick up calls. I actually have another dedicated button on my steering to activate voice commands, so I'd rather assign the CALL/BT PHONE function to that. Do you happen to know how to find out what numbers corresponds to each button press?
akuma148 said:
Thanks for this, it's working great on my Joying (JY-UL135N2 ).
My only issue is that the CALL/BT PHONE (27) button is assigned to my "Pick Up/Call Out" button on my steering wheel. So I can't use it to pick up calls. I actually have another dedicated button on my steering to activate voice commands, so I'd rather assign the CALL/BT PHONE function to that. Do you happen to know how to find out what numbers corresponds to each button press?
Click to expand...
Click to collapse
I make and receive so few voice calls, It wasn't worth having a steering wheel button dedicated for the dialer/call pickup . I just tap the screen to answer and use google voice to make calls.
If you want to have a button answer a call, there *should* be a way to do it given the right command. I will play around with it more. Worse case I can just back out the changes for the (27) , and send you an updated apk.
I used the joying steering wheel control app and switched the dialer/call pickup to my voice button and that works, but my dialer/call pickup doesn't do anything. Please let me know if you want me to test anything. Thank you.
gustden said:
I put in debugging code that parses the data stream from the MCU and dumps the first 4 bytes of EVERY message that is received from the MCU (skipping checksum info). Simply replace the original file (make a copy first ) and reboot. When looking for the keys, I suggest you do not use the radio, as it sends a constant flood of messages, such as RDS updates.
Even when the radio is off, there are still messages constantly being sent. If you filter on the debug messages MCUKEY in adb, and press the button in question a few times quickly, you should see a consistent pattern. I was able to identify the 'HANG' key in a couple minutes using this method. You should see something like this in the logcat:
D/MCUKEY ( 693): MCUKEYINPUT: B1=1 B2=0 B2=5 B2=224
D/MCUKEY ( 693): MCUKEYINPUT: B1=1 B2=7 B2=16 B2=0
D/MCUKEY ( 693): MCUKEYINPUT: B1=1 B2=0 B2=0 B2=49
D/MCUKEY ( 693): MCUKEYINPUT: B1=1 B2=7 B2=16 B2=0
D/MCUKEY ( 693): MCUKEYINPUT: B1=1 B2=3 B2=34 B2=0
In this case the HANG key is in bold ( 1, 7, 16, 0 ) messages. IF the DVD and eject keys are sent, they should definitely show up here. Not every key is sent by the MCU, if it is not relevant to the current state of the system. For example the media buttons are not sent when the radio is on, since the MCU is in control of the radio, however it does send the results such as a frequency change resulting from the button press.
It is possible that the MCU knows there is no DVD present and suppresses the messages. From looking at the code, it may be the action of a disc being ejected that is sent from the MCU, with the eject button press handled internally by the MCU. Your more likely to find the press of the DVD button than the eject button, but may find both.
When your done searching, you want to put back the original file and reboot. If you find the codes, I can certainly add them to trigger the shell script and you can take whatever action you want with them.
Click to expand...
Click to collapse
Luckily the eject key was also found! Here are the codes:
DVD:
D/MCUKEY ( 691): MCUKEYINPUT: B1=1 B2=0 B2=16 B2=80
EJECT:
D/MCUKEY ( 691): MCUKEYINPUT: B1=1 B2=161 B2=2 B2=91
Looking forward to the modified apk. If you happen to take donations I'd be willing to give you a beer. Thank you.
Model number for reference: JY-AL003N2
sonof said:
Luckily the eject key was also found! Here are the codes:
DVD:
D/MCUKEY ( 691): MCUKEYINPUT: B1=1 B2=0 B2=16 B2=80
EJECT:
D/MCUKEY ( 691): MCUKEYINPUT: B1=1 B2=161 B2=2 B2=91
Looking forward to the modified apk. If you happen to take donations I'd be willing to give you a beer. Thank you.
Model number for reference: JY-AL003N2
Click to expand...
Click to collapse
Here is an updated apk file that should catch the code you listed. In the zip there is a file "keys.txt" and also updated APK file. The keys.txt is a complete list button codes for both the soft-keys ( steering wheel ) and hard-keys (on unit ) that the new apk sends to the script. This is a beta of V2.0 which I added:
3 - HOME ( On unit hard key )
4 - BACK ( On unit hard key )
28 - HANG/CALL END ( Steering wheel softkey)
31 - DVD ( On unit hard key )
32 - EJECT ( On unit hard key )
The HOME/BACK keys are sending the keycodes for the home/back actions. You don't need to map them in a script, as long as you have a default that passes keycodes at the end of the script.
*) input keyevent $key
;;
I have used it the last couple of days and it is working fine for me, but can't test the dvd or eject.
Let me know if it registers the keys.
sorry for the dumb question but do you need to root the unit to use this?
Is there a way to run a shell script when I switch ignition off and illumination on or off?

[TBUI] TBUI Watch face tool. Editor for one of the FitcloudPro watch face format.

hi all again,
still in "beta", but seems works fine enough to public and allow to use this format even more effective than in vendors watch faces.
what does mean "TBUI"? it's just a tag in watch face (further "wf") file, what allow you identify it. you may find it at the end of all of this type of watch faces. just open it in any editor/viewer, go at the end of the file and you'll se it:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
it's a very flexible format, perhaps a next version of "PUSH" (yep, a similar tag again). at least it looks similar but have more powerful abilities.
this format allow you to use in any combinations a lot of elements such as:
- clock hands (as discrete as smooth)
- digital data: time markers (49 in variants), sensors data (48 in variants)
- sequential frame-based elements (time, month, progress-bars, rolled-up elements... - 30 items)
- localizeable tags (chinesse/non chinesse)
- animations (sequential frames)
- buttons to call device menu items
- internal wf configuration (ability to enable/disable some groups of elements "on the fly")
and you not limited in one item per type (if you want).
but before to continue, to be honest I'd must warn:
WARNING - theoretically you may brick your device and may not recover it without special knowledge. while I'd investigated this format it happed few times in case of wrong frames compression. now it's solved and must not happens, but chances still not a zero. for sample, few days ago I've known what a zero mirror point for clock hands may cause stuck your device too. I did set a foolproof protection for exactly this issue, but can't check all of possibilities because of over 150 available elements.
ok. if you'd not escaped yet, let's continue.
Spoiler: few screenshots of interface
editor was maked closer to the file format as maximum as possible, so you must understand few basic definitions:
- frame - just an image
- char set - required for elements what uses strings to display. technically. it's a group of assignments frames to characters/symbols. if you use some char set for element, then each char in string what must be displayed, would be replaced by assigned frame. if the char would not assigned, than it'll be skipped.
- ui element - a part of a wf what do something. display some sort of data or mark some region for some action.
- region - rarely uses. if you not in plane to make a hard wf, than you may just ignore it. treat it as "layer". it assign new start point of a coordinate for child elements, but have no affect for sequential of global drawing queue and not cut elements if it's draws out of region area. each region have it's own "sets" - a group of elements what must be shown at once. what det must be shown, may be configured by special element class.
so in this case, editor have a 4 "subeditors": "UI" ("UI items" and "Regions") and "Resources" ("Char Sets" and "Frames")
main interface controls:
horizontal control panel:
"X" - remove element
"A" - add new element as next
"U" - up at one position
"D" - down at one position
"+"/"-" - expand/collapse element
vertical control panel (for ui items editor only):
"+"/"-" - expand/collapse element
"H" - hide element on branch
"L" - ignore element on branch (would be displayed, but would be ignored by mouse)
available classes:
Spoiler: Overlay
just a frame as is. used parameters:
Code:
Target ID - id of a frame
Parent Region ID - as named
Set ID - as named for region assigned in "Parent Region ID"
Spoiler: ClockHands
used parameters:
Code:
Target ID - id of a first frame in chain or alone frame id
X, Y - top left corner coordinates
X2, Y2 - coordinates of a mirror/rotate point
Parent Region ID - as named
Set ID - as named for region assigned in "Parent Region ID"
elements:
CHHoursHand16, CHMinutesHand16, CHSecondsHand16 - uses 16 sequential frames from "N" to "E". works as a discrete clock hands. all other frames would be used as a mirrored via lines goes through mirror point (x2, y2)
CHHoursHand1, CHMinutesHand1, CHSecondsHand1 - uses only one frame ("N"). would be rotated around x2, y2. works as a discrete clock hands. a lot of cpu usage - reduce size of a frame as possible.
CHHoursHandSmooth, CHMinutesHandSmooth, CHSecondsHandSmooth - uses only one frame ("N"). would be rotated around x2, y2. works as a smooth clock hands. a lot of cpu usage - reduce size of a frame as possible.
Spoiler: Char2FrameTime
various elements what display time parts (hours, minutes, seconds, date, month, year, day of the week in different variants) as a numeric values
used parameters:
Code:
Target ID - id of a char set
X, Y - top left corner coordinates
X2, Y2 - used only for calendar table parts as a size of a cell
Align - align of an element to x, y point
Parent Region ID - as named
Set ID - as named for region assigned in "Parent Region ID"
Params 1 - second field only - kerning (interval between chars)
Spoiler: Char2FrameStatistic
various elements what display sensors data (steps, hear rate, o2, battery level etc. in different variants) as a numeric values
used parameters:
Code:
Target ID - id of a char set
X, Y - top left corner coordinates
Align - align of an element to x, y point
Parent Region ID - as named
Set ID - as named for region assigned in "Parent Region ID"
Params 1 - second field only - kerning (interval between chars)
Spoiler: Localizable
elements what display various tags for chinesse and non-chenesse localizations ("am/pm","bpp","o2","km"/"ml" etc. )
each item must have two sequential frames: for "chinesse" locale, then for "non-chinesse" locale.
useless if you have no plans to make a chinesse variant.
used parameters:
Code:
Target ID - id of a first frame (chinesse)
X, Y - top left corner coordinates
Align - align of an element to x, y point
Parent Region ID - as named
Set ID - as named for region assigned in "Parent Region ID"
Spoiler: SequentialFrames
various elements displays some data as sequential frames. like a progress-bars of some data, month etc.
used parameters:
Code:
Target ID - id of a first frame in chain
X, Y - top left corner coordinates
Parent Region ID - as named
Set ID - as named for region assigned in "Parent Region ID"
Spoiler: Specialized
some sort of elements what not assigned to any other classes
used parameters:
Code:
Target ID - id of a first frame in chain
X, Y - top left corner coordinates
Parent Region ID - as named
Set ID - as named for region assigned in "Parent Region ID"
Spoiler: OverlayGroup
not analyzed yet
Spoiler: Button
uses to call internal watch menus if exists
used parameters:
Code:
X, Y - top left corner coordinates
X2, Y2 - width and height of a button
Parent Region ID - as named
Set ID - as named for region assigned in "Parent Region ID"
Spoiler: RegionSettings
selecting id of a set what must be shown in appropriate region. works like a button, but have a some specific.
used parameters:
Code:
X, Y - top left corner coordinates
X2, Y2 - width and height of a button
Region Type - how it must be used - via internal config or by tap
Params 1 - for "RSConfig" only. first field as a count of a selectable items
Params 2 - for "RSConfig" only. list of frames id what would be used as a thumbnails for selection menu
sorry for so short manual, it's a bit hard to write that's all on not my first language. you may use an original watch faces to learn how it works in details or ask me here or in pm.
~200 original watch faces for dm50 (466x466) available on my gdrive you may use it as a sample or just a template/resources.
download link TBUIWFTool.zip
Spoiler: list of tested compatible devices
- DM50, Lemfo (466х466)
- HD11, Huadai (240x280)
- HK28 (368х448)
- HK46 (360x360)
- i20, Colmi (360x360)
- i30, Colmi (390?x390?)
- i31, Colmi (466x466)
- C60, Colmi (240x280)
- C80, Colmi (368x448)
- LA24, Linwear, Tiroki (360х360)
- LF26 Max, Lemfo (360х360)
- Vibe 7 Pro, Zeblaze (466x466)
- x7, Gejian (360x360)
Spoiler: not tested devices with TBUI wf
- Dizo Watch R, Realme (360х360)
- HK3Pro (360х360)
- L20, microwear (240x280)
- W3Pro+, XO (360х360)
all devices except dm50 tested by other users, not by me.
watch face for sample:
it was maked by request (converted from push 240x240 to tbui 360x360) and because my watch have a 466x466 resolution it looks shifted. but on 360x360 would be fine.
if you hold tap on display to get watch face selector, you'll see a little gear icon at bottom of preview:
tap it and you'll enter in internal config menu:
you can setup:
- ability to show/hide weather applet
- using static or roll-up month/day elements
- using battery level by 10% or by 1%
- select discrete seconds clock hand or smooth
also it have a few buttons in regular mode:
- weather (by tap weather applet)
- data (by tap steps)
- heart rate (by tap heart or it's numbers)
- timer (by center of a clock)
Very good
I tried running the tool in a clean Windows 11 VM, and it wont start. Does it require a runtime or framework (eg, .NET, Python, etc.) to be installed?
EDIT: Nevermind, Windows' had blocked the file. Anyone else has this problem, right-click->propoerties->unblock. Windows does not give a helpful error message when failing to run. FYI I also got a hit in Windows Defender, which immediately deleted this when I first downloaded it. I scanned in in Kaspersky online and it appears to be clean, so it appears to be a false-positive, but that might have something to do with why Windows is making it so hard to run it.
danjayh said:
...Does it require a runtime or framework (eg, .NET, Python, etc.) to be installed?
...
Click to expand...
Click to collapse
.net 4.7.2 only.
danjayh said:
...FYI I also got a hit in Windows Defender, which immediately deleted this when I first downloaded it...
Click to expand...
Click to collapse
I use it on win 10 and never seen nothing similar. also never heard about this issue (shared on other forum from march).
also it's not finished and would be updated. m.b. even not an once.
Great work... But how I can upload to Colmi i30?
Thanks!
EDIT: Learned to upload and all ok, thanks again!
It's possible to easy convert 466px to 390px? Or need export and import resized all frames?
Jean-DrEaD said:
It's possible to easy convert 466px to 390px? Or need export and import resized all frames?
Click to expand...
Click to collapse
no. resizing in ".net" is a... not a good quality point. you must resize frames via external specialized tools. I use a xnview (for sample). it have a fine enough algorithms and batch processing.
with next build you'll be allowed to remove all frames by one click (already implemented in debugging build). also I'll integrate local browser (at first) for viewing graphical resources of local watch face files and export it or import to current watch face.
at this time, in debugging build it supports push format for viewing too (editing not in plans, just only as sourse of images). seems public build would be able at this week.
in plans some other formats and add web browser too.

Categories

Resources