How to set CDMA APNs with new more stable ril - Touch Pro2, Tilt 2 Android General

See post #20 , highlandsun resolved this.
I decide to create an new thread for APNs setting, just search for many help.
Thanks to highlandsun, the ril is great.
RIL link : http://forum.xda-developers.com/showthread.php?t=1009112
Android I run: **Complete GingerBread Bundle!!** GBX0A - Alpha! Camera!
Put apns-conf.xml in /system/etc, go to mobile network -> APN, menu key, reset to default, system will load the APNs from apns-conf.xml and add APNs which match your carrier's operator ID.
After enable data connection, android seems not pass selected APN's info to ril (such as APN name,user,password)
D/RIL ( 1422): requesting data connection to APN '(null)'
Click to expand...
Click to collapse
APN got null value from system, then use default user/password to connect(default is dummy/dummy). So if user/password is not dummy/dummy, data connection will not work.
The new ril handled MMS, we can set the correct APNs for MMS receive.

muziling said:
I decide to create an new thread for APNs setting, just search for many help.
Thanks to highlandsun, the ril is great.
RIL link : http://forum.xda-developers.com/showthread.php?t=1009112
Android I run: **Complete GingerBread Bundle!!** GBX0A - Alpha! Camera!
Put apns-conf.xml in /system/etc, go to mobile network -> APN, menu key, reset to default, system will load the APNs from apns-conf.xml and add APNs which match your carrier's operator ID.
After enable data connection, android seems not pass selected APN's info to ril (such as APN name,user,password)
APN got null value from system, then use default user/password to connect(default is dummy/dummy). So if user/password is not dummy/dummy, data connection will not work.
The new ril handled MMS, we can set the correct APNs for MMS receive.
Click to expand...
Click to collapse
I appreciate the info. I'm not sure how to merge it into the system file, hopefully somebody will come out with a build with the new RIL. (preferrable GB) or I'll just wait until it's committed.

I believe a simpler approach will be just to re-enable the APN Settings option in Phone Settings menu for CDMA phones. I don't have a CDMA phone to test this with, but something like this patch ought to do the trick:
Code:
diff --git a/res/xml/cdma_options.xml b/res/xml/cdma_options.xml
index 346674c..dfc9223 100644
--- a/res/xml/cdma_options.xml
+++ b/res/xml/cdma_options.xml
@@ -17,6 +17,17 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res/com.android.phone">
+ <PreferenceScreen
+ android:key="button_apn_key"
+ android:title="@string/apn_settings"
+ android:persistent="false">
+
+ <intent android:action="android.intent.action.MAIN"
+ android:targetPackage="com.android.settings"
+ android:targetClass="com.android.settings.ApnSettings" />
+
+ </PreferenceScreen>
+
<com.android.phone.CdmaRoamingListPreference
android:key="cdma_roaming_mode_key"
android:title="@string/cdma_system_select_title"
violino:/home/software/xdandroid/packages/apps/Phone>
(I literally just copied and pasted that out of the gsm_umts_options.xml file.)
Enabling this setting should make life easier for packaging, because then we don't need to worry about shipping with correct APN info pre-loaded for every carrier... But someone who can recompile the Phone app and run on CDMA will have to try this out and report back.

I must leave home now, I will try tonight, thanks .

I gave it a try with apk manager, but might have done it a little wrong. All I ended up with was a fatal error in MAIN when I clicked the wireless and networks button. Force Close. I'm not sure I should be jumping in this deep yet.

