1. Copy webosdoctorp100ewwsprint.jar to /Volumes/pre
cp *****/webosdoctorp100ewwsprint.jar /Volumes/pre/
2. Create working folder
2-1. /Volumes/pre/0-contents-dump
mkdir /Volumes/pre/0-contents-dump
2-2. /Volumes/pre/1-jar-org
mkdir /Volumes/pre/1-jar-org
2-3. /Volumes/pre/2-jar-contents
mkdir /Volumes/pre/2-jar-contents
2-4. /Volumes/pre/3-tar-contents-webOS
mkdir /Volumes/pre/3-tar-contents-webOS
2-5. /Volumes/pre/4-tar-gz-contents-nova
mkdir /Volumes/pre/4-tar-gz-contents-nova
2-6. /Volumes/pre/5-tmp
mkdir /Volumes/pre/5-tmp
2-7. /Volumes/pre/6-out
mkdir /Volumes/pre/6-out
3. Copy webosdoctorp100ewwsprint.jar to /1-jar-org
cp /Volumes/pre/webosdoctorp100ewwsprint.jar /Volumes/pre/1-jar-org
4. Write down file contents of webosdoctorp100ewwsprint.jar
jar tf /Volumes/pre/1-jar-org/webosdoctorp100ewwsprint.jar > /Volumes/pre/0-contents-dump/files-of-jar.txt
5. Expand webosdoctorp100ewwsprint.jar
cd /Volumes/pre/2-jar-contents
jar xf /Volumes/pre/1-jar-org/webosdoctorp100ewwsprint.jar
6. Write down file contents of resources/webOS.tar
tar tf /Volumes/pre/2-jar-contents/resources/webOS.tar > /Volumes/pre/0-contents-dump/files-of-tar-webOS.txt
7. Expand webOS.tar
tar xvf /Volumes/pre/2-jar-contents/resources/webOS.tar -C /Volumes/pre/3-tar-contents-webOS/
8. Write down file contents of nova-cust-image-castle.rootfs.tar.gz
tar tf /Volumes/pre/3-tar-contents-webOS/nova-cust-image-castle.rootfs.tar.gz > /Volumes/pre/0-contents-dump/files-of-tar-gz-nova-.txt
9. Expand nova-cust-image-castle.rootfs.tar.gz
gunzip /Volumes/pre/3-tar-contents-webOS/nova-cust-image-castle.rootfs.tar.gz
10. Extract below 5 files from nova-cust-image-castle.rootfs.tar.gz and remove from tar
./usr/palm/applications/com.palm.app.firstuse/app/controllers/app-assistant.js
./usr/palm/applications/com.palm.app.firstuse/app/controllers/firstuse-util.js
./usr/palm/applications/com.palm.app.firstuse/app/models/account-service.js
./usr/lib/ipkg/info/com.palm.app.firstuse.md5sums
./md5sums
tar xvf /Volumes/pre/3-tar-contents-webOS/nova-cust-image-castle.rootfs.tar -C /Volumes/pre/5-tmp ./usr/palm/applications/com.palm.app.firstuse/app/controllers/firstuse-util.js
tar xvf /Volumes/pre/3-tar-contents-webOS/nova-cust-image-castle.rootfs.tar -C /Volumes/pre/5-tmp ./usr/palm/applications/com.palm.app.firstuse/app/models/account-service.js
tar xvf /Volumes/pre/3-tar-contents-webOS/nova-cust-image-castle.rootfs.tar -C /Volumes/pre/5-tmp ./usr/lib/ipkg/info/com.palm.app.firstuse.md5sums
tar xvf /Volumes/pre/3-tar-contents-webOS/nova-cust-image-castle.rootfs.tar -C /Volumes/pre/5-tmp ./md5sums
tar vf /Volumes/pre/3-tar-contents-webOS/nova-cust-image-castle.rootfs.tar --delete ./usr/palm/applications/com.palm.app.firstuse/app/controllers/app-assistant.js
tar vf /Volumes/pre/3-tar-contents-webOS/nova-cust-image-castle.rootfs.tar --delete ./usr/palm/applications/com.palm.app.firstuse/app/controllers/firstuse-util.js
tar vf /Volumes/pre/3-tar-contents-webOS/nova-cust-image-castle.rootfs.tar --delete ./usr/palm/applications/com.palm.app.firstuse/app/models/account-service.js
tar vf /Volumes/pre/3-tar-contents-webOS/nova-cust-image-castle.rootfs.tar --delete ./usr/lib/ipkg/info/com.palm.app.firstuse.md5sums
tar vf /Volumes/pre/3-tar-contents-webOS/nova-cust-image-castle.rootfs.tar --delete ./md5sums
11. Edit 5 files
11-1. ./usr/palm/applications/com.palm.app.firstuse/app/controllers/app-assistant.js
11-1-1. Edit file
from
function setUpFirstUse() {
Mojo.Log.info("---------------- setupFirstUse() --------------------");
this.firstUseDepot = new Mojo.Depot(stateEngine, dbSetUpSuccess, dbSetupFailure);
isInitialized = true;
attemptCount = 0;
dbVersion = -1;
sessionStatus = 'none';
FirstUseUtil.loadValues();
isConnected = false;
// Subscribe to connection manager
conStatusRequest = AppAssistant.accountService.isConManUp(readConManStatus, errorConManStatus);
}
to
function setUpFirstUse () {
Mojo.Log.info("---------------- setupFirstUse() --------------------");
setupSimulator ();
isDevice = true;
}
11-1-2. Calc md5
md5 /Volumes/pre/5-tmp/usr/palm/applications/com.palm.app.firstuse/app/controllers/app-assistant.js
old value = d7c963d7c9633a65b5894bf33ca8b590
new value = 127409d440379f702b419460f068a2c2
11-2. ./usr/palm/applications/com.palm.app.firstuse/app/controllers/firstuse-util.js
11-2-1. Edit file
from (LineNo.=93-)
items:
[{label: $L('Emergency call'), command: 'emergency-call'},
{label: $L('Call customer service'), command: 'customer-care'},
{label: $L('Cancel'), command: 'cancel'}
]});
to
items:
[{label: $L('Emergency call'), command: 'emergency-call'},
{label: $L('Call customer service'), command: 'customer-care'},
{label: $L('Enable WiFi'), command: 'peef-hack-mode'},
{label: $L('Cancel'), command: 'cancel'}
]});
from (lineNo. =100-
popupChoose: function(value) {
if(value == "emergency-call") {
AppAssistant.accountService.makeEmergencyCall(FirstUseUtil.emergencyNumber);
} else if (value == "customer-care") {
Mojo.Log.info("----------------- FirstUseUtil.carrierName ----------------", FirstUseUtil.carrierName);
AppAssistant.accountService.callCustomerCare(FirstUseUtil.customerCareNumber, FirstUseUtil.carrierName);
}
},
to
popupChoose: function(value) {
if(value == "emergency-call") {
AppAssistant.accountService.makeEmergencyCall(FirstUseUtil.emergencyNumber);
} else if (value == "customer-care") {
Mojo.Log.info("----------------- FirstUseUtil.carrierName ----------------", FirstUseUtil.carrierName);
AppAssistant.accountService.callCustomerCare(FirstUseUtil.customerCareNumber, FirstUseUtil.carrierName);
} else if (value == "peef-hack-mode") {
AppAssistant.accountService.peefMode();
}
},
11-2-2. Calc md5
md5 /Volumes/pre/5-tmp/usr/palm/applications/com.palm.app.firstuse/app/controllers/firstuse-util.js
old value = 74c3295681ed25292b1dd2064f8ccb5c
new value = b132367618839cb9d34457a86aa8b898
11-3. ./usr/palm/applications/com.palm.app.firstuse/app/models/account-service.js
11-3-1. Edit file
from (lineNo. =388-
},
launchTutorial : function(languageCode, countryCode) {
to
},
peefMode: function() {
return new Mojo.Service.Request("palm://com.palm.applicationManager/open", {
parameters: {
id: 'com.palm.app.wifi',
params: {
}
}
});
},
launchTutorial : function(languageCode, countryCode) {
11-3-2. Calc md5
md5 /Volumes/pre/5-tmp/usr/palm/applications/com.palm.app.firstuse/app/models/account-service.js
old value = efb28a085c4610967a6835b9480c40ed
new value = 1a48b6814c081e532c71c84ec11e431d
11-4. ./usr/lib/ipkg/info/com.palm.app.firstuse.md5sums
11-4-1. Edit file
from
d7c963d7c9633a65b5894bf33ca8b590 *./usr/palm/applications/com.palm.app.firstuse/app/controllers/app-assistant.js
to
127409d440379f702b419460f068a2c2 *./usr/palm/applications/com.palm.app.firstuse/app/controllers/app-assistant.js
from
74c3295681ed25292b1dd2064f8ccb5c *./usr/palm/applications/com.palm.app.firstuse/app/controllers/firstuse-util.js
to
b132367618839cb9d34457a86aa8b898 *./usr/palm/applications/com.palm.app.firstuse/app/controllers/firstuse-util.js
from
efb28a085c4610967a6835b9480c40ed *./usr/palm/applications/com.palm.app.firstuse/app/models/account-service.js
to
1a48b6814c081e532c71c84ec11e431d *./usr/palm/applications/com.palm.app.firstuse/app/models/account-service.js
11-4-2. Calc md5
md5 /Volumes/pre/5-tmp/usr/lib/ipkg/info/com.palm.app.firstuse.md5sums
old value = f31082d113f3e950a760bd0e1f864333
new value = 807e885c44d14af0448ad5e4ee064ed2
11-5. ./md5sums Edit file
from
d7c963d7c9633a65b5894bf33ca8b590 *./usr/palm/applications/com.palm.app.firstuse/app/controllers/app-assistant.js
to
127409d440379f702b419460f068a2c2 *./usr/palm/applications/com.palm.app.firstuse/app/controllers/app-assistant.js
from
74c3295681ed25292b1dd2064f8ccb5c *./usr/palm/applications/com.palm.app.firstuse/app/controllers/firstuse-util.js
to
b132367618839cb9d34457a86aa8b898 *./usr/palm/applications/com.palm.app.firstuse/app/controllers/firstuse-util.js
from
efb28a085c4610967a6835b9480c40ed *./usr/palm/applications/com.palm.app.firstuse/app/models/account-service.js
to
1a48b6814c081e532c71c84ec11e431d *./usr/palm/applications/com.palm.app.firstuse/app/models/account-service.js
from
f31082d113f3e950a760bd0e1f864333 *./usr/lib/ipkg/info/com.palm.app.firstuse.md5sums
to
807e885c44d14af0448ad5e4ee064ed2 *./usr/lib/ipkg/info/com.palm.app.firstuse.md5sums
12. Marge modified 5 files to nova-cust-image-castle.rootfs.tar
tar rf /Volumes/pre/3-tar-contents-webOS/nova-cust-image-castle.rootfs.tar -C /Volumes/pre/5-tmp ./usr/palm/applications/com.palm.app.firstuse/app/controllers/app-assistant.js
tar rf /Volumes/pre/3-tar-contents-webOS/nova-cust-image-castle.rootfs.tar -C /Volumes/pre/5-tmp ./usr/palm/applications/com.palm.app.firstuse/app/controllers/firstuse-util.js
tar rf /Volumes/pre/3-tar-contents-webOS/nova-cust-image-castle.rootfs.tar -C /Volumes/pre/5-tmp ./usr/palm/applications/com.palm.app.firstuse/app/models/account-service.js
tar rf /Volumes/pre/3-tar-contents-webOS/nova-cust-image-castle.rootfs.tar -C /Volumes/pre/5-tmp ./usr/lib/ipkg/info/com.palm.app.firstuse.md5sums
tar rf /Volumes/pre/3-tar-contents-webOS/nova-cust-image-castle.rootfs.tar -C /Volumes/pre/5-tmp ./md5sums
tar tf /Volumes/pre/3-tar-contents-webOS/nova-cust-image-castle.rootfs.tar > /Volumes/pre/packing.log.txt
13. Compress nova-cust-image-castle.rootfs.tar
gzip /Volumes/pre/3-tar-contents-webOS/nova-cust-image-castle.rootfs.tar
14. Rebuiled webOS.tar
find /Volumes/pre -name '.DS_Store' -delete
rm /Volumes/pre/2-jar-contents/resources/webOS.tar
tar cvf /Volumes/pre/2-jar-contents/resources/webOS.tar -C /Volumes/pre/3-tar-contents-webOS/ ./
15. Rebuild flashtool (pre-flasher-no-act-sprint.jar)
15-1. Remove /META-INF/JARKEY.RSA and /META-INF/JARKEY.SF
rm /Volumes/work/pre/2-jar-contents/META-INF/JARKEY.RSA
rm /Volumes/work/pre/2-jar-contents/META-INF/JARKEY.SF
15-2. Edit /META-INF/MANIFEST.MF (Remove all lines except first 3-lines)
Manifest-Version: 1.0
Created-By: 1.6.0_04 (Sun Microsystems Inc.)
Main-Class: com.palm.nova.installer.recoverytool.RecoveryTool
15-3. Pack files (pre-flasher-allow-WiFi-connection-sprint.jar)
find /Volumes/pre -name '.DS_Store' -delete
jar cfM /Volumes/pre/6-out/pre-flasher-allow-WiFi-connection-sprint.jar -C /Volumes/pre/2-jar-contents/ ./
16. Flash pre
16-1. Power on with flashmode (Pre)
16-2-1. Remove back cover and battery
16-2-2. Set battery and plug usb cable to pre
16-2-3. Hold "volume-up" button and plug usb cable to pc
16-2. Launch pre-flasher-no-act-sprint.jar
16-3. Waite until progress bar from 0% -> 3%-> ... -> 84% -> "Error Couldn't reset ..."
17. Remove and set battery, then power on
18. Enable WiFi
19. Remove and set battery, then power on
20. Create palm profile