Closed Bug 989128 Opened 6 years ago Closed 6 years ago

Need Tarako 1.3t FOTA updates for testing purposes

Categories

(Release Engineering :: General, defect)

ARM
Gonk (Firefox OS)
defect
Not set

Tracking

(blocking-b2g:1.3T+, b2g-v1.3T fixed)

RESOLVED FIXED
blocking-b2g 1.3T+
Tracking Status
b2g-v1.3T --- fixed

People

(Reporter: nhirata, Assigned: seinlin)

References

Details

(Whiteboard: [NPOTB])

Attachments

(2 files)

Need a 1.3t Tarako OTA update channel for testing purposes please.
blocking-b2g: --- → 1.3T?
OS: Mac OS X → Gonk (Firefox OS)
Hardware: x86 → ARM
Gecko/Gaia OTA update is probably not going to work due to storage size. It looks like only FOTA in recovery mode can work

ni? Kli since he has tested it
Flags: needinfo?(kli)
Current status of updating gecko/gaia,
update.mar built from gecko-update-full can't update successfully. (OTA)
update.mar built from gecko-update-fota can update successfully. (FOTA)

To use FOTA,
Need to flash recovery ROM with testkey on device first.
Flags: needinfo?(kli)
triage: it does not block commercial release, minus
can QA live with FOTA only? thanks
blocking-b2g: 1.3T? → -
Considering the system partition size, we would need to do FOTA.