BoominSVX said:
I gave it a try with apk manager, but might have done it a little wrong. All I ended up with was a fatal error in MAIN when I clicked the wireless and networks button. Force Close. I'm not sure I should be jumping in this deep yet.
Click to expand...
Click to collapse
Yeah, looks like there's more to it than just that first patch. I'm still looking...
OK, since Phone.apk is a system app, it's not straightforward to just build a new one and drop it into place. The apps are cryptographically signed, and you need to have the same key on your build machine as was used to create it originally. I was running FRX06 and I don't have their release keys, so I replaced all of my /system with my own build of the Froyo tree. But even that wasn't enough, because /data/system still had records of the original keys. I found out about that here
http://forum.cyanogenmod.com/topic/3550-restoring-google-account-synchronization-after-upgrade/
After I did these edits on /data/system/packages.xml I was able to boot with my new system image (without first deleting all of my /data).
So here's the changes I made to the Phone.apk:
First, instead of leaving the APN setting in the GSM-specific options, I moved up to the generic Network Settings instead, so it can be used by both GSM and CDMA:
Code:
diff --git a/res/xml/gsm_umts_options.xml b/res/xml/gsm_umts_options.xml
index afdd0d3..25bc031 100644
--- a/res/xml/gsm_umts_options.xml
+++ b/res/xml/gsm_umts_options.xml
@@ -17,17 +17,6 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res/com.android.phone">
- <PreferenceScreen
- android:key="button_apn_key"
- android:title="@string/apn_settings"
- android:persistent="false">
-
- <intent android:action="android.intent.action.MAIN"
- android:targetPackage="com.android.settings"
- android:targetClass="com.android.settings.ApnSettings" />
-
- </PreferenceScreen>
-
<com.android.phone.Use2GOnlyCheckBoxPreference
android:key="button_prefer_2g_key"
android:title="@string/prefer_2g"
diff --git a/res/xml/network_setting.xml b/res/xml/network_setting.xml
index 5d70e67..f296d67 100644
--- a/res/xml/network_setting.xml
+++ b/res/xml/network_setting.xml
@@ -49,6 +49,17 @@
android:dialogTitle="@string/preferred_network_mode_dialogtitle" />
<PreferenceScreen
+ android:key="button_apn_key"
+ android:title="@string/apn_settings"
+ android:persistent="false">
+
+ <intent android:action="android.intent.action.MAIN"
+ android:targetPackage="com.android.settings"
+ android:targetClass="com.android.settings.ApnSettings" />
+
+ </PreferenceScreen>
+
+ <PreferenceScreen
android:key="gsm_umts_options_key"
android:title="@string/gsm_umts_options"
android:persistent="false">
Then I deleted the GSM-specific code that disables this menubutton when the phone is not GSM:
Code:
diff --git a/src/com/android/phone/GsmUmtsOptions.java b/src/com/android/phone/GsmUmtsOptions.java
index 48411f6..9fcf6f4 100644
--- a/src/com/android/phone/GsmUmtsOptions.java
+++ b/src/com/android/phone/GsmUmtsOptions.java
@@ -30,11 +30,9 @@ import com.android.internal.telephony.PhoneFactory;
*/
public class GsmUmtsOptions extends PreferenceActivity {
- private PreferenceScreen mButtonAPNExpand;
private PreferenceScreen mButtonOperatorSelectionExpand;
private CheckBoxPreference mButtonPrefer2g;
- private static final String BUTTON_APN_EXPAND_KEY = "button_apn_key";
private static final String BUTTON_OPERATOR_SELECTION_EXPAND_KEY = "button_carrier_sel_key";
private static final String BUTTON_PREFER_2G_KEY = "button_prefer_2g_key";
@@ -45,12 +43,10 @@ public class GsmUmtsOptions extends PreferenceActivity {
addPreferencesFromResource(R.xml.gsm_umts_options);
PreferenceScreen prefSet = getPreferenceScreen();
- mButtonAPNExpand = (PreferenceScreen) prefSet.findPreference(BUTTON_APN_EXPAND_KEY);
mButtonOperatorSelectionExpand =
(PreferenceScreen) prefSet.findPreference(BUTTON_OPERATOR_SELECTION_EXPAND_KEY);
mButtonPrefer2g = (CheckBoxPreference) prefSet.findPreference(BUTTON_PREFER_2G_KEY);
if (PhoneFactory.getDefaultPhone().getPhoneType() != Phone.PHONE_TYPE_GSM) {
- mButtonAPNExpand.setEnabled(false);
mButtonOperatorSelectionExpand.setEnabled(false);
mButtonPrefer2g.setEnabled(false);
}
The resulting phone.apk still works for me. I'm pretty sure it will work for CDMA too, but you either need to build it yourself, or one of the xdandroid dev team will have to give us a patched Phone.apk signed with their release key.

Specifically, you'll need to build the whole release yourself using the info at:
http://xdandroid.com/wiki/Getting_the_Source
I don't run CDMA so I can't test this even though I run self-build source builds.

Entropy512 said:
Specifically, you'll need to build the whole release yourself using the info at:
http://xdandroid.com/wiki/Getting_the_Source
I don't run CDMA so I can't test this even though I run self-build source builds.
Click to expand...
Click to collapse
That link is very outdated and I am having problems getting it to work, so far it has been about a month since I started trying to get it working. GingerBread will not compile doing what they say, I am about to try Froyo. Oh and I will be covering GSM only.

ryannathans said:
That link is very outdated and I am having problems getting it to work, so far it has been about a month since I started trying to get it working. GingerBread will not compile doing what they say, I am about to try Froyo. Oh and I will be covering GSM only.
Click to expand...
Click to collapse
I didn't realize there was a more up-to-date one...?
Those directions worked great for me on Froyo, I haven't tried since gb was released TBH...

ryannathans said:
That link is very outdated and I am having problems getting it to work, so far it has been about a month since I started trying to get it working. GingerBread will not compile doing what they say, I am about to try Froyo. Oh and I will be covering GSM only.
Click to expand...
Click to collapse
As far as I know the only differences for GB is it requires a 64bit OS and a different version of Java IIRC.

rpierce99 said:
As far as I know the only differences for GB is it requires a 64bit OS and a different version of Java IIRC.
Click to expand...
Click to collapse
Interestingly enough, the docs say java 1.5 is required to build froyo, but it looks like FRX was built with 1.6 anyway. So it should say "at least 1.5" (I thought it meant *only* 1.5...)
Sent from my MSM using Tapatalk

highlandsun said:
Interestingly enough, the docs say java 1.5 is required to build froyo, but it looks like FRX was built with 1.6 anyway. So it should say "at least 1.5" (I thought it meant *only* 1.5...)
Sent from my MSM using Tapatalk
Click to expand...
Click to collapse
I had sun-java6-jdk installed and it wouldn't compile, it said i needed java5 so i removed java6 jdk and installed sun-java5-jdk and it compiled sweet as.
Turns out parts of the page were outdated but I fixed them a while back and changes got approved, its all good now

what list?
muziling said:
Put apns-conf.xml in /system/etc
Click to expand...
Click to collapse
What apns-conf.xml? There's already one in there, but it doesn't have any CDMA stuff to match up?

NeoMatrixJR said:
What apns-conf.xml? There's already one in there, but it doesn't have any CDMA stuff to match up?
Click to expand...
Click to collapse
You don't need to do this at all...

Looking over the CDMA code in the android framework, this seems to have been a red herring. Currently the CDMA code doesn't ever send the username or password from the APN, it always sends NULL. It seems to assume that some CDMA provider's profile will be used to fill in the rest of the details. I don't know how to get hold of the CDMA profile though. It doesn't appear to be programmed into the radio firmware. Anyone know? On Winmo and Sense builds you'd use epst or somesuch.
Hmmm. I think the right way to solve this for XDAndroid is going to be to hack the CDMA code to use real APNs.

highlandsun said:
Looking over the CDMA code in the android framework, this seems to have been a red herring. Currently the CDMA code doesn't ever send the username or password from the APN, it always sends NULL. It seems to assume that some CDMA provider's profile will be used to fill in the rest of the details. I don't know how to get hold of the CDMA profile though. It doesn't appear to be programmed into the radio firmware. Anyone know? On Winmo and Sense builds you'd use epst or somesuch.
Hmmm. I think the right way to solve this for XDAndroid is going to be to hack the CDMA code to use real APNs.
Click to expand...
Click to collapse
I know BlackBerry phone not have APN, instead of set user/pass with QUALCOMM QPST or other similar.
So, there maybe some AT COMMAND can obtain user/pass which store at phone.

muziling said:
I know BlackBerry phone not have APN, instead of set user/pass with QUALCOMM QPST or other similar.
So, there maybe some AT COMMAND can obtain user/pass which store at phone.
Click to expand...
Click to collapse
I've been searching for those things but I don't believe it's worth the trouble. The fact is that for any data connection, you need the ability to set username, password, and MMS settings. All of these fields are already present in the APN database, so it's stupid to introduce a new tool to manage these somewhere else.
If you're using my modified Phone.apk and you've set your operator IDs correctly in your properties, the APN menu will work for you. So again, the tools are already built in to Android; no reason to use some other mechanism.
I've updated the framework to use the APN info for CDMA data connections now.
https://gitorious.org/xdandroid/frameworks_base/commit/e0fa513741f513476a0d17d1fd6236b23d7dec02
It's optional; if you don't setup an explicit APN everything will continue to work as before. But if you set one, it will get used.

Nice! More changes to figure out how to pull .

highlandsun said:
I've updated the framework to use the APN info for CDMA data connections now.
https://gitorious.org/xdandroid/frameworks_base/commit/e0fa513741f513476a0d17d1fd6236b23d7dec02
It's optional; if you don't setup an explicit APN everything will continue to work as before. But if you set one, it will get used.
Click to expand...
Click to collapse
Great, hope next release, both froyo and gingerbread have this function.

Patched binaries
Here's the updated framework.jar and Phone.apk with my patches to enable APNs in CDMA. (The attachment is named "framework.zip" because the forum doesn't allow attaching .jar files. Just rename it to framework.jar.)
I guess the easiest way to install this is adding a couple bind mounts in your user.conf. Personally I just mount the filesystem image read/write and replace the files directly, I don't like having so many bind mounted files.
The framework.jar file should be mounted over /system/framework/framework.jar. The Phone.apk gets mounted over /system/app/Phone.apk.
Remember to set your operator properties otherwise none of this will make any difference.
http://cleanimport.xda/index.php?posts/12401915/

Related

[REQ] Users with official Carrier ROMs, info needed

Hi, I am currently trying to compile a list of carrier specific aGPS servers to make a profiling tool that will allow people with custom ROMs to access the correct aGPS servers. The information that I need is contained in your registry (I would suggest using total commander attached to this post if you dont already have a registry editor)
Please can you let me know the information contained in the Following key:
Code:
[HKEY_LOCAL_MACHINE\Software\HTC\SUPL AGPS]
"ServerIP"=
"ServerURL"=
"GPSMode"=
"ServerPort"=
"DynamicURL"=
"TLSHostName"=
Please reply using the above format and maybe I can add this to my profiling app
Excellent!
With the recent AT&T changes, we're going to need this.
Cheers,
Hi there here is mine
Rom:Vodafone UK 5.10.161.1 WWE
Code:
[HKEY_LOCAL_MACHINE\Software\HTC\SUPL AGPS]
"ServerIP"=10.1.101.63
"ServerURL"=missing
"GPSMode"=0x2 (2)
"ServerPort"=0x1C6B (7275)
"DynamicURL"=missing
"TLSHostName"=missing
So by the looks of it uses an Internal IP address specific to Vodafone UK.
HTH
b0yce
b0yce said:
Hi there here is mine
Rom:Vodafone UK 5.10.161.1 WWE
Code:
[HKEY_LOCAL_MACHINE\Software\HTC\SUPL AGPS]
"ServerIP"=10.1.101.63
"ServerURL"=missing
"GPSMode"=0x2 (2)
"ServerPort"=0x1C6B (7275)
"DynamicURL"=missing
"TLSHostName"=missing
So by the looks of it uses an Internal IP address specific to Vodafone UK.
HTH
b0yce
Click to expand...
Click to collapse
Actually, I think that's the generic IP address HTC ships with all their ROMs. See below, which I got from the OEMDrivers RGU of the new AT&T ROM (the AT&T aGPS server updates are done via PROVXML):
Code:
[HKEY_LOCAL_MACHINE\SOFTWARE\HTC\SUPL AGPS]
"EnableAGPS"=dword:00000000 ; 0:Disable AGPS
[B]"GPSMode"=dword:00000002 ; 1:GPS_FIX_MODE_MSA, 2:GPS_FIX_MODE_MSB, 3:GPS_FIX_MODE_MSS[/B]
"NumberFixes"=dword:3B9AC9FF ; 999999999
"TimeBetweenFixes"=dword:00000001 ; 1
"QoSAccuracy"=dword:00000032 ; 50
"QosPerformance"=dword:00000059 ; 89
[B]"ServerIP"="10.1.101.63" ; Set CHT AGPS Server IP as default[/B]
[B]"ServerPort"=dword:00001C6B ; Set CHT AGPS Server Port as default[/B]
It appears that aGPS is in fact disabled by HTC, by default, as not all Carriers support it (Vodafone UK might be one of them that don't).
Yeah, just found that in the T-Mobile ROM i have dumped as well Though there does seem to be a mention of supl.agps.emome.net in the gpsdriver.dll....
B4PJS said:
Yeah, just found that in the T-Mobile ROM i have dumped as well Though there does seem to be a mention of supl.agps.emome.net in the gpsdriver.dll....
Click to expand...
Click to collapse
If there ARE aGPS settings, they'd probably be in one of the PROVXMLs in the "OperatorPkg" OEM folder. In the AT&T ROM, they're in the "mxipupdate_oemoperators_107.provxml".
AT&T a
This is what I have for stock at&t rom.
[HKEY_LOCAL_MACHINE\Software\HTC\SUPL AGPS]
"ServerIP"= 199.88.233.169
"ServerURL"= h-slp.mnc410.mcc310.pub.3gppnetwork.org
"GPSMode"= value:2 (Dec)
"ServerPort"= 7275 (Dec)
"DynamicURL"= h-slp.mnc000.mcc111.pub.3gppnetwork.org
"TLSHostName"= h-slp.mnc410.mcc310.pub.3gppnetwork.org
re: supl.agps.emome.net
This is the server referred to here:
"ServerIP"="10.1.101.63" ; Set CHT AGPS Server IP as default
"ServerPort"=dword:00001C6B ; Set CHT AGPS Server Port as default
emome.net is a cell phone provider, see http://www.emome.net/channel?chid=256
Anyway, their name is Chunghwa Telecom, (CHT) - it's an internal IP for their SUPL server, similar to AT&T's
Imagine that Chunghwa is a large provider near HTC, so they use that for testing..
Yeah I kinda guessed they were something local to HTC, strange that it is hard coded in the dll though...
T-Mobile USA AGPS Settings
Compliments of a T-Mobile Rhodium ROM. Any Fuze users running on T-Mobile in the US should be able to use these, I guess?
Code:
[HKEY_LOCAL_MACHINE\SOFTWARE\HTC\SUPL AGPS]
"EnableAGPS"=dword:00000001
"ServerPort"=dword:00001C6B
"ServerIP"="10.176.29.225"
"Network"="T-Mobile Data"
"GPRSConnection"="T-Mobile Data"
"ServerURL"="lbs.geo.t-mobile.com"
"GPSMode"=dword:00000002
"TLSHostName"="lbs.geo.t-mobile.com"
There's no entry for "DynamicURL".
Captain_Throwback said:
Compliments of a T-Mobile Rhodium ROM. Any Fuze users running on T-Mobile in the US should be able to use these, I guess?
Code:
[HKEY_LOCAL_MACHINE\SOFTWARE\HTC\SUPL AGPS]
"EnableAGPS"=dword:00000001
"ServerPort"=dword:00001C6B
"ServerIP"="10.176.29.225"
"Network"="T-Mobile Data"
"GPRSConnection"="T-Mobile Data"
"ServerURL"="lbs.geo.t-mobile.com"
"GPSMode"=dword:00000002
"TLSHostName"="lbs.geo.t-mobile.com"
There's no entry for "DynamicURL".
Click to expand...
Click to collapse
any luck for t-mobile uk settings?
maybe it's an idea to change the title of the thread to all agps settings?
it could be useful to also have the open servers up here in stead of only the carier specific ones...
Maybe we should spread the word and not keep it to Raphael specific, since the AGPS servers are used on more devices..
just trying to increase our chances in getting a working AGPS setup for everyone who's looking, even not carier specific.
Maybe we can move this thread and change the title to AGPS settings wanted, try these and and report back if they work for you?
That an idea?
Hope we can get this thread widely spread so everyone can use it...
Da_G, could you check if the Nokia server is back in business?
I can't really figure it out..I get a $GPSCEL in my nmea log, but can't get a lock under my roof..
So don't really know if it's actually working..
ta a bunch..
Hi, I will check soon (very busy with image update)
for $GPCELL string, the paramater is degrees LAT / LONG - does it translate to location nearby? if not supl server may be feeding incorrect data.

[IMEI] IMEI Generator

Current version: !IMEIme 2.2.0.4
Bug Fix
Fixed bug in use previous patch that could result in variable used before declared error.
Changed processing order when custom patches were to be used
The program will now process custom patches prior to editing framework.jar and build.prop edits. With new kernel patches requiring a new build.prop users would lose build.prop edits if the kernel was included in custom patches, the program will now patch any user modifications, then process IMEI generation and build.prop edits.
Updated to work with ROMs that do not include GSMPhone.smali
Recently, many ROMs are not including GSM phone utilities in framework.jar. I have added testing for missing GSMPhone.smali and patching via TelephonyManager.smali if necessary.
UPDATED FILES UPLOADED
MANY of the support files have been updated to the newer versions (smali, baksmali, adb and components).
I encourage you to delete all files in your existing IMEI Generator folder and use the new !IMEIMe.exe to generate the files necessary.
The devices.dat file if you've used the previous version has several issues that prevents the device model from being correctly patched on many of the devices. This has been fixed here and in the device list thread.
There is a known issue with the GUI when your screen settings are set at 125% in Control Panel - Appearance and Personalization - Display... I will work on fixing that in the next release.
Bug reporting thread for !IMEIme
Device list thread
New features:
Will patch GSMPhone.smali if present in framework... patches TelephonyManager.smali otherwise.
I chose this method since more ROMs are coming out for wifi tablets that do not have GSM phone information included in framework.jar. I was playing with CM10.1 and discovered GSMPhone.smali is not present, thus I was getting unable to patch GSMPhone.smali error, and there was no patching for an IMEI. In all honesty... this should be irrelevent, since IMEI is only utilized in cellular communications on GSM phones... however... some applications MAY (xda free does) require an IMEI to work, even on wifi only devices.
ODEX files still in the works
odex file support... I think this solution will work on odex file systems as long as the patching is done on the ROM prior to flashing to device (anyone using odexed system please let us know) and I am working on in place patching on odexed systems... however, I am not completely comfortable since there is a lot of work done by the device itself during odexing of the modified files... I am very hesitant since any mistake could render a bricked device and I don't have a system to test with prior to release.
Previous Important Changes
The new version of the IMEI Generator will no longer overwrite your existing devices.dat file with the current. To use new devices.dat file, delete the old one prior to running the program, or download the new one and unzip it in the IMEI Generator directory.
Device Communications not necessary in certain situations
If you select to Update ROM, using Serial Number based IMEI and do not select Encrypt IMEI, the program will no longer need to communicate with the device when performing its tasks. The framework.jar patch will not hard patch the IMEI in this situation as before. This is useful for patching a ROM for distribution to multiple people, since they will all maintain unique IMEI's. This is accomplished with the following change in the framework.jar
Code:
/com/android/internal/telephony/gsm/GSMPhone.smali
.method public getDeviceId()Ljava/lang/String;
[b]changed[/b] iget-object v0, p0, Lcom/android/internal/telephony/gsm/GSMPhone;->mImei:Ljava/lang/String;
[b]to[/b] sget-object v1, Landroid/os/Build;->SERIAL:Ljava/lang/String;
prior to patching in code to prepend "0"
.method public getDeviceSvn()Ljava/lang/String;
[b]changed[/b] iget-object v0, p0, Lcom/android/internal/telephony/gsm/GSMPhone;->mImeiSv:Ljava/lang/String;
[b]to[/b] sget-object v1, Landroid/os/Build;->SERIAL:Ljava/lang/String;
prior to patching in code to prepend "0"
To try to explain the above a little...
The above is always changed, no matter what IMEI generation method you select...
If you select Serial Number and New Type IMEI and not Encrypt: no other patching is done for the IMEI... this can be implemented on many devices, since each will have a unique serial number.
If you select Serial Number and do not select New Type: additional code is added to format the IMEI to the old standard ("00-" and "-"s)... this can be implemented on many devices for same reason.
If you select MAC Address or Encrypt (or both): additional code is added that results in the IMEI being hard coded, this makes it very much device specific.
If you select MAC Address or Encrypt (or both) and do not select New Type: additional code is added that results in the IMEI being hard coded as well as code to format the IMEI, this makes it very much device specific.
Use Custom Patch NOTE: This is only used when patching a ROM
This is going to take some major explanation, since I ran into so many possible scenarios...
One thing of note... the only additional lines added to updater-script will be for files in the base directory
The order of processing is:
1. Original ROM updater-script and files
2. Custom Patch zip file
3. Custom Patch folder
The program will utilize folders (from Patch zip file or Patch folder itself) named modboot, modsys, or system (not case sensitive in windows) as well as files in the base folder
Any files in modboot will be moved to the root of the **ROM**-IMEI.zip file and lines added to updater-script as needed
Any files in modsys will be moved to the system directory of the **ROM**-IMEI.zip file
If Custom Patch is checked...
/META-INF/com/google/android/updater-script is extracted from the ROM
the program will ask you to select the Custom Patch Folder
If there is a zip file present in the folder the program will ask if you want to use it
You have 3 options, "Yes", "No" or "Cancel"
Yes = Use the zip file
No = Don't use it, select another
Cancel = Don't use a zip file
If you use a zip file, it will extract the zip file and process the updater-script in it for any additional lines needed
After the above, any non-zip files and modboot, modsys and system directories in the Patch Folder will be processed
I chose this order so you can have a "go to" patch zip file, and test other additions by using the file, folder options prior to including them in the zip.
Example here:
I have my custom patches in folder /CM7/UserMods with these contents:
/META-INF
/modboot
/modsys
patch.zip
The program processes patch.zip first, then overwrites any files with the files in modboot and modsys
It also processes /META-INF/com/google/android/updater-script for any lines extracting files to /boot and adds them to the original ROM updater-script if not already there.
It then adds lines for any files originally in /modboot to updater-script to extract them to /boot
"New IMEI Type" of IMEI which no longer has the "-"s in it, but maintain backward compatibility for those who already have IMEI's generated or prefer the old style. When the new type is selected in the GUI:
NOTE: Per the IMEI standards... Using a single 0 prepended to the IMEI indicates a TEST IMEI for a country with 3 digit international code... while it should have no implications to us since we are not on a cell... it may provide potential country validity issues... I will monitor this and resort to 00 prefix in the new type of IMEI if necessary.
ADDITIONAL NOTE: Per the IMEI standards... For devices without an IMEI, they are to provide a unique serial number to be used... This program modifies framework.jar to allow this.
I am now patching framework.jar in the /com/android/internal/telephony/gsm/GSMPhone.smali file instead of /android/telephony/TelephonyManager.smali (this change is what allows the information to display in the about tablet information)
I am renaming and patching 2 functions... getDeviceID() and getDeviceSvn()
By patching the two functions in this file... the IMEI now shows in Settings... About Tablet... Status... no longer have to use external program or dial *#06# to verify the device is patched.
getDeviceID() shows it in IMEI
getDeviceSvn() shows it in IMEI SVN
You can rename or copy !IMEIme.ini to IMEIme.ini and the program will work.... useful for *nix users and probably mac users... since they have issues with special char actors (!)... While I like to use it in windows to keep the executable and ini file at the top of the file list in windows explorer... anyway...
The program looks for IMEIme.ini first and uses it if present... if it is not... it then looks for !IMEIme.ini (which will be there... because the program installs the generic !IMEIme.ini if it isn't ) This also provides a good way to keep your ini.. and see the new settings in the compiled in ini.
GUI selection and related ini setting
GUI: New IMEI Type
INI Setting:
New_Type =
; If 0 then the old type of "00-XXXXXX-YYYYYY-ZZZ" will be used
; If 1 then the new type of "00XXXXXXYYYYYYZZZ" will be used
BUG FIX
No known or reported bugs to work out.
!IMEIme.ini file default settings and explanation:
Code:
;The setting options are 1 (use the option) or 0 (don't use the option)
;WiFi IP Address can be set to your Nook's IP address here to a default to use
;IMEI can be set to a default here... you can also set the seed you use for generation
;Setting Device_Manufacturer to anything will result in an edit to build.prop setting the entered manufacturer
;IF Device_Manufacturer is NOT blank then:
;Setting Manufacturer_Device to anything will result in an edit to build.prop setting the entered device
;
;NOTE: ONLY Device_Manufacturer is necessary for this edit... there have been no software that appears to
; require a device edit
;
;Setting LCD_Density will result in build.prop edit for this setting regardless of Device_Manufacturer setting
;
;Set all options in [Settings] section at the bottom
[Settings_Explained]
Use_In_Place = 1
; If 0 Disable In Place patching... useful for those who always update AOSP ROM files and never patches on device framework.jar
; If 1 Enables In Place patching if ADB is working
Use_Previous_Patch = 0
; If 0 Ignore IMEI.fix
; If 1 AND IMEI.fix exists... use it for patching
Use_Serial_Number = 1
; If 0 then do not base IMEI off of Device Serial Number
; If 1 then base IMEI off of Device Serial Number
; NOTE: This takes priority over Use_MAC_Address
Use_MAC_Address = 0
; If 0 then do not base IMEI off of Device MAC Address
; If 1 then base IMEI off of of DeOvice MAC Address (last 5 hex words) (2 bytes = 1 hex word)
; 0A is converted to 010, FF is converted to 255 etc.
; NOTE: Use_Serial_Number takes priority
Use_Manual_Input = 1
; If 0 then Manual Input disabled
; If 1 then Manual Input enabled
Encrypt_IMEI = 1
; If 0 then uses actual data for IMEI... i.e. Serial Number (last 15 digits) or MAC Address (last 5 hex words) is actual IMEI
; If 1 then program encrypts data for IMEI generation... hiding actual Device data
New_Type = 1
; If 0 then the old type of "00-XXXXXX-YYYYYY-ZZZ" will be used
; If 1 then the new type of "00XXXXXXYYYYYYZZZ" will be used
Use_ADB = 1
; If 0 then ADB is disabled... this will prevent In-Place updating from working all together
; If 1 then ADB is enabled... In-Place will work... IF adb is working on your device
; NOTE: This takes priority over Use_ADB(usb) and Use_ADB(WiFi)
Use_ADB(usb) = 1
; If 0 then ADB via USB connection is disabled... I use this since some ROM's have Debug Mode issues
; If 1 then ADB via USB is enabled and attempted first
; NOTE: Use_ADB takes priority over Use_ADB(usb) and Use_ADB(WiFi)
Use_ADB(WiFi) = 1
; If 0 then ADB via WiFi connection is disabled
; If 1 then ADB via WiFi is enabled... I use this since some ROM's have Debug Mode issues
; NOTE: Use_ADB takes priority over Use_ADB(usb) and Use_ADB(WiFi)
Clean_Up = 1
; If 0 then the program will leave all support files when cleaning up and exiting
; If 1 then the program will delete all support files when cleaning up and exiting if none of them
; existed at program start
Include_Patch = 0
; If 0 then custom patches is disabled
; If 1 then the program will prompt for custom patches to include
Device_Manufacturer =
; If blank then the program will not edit build.prop
; If anything other than blank the program will edit build.prop to include manufacturer
Manufacturer_Device =
; If blank then the program will not include device in build.prop edit
; IF anything other than blank the program will include device in build.prop edit
; NOTE: No build.prop edit will occur if Device_Manufacturer is blank
Device_Model =
; If blank then the program will not include model in build.prop edit
; IF anything other than blank the program will include model in build.prop edit
; NOTE: No build.prop edit will occur if Device_Manufacturer is blank
Build_Fingerprint =
; If blank then the program will not include Build Fingerprint in build.prop edit
; IF anything other than blank the program will include Build Fingerprint in build.prop edit
; NOTE: This edit will occur even if Device_Manufacturer is blank
LCD_Density =
; If blank then the program will not include LCD Density in build.prop edit
; IF anything other than blank the program will include LCD Density in build.prop edit
; NOTE: This edit will occur even if Device_Manufacturer is blank
WiFi_IP_Address =
; You can enter the default Device IP address here... especially useful if you are only using this on one device...
; or if you keep seperate folders for each device you use (!IMEIme.exe and !IMEIme.ini must be in each folder)...
; i.e. folder for "sister" containing the program and ini file at minimum.
; If blank the program will prompt you for the IP address of the device to establish ADB WiFi connection
IMEI =
; Enter a base 10 (integer) and it will be used as the IMEI (duplicated until 15 digits is reached)
; Enter your "seed" and the program will generate an IMEI based off of it
; NOTE: If you try to generate the old GENERIC IMEI the program will not do it
[Settings]
Use_In_Place = 0
Use_Previous_Patch = 0
Use_Serial_Number = 1
Use_MAC_Address = 0
Use_Manual_Input = 1
Encrypt_IMEI = 0
New_Type = 1
Use_IMEI(15) = 0
Use_ADB = 1
Use_ADB(usb) = 1
Use_ADB(WiFi) = 1
Clean_Up = 1
Include_Patch = 1
Device_Manufacturer =
Manufacturer_Device =
Device_Model =
Build_Fingerprint =
LCD_Density =
WiFi_IP_Address =
IMEI =
Credits:
mthe0ry: Credit for the original IMEI patches released for us Nookers(TM). His original thread is here...
martian21: Took mthe0ry's work and maintained it for releases of CM7, upeating it for each nightly that needed a new one. Martian21's thread.
HacDan on irc.freenodes.net #nookcolor for helping me figure out patching GSMphone.smali instead of TelephonyManager.smali
Thank you's:
paleh0rse: I believe was the first to download and test this program... I think the first bug report too... helped many users with suggestions regarding their apps.
mr_fosi: Continues testing and reporting despite no need to. Tested a few private beta builds to help iron out a significant issue. Also providing information regarding Phone App *#06# IMEI test.
martian21: Set the wheels turning. Provides invaluable feedback and suggestions. He is an invaluable tester and Q&A guy. Thanks for dangling that bait
mellopete: Provided the very first bug report... prompted me to include necessary files in the program itself.
TheMainCat, 12paq and frankusb: Provided bug reports leading me to look at why some Windows versions didn't run the program initially.
Nayla1977: Bug report regarding a mistyped EndIf in my source.
jdexheimer: Bug report that lead me to find a problem with folders with spaces in them.
LinuxParadigm: Bug report regarding missmatching If - EndIf's.
BitingChaos: first public post to get me back on target.
dillweed, garrisj and many others: for PM's indicating the importance of this solution.
lemdaddy for reporting the bug that we tracked down to the java version and reporting back that it was the java version causing issues.
adusumilli for reporting the bug where IMEI was generated as "00-cat: c-an't o-pen"
topcaser for being persistent enough with the bug causing In-Place to fail in certain situations.
HacDan on IRC for leading me in the right direction to impliment the patching of GSMphone.smali.
We are all adults, if we break our toys... we only have ourselves to blame and we may have to buy new ones... (this will NOT break your Nook... I PROMISE you that! but it may break some of your apps... more on that later in post)
BUG REPORTING:
This program was initially ineteded to generate a unique IMEI based on your device S/N and update Dev's install zip files... it has become so much more, and as such there are many functions involved in this process.
Due to the complexity the program has taken on... far beyond what I initially intended... to report bugs please try to use the following as a template:
Function attempting: i.e. Updating ROM... In Place Upgrade... Update framwork saved on computer... etc.
Error Messages: any error message you receive... or the last message you saw prior to the issue.
End result: i.e. GSMphone.smali updated, ROM not... GSMphone.smali updated framework.jar not... etc....
Environment: ROM in same folder as IMEIme.exe... ROM on same drive as IMEIme.exe... ROM on different drive... etc. (same for framework if updating framework instead)
!IMEIme.ini settings: you can put your entire ini file if you'd like.
If you could take notes of EXACTLY what which selection in the GUI you have selected and any buttons you click on which prompt it would be EXTREMELY helpful...
As I said, this program has taken on functions I initially had not imagined including... the more features added, the more complex testing and tracking bugs becomes... I don't want to include a bunch of messages just for the sake of letting you know where in the code you are... would not be beneficial to you... more buttons to click for no reason, etc.
The more detailed you can be, the quicker I can see what is happening... otherwise I have to try to duplicate what I think you are doing when you get the error.
mr_fosi and martian21 have been very tedious in reporting bugs... I greatly appreciate their testing despite not needing to, and the manner in which they document what is going on....
Everyone should click "Thanks" on their bug report posts... they have been instrumental in getting the program where it is so far.
Background:
Some developers require a unique number that is supposed to be provided by hardware manufacturers that is unique to every device. This unique number (IMEI) is extremely important in devices utilizing cellular communications.
Since B&N has not registered IMEI numbers for the Nooks, the AOS's we are using do not acquire it as they do in other Android devices.
The developers that require a unique IMEI have been less than receptive of our devices and past methods to provide functionality to utilize their apps.
I decided to provide what I believe to be a viable solution to this problem.
What this program is:
It is a method to provide a unique IMEI (with reasonable certainty) for our Nooks.
It IS intended to be a supplement until IMEI is addressed in dev's ROM's.
It IS viable for Froyo... CM7... CM9... CM10...Honeycomb... MIUI.... AOKP... and others.
I can't think of any reason it will not work with ANY ROM you choose to utilize... if you run across one... just let me know and I'll see if I can't fix that.
What this program is not and does not do:
This is not a perfect solution to our Nook specific issues. Let me make it PERFECTLY CLEAR there is NO PERFECT SOLUTION We are generating an IMEI from something else... I use TEST IMEI patterns based off of our device serial number, to ensure apk devs wouldn't come down on us.
It is not targeting any specific AOS.
It is not guaranteed to be accepted by any other developers.
It is not intended to be the end all, beat all solution.
It is not intended to dissuade other developers from providing what they feel is a better method.
It will not cause any programs to show in the market. That has to be dealt with via APK developers and/or build.prop Manufacturer strings.
Potential issues:
There is NO legitimate solution to the IMEI issue we Nookers (TM) face... unless a group desires to register a block of them for our use... thus I am generating TEST IMEI's... ideal... no, but the only method available to us.
While I feel, with significant certainty, there will be no negative consequences from apk devs in general, I cannot speak for them, or their logic. This can easily be disabled by them again. That is on them, not me or us. By the same token, they can decide to stop providing their service for cause, I still have no control over that.
Above, I emphasize “with reasonable certainty” due to the fact that, in theory, you can wind up with an IMEI that 9 other Nooks that use this software has. That can only happen if the other 9 owners use this program and have a serial number within the same 10 as yours. This is even less likely with the New IMEI Type since it is using the right most 16 digits of a device serial number (and we know they all start with 2)
If everyone who has the same beginning 15 digits utilizes this program to generate an IMEI, you will all wind up with the same IMEI. Given the number of Nooks out there compared to the number of user's hacking them.... I find it extremely difficult to believe, with a reasonable certainty, that any 2 (much less 10) devices would ever wind up with the same IMEI generated by this program. This is prevented when using the New IMEI Type
What this program does/is capable of:
It allows you to extract framework.jar from a developers update zip file.
It will allow you to pull framework.jar from your Nook or use an existing framework.jar already stored on your computer.
It will generate an IMEI based on your Nook's serial number (or MAC Address) if adb is working on your system. If you have issues running adb via USB (ADB(USB)), it provides the opportunity to utilize adb via WiFi (ADB(WiFi)) for any computer-device communications.
It will provide you a method to manually input your serial number if you cannot connect to the device via adb. You can also input a “seed” (easy to remember word or phrase) and generate an IMEI based on the ASCII codes of the text you enter.
It will edit /com/android/internal/telephony/gsm/GSMPhone.smali to rename any existing getDeviceId() and getDeviceSvn() function to getDeviceId2() getDeviceSvn2() and append the patch to end of that file. NOTE: When the program "smali's" the resulting GSMphone.smali... it relocates the appended function to be before the renamed function.
It will save the patch as IMEI.fix, thus allowing you to utilize it for subsequent runs of the program. A caveat to this is... if you run it from the same folder on a friend's Nook... it will overwrite your original one if it is in the same folder or they will have the same IMEI as you do if you use Previous Run.
It will offer to push the patched framework.jar to your Nook... IF you opted to pull framework.jar from your Nook AND adb successfully worked to do that. This facilates in place upgrading.
It will backup the existing developers zip file appending “-IMEI” to it, distinguishing it is one this program has been used on. It will update this file, not the original developers file.
If there are issues with file names that become duplicate in a case insensitive OS such that windows is, it will warn you of this case and not remove the updated framework.jar to facilitate manual updating of the zip file.
Caveats:
This program is known to work on Java version 1.6.0_23 and known NOT to work on version 1.6.0_17 or earlier. If your system seems to work fine... but the nook does not give you an IMEI number... check your java version by typing this in a DOS window (start-run and type in cmd):
java -version
this will tell you the version of java you are running.
Java must be on your system. It must be in your system's path statement, or this program must be in the java/bin folder. It is possible that you must have java 32 bit version, this is being researched.
It will very likely break your swype, or any other app that utilizes IMEI for validation and you have used previous methods to circumvent their validation process.
It will likely break the same software if/when developers include a fix to the Nook IMEI situation in their AOS. Unless you opt to use this method again on their AOS to ensure you maintain the IMEI you used my program to generate.
Since I have opted to utilize test formed IMEI's to prevent duplicating someone's “real device” IMEI, software developers can easily shut us down again. That is their option. I am trying to provide a solution that is acceptable to both sides of the fence.
Closing statement:
As I desire to make this program as beneficial as possible... PLEASE provide any feedback and/or bug reports... just don't continue to push your ideals once it has been discussed... beating dead horses gets tiresome and just wastes precious time.
112 downloads of 2.2.0.3 with bug when pervious fix was selected
1686 downloads of 2.2.0.2 with no bugs reported
141 downloads of 2.2.0.1 with CM10 in place bug that would cause BBSOB and never boot
197 downloads of 2.2.0.0 (that actually appeared to be 2.1.0.4 in the zip) with a few minor bugs... mostly in custom patching
648 downloads of 2.1.0.3 with known GT for GameLoft issues
1123 downloads of 2.1 with no known bugs
182 downloads of 2.0a with a Generic IMEI bug
1919 downloads of 1.9 with no bug reports
3131 downloads of 1.8 with all bug reports being for non-nook devices
80 downloads of 1.7 with no bug reports
600 downloads of 1.6 with a couple of reports of In-Place update bug
880 downloads of 1.5a with 0 bug reports
148 downloads of 1.5 with a bug that could result in IMEI being generated without being properly formed.
36 downloads of 1.4 with a bug that could result in IMEI of "cat: can't open".
258 downloads of 1.3 with 0 bug reports... time to move on with next feature.
1618 downloads of 1.1 and the only bug noted has been tracked to the user's Java version.
12,758 downloads prior to the current version.
Bug reporting thread for !IMEIme
Device list thread
Looks like I have something new to mess with tomorrow night... thanks for working this, we owe ya!
Been looking forward to this! Thanks for your hard work DizzyDen.
Tested it out however it isn't finding 7zip. I've tried both the 64-bit and the 32-bit version (on 64-bit Windows 7). I'm probably doing something wrong if so please feel free to enlighten me
Martian21
martian21 said:
Been looking forward to this! Thanks for your hard work DizzyDen.
Tested it out however it isn't finding 7zip. I've tried both the 64-bit and the 32-bit version (on 64-bit Windows 7). I'm probably doing something wrong if so please feel free to enlighten me
Martian21
Click to expand...
Click to collapse
It wasn't you... there's something weird with the API to the fileopendialog that changes the working directory... a TEMPORARY work around is to copy the zip file to the folder you are running the program from.
Updating to beta 2 to auto extract support files on run.
Beta 2 is up... OP updated... note the bold text... for now the zip file must be in the same folder as IMEIme.exe
That will be fixed shortly.
Updated to beta 3. OP updated.
Fixed file browse for update file.
Improved cleanup behind itself before exiting...
removes helper files
removes framework.jar
removes classes.dex
removes out folder
removes system folder (the one used to add framework.jar to the zip file)
Still debating ability to allow manual input of the IMEI or a serial number... but those that want to do it will probably figure out how to do it manually... its REALLY not that hard.
Will add random IMEI generation as an option. The only purpose I see for this is for those who don't want to use the generic IMEI and cannot get adb working... even with the included adb in this program.
Feedback and bug reports are welcome and will help improve the program.
Thank you for this
I had to copy my AdbWinApi.dll for it to work. It did not put the new framework.jar in the zip though. It made the files, but didn't update the zip. I moved it to the root of my drive and ran it as administrator, but it still didn't update the zip. I am using Windows 7 x64. I used the IMEI.fix file and updated the zip myself. Thanks again for this nice tool.
mellopete said:
I had to copy my AdbWinApi.dll for it to work. It did not put the new framework.jar in the zip though. It made the files, but didn't update the zip. I moved it to the root of my drive and ran it as administrator, but it still didn't update the zip. I am using Windows 7 x64. I used the IMEI.fix file and updated the zip myself. Thanks again for this nice tool.
Click to expand...
Click to collapse
Did you use something prior to b3 ?
There was an issue I discovered that was preventing appending IMEI.fix to TelephoneProvider.smali that was fixed in b3.
I did my development on windows64 so that shouldn't be an issue.
As for the dll... I hadn't experience issues with that... but I can certainly add it to the program.
Both adb dll's will be included in all releases after b3.
Good job!
Can you explain more about how rom is being affected?and what to check?
Sent from my phiremod for Nook using Tapatalk
DizzyDen said:
Did you use something prior to b3 ?
There was an issue I discovered that was preventing appending IMEI.fix to TelephoneProvider.smali that was fixed in b3.
I did my development on windows64 so that shouldn't be an issue.
As for the dll... I hadn't experience issues with that... but I can certainly add it to the program.
Both adb dll's will be included in all releases after b3.
Click to expand...
Click to collapse
b3 is the first one I tried. I didn't look at the classes.dex before it was deleted. I will check.
RASTAVIPER said:
Good job!
Can you explain more about how rom is being affected?and what to check?
Sent from my phiremod for Nook using Tapatalk
Click to expand...
Click to collapse
Read here http://forum.xda-developers.com/showthread.php?t=1004102
TelephonyManager.smali did not change.
mellopete said:
TelephonyManager.smali did not change.
Click to expand...
Click to collapse
Please make sure b3 is the one you are using. When you originally posted... the thread was showing 0 downloads of that file.... or just wait a few minutes... beta 4 is on its way shortly.
To ensure TelephonyManager.smali is not changed you need to look in two places.... the easiest way is to search for getDeviceID
If it worked correctly you should find 2 instances... the first is the original function and my program renames it to getDeviceID2()... the second should be the one !IMEMe adds to the end of TelephonyManager.smali
Additionally... could you check and see if your run is actually overwriting update zip file.... see if there is a update ".zip.tmp" file left over... if it is there... the zipping is running into an issue overwriting the original file... I thought I had that issue worked out... but may need to add a check for that within my program.
I d/l b4, dropped it in a directory with just the .zip for n87 and ran it (win7 pro 64-bit). It errored out and here's the play-by-play of each of the windows which popped up one immediately after the other:
- I was warned about you being an unverified software publisher, which I OKed.
- "Windows cannot find 'java'. Make sure you typed the name correctly, and then try again." I OKed this one as well.
- window titled "DizzyDen's IMEI Generator" containing: "Return Code is:0 and Error Code is: 1"
- window titled "DizzyDen's IMEI Generator" containing: "Java is required on your system. You can download the current version from http://java.com"
I have JRE6 on my machine, though it is not in the system PATH.
Oh, and there were files for 7za, adb, .dll's and .jar files left behind.
mr_fosi said:
I d/l b4, dropped it in a directory with just the .zip for n87 and ran it (win7 pro 64-bit). It errored out and here's the play-by-play of each of the windows which popped up one immediately after the other:
- I was warned about you being an unverified software publisher, which I OKed.
- "Windows cannot find 'java'. Make sure you typed the name correctly, and then try again." I OKed this one as well.
- window titled "DizzyDen's IMEI Generator" containing: "Return Code is:0 and Error Code is: 1"
- window titled "DizzyDen's IMEI Generator" containing: "Java is required on your system. You can download the current version from http://java.com"
I have JRE6 on my machine, though it is not in the system PATH.
Oh, and there were files for 7za, adb, .dll's and .jar files left behind.
Click to expand...
Click to collapse
java will need to be in your path... I have no way of including all possible locations of where it could be installed... and it is way too big to include with my program.
The left over files is due to the program exiting when it did... I will fix that in next beta... should have waited until java was tested to extract them... or have it perform cleanup before exiting on any errors... sorry bout that.... you can leave them... when you have successful run (or run beta 5 or later) it will clean them up.
For now you may have to run as administrator.... I will try to add code to avoid this in the short future.
BTW. Nowhere does getDeviceID does it say that it must be a well formed IMEI.
nemith said:
BTW. Nowhere does getDeviceID does it say that it must be a well formed IMEI.
Click to expand...
Click to collapse
As much as I admire your work... I am honored that you are even checking this out.
I do understand that as of now it is not required... but I figure if I utilize standards (as much as there are anyway) we may avoid future issues if dev's start checking for well formed IMEI's.
I figure if I'm going to make this... I might as well make it right.
As far as I can determine... if a sw dev implemented IMEI checks, the only thing that could cause them to shut down someone using this would be to check that it is a "TEST" IMEI... but I don't see that happening, because hardware manufacturers do use these in testing.
DizzyDen said:
java will need to be in your path... I have no way of including all possible locations of where it could be installed... and it is way too big to include with my program.
Click to expand...
Click to collapse
Roger that. Should the instructions then note either the required change to PATH or that the file must be run in the user's jre#\bin directory?
DizzyDen said:
The left over files is due to the program exiting when it did... I will fix that in next beta...
Click to expand...
Click to collapse
I figured as much, but thought you should know.
DizzyDen said:
For now you may have to run as administrator...
Click to expand...
Click to collapse
I ran it this way and got the same behavior.
I'll keep a lookout for further versions, test them and report.
Beta 5 is up... OP updated to include Java requirements... thank you mr_fosi for pointing this out.
RASTAVIPER said:
Good job!
Can you explain more about how rom is being affected?and what to check?
Sent from my phiremod for Nook using Tapatalk
Click to expand...
Click to collapse
Did you find the information in the thread linked in response to your questions?
TY mellopete for that.
- Plugged NC into USB port.
- Copied new B5 exe and n87 zip to java\jre6\bin directory.
- Ran exe as admin.
- Prompted for .zip check ("is this correct") and it was, so I OKed it. Not OKing it gave me the option to browse for the file, which I cancelled, resulting in a termination of the prog with a few more dialogs. Any extracted files were cleaned up an prog close, except for adb.exe (which I deal with below).
- Re-ran, exe, chose the detected n87 .zip.
- Displayed correct serial.
- Displayed correct generated 17-digit IMEI.
- Dialog contents "Modifying" gave error "Unable to open file", which I OKed.
- Several more dialogs flew by in rapid succession without error, ending with "Updating ROM" overlaid by "Updated ROM file has been saved as: cm_encore_full-87-IMEI.zip".
- Not all ancillary files were cleaned up. Two files remained: 1) IMEI.fix, a plain txt file containing the correct code to insert the generated IMEI and 2)adb.exe which could not be removed because it was still running the devices server. Running "adb kill-server" in the java\jre6\bin directory allowed me to remove adb.exe.
- A check of the modified smali showed only one instance of "getDeviceId" indicating that the smali had not been modified to add the code to spoof the IMEI.
I would also not have been able to eject my NC, had I tried, until I killed the adb server. Looks like one more line of code to add before cleanup.

[Q] GPS-Fix CM 10.1(Android 4.2) for Atrix (Epinter)

Hey there,
first I have to say - I'm new here - and yes, I have searched for my issue in this forum and elsewhere, but I didn't find a solution. So I decided to register here and ask you experts about helping me to fix my problem:
I'm on Epinters-Rom CM 10.1(Android 4.2) (26/08 Built) and having a problem with a fast GPS-Fix. Always when I use GPS the first time a day it lasts about 5-10Min to get a Sat-Fix. I have done some research about this problem and found this:
In a post on a german forum (I'm from Germany) for Defy Froyo and GPS bug I encountered that there are system files that contain specific configurations for GPS or direct downloading instructions of "ancillary data" (such as A-GPS Data). However, there are no configuration files with the name "location" in Epinters-Rom as they are mentioned in this thread, but I noticed a file in my system folder (system / ect / ) called "gps.config".
Doing more research about this file, I found a post here on XDA in epinters CM10.1 thread from August. Here is mentioned, that Epinters "gps.config" has no entry to an so called "NTP server. He made ​​this entry and now the GPS fix is quick. I didnt really see that Epinter commented this, but a year before, Epinter said (at another Rom) that the NTP server entry is no longer necessary (without further explanation).
Then I remembered (coming from Neutrino-Rom) that Neutrino has had an "GPS-Addon" that was separate flashable - a fix for every single country. So I looked at the the GPS addon of Neutrino (Germany) and behold: When flashing this GPS addon it seems, that just the "gps.config" will be fixed with the following entry for Germany:
Code:
NTP_SERVER de.pool.ntp.org
NTP_SERVER = 0.de.pool.ntp.org
NTP_SERVER = 1.de.pool.ntp.org
NTP_SERVER = 2.de.pool.ntp.org
NTP_SERVER = 3.de.pool.ntp.org
NTP_SERVER = 0.europe.pool.ntp.org
NTP_SERVER = 1.europe.pool.ntp.org
NTP_SERVER = 2.europe.pool.ntp.org
NTP_SERVER = 3.europe.pool.ntp.org
XTRA_SERVER_1 = http://xtra1.gpsonextra.net/xtra.bin
XTRA_SERVER_2 = http://xtra2.gpsonextra.net/xtra.bin
XTRA_SERVER_3 = http://xtra3.gpsonextra.net/xtra.bin
# DEBUG LEVELS : 0 - none , 1 - Error , 2 - Warning , 3 - Info
# 4 - Debug , 5 - Verbose
DEBUG_LEVEL = 0
# Intermediate position report , 1 = enable , 0 = disable
INTERMEDIATE_POS = 0
# Accuracy threshold for intermediate positions
# Less accurate positions are ignored , 0 for passing all positions
ACCURACY_THRES = 0
# Report supl ref location as position , 1 = enable , 0 = disable
REPORT_POSITION_USE_SUPL_REFLOC = 1
# Wiper ( wifi positioning ), 1 = enable , 0 = disable
ENABLE_WIPER = 1
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # AGPS server settings # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# FOR SUPL SUPPORT , set the Following Following
SUPL_HOST = supl.google.com
SUPL_PORT = 7276
SUPL_NO_SECURE_PORT = 3425
SUPL_SECURE_PORT = 7275
SUPL_TLS_HOST = FQDN
SUPL_TLS_CERT = / etc / SuplRootCert
# FOR C2K PDE SUPPORT , set the Following Following
C2K_HOST = c2k.pde.com
C2K_PORT = 1234
CURRENT_CARRIER = common
DEFAULT_AGPS_ENABLE = TRUE
DEFAULT_SSL_ENABLE = FALSE
# TRUE for " User Plane " , FALSE for " Control Plane "
DEFAULT_USER_PLANE = TRUE
In comparison to that, Epinters "gps.config" is only:
Code:
XTRA_SERVER_1 http://xtra1.gpsonextra.net/xtra.bin
XTRA_SERVER_2 = http://xtra2.gpsonextra.net/xtra.bin
XTRA_SERVER_3 = http://xtra3.gpsonextra.net/xtra.bin
SUPL_HOST = supl.google.com
SUPL_PORT = 7276
Do you think I could risk simply replace the two files? Or is it better to flash the file of neutrino? Or to edit the file by Epinter right? Or at least nothing at all? I do not even want to fabricate a Brick ...
So you techies from this forum! Can you help me?
Thanks for reading this and sorry for my poor english... its not my native language!
Regards,
Asmaron
PS: The Germany.zip in the appendix contains the files that would be flashed with neutrinos Rom (including the "gps.config"). The other single "gps.config.zip" is that of Epinters Rom. Simply open it in Editor/TextEdit or similar programs and you can see the above entries.
asmaron said:
Hey there,
first I have to say - I'm new here - and yes, I have searched for my issue in this forum and elsewhere, but I didn't find a solution. So I decided to register here and ask you experts about helping me to fix my problem:
I'm on Epinters-Rom CM 10.1(Android 4.2) (26/08 Built) and having a problem with a fast GPS-Fix. Always when I use GPS the first time a day it lasts about 5-10Min to get a Sat-Fix. I have done some research about this problem and found this:
In a post on a german forum (I'm from Germany) for Defy Froyo and GPS bug I encountered that there are system files that contain specific configurations for GPS or direct downloading instructions of "ancillary data" (such as A-GPS Data). However, there are no configuration files with the name "location" in Epinters-Rom as they are mentioned in this thread, but I noticed a file in my system folder (system / ect / ) called "gps.config".
Doing more research about this file, I found a post here on XDA in epinters CM10.1 thread from August. Here is mentioned, that Epinters "gps.config" has no entry to an so called "NTP server. He made ​​this entry and now the GPS fix is quick. I didnt really see that Epinter commented this, but a year before, Epinter said (at another Rom) that the NTP server entry is no longer necessary (without further explanation).
Then I remembered (coming from Neutrino-Rom) that Neutrino has had an "GPS-Addon" that was separate flashable - a fix for every single country. So I looked at the the GPS addon of Neutrino (Germany) and behold: When flashing this GPS addon it seems, that just the "gps.config" will be fixed with the following entry for Germany:
Code:
Removed long code
Do you think I could risk simply replace the two files? Or is it better to flash the file of neutrino? Or to edit the file by Epinter right? Or at least nothing at all? I do not even want to fabricate a Brick ...
So you techies from this forum! Can you help me?
Thanks for reading this and sorry for my poor english... its not my native language!
Regards,
Asmaron
PS: The Germany.zip in the appendix contains the files that would be flashed with neutrinos Rom (including the "gps.config"). The other single "gps.config.zip" is that of Epinters Rom. Simply open it in Editor/TextEdit or similar programs and you can see the above entries.
Click to expand...
Click to collapse
For me, epinter's cm10.1 was the first time gps lock in in about 5 to 10 seconds, even if i was inside my house...
perhaps is better (previous backup) to edit the file and change the ntp servers to match your coutry's pools. then try,..
on cm7 i use an app called gps status to force calibration of the compass and to force inject fresh agps data, which helps a little
andresrivas said:
perhaps is better (previous backup) to edit the file and change the ntp servers to match your coutry's pools. then try,..
on cm7 i use an app called gps status to force calibration of the compass and to force inject fresh agps data, which helps a little
Click to expand...
Click to collapse
Hey!
Thanks for replying!
I use the GPS Status App too (and tried many other GPS Apps in market) and resetted agps-data many times an refreshed it. It helps a little but just for the moment and after one day not using GPS the fix lasts really long...
I would try to edit the "gps.conf" file but I use the Atrix as my main device, so I dont wanna brick it... Do you think, that editing this file will not force an brick? And what do you think is the best:
a) Editing Epinters "gps.conf" (of course after backing up the org. file, and everything else),
b) Exchange Epinters file with Neutrinos, or
c) Flashing Neutrinos "Germany.zip"?
Or even an absolute other solution?
Regards,
Asmaron
asmaron said:
Hey!
Thanks for replying!
I use the GPS Status App too (and tried many other GPS Apps in market) and resetted agps-data many times an refreshed it. It helps a little but just for the moment and after one day not using GPS the fix lasts really long...
I would try to edit the "gps.conf" file but I use the Atrix as my main device, so I dont wanna brick it... Do you think, that editing this file will not force an brick? And what do you think is the best:
a) Editing Epinters "gps.conf" (of course after backing up the org. file, and everything else),
b) Exchange Epinters file with Neutrinos, or
c) Flashing Neutrinos "Germany.zip"?
Or even an absolute other solution?
Regards,
Asmaron
Click to expand...
Click to collapse
Humm.. I edited the file and had no problems, I think edit is the safer option due to Neutrinos' files are for Gingerbread and we don't know what changed in the middle
andresrivas said:
Humm.. I edited the file and had no problems, I think edit is the safer option due to Neutrinos' files are for Gingerbread and we don't know what changed in the middle
Click to expand...
Click to collapse
Hmm... yeah thats true... so you have edited the file by yourself? What entries did you add? I thought Epinters settings worked for you?
asmaron said:
Hmm... yeah thats true... so you have edited the file by yourself? What entries did you add? I thought Epinters settings worked for you?
Click to expand...
Click to collapse
Sorry, that was on Gb, I edited the ntp servers to the ones off my country (Argentina). I was using root explorer at the time, but in cm10 the stock file manager can do it without problems (I used it to edit touchpad.cfg to fix raindrop bug). Only thing is you need to give it access via the app settings (can't remember as I'm back on cm7)
Hey!
Meanwhile I flashed the ROM from "Zn7mkUKzN1r8aCIV" where the flash is working. The fix lasts also very long and wasnt even stable. The entries of the "gps.conf" of "Zn7mkUKzN1r8aCIV" are exactly the same as the ones of epinter. So i tried to edit the "gps.conf":
- Editing the strings from the neutrino file (check OP), had the result that i didnt get a fix in even a half an hour.
- Restoring the "gps.conf" has the result of getting a fix after some minutes but not very stable.
- Now I have a edit of the "gps.conf" with the strings nlabrad mentioned in the post i told you before and the NTP-Server-Entries of Neutrino for germany (without blanks between the "="). Now i get a fix after some minutes that is stable, but the accuracy gets not better than 100 meters (328 feet). It stucks here and gets not better even after more than half an hour having a stable fix. To be exact it gets not better and not even worser. It stucks exactly at 100 meter accuracy.
Now i will test the GPS fix from that is mentioned here and i will report later!
Regards,
Asmaron
Did it!
Hey there!
I did it!
First it didn't work to exchange the "libnmea.so" from Krystian mentioned in the post above using the integrated file explorer. I allways got an Error when editing/copying/deleting the orig. "libnmea.so" in the "system/lib" folder. After that error somtimes GPS didn't work anymore at all (cant start it) or nothing was changed to the accuracy of the GPS. Well I have seen that by exchanging the file you have to set the permissions new (chmod 644) but I wasn't able to change it without getting an error.
So I tried another way: I extracted the Files of Zn7mkUKzN1r8aCIV's ROM and exchanged the "libnmea.so" org. file with the file from Krystian. I also replaced the "gps.conf" with an modified "gps.conf" containing the Neutrinos Strings from the Germany "gps.conf". Than I ziped and signed the modified files with LambOfGods Zip Signer Tool (v1.1) and flashed it (wiped Cache & Dalvik).
And now: Get a GPS-Fix (indoor) in about 45 sec with an accuracy of about 4 meters! YEAH! :victory:
Thanks for helping! Esp. thanks to you andresrivas and of course Zn7mkUKzN1r8aCIV and Krystian and so on!
Regards,
Asmaron
[/COLOR]
asmaron said:
Hey there!
I did it!
First it didn't work to exchange the "libnmea.so" from Krystian mentioned in the post above using the integrated file explorer. I allways got an Error when editing/copying/deleting the orig. "libnmea.so" in the "system/lib" folder. After that error somtimes GPS didn't work anymore at all (cant start it) or nothing was changed to the accuracy of the GPS. Well I have seen that by exchanging the file you have to set the permissions new (chmod 644) but I wasn't able to change it without getting an error.
So I tried another way: I extracted the Files of Zn7mkUKzN1r8aCIV's ROM and exchanged the "libnmea.so" org. file with the file from Krystian. I also replaced the "gps.conf" with an modified "gps.conf" containing the Neutrinos Strings from the Germany "gps.conf". Than I ziped and signed the modified files with LambOfGods Zip Signer Tool (v1.1) and flashed it (wiped Cache & Dalvik).
And now: Get a GPS-Fix (indoor) in about 45 sec with an accuracy of about 4 meters! YEAH! :victory:
Thanks for helping! Esp. thanks to you andresrivas and of course Zn7mkUKzN1r8aCIV and Krystian and so on!
Regards,
Asmaron
Click to expand...
Click to collapse
hI! I'm having hard time to understand exactly what you did to fix GPS accuracy. I'm the guy who asked Zn7mkUKzN1r8aCIV about the bug and I tried to overwrite the libnmea.so but it didn't work.... (I've had to flash again the rom to get back to 100m accuracy) Can you explain in a easier D) way how to fix it? I understand that you made a flashable zip maybe can you share it?
Hey there!
Well what I did exactly is:
1) Downloaded Zn7mkUKzN1r8aCIV's ROM (from 10/10/13) and extract it
2) Downloaded "libnmea.so" from Krystian
3) Replaced Zn7mkUKzN1r8aCIV's original "libnmea.so" in folder "system/lib/" with Krystian's one
4) Edited the "gps.conf" of Zn7mkUKzN1r8aCIV in folder "system/etc/" with the strings of Neutrinos "gps.conf" for germany (!) mentioned above *
5) Ziped and signatured the GPS-modified ROM files with "LambOfGods Zip Signer Tool (v1.1)" mentioned above
6) Wiped Cache & Dalvik - Flashed and GPS worked
I've uploaded my GPS-modified ROM with the german (!) "gps.conf" here:
Based on Zn7mkUKzN1r8aCIV's ROM 10/10/13 wich is based on Epinters ROM with modified GPS files for Germany from Krystian and Neutrino
Click to expand...
Click to collapse
with
a) "Standard"-Kernel:
CM10.1_Android4.2_GPSmodified.zip - 166.48 MB
b) "Hporch32-"Kernel (when Screen-Tearing occurs):
CM10.1_Android4.2.2_GPSmodified_hporch32.zip - 166.48 MB
I can't edit the "gps.conf" for every single county. Thats to much work. But you can do that on your own! I uploaded the files of Neutrionos "gps.conf"-Tweak here so you can download it and take the strings that you need for your country. In your case, I would do the following:
1) Download my GPS-modified ROM
2) Flash it, reboot and try out GPS - I will not take any responsibility for defects of your hardware! You flash it on your own risk!
2.a) If it works fast, its proofed that Neutrinos Strings in the "gps.conf" has no real effect - you can go to step 8
2.b) If it doesn't work (fast) you go to step 3
3. Download Neutrino GPS-Files and extract them
4. Choose the "gps.conf" that is related to your country (always stored in "system/etc/" folder of the zip-file of your country) and open it with editor
5. Edit the strings in the "gps.conf" on your Atrix (folder "system/etc/" - you will see, there are the german strings) with the ones of your country from the Neutrino File (make sure that there are no blanks between the " = " of each string**)
6. Save your edited "gps.conf" of the folder "system/etc" & check (imperative!) that the rights of the file are set on chmod 644!
7. Reboot and try out GPS
8. (Hopefully) Enjoy!
I hope it works! Looking forward to hear your report!
Regards,
Asmaron
* It is not proofed that this has any effect, but I think so, and now I have a GPS-Fix in almost a half minute.
** The effect of this is also not proofed! What I mean is type e.g.
Code:
NTP_SERVER=0.de.pool.ntp.org
instead of
Code:
NTP_SERVER = 0.de.pool.ntp.org
Hey! Did it work for you?
If not i have another suggestion:
Download my modified GPS-ROM, flash it (on your own risk), download the app "faster GPS" from playstore, choose your country settings in the app. It will modify the "gps.conf" and will set the NTP-Server settings for your country and region.
Maybe it helps... would be glad if you report here!
Regards,
Asmaron
libnmea.ko hack works on ICSROM (and related, I imagine)
asmaron said:
[...] Now i will test the GPS fix from that is mentioned here and i will report later!
Regards,
Asmaron
Click to expand...
Click to collapse
Came across this searching for a fix on my recent ICSROM update. I had to do the same thing when I first root/unlocked to install MROM, so that certainly helped. I noticed that the files sizes were identical, and not to the GB files, as one would expect. Anway, the issue manifested as GPS apps showing 0 accuracy, and WiFi-disabled Google Maps showing 1200m accuracy. After updating the file and chmod, it was showing ~7m accuracy.
Yup works a-ok...
jeremywh7 said:
[...] After updating the file and chmod, it was showing ~7m accuracy.
Click to expand...
Click to collapse
I meant '7ft accuracy' above. Anyway, I tested on my way to work this morn; locked at 5ft. I did see a couple times when it lost the lock and jumped around the map, but was brief. And I recall seeing that happen on the GB rom too.

