Sympathic way to upgrade to Nougat - Honor 8 Guides, News, & Discussion

Hi ,
I think found to upgrade to Beta nougat very naturally. No need to unlock , no need to root.
it's a four step procedure and even probably only step 4 is mandatory but it requires some good network skills.
--------------
-step one if you are on L04 you need to start from L04C567B162 version if on L09 from L09C432B131 (not sure about 432)
-step two you locate and download the appropriate ROM (there is at least 2 files maybe more) for your version. you may use Firmware Finder by Team MT for that .
First you get filelist.xml and you download ALL the zip files specified in it
For L04 links are :
http://update.hicloud.com:8180/TDS/data/files/p3/s15/G1278/g104/v66891/f1/full/filelist.xml
http://update.hicloud.com:8180/TDS/data/files/p3/s15/G1278/g104/v66891/f1/full/update.zip
http://update.hicloud.com:8180/TDS/...91/f1/full/hw/usa/update_data_full_hw_usa.zip
-step three you create on your internal storage folder HwOUC/66891 (note the number is the one that is on the URL) and put all the zip file in it
you should get HwOUC/66891/update.zip and HwOUC/66891/update_data_full_hw_usa.zip
- from there I am pretty sure that you could run some adb command like adb reboot recovery and some option to run the upgrade but I did not find it. So I did step 4.
Step 4 .
Step 4 is complex and requires good network capacity.
-Run Settings->updater on your Device and connect it to a special wifi network where you can play with HTTP packet.
-Check for updates and you will see that the device sends 4 packets.
When you receive 3rd packet (third http get that update ) below :
POST /sp_ard_common/v2/Check.action?latest=true&ruleAttr=true&verType=true HTTP/1.1
Content-Length: 896
Content-Type: application/json
Host: query.hicloud.com:80
Connection: Keep-Alive
User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)
{"rules":{"FingerPrint":"HONOR\/FRD-L04\/HWFRD:6.0\/HUAWEIFRD-L04\/C567B162:user\/release-keys","DeviceName":"FRD-L04","FirmWare":"FRD-L04C567B162","IMEI":"","IMSI":"","Language":"en-us","OS":"Android 6.0","HotaVersion":"17.4.16","saleinfo":"blue|usa|hw|N|EmotionUI_4.1|4.0 GB|32.00 GB|8_2.3GHz|Y|","C_version":"C567","D_version":"D000","devicetoken":"","PackageType":"increment","ControlFlag":"0","extra_info":""}}
then you need to answer this :
HTTP/1.1 200 OK
Content-Type: application/json;charset=utf8
Date: Wed, 30 Nov 2016 16:32:12 GMT
Server: nginx
Content-Length: 354
Connection: keep-alive
{"status":"0","autoPollingCycle":"1","components":[{"name":"FRD-L04C567B317-OTA","version":"FRD-L04C567B317","versionID":"66891","description":"商用发布: [全量包] FRD-L04C567B162 至 FRD-L04C567B317 (2016/11/14)","createTime":"2016-11-14T03:18:12+0000","url":"http://update.hicloud.com:8180/TDS/data/files/p3/s15/G1278/g104/v66891/f1/"}]}
Then Updater will propose you to upgrade.
Last step took me several hours to perform with the help of my macbook pro , Internet Sharing , dnsmasq , and burp.

schluk said:
Hi ,
I think found to upgrade to Beta nougat very naturally. No need to unlock , no need to root.
it's a four step procedure and even probably only step 4 is mandatory but it requires some good network skills.
--------------
-step one if you are on L04 you need to start from L04C567B162 version if on L09 from L09C432B131 (not sure about 432)
-step two you locate and download the appropriate ROM (there is at least 2 files maybe more) for your version. you may use Firmware Finder by Team MT for that .
First you get filelist.xml and you download ALL the zip files specified in it
For L04 links are :
http://update.hicloud.com:8180/TDS/data/files/p3/s15/G1278/g104/v66891/f1/full/filelist.xml
http://update.hicloud.com:8180/TDS/data/files/p3/s15/G1278/g104/v66891/f1/full/update.zip
http://update.hicloud.com:8180/TDS/...91/f1/full/hw/usa/update_data_full_hw_usa.zip
-step three you create on your internal storage folder HwOUC/66891 (note the number is the one that is on the URL) and put all the zip file in it
you should get HwOUC/66891/update.zip and HwOUC/66891/update_data_full_hw_usa.zip
- from there I am pretty sure that you could run some adb command like adb reboot recovery and some option to run the upgrade but I did not find it. So I did step 4.
Step 4 .
Step 4 is complex and requires good network capacity.
-Run Settings->updater on your Device and connect it to a special wifi network where you can play with HTTP packet.
-Check for updates and you will see that the device sends 4 packets.
When you receive 3rd packet (third http get that update ) below :
POST /sp_ard_common/v2/Check.action?latest=true&ruleAttr=true&verType=true HTTP/1.1
Content-Length: 896
Content-Type: application/json
Host: query.hicloud.com:80
Connection: Keep-Alive
User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)
{"rules":{"FingerPrint":"HONOR\/FRD-L04\/HWFRD:6.0\/HUAWEIFRD-L04\/C567B162:user\/release-keys","DeviceName":"FRD-L04","FirmWare":"FRD-L04C567B162","IMEI":"","IMSI":"","Language":"en-us","OS":"Android 6.0","HotaVersion":"17.4.16","saleinfo":"blue|usa|hw|N|EmotionUI_4.1|4.0 GB|32.00 GB|8_2.3GHz|Y|","C_version":"C567","D_version":"D000","devicetoken":"","PackageType":"increment","ControlFlag":"0","extra_info":""}}
then you need to answer this :
HTTP/1.1 200 OK
Content-Type: application/json;charset=utf8
Date: Wed, 30 Nov 2016 16:32:12 GMT
Server: nginx
Content-Length: 354
Connection: keep-alive
{"status":"0","autoPollingCycle":"1","components":[{"name":"FRD-L04C567B317-OTA","version":"FRD-L04C567B317","versionID":"66891","description":"商用发布: [å¨é‡åŒ] FRD-L04C567B162 至 FRD-L04C567B317 (2016/11/14)","createTime":"2016-11-14T03:18:12+0000","url":"http://update.hicloud.com:8180/TDS/data/files/p3/s15/G1278/g104/v66891/f1/"}]}
Then Updater will propose you to upgrade.
Last step took me several hours to perform with the help of my macbook pro , Internet Sharing , dnsmasq , and burp.
Click to expand...
Click to collapse
Attached screenshot with Bluetooth activated

"Very naturally"...[emoji23] [emoji23] Not for noobs like me.
Thanks for the info any way.
Enviado desde mi FRD-L09 mediante Tapatalk

What about the FRD-L09? Do you have any link?

movizdb said:
What about the FRD-L09? Do you have any link?
Click to expand...
Click to collapse
L09 is not enough , what is Cxxx after
Below l09c10
http://update.hicloud.com:8180/TDS/data/files/p3/s15/G1278/g104/v68133/f1/full/update.zip
http://update.hicloud.com:8180/TDS/data/files/p3/s15/G1278/g104/v68133/f1/full/filelist.xml

schluk said:
L09 is not enough , what is Cxxx after
Below l09c10
http://update.hicloud.com:8180/TDS/data/files/p3/s15/G1278/g104/v68133/f1/full/update.zip
http://update.hicloud.com:8180/TDS/data/files/p3/s15/G1278/g104/v68133/f1/full/filelist.xml
Click to expand...
Click to collapse
It is FRD-L09C432B131. Do you have the files please?

movizdb said:
It is FRD-L09C432B131. Do you have the files please?
Click to expand...
Click to collapse
http://update.hicloud.com:8180/TDS/data/files/p3/s15/G753/g104/v66464/f2/full/update.zip
http://update.hicloud.com:8180/TDS/data/files/p3/s15/G753/g104/v66464/f2/full/filelist.xml