Changing the title to reflect this.
Summary: Need Tarako 1.3t OTA updates for testing purposes → Need Tarako 1.3t FOTA updates for testing purposes
(In reply to Joe Cheng [:jcheng] from comment #3)
> triage: it does not block commercial release, minus
> can QA live with FOTA only? thanks

This is a test blocker. We need to be prepared for the worst case scenario that we have to chemspill a release, in which we have to push a security hotfix out to existing devices. FOTA is something we have to get done correctly in a robust fashion, so we need to have a mechanism to test this workflow. From the QA team's perspective, this is a cut and dry blocker.
blocking-b2g: - → 1.3T?
triage: 1.3+ for test blocker. let's make sure QA can at least verify that FOTA works
blocking-b2g: 1.3T? → 1.3T+
Kai-Zhen : Please provide the FOTA document.
Assignee: nobody → kli
James, need to merge this patch into device/sprd to support fota correctly. 

"app.update.url" in patch is only for reference, need to be replaced with a valid server url.
Flags: needinfo?(james.zhang)
To build and update gecko via FOTA as comment 2

1- Build
$ ./build.sh

2- generate update.mar
$ ./build.sh gecko-update-fota
 (output file is ./out/target/product/sp6821a_gonk/fota-update.mar)

3- generate update.xml
$ ./tools/update-tools/build-update-xml.py \
                -c fota/update.mar -o fota/update.xml \
                -u $UPDATE_MAR_URL \
                -v $APP_VERSION -V $B2G_VERSION

UPDATE_MAR_URL - url of update.mar 
APP_VERSION - gecko version such as 28.1
B2G_VERSION - ffos version such  as 1.3

4- upload update.mar and update.xml to server

5- setting -> Device information -> check now (Software updates) and them follow the notification and finish the update.


Please see more in [1] about updates and [2] about how to setup fota server.


[1] https://wiki.mozilla.org/Gaia/System/Updates
[2] https://wiki.mozilla.org/Fota_server
Loop Lianxiang,
Hi Kaizhen, do you test this patch on your side?
Our partition type is nand and I can't find "/dev/block/mtdblock11" on my side.
SYSTEM_PARTITION_TYPE := EMMC
SYSTEM_LOCATION       := /dev/block/mtdblock11
Flags: needinfo?(james.zhang) → needinfo?(lianxiang.zhou)
And Steven tell me we won't support online OTA, we only support sdcard OTA.
Flags: needinfo?(styang)
(In reply to James Zhang from comment #10)
> Loop Lianxiang,
> Hi Kaizhen, do you test this patch on your side?
> Our partition type is nand and I can't find "/dev/block/mtdblock11" on my
> side.
> SYSTEM_PARTITION_TYPE := EMMC
> SYSTEM_LOCATION       := /dev/block/mtdblock11

Yes, I verified FOTA with this patch and it can update successfully. 
I think the most important things is "RECOVERY_EXTERNAL_STORAGE := /sdcard".
librecovery.so will use it sent a command to recovery ROM.
Whiteboard: [NPOTB]
(In reply to Kai-Zhen Li from comment #12)

Generating FOTA update package
mkdir -p `dirname out/target/product/sp6821a_gonk/fota/partial/update.zip` || true
usage: build-flash-fota.py [options]
build-flash-fota.py: error: unrecognized arguments: --fota-type partial --fota-dirs system/b2g --fota-files out/target/product/sp6821a_gonk/system.files
make: *** [out/target/product/sp6821a_gonk/fota/partial/update.zip] Error 2

----
Need I update something?
Flags: needinfo?(lianxiang.zhou)
$ git log build-flash-fota.py
commit 0975518802fff5c584df56832d7d59f19e52f49b
Author: Marshall Culpepper <marshall@mozilla.com>
Date:   Thu Dec 13 14:30:16 2012 -0600

    Bug 821412: Support for the new B2G update test frontend. r=dhylands

-------------
maybe the script is too old.
(In reply to Zhou Lianxiang from comment #14)
> $ git log build-flash-fota.py
> commit 0975518802fff5c584df56832d7d59f19e52f49b
> Author: Marshall Culpepper <marshall@mozilla.com>
> Date:   Thu Dec 13 14:30:16 2012 -0600
> 
>     Bug 821412: Support for the new B2G update test frontend. r=dhylands
> 
> -------------
> maybe the script is too old.

yes, I think you should sync/merge the latest tools from https://github.com/mozilla-b2g/B2G
(In reply to Kai-Zhen Li from comment #12)
As Comment 11 says, we need only update from sdcard. Is it means that we needn't update.xml?

Follow your patch, I modify the base.mk

diff --git a/sp6821a_gonk/base.mk b/sp6821a_gonk/base.mk
index 5de9449..5163a87 100644
--- a/sp6821a_gonk/base.mk
+++ b/sp6821a_gonk/base.mk
@@ -3,6 +3,11 @@ MALI := libUMP libEGL_mali.so libGLESv1_CM_mali.so libGLESv2_mali.so libMali.so
 
 #FFOS specific macros, may move into a new file someday
 ENABLE_LIBRECOVERY := true
+RECOVERY_EXTERNAL_STORAGE := /sdcard
+SYSTEM_FS_TYPE := yaffs2
+SYSTEM_PARTITION_TYPE := MTD
+SYSTEM_LOCATION := /dev/block/mtdblock11
+
 PRODUCT_PROPERTY_OVERRIDES := \
     ro.moz.omx.hw.max_width=720 \
     ro.moz.omx.hw.max_height=576 \

Is it enough?

I put the fota-update.mar to /sdcard. Must I rename fota-update.mar to update.mar?
I think you will also need to update the recovery if the one in your device is without keys. 

You can check if there is keys files in recovery, "out/target/product/sp6821a_gonk/recovery/root/res/keys".

If not, you'll need to patch your build/core/Makefile to copy keys to recovery.

--- a/core/Makefile
+++ b/core/Makefile
@@ -713,7 +713,7 @@ $(INSTALLED_RECOVERYIMAGE_TARGET): $(MKBOOTFS) $(MKBOOTIMG) $(MINIGZIP) \
 	  cp -rf $(item) $(TARGET_RECOVERY_ROOT_OUT)/)
 	$(foreach item,$(recovery_fstab), \
 	  cp -f $(item) $(TARGET_RECOVERY_ROOT_OUT)/etc/recovery.fstab)
-#	cp $(RECOVERY_INSTALL_OTA_KEYS) $(TARGET_RECOVERY_ROOT_OUT)/res/keys
+	cp $(RECOVERY_INSTALL_OTA_KEYS) $(TARGET_RECOVERY_ROOT_OUT)/res/keys
 	cat $(INSTALLED_DEFAULT_PROP_TARGET) $(recovery_build_prop) \
 	        > $(TARGET_RECOVERY_ROOT_OUT)/default.prop
 	$(MKBOOTFS) $(TARGET_RECOVERY_ROOT_OUT) | $(MINIGZIP) > $(recovery_ramdisk)
(In reply to Kai-Zhen Li from comment #17)
How to test this case?
(In reply to Zhou Lianxiang from comment #18)
> (In reply to Kai-Zhen Li from comment #17)
> How to test this case?

1. setup a fota server, a simple http server will work fine for this.

2. Build a ROM with the patch above then flash it into phone
   (Note: make sure app.update.url is configured with the correct fota server url.)

3. Build a new ROM with different version for testing. 
   Then generate .mar and .xml files and copy them to the corresponding dir in fota server.

Try to check update manually, "Settings->Device information->Check now" then you'll see a notification update available. Follow the steps to finish the update.

You can also use adb to monitor if something got error during the update.
$ adb logcat | grep AUS
(In reply to Kai-Zhen Li from comment #19)
> (In reply to Zhou Lianxiang from comment #18)
> > (In reply to Kai-Zhen Li from comment #17)
> > How to test this case?
> 
> 1. setup a fota server, a simple http server will work fine for this.
> 
> 2. Build a ROM with the patch above then flash it into phone
>    (Note: make sure app.update.url is configured with the correct fota
> server url.)
> 
> 3. Build a new ROM with different version for testing. 
>    Then generate .mar and .xml files and copy them to the corresponding dir
> in fota server.
> 
> Try to check update manually, "Settings->Device information->Check now" then
> you'll see a notification update available. Follow the steps to finish the
> update.
> 
> You can also use adb to monitor if something got error during the update.
> $ adb logcat | grep AUS

I am sorry, but we need only update from sdcard. I means, how to test fota from sdcard.
Duplicate of this bug: 998195
We'll land this patch today.
Fixed on my side.


commit 38a3eedd8f5a98a380e5021d0fe9075eba2b37ba
Author: lianxiang.zhou <lianxiang.zhou@spreadtrum.com>
Date:   Tue Apr 22 13:36:00 2014 +0800

    Bug 989128 [spreadtrum][sp6821a-ffos] cp keys for recovery



commit 5899e56487f118b875f96796c92059e4cca67a44
Author: lianxiang.zhou <lianxiang.zhou@spreadtrum.com>
Date:   Tue Apr 22 10:32:54 2014 +0800

    Bug #293641 add settings to config librecovery
    
    [bug number  ] 293641
    [root cause  ] new request
    [changes     ] none
    [side effects] none
    [self test   ] ok, can update via recovery mode
    [reviewers   ] james.zhang
    
    Change-Id: Icf7badafc8a6e2e9b4a6d360947d0df6c490f273
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Hi James,
    May I know if the patch is also to modify the checking mechanism for update package stored location from internal to sdcard "/sdcard/updates/fota/?

Hubert
Flags: needinfo?(james.zhang)
I put the "librecovery.so" from Kai-Zhen to modify the checking mechanism for update package stored location in /system/lib/, and device could be updated manually via FOTA after reboot. The steps are in below.

Steps:
    (1) Flash the basic image. (Ex: BuildID 20140415004002)

    (2) Modify the xml file of target version, ex: BuildID 20140420160201, and upload it to file server. (http://people.mozilla.org/~hlu/OTA/update_20140420160201.xml)
        - The attribute "isOsUpdate" of xml file in pvt server is incorrect, it should be "isOSUpdate"

    (3) Modify the checking URL to the address which stored the target version xml file. (http://people.mozilla.org/~hlu/OTA/update_20140420160201.xml)

    (4) Put the attached file, librecovry.so, in /system/lib/. This file is to change update script for package stored location checking from internal to sdcard.
        (I have need-info James to see if the patch in bugzilla#989128 is also to modify the same thing as attached librecovery.so file)

    (5) Reboot the device
 
   (6) Try to check update manually. (Settings->Device information->Check now)
Lianxiang, please.
Flags: needinfo?(james.zhang) → needinfo?(lianxiang.zhou)
If patch in comment 16 is merged, the output librecovery.so will do work properly as comment 24.
(In reply to James Zhang from comment #27)
> Lianxiang, please.
refer to comment 28
Flags: needinfo?(lianxiang.zhou)
commit 5899e56487f118b875f96796c92059e4cca67a44
Author: lianxiang.zhou <lianxiang.zhou@spreadtrum.com>
Date:   Tue Apr 22 10:32:54 2014 +0800

    Bug #293641 add settings to config librecovery
    
    [bug number  ] 293641
    [root cause  ] new request
    [changes     ] none
    [side effects] none
    [self test   ] ok, can update via recovery mode
    [reviewers   ] james.zhang
    
    Change-Id: Icf7badafc8a6e2e9b4a6d360947d0df6c490f273

diff --git a/sp6821a_gonk/base.mk b/sp6821a_gonk/base.mk
index 5de9449..5163a87 100644
--- a/sp6821a_gonk/base.mk
+++ b/sp6821a_gonk/base.mk
@@ -3,6 +3,11 @@ MALI := libUMP libEGL_mali.so libGLESv1_CM_mali.so libGLESv2_mali.so libMali.so
 
 #FFOS specific macros, may move into a new file someday
 ENABLE_LIBRECOVERY := true
+RECOVERY_EXTERNAL_STORAGE := /sdcard
+SYSTEM_FS_TYPE := yaffs2
+SYSTEM_PARTITION_TYPE := MTD
+SYSTEM_LOCATION := /dev/block/mtdblock11
+
 PRODUCT_PROPERTY_OVERRIDES := \
     ro.moz.omx.hw.max_width=720 \
     ro.moz.omx.hw.max_height=576 \
diff --git a/sp6821a_gonk/recovery.fstab b/sp6821a_gonk/recovery.fstab
index 5873190..a257083 100644
--- a/sp6821a_gonk/recovery.fstab
+++ b/sp6821a_gonk/recovery.fstab
@@ -7,10 +7,10 @@
 /misc          mtd             misc
 /boot          mtd             boot
 /recovery      mtd             recovery
-/fixnv         yaffs2          fixnv           no-checkpoint,no-rest-block
-/runtimenv             yaffs2          runtimenv               no-checkpoint,no-rest-block
-/backupfixnv           yaffs2          backupfixnv             no-checkpoint,no-rest-block
-/productinfo           yaffs2          productinfo             no-checkpoint,no-rest-block
+/fixnv         yaffs2          fixnv
+/runtimenv             yaffs2          runtimenv
+/backupfixnv           yaffs2          backupfixnv
+/productinfo           yaffs2          productinfo
 /intmemory      yaffs2          intmemory
 # added new fstypes
 /modem         mtd             modem
Flags: needinfo?(styang)
Component: General Automation → General
You need to log in before you can comment on or make changes to this bug.