[LineageOS][OTA][PHP] Open Source REST Server for you

Hi guys,
today I would like to present to you a simple project that was born on this thread to accomplish a very simple task: since there are thousand of Custom ROMs around here, so much of them are LineageOS based, and because of this their forced to build every time all the ROM and post updates here. Users are also forced to check if their preferred ROM was updated or not. That's why I decided to understand how LineageOS OTA Updater System App works. Because of this I've wrote a simple REST Server API emulation that fully works with your ROM (if integrated of course). How? Continue reading down here.
How does it work?
Of course is as simple as it should be. Clone the repo (is a simple PHP website that you can host on any shared hosting*/VPS that you like) and upload it into your preferred hosting. That's it. If you point your web browser to that address the App is already working.
After, you have to upload all your build to the _builds/ folder, and you're done.
The two already working calls /api and /api/v1/build/get_delta should answer correctly the updater app to make it work (remember that visiting it as a browser is not sufficent).
How to integrate it with my ROM?
You have two options:
- Declare cm.updater.uri on your own build.prop file with the value of you own server URL where you have deployed it (This can be done also by the user with any Android App from the Market)
- Replace the string conf_update_server_url_def value inside values.xml of the OTA App source code (COMPILE TIME ONLY!)
Which builds does it support?
Anything that will be borned by the official guide on how to build your custom LineageOS ROM! So, in poor words will be: stable, rcs, nightly and snapshots (likely called EXPERIMENTAL), from CM7 to CM14.
Delta updates SHOULD work too. Just try it and tell me if they works
How can I debug it?
You can use this simple UnitTest that I've already pushed into my GitHub. Feel free to use it everytime you need. It's based upon NodeJS and Unirest.
Is it free?
"Free software is a matter of liberty, not price. To understand the concept, you should think of free as in free speech, not as in free beer."
—Richard Stallman
Click to expand...
Click to collapse
Use it as you want, do anything you want with it as it's MIT licensed.
Is it free of bugs?
That's why I'm here Only you can help me to squash all the remaining bugs!
I hope this will be useful to anyone of you, helping the ROM community providing a simple OTA updater that already works on LineageOS official ROMs.
Greets.
---
Project Home: https://github.com/julianxhokaxhiu/LineageOTA
More about the study: http://blog.julianxhokaxhiu.com/how-the-cm-ota-server-works-and-how-to-implement-and-use-ours
Changelog Build Scripts ( thanks to @Deltadroid ): https://github.com/syphyr/cm_build_scripts/blob/master/make_changelog
* On a Shared Hosting you can ONLY provide a FULL ROM download, NOT DELTAs!
---
Donators:
- @BlueFlame4 x2
Hey, I'm having trouble using your docker image behind a Nginx https reverse proxy. The server is correctly answering the requests:
Code:
{
"id":null,
"response":[
{
"incremental":"",
"api_level":"",
"url":"http:\/\/MYDOMAIN\/\/builds\/full\/lineage-17.1-20200830-UNOFFICIAL-lavender.zip",
"timestamp":1598774045,
"md5sum":"718fb89f935b979edd57b2642234d1fa",
"changes":"",
"channel":"unofficial",
"filename":"lineage-17.1-20200830-UNOFFICIAL-lavender.zip",
"romtype":"unofficial",
"datetime":1598774045,
"version":"17.1",
"id":"50533a894b2ab0d9b2711444ca4f2b530a8ff2389723ea2bd7ada6e029599e2c",
"size":914450521
}
],
"error":null
}
But the returned `url` is http-only and the updater can't download it (throws error). WhenI try to curl it without `-L` I only get `301 Moved Permanently`. Only when I append `-L` I get the correct binary response over https. I'm pretty sure this is a redirecting issue.
Here's my Nginx config:
Code:
server{
server_name MYDOMAIN;
server_tokens off;
listen 80;
listen [::]:80 ipv6only=on;
# Redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
return 301 https://$host$request_uri;
}
server {
server_name MYDOMAIN;
server_tokens off;
listen 443 ssl http2;
listen [::]:443 ssl http2 ipv6only=on;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:24087;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload";
add_header Referrer-Policy same-origin;
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options DENY;
add_header X-Xss-Protection "1; mode=block";
[...]
Any idea what I'm doing wrong?
Basically I want to know how to force the `url` response in the JSON to be `https` instead of `http`. (At least that's what I think is the reason for the updater not being able to download the image.)
Code:
08-30 16:00:19.407 7025 7025 D UpdaterController: Starting 50533a894b2ab0d9b2711444ca4f2b530a8ff2389723ea2bd7ada6e029599e2c
08-30 16:00:19.409 7025 7921 E HttpURLConnectionClient: Error downloading file
08-30 16:00:19.409 7025 7921 E HttpURLConnectionClient: java.io.IOException: Cleartext HTTP traffic to MYDOMAIN not permitted
08-30 16:00:19.409 7025 7921 E HttpURLConnectionClient: at com.android.okhttp.HttpHandler$CleartextURLFilter.checkURLPermitted(HttpHandler.java:124)
08-30 16:00:19.409 7025 7921 E HttpURLConnectionClient: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:462)
08-30 16:00:19.409 7025 7921 E HttpURLConnectionClient: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:131)
08-30 16:00:19.409 7025 7921 E HttpURLConnectionClient: at org.lineageos.updater.download.HttpURLConnectionClient$DownloadThread.run(HttpURLConnectionClient.java:250)
08-30 16:00:19.409 7025 7921 E UpdaterController: Download failed
EDIT: Solved!
Code:
location / {
proxy_pass http://127.0.0.1:24087;
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
#proxy_set_header Host $host;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-NginX-Proxy true;
}
Not sure if this project is still supported, but with build.prop change, it just checks for updates forever on phone. When I try debugging with the UnitTest script, I get "Not Found The requested URL /CyanogenModOTA/api was not found on this server." (definitely server-related) I've gotten this working before on another VPS, so I'm wondering why it's not on my build server.
Are there any specific packages I need to install to get this working?
Here is my php config: http://hongbuild.ddns.net:81/test.php
klvnhng said:
Not sure if this project is still supported, but with build.prop change, it just checks for updates forever on phone. When I try debugging with the UnitTest script, I get "Not Found The requested URL /CyanogenModOTA/api was not found on this server." (definitely server-related) I've gotten this working before on another VPS, so I'm wondering why it's not on my build server.
Are there any specific packages I need to install to get this working?
Here is my php config: http://hongbuild.ddns.net:81/test.php
Click to expand...
Click to collapse
Since build.prop is in the system.new.dat file in lollipop builds, I just started copying it over from my build server and modified the Build.php file to look for the file instead of inside the zip. I just got this working on my web server. Only issue I'm having is related to change logs but I'm going to try and figure that one out later.
Here are the changes I did to get this working with CyanogenMod 12 (all changes will be assumed from the CyanogenModOTA directory):
- mkdir -p builds/buildprop <-- this is where you copy your build.prop from each build (they go in a folder with the same name as the build zip e.x. cm-12-20150103-NIGHTLY)
- mkdir -p builds/changelog <-- this will have your change logs (name them the same as the build zip except with a .txt extension)
- update setConfig( 'basePath', 'CyanogenModOTA' ) to setConfig( 'basePath', 'http://wfhome.net/CyanogenModOTA' ) in index.php (that is my server)
- change the Build constructor function to this (I updated the preg_match_all line, added the buildPropFolder variable, updated the $this->buildProp line, and changed the changeLogUrl line):
Code:
private $buildPropFolder = '';
public function __construct($fileName, $physicalPath) {
/*
$tokens Schema:
array(
1 => [CM VERSION] (ex. 10.1.x, 10.2, 11, etc.)
2 => [DATE OF BUILD] (ex. 20140130)
3 => [CHANNEL OF THE BUILD] (ex. RC, RC2, NIGHTLY, etc.)
4 => [MODEL] (ex. i9100, i9300, etc.)
)
*/
preg_match_all( '/cm-([0-9\.]+-)(\d+-)?([a-zA-Z0-9]+-)?([a-zA-Z0-9]+).zip/', $fileName, $tokens );
$tokens = $this->removeTrailingDashes( $tokens );
$this->filePath = $physicalPath . '/' . $fileName;
$this->buildPropFolder = str_replace('/full', '/buildprop', $physicalPath) . '/' . preg_replace('/\\.[^.\\s]{3,4}$/', '', $fileName);
$this->buildProp = explode( "\n", file_get_contents($this->buildPropFolder . '/build.prop') );
$this->channel = $this->_getChannel( str_replace( range( 0 , 9 ), '', $tokens[3] ) );
$this->filename = $fileName;
$this->url = $this->_getUrl( '', Flight::cfg()->get('buildsPath') );
$this->changelogUrl = str_replace('/full', '/changelog', $this->_getChangelogUrl());
$this->timestamp = filemtime( $this->filePath );
$this->incremental = $this->getBuildPropValue( 'ro.build.version.incremental' );
$this->apiLevel = $this->getBuildPropValue( 'ro.build.version.sdk' );
$this->model = $this->getBuildPropValue( 'ro.cm.device' );
}
Also he has memcached setup in there, so you might make sure you have memcache installed and set to run on startup on your server. You also need xdelta3 to create delta builds although, I don't think it is working ( I compiled the latest version of xdelta3 and it doesn't appear to do anything as there are not any files being created in the delta folder).
Hope that helps.
Thanks for the help (I'll definitely need it when I actually want to start USING the server), but it seems you've misunderstood me. Right now, I can't even get the rest server running properly-that's why I'm getting a 404 error.
Notice you get an output when you go to http://wfhome.net/CyanogenModOTA/api, I don't get anything!
klvnhng said:
Thanks for the help (I'll definitely need it when I actually want to start USING the server), but it seems you've misunderstood me. Right now, I can't even get the rest server running properly-that's why I'm getting a 404 error.
Notice you get an output when you go to http://wfhome.net/CyanogenModOTA/api, I don't get anything!
Click to expand...
Click to collapse
Ah sorry. First thing I see is that you need mod_rewrite installed in apache.
Code:
sudo a2enmod rewrite
sudo service apache2 restart
Need help with development
First I would like to thank you for using this product and playing with it (which involves patching, testing, etc.).
Since the first post I've made here in XDA the project evolved a little since I rewrote entirely the project to make it composer friendly. Rather than that, the Delta build process is actually non working (I tried to create a ZIP but I don't have enough knowledge in ROM development to tell if it's enough or not) so it's just a WIP layer that should be addressed and fixed (I've already found a Python project which does this already but I'm of the idea that this should be somehow not be a bloated software that needs to install binaries here and there to make it working).
So, actually I'm not really working in this project but It's in my TODO list, meanwhile I'll be very happy to have pull requests with useful patches to make this KK, LL and more compatible So feel free to contribute and thanks again for using it!
JulianXhokaxhiu said:
First I would like to thank you for using this product and playing with it (which involves patching, testing, etc.).
Since the first post I've made here in XDA the project evolved a little since I rewrote entirely the project to make it composer friendly. Rather than that, the Delta build process is actually non working (I tried to create a ZIP but I don't have enough knowledge in ROM development to tell if it's enough or not) so it's just a WIP layer that should be addressed and fixed (I've already found a Python project which does this already but I'm of the idea that this should be somehow not be a bloated software that needs to install binaries here and there to make it working).
So, actually I'm not really working in this project but It's in my TODO list, meanwhile I'll be very happy to have pull requests with useful patches to make this KK, LL and more compatible So feel free to contribute and thanks again for using it!
Click to expand...
Click to collapse
Thank YOU for making it! Really appreciate the time and effort you've put into this project.
rjwil1086 said:
Ah sorry. First thing I see is that you need mod_rewrite installed in apache.
Code:
sudo a2enmod rewrite
sudo service apache2 restart
Click to expand...
Click to collapse
That did it, thanks :good:
I've also implemented your changes, but when I check for updates on my phone, I still get "No new updates found". I've copied my new build over to builds/full, and the build.prop to builds/buildprop/cm*
rjwil1086 thank you very much for your help and suggestions, I made my own server http://paksman.ddns.net/cyanogenmodota, edited build.prop for cm updater to look for server url, made all the changes as you but I always get "No new updates found". Not sure if there is a problem with my server or with this project in general. Have you made any success to make this work?
I have it working. I'll upload mine to github tonight
Think I solved my own problem. My builds were all tagged as 'UNOFFICIAL'. When I changed this to 'NIGHTLY' (for the build and build.prop folder respectively ) they finally started to be recognised by cm updater app. JulianXhokaxhiu and rjwil1086, thank you so much for your effort,your work is being much appreciated.
Packsman said:
Think I solved my own problem. My builds were all tagged as 'UNOFFICIAL'. When I changed this to 'NIGHTLY' (for the build and build.prop folder respectively ) they finally started to be recognised by cm updater app. JulianXhokaxhiu and rjwil1086, thank you so much for your effort,your work is being much appreciated.
Click to expand...
Click to collapse
Yup. Sorry. I knew that but forgot to mention it. That's an issue with the CMUpdater app more than it is with the REST implementation. It doesn't look for unofficial files
Packsman said:
Think I solved my own problem. My builds were all tagged as 'UNOFFICIAL'. When I changed this to 'NIGHTLY' (for the build and build.prop folder respectively ) they finally started to be recognised by cm updater app. JulianXhokaxhiu and rjwil1086, thank you so much for your effort,your work is being much appreciated.
Click to expand...
Click to collapse
Awesome! This fixed it for me as well. Thanks to everyone for the help
[CyanogenMod][OTA][PHP] Open Source REST Server for you
Hi, I have been tested server code with a free host (000webhost) then accessed the web, I received messages:
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /home/a5885282/public_html/index.php on line 27
Parse error: syntax error, unexpected T_STRING, expecting T_CONSTANT_ENCAPSED_STRING or '(' in /home/a5885282/public_html/index.php on line 27
The line 27 of index.php is "use \JX\CmOta\CmOta;". But I don't know about PHP. Please help me solve this issue.
@rjwil1086 , @klvnhng , @Packsman please help me to solve following error:
$ node index.js
<h1>500 Internal Server Error</h1><h3>Undefined offset: 0 (8)</h3><pre>#0 /var/www/CyanogenModOTA/src/Helpers/Build.php(214): flight\Engine->handleError(8, 'Undefined offse...', '/var/www/Cyanog...', 214, Array)
#1 /var/www/CyanogenModOTA/src/Helpers/Build.php(63): JX\CmOta\Helpers\Build->removeTrailingDashes(Array)
#2 /var/www/CyanogenModOTA/src/Helpers/Builds.php(115): JX\CmOta\Helpers\Build->__construct('cm-11-20140103-...', '/var/www/Cyanog...')
#3 /var/www/CyanogenModOTA/src/Helpers/Builds.php(49): JX\CmOta\Helpers\Builds->getBuilds()
#4 /var/www/CyanogenModOTA/vendor/mikecao/flight/flight/core/Loader.php(123): JX\CmOta\Helpers\Builds->__construct()
#5 /var/www/CyanogenModOTA/vendor/mikecao/flight/flight/core/Loader.php(80): flight\core\Loader->newInstance('\JX\CmOta\Helpe...', Array)
#6 /var/www/CyanogenModOTA/vendor/mikecao/flight/flight/Engine.php(69): flight\core\Loader->load('builds', true)
#7 /var/www/CyanogenModOTA/vendor/mikecao/flight/flight/core/Dispatcher.php(191): flight\Engine->__call('builds', Array)
#8 /var/www/CyanogenModOTA/vendor/mikecao/flight/flight/core/Dispatcher.php(191): flight\Engine->builds()
#9 /var/www/CyanogenModOTA/vendor/mikecao/flight/flight/Flight.php(43): flight\core\Dispatcher::invokeMethod(Array, Array)
#10 /var/www/CyanogenModOTA/src/CmOta.php(97): Flight::__callStatic('builds', Array)
#11 /var/www/CyanogenModOTA/src/CmOta.php(97): Flight::builds()
#12 /var/www/CyanogenModOTA/vendor/mikecao/flight/flight/core/Dispatcher.php(160): JX\CmOta\{closure}()
#13 /var/www/CyanogenModOTA/vendor/mikecao/flight/flight/core/Dispatcher.php(143): flight\core\Dispatcher::callFunction(Object(Closure), Array)
#14 /var/www/CyanogenModOTA/vendor/mikecao/flight/flight/Engine.php(310): flight\core\Dispatcher::execute(Object(Closure), Array)
#15 /var/www/CyanogenModOTA/vendor/mikecao/flight/flight/core/Dispatcher.php(191): flight\Engine->_start()
#16 /var/www/CyanogenModOTA/vendor/mikecao/flight/flight/core/Dispatcher.php(142): flight\core\Dispatcher::invokeMethod(Array, Array)
#17 /var/www/CyanogenModOTA/vendor/mikecao/flight/flight/core/Dispatcher.php(48): flight\core\Dispatcher::execute(Array, Array)
#18 /var/www/CyanogenModOTA/vendor/mikecao/flight/flight/Engine.php(64): flight\core\Dispatcher->run('start', Array)
#19 /var/www/CyanogenModOTA/vendor/mikecao/flight/flight/core/Dispatcher.php(191): flight\Engine->__call('start', Array)
#20 /var/www/CyanogenModOTA/vendor/mikecao/flight/flight/core/Dispatcher.php(191): flight\Engine->start()
#21 /var/www/CyanogenModOTA/vendor/mikecao/flight/flight/Flight.php(43): flight\core\Dispatcher::invokeMethod(Array, Array)
#22 /var/www/CyanogenModOTA/src/CmOta.php(80): Flight::__callStatic('start', Array)
#23 /var/www/CyanogenModOTA/src/CmOta.php(80): Flight::start()
#24 /var/www/CyanogenModOTA/index.php(35): JX\CmOta\CmOta->run()
#25 {main}</pre>
Thank you so much.
Thanks all, I fixed.
[CyanogenMod][OTA][PHP] Open Source REST Server for you
I have just creat susscess a server. Thanks.
But, now I want creat a update OTA app for other AOSP ( andoird L) and using that server which I have just creat.
Can I using CMupdater for it? Can you give me some suggest?
Hi, need help to understand!
First of all, i want to say Thank You! For this great job!
I installed server, activated mod rewrite in apache2, apt-get install memcached, made chown for all files to www-data in CyanogenModOTA directory
created directories builds/buildprop, builds/changelog
created file romname.txt in changelog
copied file rom archive to build/full directory
and when i open in browser my ota site: http ota.mydomain.com i see the dir listing as described above
when i try to open url http ota.mydomain.com/api - i see the 404 error.
what exactly i have to do as the next step?
is any json file missed in web root directory (in same place as index.php) ?
and I leave index.php almost unchanged (as in the repository) - just changed string: ->setConfig( 'basePath', '/' )
Thank You once again!
vvzar said:
First of all, i want to say Thank You! For this great job!
I installed server, activated mod rewrite in apache2, apt-get install memcached, made chown for all files to www-data in CyanogenModOTA directory
created directories builds/buildprop, builds/changelog
created file romname.txt in changelog
copied file rom archive to build/full directory
and when i open in browser my ota site: http ota.mydomain.com i see the dir listing as described above
when i try to open url http ota.mydomain.com/api - i see the 404 error.
what exactly i have to do as the next step?
is any json file missed in web root directory (in same place as index.php) ?
and I leave index.php almost unchanged (as in the repository) - just changed string: ->setConfig( 'basePath', '/' )
Thank You once again!
Click to expand...
Click to collapse
Are you sure that modrewrite is working? Can you share a working URL?
lingak said:
I have just creat susscess a server. Thanks.
But, now I want creat a update OTA app for other AOSP ( andoird L) and using that server which I have just creat.
Can I using CMupdater for it? Can you give me some suggest?
Click to expand...
Click to collapse
Honestly I don't know, we have to check if OTA app is the same in Lollipop and works of course the same. If so, we're already safe and yes it can work out of the box. If not, we have to fix it. If you already have a working example, feel free to do a pull request
JulianXhokaxhiu said:
Are you sure that modrewrite is working? Can you share a working URL?
[email protected]:/home/user# a2enmod rewrite
Module rewrite already enabled
[email protected]:/home/user#
.htaccess:
[email protected]:/home/user# cat /var/www/html/CyanogenModOTA/.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]
[email protected]:/home/user#
Is any other rules i have to check?
What about statement <Directory /var/www/html/CyanogenModOTA> ?
Is enouph AllowOverride All and Allow from all ?
test url : http ota.smylink.org
Click to expand...
Click to collapse
vvzar said:
JulianXhokaxhiu said:
Are you sure that modrewrite is working? Can you share a working URL?
[email protected]:/home/user# a2enmod rewrite
Module rewrite already enabled
[email protected]:/home/user#
.htaccess:
[email protected]:/home/user# cat /var/www/html/CyanogenModOTA/.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]
[email protected]:/home/user#
Is any other rules i have to check?
What about statement <Directory /var/www/html/CyanogenModOTA> ?
Is enouph AllowOverride All and Allow from all ?
test url : http ota.smylink.org
Click to expand...
Click to collapse
Technically it should be enough but the order of where you placed it is important too.
Anyway, going to your URL is just making me think that the PHP code is running well (the redirect to builds folder is triggered by CMOTA Rest Code). You're just missing the htaccess rules.
I'm quite sure you just have to figure out your own server setup to understand if mod_rewrite is properly working (allowing htaccess files to be read and parsed).
Click to expand...
Click to collapse

[Q] How to turn off phone in my own ROM

I am basing my ROM on the Qualcomm's MSM8974 device. My device does not have a phone radio, but Android claims there is one. So it has Phone app, and Data Usage in setting, and Tethering options.
How do I disable this at build time? Is it a system.prop or a build variable? Maybe Qualcomm turned it on by default, and I have to delete some line? Anyone have a hint?
Consider removing phone app and editing (decompiling) settings.apk to remove the phone, data usage and thetering sections by editing the setings.xml.
dxppxd said:
Consider removing phone app and editing (decompiling) settings.apk to remove the phone, data usage and thetering sections by editing the setings.xml.
Click to expand...
Click to collapse
I could do that, but that would be a very brute force method, and I don't think its right.
For instance, if I build for the nexus 7, the system image actually has the Phone.apk on it, but after it boots, it disables the Phone app
Solved
SOLVED
There is an XML file:
./frameworks/base/core/res/res/values/config.xml
That devices generally override with the device/.../overlay directory. In this file is this string array. It is a coded array. The first value of the string is the type, such as ConnectivityManager.TYPE_MOBILE, and the second is 0 or 1 for false/true for Simultanaity.
<string-array translatable="false" name="radioAttributes">
<item>"1,1"</item>
<item>"7,1"</item>
</string-array>

Categories

Resources