nougat
can you post maybe a step by step? i have the L04 version honor 8 and would like to use this thread but i dont know how to intercept the http packets.

tfitznerr said:
can you post maybe a step by step? i have the L04 version honor 8 and would like to use this thread but i dont know how to intercept the http packets.
Click to expand...
Click to collapse
Yes, I guess a video tutorial will be helpful

So it isnt possible to update via the updater app?

I was able to repeat the process with the help of Charles app on macOS for FRD-L09C432 and at the moment I am downloading the update.
You do not have to manually download the update packages. The update packages will be downloaded automatically.
Info
The guide applies to any FRD variant and any update version (needs confirm though). Just be sure to use the correct values where required.
Your PC / Mac and the smartphone must use the same WiFi network
Your smartphone's IP address can be found at Settings > About phone > Status > IP address (It should be something like 192.168.XXX.XXX)
I do not own Windows, but there is a possibility that you have to allow Charles app to listen for network traffic from Firewall settings. Maybe try to disable it while you are going through the guide.
Setup Charles app
Download and install Charles app (30-day trial)
Open Charles app
Select the "Sequence" option
At the bottom, in the "Filter" enter the IP (check info at the top of the post to locate your smartphone's IP address) of your FRD-L09 device (this will help you to isolate requests only from your FRD-L09)
At the top bar, hit the "Start recording", "Start throttling", "Enable breakpoints"
From the menu "Tools", select the "Rewrite" and check the "Enable Rewrite"
Setup FRD-L09
At Settings > WiFi, locate your WiFi network, long tap it and choose "Modify network"
Display the advanced settings and for Proxy check the Manual option
For Proxy hostname enter the IP of your PC / Mac
For Proxy port enter 8888 (this is the default port for Charles app)
Apply network changes
Test the connection
From FRD-L09 go to Settings > Update and hit the button to search for updates.
If everything is setup correctly, back in Charles app you'll see the desired requests. If you are on Windows, there is a chance you'll have to disable temporally your Firewall or whitelist the Charles app to allow it listen for network traffic.
Hijack the request
Notes
Be prepared for the next step: 'Rewrite the response', because It has to be completed relatively fast.
If you delay then the update check at the smartphone will timeout and you'll have to repeat the update check.
So, copy the response from the next step to have it ready for quick paste.
From the logged requests, expand the "sp_ard_common", right click the request and select the "Breakpoints" option. This will pause the next identical request and will allow to edit the response.
From FRD-L09, hit again the update button
If everything is correct, the Charles app will focus to desired request. At the bottom, hit the "Execute" button.
The response is executed and you should now be able to edit the response. At the top select the "Edit Response".
At the bottom select the "JSON Text" and proceed quickly to the next step before the request timeouts.
Rewrite the response
Notes
The below response is only for FRD-L09C432B316 update version.
You can set the response for any version of update and maybe variant of FRD. You just have to configure all the properties with the correct values. The pattern is easy to follow.
Select the response and replace it with:
Code:
{
"status": "0",
"autoPollingCycle": "1",
"components": [{
"name": "FRD-L09C432B316-OTA",
"version": "FRD-L09C432B316",
"versionID": "66464",
"description": "�? ?�?���?��?: [�?��?��??] FRD-L09C432B316 �?� FRD-L09C432B316 (2016/11/19)",
"createTime": "2016-11-19T03:18:12+0000",
"url": "http://update.hicloud.com:8180/TDS/data/files/p3/s15/G753/g104/v66464/f2/"
}]
}
Hit the "Execute" button.
If everything is correct then back at your FRD-L09 you should be able to view the update and the changelog. Before proceed to download the update read the next section.
Download the update
Before proceed to download the update, you have to disable the Proxy at your smartphone. So:
At Settings > WiFi, locate your WiFi network, long tap it and choose "Modify network"
Display the advanced settings and for Proxy check the None option
Apply changes and now your smartphone should be able to connect to Internet again
Now, go back to Updater and hit the "Quick Update" button to apply the update
A huge thanks to @schluk for providing this method!
Please hit the Thanks button at the first post to show your appreciation to @schluk

This is great! Downloading update as I write. Nice find schluk and nice tutorial cvkef! You guys are awesome! :good:

Now we need a Windows tutorial lol

Charles is available for Windows and Linux as well.
Sent from my FRD-L09 using Tapatalk

can you post a update on this with a l04 version? unfortunatly i followed your L09 steps and replaced with the L04 settings from above and cannot pull update. used his version with charles. cannot pull update. getting annoying....

tfitznerr said:
can you post a update on this with a l04 version? unfortunatly i followed your L09 steps and replaced with the L04 settings from above and cannot pull update. used his version with charles. cannot pull update. getting annoying....
Click to expand...
Click to collapse
Can you try the following?
Code:
{
"status": "0",
"autoPollingCycle": "1",
"components": [{
"name": "FRD-L04C567B317-OTA",
"version": "FRD-L04C567B317",
"versionID": "66891",
"description": "å??ç?¨å?å¸?: [å?¨é?å??] FRD-L04C567B162 è?³ FRD-L04C567B317 (2016/11/14)",
"createTime": "2016-11-14T03:18:12+0000",
"url": "http://update.hicloud.com:8180/TDS/data/files/p3/s15/G1278/g104/v66891/f1/"
}]
}

youre the best
znender said:
Can you try the following?
Code:
{
"status": "0",
"autoPollingCycle": "1",
"components": [{
"name": "FRD-L04C567B317-OTA",
"version": "FRD-L04C567B317",
"versionID": "66891",
"description": "å??ç?¨å?å¸?: [å?¨é?å??] FRD-L04C567B162 è?³ FRD-L04C567B317 (2016/11/14)",
"createTime": "2016-11-14T03:18:12+0000",
"url": "http://update.hicloud.com:8180/TDS/data/files/p3/s15/G1278/g104/v66891/f1/"
}]
}
Click to expand...
Click to collapse
you sir are a damn life saver. ive been working on this for the last 2 hours and now its working after you posted. thank you so much. you deserve the metal of honor. pun intended

znender said:
Can you try the following?
Code:
{
"status": "0",
"autoPollingCycle": "1",
"components": [{
"name": "FRD-L04C567B317-OTA",
"version": "FRD-L04C567B317",
"versionID": "66891",
"description": "å??ç?¨å?å¸?: [å?¨é?å??] FRD-L04C567B162 è?³ FRD-L04C567B317 (2016/11/14)",
"createTime": "2016-11-14T03:18:12+0000",
"url": "http://update.hicloud.com:8180/TDS/data/files/p3/s15/G1278/g104/v66891/f1/"
}]
}
Click to expand...
Click to collapse
Is it possible to make it receive the B320 update instead of the B317 one?

Gus194 said:
Is it possible to make it receive the B320 update instead of the B317 one?
Click to expand...
Click to collapse
Try this:
Code:
{
"status": "0",
"autoPollingCycle": "1",
"components": [{
"name": "FRD-L04C567B320-OTA",
"version": "FRD-L04C567B320",
"versionID": "68366",
"description": "å• †ç”¨å‘布: [全量包] FRD-L04C567B162 至 FRD-L04C567B320 (2016/11/22)",
"createTime": "2016-11-22T03:18:12+0000",
"url": "http://update.hicloud.com:8180/TDS/data/files/p3/s15/G1278/g104/v68366/f1/"
}]
}

I did everything but i cant get to make appear the request into Charles even when i filter it

Related

[Q]Can someone please make a guide how to get IMEI.

I dont understand alot. Read the thread about IMEI, but still cant get IMEI. Can someone please make guide for newbie?
Why do you need IMEI? If it is for Swype, there are countless workarounds. If not, then, well, I'll post a guide. But I need which app, and the ROM.
Hey everyone. I was just hoping that I saw this thread here or I was going to make it. I have been through Dizzy's thread with jealousy and have tried a few different things but could never get it to work.
A step by step guide would be awesome and greatly appreciated.
I want it for HBO Go and a few games that need it to run. Thanks again if this is possible.
Alot of app in the market need IMEI to use. Like Zenonia, Tap Tap and others
The best (and also the original) guide is by DizzyDen and you can find that here: http://forum.xda-developers.com/showthread.php?t=1103766
Read through it carefully so you know what to expect.
Ok, but if some1 got time and can make a guide step by step it will be good. Not everybody know English so good, so thx.
DISCLAIMER: This is a quickie guide that's written down from memory, so please be very careful if you choose to follow these directions. Nothing I say here is better than what's already listed in Dizzy's very informative post, it's just a shortened version.
Dizzy's thread is here: http://forum.xda-developers.com/showthread.php?t=1103766
AGAIN, please be careful. What follows, while it worked wonderfully for me and others, may break your Nook. You've been duly warned.
If you find these steps useful to you at all, please go to Dizzy's thread and thank Dizzy for the program.
-Cheers
=======================================================
1. Install the Java JDK on your machine (assuming windows) by going here:
http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u26-download-400750.html
I use the Windows x86 one and that worked for me. YMMV.
2. Once Java is installed properly, download DizzyDen's IMEI zip file. I will not link it here, refer to the his/her original post to get the most up to date file.
3. Unzip the file into a directory somewhere convenient.
4. Go to your Nook and make sure you have the adbWireless app (download it from the market if you need to).
5. Run the adbWireless app and press the big green button. It will turn red and then show you an ip address. Make a note of this.
6. Launch Dizzy's IMEI program (!IMEIme.exe). At the dialog box "Do you want to use In-Place update features?" Answer YES.
7. The program will attempt ADB via USB and fail. Press OK.
8. At the next dialog box, enter the IPORT info from the adbWireless screen into this box.
9. Let it do it's thing. There may be other dialog boxes, I don't have my Nook with me right now to check, but they should be pretty obvious. When it's all done, the Nook should reboot and Dizzy's program will clean up after itself.
10. Now try out some of the IMEI required apps and see if they work.
Apps that worked for me once I did this:
XDA Free
Zenonia 3
Caligo Chasers
Mega Jump
fuul4nook said:
DISCLAIMER: This is a quickie guide that's written down from memory, so please be very careful if you choose to follow these directions. Nothing I say here is better than what's already listed in Dizzy's very informative post, it's just a shortened version.
Dizzy's thread is here: http://forum.xda-developers.com/showthread.php?t=1103766
AGAIN, please be careful. What follows, while it worked wonderfully for me and others, may break your Nook. You've been duly warned.
If you find these steps useful to you at all, please go to Dizzy's thread and thank Dizzy for the program.
-Cheers
=======================================================
1. Install the Java JDK on your machine (assuming windows) by going here:
http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u26-download-400750.html
I use the Windows x86 one and that worked for me. YMMV.
2. Once Java is installed properly, download DizzyDen's IMEI zip file. I will not link it here, refer to the his/her original post to get the most up to date file.
3. Unzip the file into a directory somewhere convenient.
4. Go to your Nook and make sure you have the adbWireless app (download it from the market if you need to).
5. Run the adbWireless app and press the big green button. It will turn red and then show you an ip address. Make a note of this.
6. Launch Dizzy's IMEI program (!IMEIme.exe). At the dialog box "Do you want to use In-Place update features?" Answer YES.
7. The program will attempt ADB via USB and fail. Press OK.
8. At the next dialog box, enter the IPORT info from the adbWireless screen into this box.
9. Let it do it's thing. There may be other dialog boxes, I don't have my Nook with me right now to check, but they should be pretty obvious. When it's all done, the Nook should reboot and Dizzy's program will clean up after itself.
10. Now try out some of the IMEI required apps and see if they work.
Apps that worked for me once I did this:
XDA Free
Zenonia 3
Caligo Chasers
Mega Jump
Click to expand...
Click to collapse
Very good write up... a couple of things...
7... if you edit the ini file after first run... set Use_ADB_USB = 0 you won't have to deal with that question... it will disable the usb function in my program.
8: you only have to enter the port number in that box if you change the default port in your adbwifi app... you can also set a default ip address : port in the ini file and it will have it pre-loaded in the ip input box.
Ok here is my ini settings [Settings]
Use_In_Place = 1
Use_Previous_Patch = 0
Use_Serial_Number = 0
Use_MAC_Address = 0
Use_Manual_Input = 1
Encrypt_IMEI = 0
Use_ADB = 1
Use_ADB(usb) = 0
Use_ADB(WiFi) = 1
Clean_Up = 1
WiFi_IP_Address = 192.168.2.100
IMEI = 4938567924
I try to write the Ip. It say Adb wifi failed. Then i try IPort. Failed agian. My Ip is 192.168.2.100. Try with 2 adb wifi app.
devil4eto said:
Ok here is my ini settings [Settings]
Use_In_Place = 1
Use_Previous_Patch = 0
Use_Serial_Number = 0
Use_MAC_Address = 0
Use_Manual_Input = 1
Encrypt_IMEI = 0
Use_ADB = 1
Use_ADB(usb) = 0
Use_ADB(WiFi) = 1
Clean_Up = 1
WiFi_IP_Address = 192.168.2.100
IMEI = 4938567924
I try to write the Ip. It say Adb wifi failed. Then i try IPort. Failed agian. My Ip is 192.168.2.100. Try with 2 adb wifi app.
Click to expand...
Click to collapse
what is your computer ip address? if it is not also in the 192.168.2.0 network... you have IP isolation on for wifi and the computer will not talk to the nook.
Ok it seem my PC IP is class A 78..... i use my neighbor wifi. Can i fix the problem somehow? Can i do it with USB adb? I try but get error... Sorry my English is not very good.

[GUIDE] Android Client-Server Communication (PHP-MYSQL REST API)

Hey XDA, this is my first guide and first proper contribution to the community!
I’m writing this because I've seen many people ask a variation of the question: “How can my app get information from a database?”
This guide is intended for those who have created their first app – it is assumed you have a working development environment and are reasonable comfortable with the Android SDK and Java. I'm also assuming little to no knowledge of PHP and MYSQL
This guide walks you through:
Setting up a database and a PHP script
Testing the server
Accessing it from Android.
To make it relevant, we're going to use data that we might see in an actual app: First & Last Name, Age and Points.
Requirements:
Android Device*
Computer*
Apache/PHP/MySQL Server – I use WAMP (for Windows) (PHP v 5.4)
Postman Rest Client for Google Chrome
(*Both must be connected to the same network!)
This guide will help you setup a local server. If you want to host your script and database online, you will have to purchase paid hosting.
Let's get started!
First off, what is a RESTful service?
According to Wikipedia: A RESTful web API (also called a RESTful web service) is a web API implemented using HTTP and REST principles.
How it works:
{
"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"
}
A breakdown of the steps:
The client makes a request using a HTTP POST to a server
The PHP script queries the MYSQL server
The PHP script gets the SQL data
The PHP script puts the data into an array and assigns keys for the values. The script then outputs the data as a JSON array. JSON (JavaScript Object Notation) is a standard for data exchange, and formats the data in a way both humans and computers can easily read.
The app parses the JSON and displays the data.
Code!
Part 1: The Server
We’re going to start by setting up the server!
Install WAMP server. Leave the settings at the default values.
Start WAMP server and let it come online.
Try and open http://localhost/phpmyadmin/ - if you installed it correctly, you should be greeted by the phpMyAdmin welcome screen. We're going to be using phpMyAdmin to create our database.
Creating the Database:
Create a database called ‘mytestdatabase’. Now click the SQL tab, paste in the following SQL Code and hit run. This will create a test table called ‘users’ and fill it with data.
The table contains 5 columns: id, FirstName, LastName, Age, Points. It has 6 rows of sample data.
SQL Code:
Code:
-- phpMyAdmin SQL Dump
-- version 3.5.1
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Jun 15, 2013 at 10:07 PM
-- Server version: 5.5.24-log
-- PHP Version: 5.3.13
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET [user=714032]@old_[/user][email protected]@CHARACTER_SET_CLIENT */;
/*!40101 SET [user=714032]@old_[/user][email protected]@CHARACTER_SET_RESULTS */;
/*!40101 SET [user=714032]@old_[/user][email protected]@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Database: `MyTestDatabase`
--
-- --------------------------------------------------------
--
-- Table structure for table `users`
--
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`FirstName` text NOT NULL,
`LastName` text NOT NULL,
`Age` int(11) NOT NULL,
`Points` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
--
-- Dumping data for table `users`
--
INSERT INTO `users` (`id`, `FirstName`, `LastName`, `Age`, `Points`) VALUES
(1, 'John', 'Doe', 25, 61),
(2, 'Glen', 'Willis', 55, 3145),
(3, 'Helen', 'Cook', 35, 1232),
(4, 'Karen', 'Johnson', 20, 6456),
(5, 'Bill', 'Cooper', 60, 3856),
(6, 'Mary', 'Gomez', 30, 5422);
/*!40101 SET CHARACTER_SET_CLIENT [user=714032]@old_[/user]CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS [user=714032]@old_[/user]CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION [user=714032]@old_[/user]COLLATION_CONNECTION */;
Your database should now look like this:
We’re now ready to move on to the PHP!
Open up your WWW directory (C:\wamp\www) and create a new folder called ‘clientservertest’. In this folder, create a file called ‘login.php’.
Paste the following code into the file. (The PHP code is commented so you can follow what is going on)
PHP:
<?php
#Ensure that the client has provided a value for "FirstNameToSearch"
if (isset($_POST["FirstNameToSearch"]) && $_POST["FirstNameToSearch"] != ""){
#Setup variables
$firstname = $_POST["FirstNameToSearch"];
#Connect to Database
$con = mysqli_connect("localhost","root","", "mytestdatabase");
#Check connection
if (mysqli_connect_errno()) {
echo 'Database connection error: ' . mysqli_connect_error();
exit();
}
#Escape special characters to avoid SQL injection attacks
$firstname = mysqli_real_escape_string($con, $firstname);
#Query the database to get the user details.
$userdetails = mysqli_query($con, "SELECT * FROM users WHERE FirstName = '$firstname'");
#If no data was returned, check for any SQL errors
if (!$userdetails) {
echo 'Could not run query: ' . mysqli_error($con);
exit;
}
#Get the first row of the results
$row = mysqli_fetch_row($userdetails);
#Build the result array (Assign keys to the values)
$result_data = array(
'FirstName' => $row[1],
'LastName' => $row[2],
'Age' => $row[3],
'Points' => $row[4],
);
#Output the JSON data
echo json_encode($result_data);
}else{
echo "Could not complete query. Missing parameter";
}
?>
Testing the Script:
Try accessing http://localhost/clientservertest/login.php from your browser. Do you get this message:
"Could not complete query. Missing parameter"
Then it’s working! The script is looking for a POST variable called “FirstNameToSearch” – we didn't provide any, so it did't work!
To finish testing the script, open the Postman-REST client.
Set it up like so:
Request URL: http://localhost/clientservertest/login.php
Type: POST
Key: FirstNameToSearch
Value: John
Hit send, and you should see this:
Code:
{"FirstName":"John","LastName":"Doe","Age":"25","Points":"61"}
Congrats – your server just returned a result! Try some of the other names in the database (Glen, Helen, Karen, Bill, Mary) and see how their data is returned.
Note: Before we move on to the Android section, we’re going to have to put our WAMP server online. Click the WAMP icon in the taskbar and select 'Put Online'.
Find your computers local network IP address and insert it into the URL like so: http://192.168.1.112/clientservertest/login.php
You should be able to access the script. If this doesn't work, try turning off your firewall - it could be blocking the server.
Part 2: Android
We’re now going to use our Android device to access the web server instead of the Postman client.
I'm not going to go into detail with the boilerplate UI code - I've attached the source code to this post so you can download the project files and browse through them.
Note: Android 3.x+ cannot perform Network operations on the main thread. To solve this, we have to multithread our program. To keep this as simple as possible, we’re going to use an AsyncTask. Again, the code for this can be found in the project download.
Inside of the AsyncTask, we have the most important code - where we create and execute a HTTP POST in Java.
Creating and Executing a HTTP POST in Java:
We have to first setup the name-value pairs for our POST variables. In this case, we use "FirstNameToSearch" as our Key.
Code:
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("FirstNameToSearch", strNameToSearch));
The following code sets up connection timeouts (15 seconds) and creates a HttpClient and HttpPost pointing to our url (http://192.168.1.112/clientservertest/login.php)
Code:
//Create the HTTP request
HttpParams httpParameters = new BasicHttpParams();
//Setup timeouts
HttpConnectionParams.setConnectionTimeout(httpParameters, 15000);
HttpConnectionParams.setSoTimeout(httpParameters, 15000);
HttpClient httpclient = new DefaultHttpClient(httpParameters);
HttpPost httppost = new HttpPost("http://192.168.1.112/clientservertest/login.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
The following code executes the POST, gets the result and converts it to a string:
Code:
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
String result = EntityUtils.toString(entity);
Finally, the following code creates a JSON object from the result string and extracts our data:
Code:
// Create a JSON object from the request response
JSONObject jsonObject = new JSONObject(result);
//Retrieve the data from the JSON object
strFirstName = jsonObject.getString("FirstName");
strLastName = jsonObject.getString("LastName");
intAge = jsonObject.getInt("Age");
intPoints = jsonObject.getInt("Points");
That's it. It's so simple!
Where do we take it from here?
This combination of PHP/MYSQL is quite powerful. I'd recommend that you learn more about these technologies and build upon the demo in this guide. PHP Tutorials & MySQL Tutorials
Ideas for practice apps:
Online notes application - Sync your notes to the cloud
Build an Activation Server - Users can activate an app with a key
Feedback
Please feel free to leave any followup questions, comments or suggestions! I'll try my best to respond!
You can find the source code over at GitHub. Have fun! (If you fix a bug, please send a pull request)
 
Additional Information
Changelog
November 3, 2013
Added a link to the GitHub repository.
June 26, 2013
Updated PHP Code. It's more reliable and uses the newer MySQL APIs. Thanks to @dbarrera & @vijai2011
July 7, 2013
Updated the Android project and added Internet permissions (ClientServerRESTDemo v2.zip)
Thanks for this amazing guide but I have a issue.I have my own table and columns.So I changed your php code according to that and when I do a post query in rest,I get all null.But if I do the same in phpmyadmin,I have results.
This is what I get in postman:
Code:
{"pid":null,"name":null,"UID":null,"mobile":null,"description":null,"created_at":null,"updated_at":null}
attached the output of phpmyadmin.
And my phpcode:
Code:
<?php
#Setup variables
$firstname = $_POST["FirstNameToSearch"];
#Avoid SQL injection attacks
$firstname = mysql_real_escape_string($firstname);
#Connect to Database
$con = mysql_connect("localhost","user","pass");
if (!$con)
{
die('Could not connect');
}
#Select the test database
mysql_select_db("mydb", $con);
#Get the user details from the database
$userdetails = mysql_query("SELECT * FROM mytable WHERE name = '$firstname'");
#Catch any errors
if (!$userdetails) {
echo 'It seems the server is down.Please try later';
exit;
}
#Get the first row of the results
$row = mysql_fetch_row($userdetails);
#Build the result array (Assign keys to the values)
$result_data = array(
'pid' => $row[1],
'name' => $row[2],
'UID' => $row[3],
'mobile' => $row[4],
'description' => $row[5],
'created_at' => $row[6],
'updated_at' => $row[7],
);
#Output the JSON data
echo json_encode($result_data);
?>
Thanks for help.
Edit: just found that your app is missing internet permission in manifest
Code:
<uses-permission android:name="android.permission.INTERNET" />
:thumbup:
Thanks so much for this. I will try it out soon.
Sent from my HTC Explorer A310e using xda app-developers app
vijai2011 said:
Thanks for this amazing guide but I have a issue.I have my own table and columns.So I changed your php code according to that and when I do a post query in rest,I get all null.But if I do the same in phpmyadmin,I have results.
This is what I get in postman:
Code:
{"pid":null,"name":null,"UID":null,"mobile":null,"description":null,"created_at":null,"updated_at":null}
attached the output of phpmyadmin.
Thanks for help.
Click to expand...
Click to collapse
I was able to reproduce the null result - it means that the result was not available in the database. You'll want to double check the value you are passing to the script in Postman. (When I used 'FirstNameToSearch' and 'test' - I got a correct result. However, when I used 'testa', I got a null result.)
You can try adding this into the PHP script to catch this problem:
Code:
#Get the first row of the results
$row = mysql_fetch_row($userdetails);
[B]#Check to see if a result was returned.
if(!$row){
echo 'User does not exist';
exit;
}[/B]
I also noticed a few things in your PHP script:
In your screenshot, your table name appears to be 'Myapp', however in your PHP script, it looks like you are using 'mytable'
When you build the result array at the end, you are trying to access a column that doesn't exist:
This code tries to access an 8th column/index:
Code:
'pid' => $row[1],
'name' => $row[2],
'UID' => $row[3],
'mobile' => $row[4],
'description' => $row[5],
'created_at' => $row[6],
'updated_at' => $row[7],
You only have seven columns, so it should be:
Code:
'pid' => $row[0],
'name' => $row[1],
'UID' => $row[2],
'mobile' => $row[3],
'description' => $row[4],
'created_at' => $row[5],
'updated_at' => $row[6],
vijai2011 said:
Edit: just found that your app is missing internet permission in manifest
Code:
<uses-permission android:name="android.permission.INTERNET" />
Click to expand...
Click to collapse
Good catch - Thanks! I'll update the project asap.
Alkonic said:
I was able to reproduce the null result - it means that the result was not available in the database. You'll want to double check the value you are passing to the script in Postman. (When I used 'FirstNameToSearch' and 'test' - I got a correct result. However, when I used 'testa', I got a null result.)
:snip:
Good catch - Thanks! I'll update the project asap.
Click to expand...
Click to collapse
That is not a error in table name because I just wanted to hide it out here but actually it got revealed in the screenshot .No issues will try your php code and correct my json array too.thanks
Sent from my GT-N7000 using xda app-developers app
For some reason,the problem was caused by the mysql_real_escape_string.I commented that line and it is working now.
vijai2011 said:
For some reason,the problem was caused by the mysql_real_escape_string.I commented that line and it is working now.
Click to expand...
Click to collapse
Now that's interesting.. I've never experienced a problem with that before.
I took a look at the PHP docs and found that mysql_real_escape_string() is depreciated - that could be contributing to the problem. I'll investigate this further and adjust the guide as necessary.
Thanks for sharing your solution!.
Alkonic said:
Now that's interesting.. I've never experienced a problem with that before.
I took a look at the PHP docs and found that mysql_real_escape_string() is depreciated - that could be contributing to the problem. I'll investigate this further and adjust the guide as necessary.
Thanks for sharing your solution!.
Click to expand...
Click to collapse
Maybe you are using ancient php module .BTW Can I also put data into tables using your php and slightly modifying "mysql_query" and using post?Or should I use put along with mysql_query?If later is the solution,could give me the snippet of how a put variable looks?because I dono php and I was waiting for someone to write this guide because before I was connecting to db with JDBS which isnt safe.Thanks and sorry for the trouble.
Edit: I got it to work like I said.But only issue is the created at and updated at time stamp which is not the part of php nor the app.I will correct it from mysql.Thanks once again.Will be happy to trouble you soon lol...No dont take it serious BTW
vijai2011 said:
Maybe you are using ancient php module .BTW Can I also put data into tables using your php and slightly modifying "mysql_query" and using post?Or should I use put along with mysql_query?If later is the solution,could give me the snippet of how a put variable looks?because I dono php and I was waiting for someone to write this guide because before I was connecting to db with JDBS which isnt safe.Thanks and sorry for the trouble.
Edit: I got it to work like I said.But only issue is the created at and updated at time stamp which is not the part of php nor the app.I will correct it from mysql.Thanks once again.Will be happy to trouble you soon lol...No dont take it serious BTW
Click to expand...
Click to collapse
Ha you beat me to it! I'll definitely try and add a section into the guide about updating tables. I appreciate your feedback on the guide, and I'm glad it helped you. Feel free to trouble me
Perfect! Just what i needed for my next week exam!
Sent from my GT-S5830M using Tapatalk 2
Super, thx!
But please tell me what I'm doing wrong.
Code:
HttpResponse response = httpclient.execute(httppost); //throw...​
i save errors in log (attached)
pls help ;(
objaa said:
Super, thx!
But please tell me what I'm doing wrong.
Code:
HttpResponse response = httpclient.execute(httppost); //throw...​
i save errors in log (attached)
pls help ;(
Click to expand...
Click to collapse
You are doing something on the main thread which actually has to be done in a different thread.I suspect its at line #119.If you show the entire code,somebody might point it out easily for you
Sent from my GT-N7000 using xda app-developers app
vijai2011 said:
You are doing something on the main thread which actually has to be done in a different thread.I suspect its at line #119.If you show the entire code,somebody might point it out easily for you
Sent from my GT-N7000 using xda app-developers app
Click to expand...
Click to collapse
ok, all code:
package com.nsp.obja;
import java.util.ArrayList;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.util.EntityUtils;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.widget.Toast;
public class MainActivity extends Activity {
@override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myscreen);
post();
}
@override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
void post()
{
try
{
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("FirstNameToSearch", "wow"));
//Create the HTTP request
HttpParams httpParameters = new BasicHttpParams();
//Setup timeouts
HttpConnectionParams.setConnectionTimeout(httpParameters, 15000);
HttpConnectionParams.setSoTimeout(httpParameters, 15000);
HttpClient httpclient = new DefaultHttpClient(httpParameters);
HttpPost httppost = new HttpPost("http://www.xda-developers.com/");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
String result = EntityUtils.toString(entity);
Toast.makeText(this, result.length(), Toast.LENGTH_LONG).show();
}
catch(Exception e)
{
Log.e("ClientServerDemoX", "Error: ", e);
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
}
}
}
objaa said:
ok, all code:
<!----Snip!---->
Click to expand...
Click to collapse
Do post() in async because it has to do http request which needs to be done in another thread.
vijai2011 said:
You are doing something on the main thread which actually has to be done in a different thread.I suspect its at line #119.If you show the entire code,somebody might point it out easily for you
Sent from my GT-N7000 using xda app-developers app
Click to expand...
Click to collapse
vijai2011 said:
Do post() in async because it has to do http request which needs to be done in another thread.
Click to expand...
Click to collapse
hoooww :crying::crying:
Thanks, I figured out and got the code page of our glorious forum
I'm having an issue while testing the Query... I'm using Firefox and using RESTClient for debugging... and testing whatever value, db always responds null (See attachment)...
dbarrera said:
I'm having an issue while testing the Query... I'm using Firefox and using RESTClient for debugging... and testing whatever value, db always responds null (See attachment)...
Click to expand...
Click to collapse
Exactly what I experienced first time.Try after commenting the line which prevents mysql injection and see if it works.If you run latest mysql,the chances are probably that its the issue
vijai2011 said:
Exactly what I experienced first time.Try after commenting the line which prevents mysql injection and see if it works.If you run latest mysql,the chances are probably that its the issue
Click to expand...
Click to collapse
Already tried that... No go... Had to write the whole thing using w3schools example code as base... Just resolved a couple minutes ago and completed the project (it can be viewed @ Github:CardManager (App) and cardmanager_json (Web Service, only principal.php is the one handling the whole thing))...
Maybe a good add to the tutorial would be to have a config.php file with the user, passwd, database and table data calling it through require_once()... The DBConexion and DBGestion files (in my github) are supposed to do that, but didn't work either (hence doing the principal.php code all over again)...
dbarrera said:
Already tried that... No go... Had to write the whole thing using w3schools example code as base... Just resolved a couple minutes ago and completed the project (it can be viewed @ Github:CardManager (App) and cardmanager_json (Web Service, only principal.php is the one handling the whole thing))...
Maybe a good add to the tutorial would be to have a config.php file with the user, passwd, database and table data calling it through require_once()... The DBConexion and DBGestion files (in my github) are supposed to do that, but didn't work either (hence doing the principal.php code all over again)...
Click to expand...
Click to collapse
Interesting.. I'll take a look at at your script, revisit the W3 tutorials, and then re-write mine. It's really rudimentary and tends to fail easily. I wanted to write about the config.php, however, I also wanted to keep this guide as simple as possible for newer users. Maybe I'll add in an advanced section.
I'll update the guide in a few days, as I'm right in the middle of exams :/
Thanks for the feedback!

Block IP address for kingroot updates for Verizon actiontec router

tested on MI424WR-GEN3I
I'm not sure if this inhibits the rooting process of future rooting using kingroot but here is something you can do after rooting with kingroot.
before doing this test that the rule is not in effect by going to a command prompt and typing "ping 183.61.38.246"
you should get a reply.
Setting the rule:
In the Firewall section go to the Advanced Filtering section (Network (Home/Office) Rules) > and select add.
SourceAddress = any
destination address= click down arrow and select "user defined". Change "Network Object" to "IPaddress183.61.38.246" and then select "add" button below and set Network object to "iPaddress" then enter the ip address in the 4 block sections of 183 61 38 246.
hit the apply button till you are back at the advanced filtering menu of the object with the settings below.
Protocol = any
Operation = Drop
hit apply
test your new rule by going to a command prompt and typing "ping 183.61.38.246"
you should not get a reply.
credits to santamanga for pointing out address
http://forum.xda-developers.com/showpost.php?p=65706167&postcount=85
Why?
ldeveraux said:
Why?
Click to expand...
Click to collapse
I enjoy a static environment, paranoia, or possibly I was getting bored and I needed a new site to block along with barneys playhouse webpage.
rp201 said:
I enjoy a static environment, paranoia, or possibly I was getting bored and I needed a new site to block along with barneys playhouse webpage.
Click to expand...
Click to collapse
haha, it was a serious question though. Why are you blocking the ip? What does kingroot do with it, if anything?
Does anyone knows how to block an IP in an Asus RT-AC68U, tried last night and could not stop it. Maybe did not do it correctly.
ldeveraux said:
haha, it was a serious question though. Why are you blocking the ip? What does kingroot do with it, if anything?
Click to expand...
Click to collapse
That's exactly the problem: NOBODY KNOWS. Since Kingroot is closed-sourced, there's no way of telling what data it sends throughout the internet. I haven't rooted my 5.0.5 Gen1 FireTV yet (waiting for a trusted method, rbox, for example), but if I had I probably would've done something similar as the OP. I don't appreciate rogue unknown traffic going through my router.
What Kingroot beyond question does is check for updates and when available install it without asking.
---------- Post added at 01:34 PM ---------- Previous post was at 01:22 PM ----------
bula1ca said:
Does anyone knows how to block an IP in an Asus RT-AC68U, tried last night and could not stop it. Maybe did not do it correctly.
Click to expand...
Click to collapse
I´m not at home to check, but since we have root, I guess, it might also be possible to block unwanted IPs in the host file on the fire tv (if it understands allow+deny).
santamanga said:
What Kingroot beyond question does is check for updates and when available install it without asking.
---------- Post added at 01:34 PM ---------- Previous post was at 01:22 PM ----------
I´m not at home to check, but since we have root, I guess, it might also be possible to block unwanted IPs in the host file on the fire tv (if it understands allow+deny).
Click to expand...
Click to collapse
Could not managed to block it. Would you be able to post your settings later on? Thank you
Was searching for a way to block it on mine as well. I'm running the FiOS-G1100 router and for the life of me can't find the appropriate section. Maybe I need to root it for SU rights!
So I am not a 100% sure, but i think this ip corresponds with pmir.3g.qq.com
So what you can do: connect with adbFire and open an adbshell. In adbFire remount system partition as rw.
[Root functions] [FS R/W]
in the terminal become root: $su
look at your hosts file:
#cat /system/etc/hosts
maybe make a backup (for example to folder Download):
#cp /system/etc/hosts /storage/sdcard0/Download/hosts.orig
Add the url to be redirected to localhost
#echo "127.0.0.1 pmir.3g.qq.com" >> /system/etc/hosts
see if the line was added:
#cat /system/etc/hosts
In adbFire remount system partition as read only.
[Root functions] [FS R/O]
#exit
#exit
In adbFire select [File] and [Reboot device]
I googled the url and found scary topics, but maybe this is completely unrelated to kingroot:
http://forum.xda-developers.com/general/security/xiaomi-firmware-multiple-backdoords-t2847069
http://en.miui.com/thread-33464-1-1.html
Has no one decompiled the dex?
I had a quick poke at it a couple of weeks ago, quite a few URL's in the code.
Some code snippets:
localStringBuilder.append("http://www.kingroot.net/feedback/kinguser"); // Seems to be posting details of the device to here.
a(localStringBuilder, localbvb, Build.BRAND, true);
a(localStringBuilder, localbvb, Build.MODEL, true);
a(localStringBuilder, localbvb, String.valueOf(Build.VERSION.RELEASE), true);
a(localStringBuilder, localbvb, Build.ID, true);
return a(this.axp.getAttributeValue("http://schemas.android.com/apk/res/android", paramString), this.axq);
super(af.do.value(), af.do.toString(), 245, "817984CA83A508FE", aru.XF, "http://pmir.3g.qq.com", "", false, coc.gl(), coc.JL(), false);
localStringBuilder.append("http://openmobile.qq.com/oauth2.0/m_jump_by_version?");
str4 = String.format("http://fusion.qq.com/cgi-bin/qzapps/unified_jump?appid=%1$s&from=%2$s&isOpenAppID=1", arrayOfObject);
StringBuffer localStringBuffer = new StringBuffer("http://c.isdspeed.qq.com/code.cgi");
localStringBuffer.append("?domain=mobile.opensdk.com&cgi=opensdk&type=").append(paramInt1).append("&code=").append(paramInt2).append("&time=").append(l2).append("&rate=").append(paramInt3).append("&uin=").append(paramString2).append("&data=");
localHttpPost = new HttpPost("http://wspeed.qq.com/w.cgi");
localcob = cnl.a(cnk.getContext(), "http://appsupport.qq.com/cgi-bin/appstage/mstats_batch_report", "POST", localBundle);
JSONObject localJSONObject = coa.iA(cnl.a(cns.a(this.aGQ), "http://cgi.connect.qq.com/qqconnectopen/openapi/policy_conf", "GET", this.aBF).response);
u = "http://pingma.qq.com:80/mstat/report";
private String a = "http://monitor.uu.qq.com/analytics/rqdsync";
Mick

Can we install Nougat like Honor and Nova users?

I saw this tutorial on their subforums, can we make it work without twrp too?
cvkef said:
I was able to repeat the process with the help of Charles app on macOS for FRD-L09C432 and at the moment I am downloading the update.
You do not have to manually download the update packages. The update packages will be downloaded automatically.
Info
The guide applies to any FRD variant and any update version (needs confirm though). Just be sure to use the correct values where required.
Your PC / Mac and the smartphone must use the same WiFi network
Your smartphone's IP address can be found at Settings > About phone > Status > IP address (It should be something like 192.168.XXX.XXX)
I do not own Windows, but there is a possibility that you have to allow Charles app to listen for network traffic from Firewall settings. Maybe try to disable it while you are going through the guide.
Setup Charles app
Download and install Charles app (30-day trial)
Open Charles app
Select the "Sequence" option
At the bottom, in the "Filter" enter the IP (check info at the top of the post to locate your smartphone's IP address) of your FRD-L09 device (this will help you to isolate requests only from your FRD-L09)
At the top bar, hit the "Start recording", "Start throttling", "Enable breakpoints"
From the menu "Tools", select the "Rewrite" and check the "Enable Rewrite"
Setup FRD-L09
At Settings > WiFi, locate your WiFi network, long tap it and choose "Modify network"
Display the advanced settings and for Proxy check the Manual option
For Proxy hostname enter the IP of your PC / Mac
For Proxy port enter 8888 (this is the default port for Charles app)
Apply network changes
Test the connection
From FRD-L09 go to Settings > Update and hit the button to search for updates.
If everything is setup correctly, back in Charles app you'll see the desired requests. If you are on Windows, there is a chance you'll have to disable temporally your Firewall or whitelist the Charles app to allow it listen for network traffic.
Hijack the request
Notes
Be prepared for the next step: 'Rewrite the response', because It has to be completed relatively fast.
If you delay then the update check at the smartphone will timeout and you'll have to repeat the update check.
So, copy the response from the next step to have it ready for quick paste.
From the logged requests, expand the "sp_ard_common", right click the request and select the "Breakpoints" option. This will pause the next identical request and will allow to edit the response.
From FRD-L09, hit again the update button
If everything is correct, the Charles app will focus to desired request. At the bottom, hit the "Execute" button.
The response is executed and you should now be able to edit the response. At the top select the "Edit Response".
At the bottom select the "JSON Text" and proceed quickly to the next step before the request timeouts.
Rewrite the response
Notes
The below response is only for FRD-L09C432B316 update version.
You can set the response for any version of update and maybe variant of FRD. You just have to configure all the properties with the correct values. The pattern is easy to follow.
Select the response and replace it with:
Code:
{
"status": "0",
"autoPollingCycle": "1",
"components": [{
"name": "FRD-L09C432B316-OTA",
"version": "FRD-L09C432B316",
"versionID": "66464",
"description": "�? ?�?���?��?: [�?��?��??] FRD-L09C432B316 �?� FRD-L09C432B316 (2016/11/19)",
"createTime": "2016-11-19T03:18:12+0000",
"url": "http://update.hicloud.com:8180/TDS/data/files/p3/s15/G753/g104/v66464/f2/"
}]
}
Hit the "Execute" button.
If everything is correct then back at your FRD-L09 you should be able to view the update and the changelog. Before proceed to download the update read the next section.
Download the update
Before proceed to download the update, you have to disable the Proxy at your smartphone. So:
At Settings > WiFi, locate your WiFi network, long tap it and choose "Modify network"
Display the advanced settings and for Proxy check the None option
Apply changes and now your smartphone should be able to connect to Internet again
Now, go back to Updater and hit the "Quick Update" button to apply the update
Screenshot https://imgur.com/MLKRMzM
A huge thanks to @schluk for providing this method!
Please hit the Thanks button at the first post to show your appreciation to @schluk
Click to expand...
Click to collapse
Just use the 3 button method.
Johnny TDN said:
Just use the 3 button method.
Click to expand...
Click to collapse
So if someone is on MM. 3button method will work without unlocking bootloader and flashing with twrp?
Coolyou said:
So if someone is on MM. 3button method will work without unlocking bootloader and flashing with twrp?
Click to expand...
Click to collapse
yes
Johnny TDN said:
yes
Click to expand...
Click to collapse
Are u sure man? I don't want to ruin my phone again...
robi10101298 said:
Are u sure man? I don't want to ruin my phone again...
Click to expand...
Click to collapse
Yes i am.
Johnny TDN said:
Yes i am.
Click to expand...
Click to collapse
I think I can wait one or 2 weeks more for the official update
robi10101298 said:
Are u sure man? I don't want to ruin my phone again...
Click to expand...
Click to collapse
Did someone tried to install b336 with dload and 3 buttons from MM ?
ismaadu78 said:
Did someone tried to install b336 with dload and 3 buttons from MM ?
Click to expand...
Click to collapse
I did. No problems after the 3 buttons method
Johnny TDN said:
I did. No problems after the 3 buttons method
Click to expand...
Click to collapse
Alright thanks you did this with which file ?
ismaadu78 said:
Alright thanks you did this with which file ?
Click to expand...
Click to collapse
With the files required for my VNS-L21
Johnny TDN said:
With the files required for my VNS-L21
Click to expand...
Click to collapse
Thanks,
I will try this tomorrow or friday.
So you flashed update.zip and after the update_data.zip
ismaadu78 said:
Thanks,
I will try this tomorrow or friday.
So you flashed update.zip and after the update_data.zip
Click to expand...
Click to collapse
yes ;D
make sure you make a backup of your oeminfo.img using meticulus TWRP in case you want to downgrade to MM.
AND PLEASE DO THAT! MAKE A BACKUP OF YOUR OEMINFO.IMG BEFORE FLASHING
Johnny TDN said:
yes ;D
make sure you make a backup of your oeminfo.img using meticulus TWRP in case you want to downgrade to MM.
AND PLEASE DO THAT! MAKE A BACKUP OF YOUR OEMINFO.IMG BEFORE FLASHING
Click to expand...
Click to collapse
Alright thanks

Honor Watch GS Pro update to 11.0.4.20 (iOS)

Hello,
If anyone stuck on 10.1.3.52 you can update to 11.0.4.20 from iOS device.
Just connect to proxy (in wi-fi settings) 52.15.244.171:3128
login: 4pda
password: 4pda
Then tap update button in huawei health, you'll get update notification, disconnect from proxy (1mbps limitation, sorry) and press "Update"
Be sure that watches have more than 30% of battery, coz update will burn around 17-25%
GL
Also can update on rooted android
LokotoAI said:
Doesn’t work for me.
Click to expand...
Click to collapse
Any errors?
Somtimes not working on ios lower than 12
LokotoAI said:
Any errors?
Somtimes not working on ios lower than 12
Click to expand...
Click to collapse
Server error
Riddick99999 said:
Server error
Click to expand...
Click to collapse
Also you can do it with Charles:
- Download Charles https://www.charlesproxy.com/
- Open Help-SSL Proxying-Install Charles Root Certificate
- Then in iPhone wi-fi settings enter proxy with your pc local ip and port 8888
- In Charles press Tools->Rewrite->Import
-And choose 11.0.4.20.xml im attached
Now you need to press update button in Health
It's working method, i've got many positive feedback
Spoiler
I am having some problems, even though i do all the steps on charles the Health app says that there is no updates available. Could you please help me with some pictures of every step so i could check if i am doing something wrong, sorry if my english is not good enough, hope you can understand me.
Jlmend1310 said:
I am having some problems, even though i do all the steps on charles the Health app says that there is no updates available. Could you please help me with some pictures of every step so i could check if i am doing something wrong, sorry if my english is not good enough, hope you can understand me.
Click to expand...
Click to collapse
Sure
Charles config:
Spoiler
Then you can get your PC's local ip in Help-Local IP address and connect to proxy using 8888 port
Spoiler
Rewrite vaules:
Spoiler: For 11.0.4.6
Code:
{
"status": "0",
"components": [{
"name": "com.huawei.KAN-B19.firmware",
"version": "11.0.4.6",
"versionID": "508111",
"description": "",
"ruleAttr": "",
"createTime": "2020-12-29T12:12:31+0000",
"url": "https://update.hicloud.com/download/data/pub_13/HWHOTA_hotaMigrate_900_9/33/v3/8077cfe1a0c34c4b9c5388033fb8c47b/",
"size": "203232264"
}]
}
Spoiler: For 11.0.4.20
Code:
{
"status": "0",
"components": [{
"name": "com.huawei.KAN-B19.firmware",
"version": "11.0.4.20",
"versionID": "522947",
"description": "",
"ruleAttr": "",
"createTime": "2021-02-22T07:02:24+0000",
"url": "http://update.dbankcdn.com/download/data/pub_13/HWHOTA_hota_900_9/66/v3/FxtqoIeNR0O9BPFdmXXpDA/",
"size": "194453487"
}]
}
Then you can update
Spoiler: Just for eg
http://update.dbankcdn.com/download/data/pub_13/HWHOTA_hota_900_9/66/v3/FxtqoIeNR0O9BPFdmXXpDA/
that give :
{"code":400,"message":"File id is invalid"}
pepe DPH said:
http://update.dbankcdn.com/download/data/pub_13/HWHOTA_hota_900_9/66/v3/FxtqoIeNR0O9BPFdmXXpDA/
that give :
{"code":400,"message":"File id is invalid"}
Click to expand...
Click to collapse
You don't need any files, all firmware is signed by HuHo
Anyway you can get requested files via links:
filelist: https://update.dbankcdn.com/downloa...6/v3/FxtqoIeNR0O9BPFdmXXpDA/full/filelist.xml
changelog: https://update.dbankcdn.com/downloa.../v3/FxtqoIeNR0O9BPFdmXXpDA/full/changelog.xml
firmware: https://update.dbankcdn.com/downloa...A/full/Kanon_mcu_bt_dsp_app_11.0.4.20.bin.apk
Hi everyone,
is there any possibility to download this update for the non-rooted android smartphone (S21 Ultra)?
xhubbiex said:
Hi everyone,
is there any possibility to download this update for the non-rooted android smartphone (S21 Ultra)?
Click to expand...
Click to collapse
Non-rooted still no way. Health apk must be patched for ssl unpinning, I can’t build patched version, maybe someone will do
LokotoAI said:
Non-rooted still no way. Health apk must be patched for ssl unpinning, I can’t build patched version, maybe someone will do
Click to expand...
Click to collapse
Really a pity.
This is a great Smartwatch but Honor/Huawei since they split up have abandoned it.
Unfortunately I do not have the Root on my Android, I hope that someone can make a version of Heath Mod For updates!
This watch no longer receives 1 update for a year!
Another idea would be a custom rom! With Emoji etc
I would also open a Telegram channel with this topic of yours.
I just tried following (well) the guide for Android with Charles (proxy tel is ok perfect, the program recognizes the connected phone), when I open Health does not find any update. The operation was carried out to perfection, double-checked everything several times. Not working
@LokotoAI But this file (fw with apk extension?) Kanon_mcu_bt_dsp_app_11.0.4.20.bin.apk
What should we do with this file?
LokotoAI said:
Hello,
If anyone stuck on 10.1.3.52 you can update to 11.0.4.20 from iOS device.
Just connect to proxy (in wi-fi settings) 52.15.244.171:3128
login: 4pda
password: 4pda
Then tap update button in huawei health, you'll get update notification, disconnect from proxy (1mbps limitation, sorry) and press "Update"
Be sure that watches have more than 30% of battery, coz update will burn around 17-25%
GL
Also can update on rooted android
Click to expand...
Click to collapse
hello I have an iphone with ios 15, I have tried to do the steps, but the update does not appear in huawei health, if you would be so kind and put the most detailed step by step to try to update my honor gs pro to 11.0.4.20. I apologize for my bad English
donatod87 said:
@LokotoAI But this file (fw with apk extension?) Kanon_mcu_bt_dsp_app_11.0.4.20.bin.apk
What should we do with this file?
Click to expand...
Click to collapse
Encrypted binary fw, idk why .apk, nothing interesting inside
LokotoAI said:
Encrypted binary fw, idk why .apk, nothing interesting inside
Click to expand...
Click to collapse
I'm also trying again on Mac but no update appears. What do you intern for "work only frida ssl unpinning" ? can you enter an explanation for this step?
LokotoAI said:
Encrypted binary fw, idk why .apk, nothing interesting inside
Click to expand...
Click to collapse
LokotoAI said:
Sure
Charles config:
Spoiler
View attachment 5524179
Then you can get your PC's local ip in Help-Local IP address and connect to proxy using 8888 port
Spoiler
View attachment 5524181
Rewrite vaules:
Spoiler: For 11.0.4.6
Code:
{
"status": "0",
"components": [{
"name": "com.huawei.KAN-B19.firmware",
"version": "11.0.4.6",
"versionID": "508111",
"description": "",
"ruleAttr": "",
"createTime": "2020-12-29T12:12:31+0000",
"url": "https://update.hicloud.com/download/data/pub_13/HWHOTA_hotaMigrate_900_9/33/v3/8077cfe1a0c34c4b9c5388033fb8c47b/",
"size": "203232264"
}]
}
Spoiler: For 11.0.4.20
Code:
{
"status": "0",
"components": [{
"name": "com.huawei.KAN-B19.firmware",
"version": "11.0.4.20",
"versionID": "522947",
"description": "",
"ruleAttr": "",
"createTime": "2021-02-22T07:02:24+0000",
"url": "http://update.dbankcdn.com/download/data/pub_13/HWHOTA_hota_900_9/66/v3/FxtqoIeNR0O9BPFdmXXpDA/",
"size": "194453487"
}]
}
Then you can update
Spoiler: Just for eg
View attachment 5524231
Click to expand...
Click to collapse
Could you prepare step-by-step instruction for the Android rooted devices?
I did everything as suggested, but I still have no update available.
What I did was:
1. Installed the Charles app.
2. Configured it as suggested.
3. Configured proxy for my Wi-Fi network – laptop recognized the attempt of connection.
4. Turned on the newest version of health app and checked for the update.
5. Got back message that I have the newest version.
Why would I need the root for these steps (I think could do the same steps for the phone without root)? Is there any specific version of health app that I should be using? What is your region?
xhubbiex said:
Could you prepare step-by-step instruction for the Android rooted devices?
I did everything as suggested, but I still have no update available.
What I did was:
1. Installed the Charles app.
2. Configured it as suggested.
3. Configured proxy for my Wi-Fi network – laptop recognized the attempt of connection.
4. Turned on the newest version of health app and checked for the update.
5. Got back message that I have the newest version.
Why would I need the root for these steps (I think could do the same steps for the phone without root)? Is there any specific version of health app that I should be using? What is your region?
Click to expand...
Click to collapse
Quiet does not work. I tried with Android (with and without Root does not change anything) I also tried Charles on both Windows and MacBook the phone is recognized correctly by Charles (correctly changing the proxy with IP of the pc and port 8888).
Does this software really exist or is it fake?

Categories

Resources