FP1: Macadamia 1.9.9-pre3 Alpha (Android Kitkat)

But it was different before the update;)
I like it the other way because of security.

I know, it was definitely a bug! :wink:

Hello, I’ve installed Macadamia 1.9.9-pre3 Alpha on my FP1 second batch about one month ago, directly upgrading from Kola Nut.
I’ve been using it as my everyday phone since then so, from my point of view, I consider it almost “production ready”. Some small things I noticed:

  • proximity sensor: as already described in FP1: Macadamia 1.9.9-pre3 Alpha sometimes I seem to hang up calls with my face touching the screen. I installed the SatStat app and checked the proximity sensor seems to work fine (value = 1 when nothing is near, value = 0 when my hand is near or touching the screen).

  • the reminder that my second sim-slot is empty after power-on (not really a bug)

  • If I go back from flightmode, the SIM card is automaticly unlocked without typing the PIN-Code (already seen in this forum)

  • After booting the phone I always get a message box saying “System process not responding” Wait/Cancel? (the actual message is in italian, the translation might not be exactly the english version of the message). Clicking on “Wait” or “Cancel” apparently doesn’t change anything: the message box disappears anyway and the phone then works regularly.

I add my big thank you to the guys at Fairphone for providing this upgrade to FP1: I’ll be glad to contribute with further tests and information reporting as needed.

1 Like

I’ve installed pre3 on my first batch FP1 as a direct upgrade from @chrmhoffmann’s KitKat ROM.

It works good so far, but the first thing I’ve noticed is that the updater crashes immediately:

E/AndroidRuntime( 6573): FATAL EXCEPTION: main
E/AndroidRuntime( 6573): Process: com.fairphone.updater, PID: 6573
E/AndroidRuntime( 6573): java.lang.RuntimeException: Unable to start service com.fairphone.updater.UpdaterService@41c446b8 with Intent { cmp=com.fairphone.updater/.UpdaterService (has extras) }: java.lang.SecurityException: Invalid value for visibility: 2
E/AndroidRuntime( 6573):        at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2885)
E/AndroidRuntime( 6573):        at android.app.ActivityThread.access$2100(ActivityThread.java:151)
E/AndroidRuntime( 6573):        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1418)
E/AndroidRuntime( 6573):        at android.os.Handler.dispatchMessage(Handler.java:110)
E/AndroidRuntime( 6573):        at android.os.Looper.loop(Looper.java:193)
E/AndroidRuntime( 6573):        at android.app.ActivityThread.main(ActivityThread.java:5299)
E/AndroidRuntime( 6573):        at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 6573):        at java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime( 6573):        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:825)
E/AndroidRuntime( 6573):        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:641)
E/AndroidRuntime( 6573):        at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 6573): Caused by: java.lang.SecurityException: Invalid value for visibility: 2
E/AndroidRuntime( 6573):        at android.os.Parcel.readException(Parcel.java:1465)
E/AndroidRuntime( 6573):        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:185)
E/AndroidRuntime( 6573):        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:137)
E/AndroidRuntime( 6573):        at android.content.ContentProviderProxy.insert(ContentProviderNative.java:468)
E/AndroidRuntime( 6573):        at android.content.ContentResolver.insert(ContentResolver.java:1217)
E/AndroidRuntime( 6573):        at android.app.DownloadManager.enqueue(DownloadManager.java:1018)
E/AndroidRuntime( 6573):        at com.fairphone.updater.UpdaterService.startDownloadLatest(UpdaterService.java:255)
E/AndroidRuntime( 6573):        at com.fairphone.updater.UpdaterService.downloadConfigFile(UpdaterService.java:170)
E/AndroidRuntime( 6573):        at com.fairphone.updater.UpdaterService.onStartCommand(UpdaterService.java:112)
E/AndroidRuntime( 6573):        at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2868)
E/AndroidRuntime( 6573):        ... 10 more
W/ActivityManager( 1565):   Force finishing activity com.fairphone.updater/.FairphoneUpdater

(Clearing the data of the updater doesn’t solve the problem.)

The design of the boot animation and layout looks great!

Just as a note: This happens with Telegram, too.

And it has happened with 4.2.2, too. (At least for me.)

I really like the new bootanimation, but I think the images 403 and on are a bit too bright.
This is mostly only distracting, but in some cases (Hello, broken USB connector!) this might be even dangerous, because in some circumstances the battery will only charge if the phone is mostly booted up.
So any bright screen can hurt.

I’ve simply made all images a bit more dark.

script for use in GIMP (extract the bootanimation.zip to a folder called "bootanimation"):
# to be pasted in the GIMP console
# GIMP is to be run from "."

import os

def load(name):
        return pdb.file_png_load(name, name)

def save(image, name):
        pdb.file_png_save_defaults(image, image.active_layer, name, name)

def main_func(arg, dirname, fnames):
       assert arg is None
       if dirname == "bootanimation":
               return
       for file in fnames:
                # number = int(file.split(".")[0])
                complete_filename = os.path.join(dirname, file)
                image = load(complete_filename)
                pdb.gimp_brightness_contrast(image.active_layer, -50, 0)
                save(image, complete_filename)

# bottom
os.path.walk("bootanimation", main_func, None)

The resulting bootanimation.zip. (You can put this in /data/local/ and it will survive ROM updates!)

The differences:

before after

Disclaimer: I have just tested this in an emulator. But it shouldn’t brick anything. If it doesn’t work, just connect your phone to a PC, delete the file (via adb) and reboot.

(cc: @vhanniet)

edit: A note if you want to create your own: Be sure that you don’t compress the zip file. (I did that mistake first.)

edit 2: The weird thing is that it works fine when I run bootanimation by hand, but not on startup…

3 Likes

A darker boot animation is a great idea. I never update the OS in the evening because I hate rebooting when it’s dark.

@YtvwlD I guess this boot animation will work with the FP2 too right? Could you share it here too:

I hate (re)booting the phone in the morning when it’s dark. :slight_smile:

I think, it’ll work with the FP 2, too. But if the screen resolution is different, it might look weird.

I could apply my script to the FP 2 bootanimation.

edit: No, they’re the same.

edit 2: link

1 Like

Has anybody tried ART, yet?

I’d like to, but I can’t make nandroid backups because my phone is encrypted.

Doesn’t work (when I reboot it’s still in Dalvik mode). It seems that it is not included in the build…

1 Like

What is the status of 4.4.4 and the security fixes?

I’ve switched from a ROM that has had fixes up to last June, because that seemed like a long time ago.

Now, there are none.

And the remote code executions (and fixes) are coming.

1 Like

I’ve read a bit through the logs and several components are a bit too noisy. This is nothing new in this build, but perhaps it can still be fixed.

W/InputReader( 1592): inCount:16, pointer count:1

This occurs on every touch. And it is not a warning.

E/CellLocation(15771): create GsmCellLocation

This occurs regularly. And I don’t think this is an error.

But there are things that look like errors:

W/AppsProvider.ApplicationsProvider( 4496): Could not fetch usage stats
W/AppsProvider.ApplicationsProvider( 4496): java.lang.SecurityException: Neither user 10008 nor current process has android.permission.PACKAGE_USAGE_STATS.
W/AppsProvider.ApplicationsProvider( 4496):     at android.os.Parcel.readException(Parcel.java:1465)
W/AppsProvider.ApplicationsProvider( 4496):     at android.os.Parcel.readException(Parcel.java:1419)
W/AppsProvider.ApplicationsProvider( 4496):     at com.android.internal.app.IUsageStats$Stub$Proxy.getAllPkgUsageStats(IUsageStats.java:237)
W/AppsProvider.ApplicationsProvider( 4496):     at android.app.ActivityManager.getAllPackageUsageStats(ActivityManager.java:2224)
W/AppsProvider.ApplicationsProvider( 4496):     at com.android.providers.applications.ApplicationsProvider.fetchUsageStats(ApplicationsProvider.java:714)
W/AppsProvider.ApplicationsProvider( 4496):     at com.android.providers.applications.ApplicationsProvider.updateApplicationsList(ApplicationsProvider.java:548)
W/AppsProvider.ApplicationsProvider( 4496):     at com.android.providers.applications.ApplicationsProvider.access$400(ApplicationsProvider.java:72)
W/AppsProvider.ApplicationsProvider( 4496):     at com.android.providers.applications.ApplicationsProvider$UpdateHandler.handleMessage(ApplicationsProvider.java:227)
W/AppsProvider.ApplicationsProvider( 4496):     at android.os.Handler.dispatchMessage(Handler.java:110)
W/AppsProvider.ApplicationsProvider( 4496):     at android.os.Looper.loop(Looper.java:193)
W/AppsProvider.ApplicationsProvider( 4496):     at android.os.HandlerThread.run(HandlerThread.java:61)

and

W/System.err( 1597): java.lang.SecurityException: WifiService: Neither user 10121 nor current process has android.permission.CHANGE_WIFI_STATE.
W/System.err( 1597):    at android.app.ContextImpl.enforce(ContextImpl.java:1780)
W/System.err( 1597):    at android.app.ContextImpl.enforceCallingOrSelfPermission(ContextImpl.java:1809)
W/System.err( 1597):    at com.android.server.wifi.WifiService.enforceChangePermission(WifiService.java:637)
W/System.err( 1597):    at com.android.server.wifi.WifiService.getWifiServiceMessenger(WifiService.java:1291)
W/System.err( 1597):    at android.net.wifi.IWifiManager$Stub.onTransact(IWifiManager.java:424)
W/System.err( 1597):    at android.os.Binder.execTransact(Binder.java:404)
W/System.err( 1597):    at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(Native Method)
W/System.err( 1597):    at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:631)
W/System.err( 1597):    at android.os.Binder.execTransact(Native Method)
W/System.err( 1597):    at dalvik.system.NativeStart.run(Native Method)

and

W/Bundle  ( 1597): Attempt to cast generated internal exception:
W/Bundle  ( 1597): java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
W/Bundle  ( 1597):      at android.os.Bundle.getInt(Bundle.java:1000)
W/Bundle  ( 1597):      at android.os.Bundle.getInt(Bundle.java:982)
W/Bundle  ( 1597):      at com.mediatek.audioprofile.AudioProfileService$AudioProfileHandler.handleMessage(AudioProfileService.java:3395)
W/Bundle  ( 1597):      at android.os.Handler.dispatchMessage(Handler.java:110)
W/Bundle  ( 1597):      at android.os.Looper.loop(Looper.java:193)
W/Bundle  ( 1597):      at com.mediatek.audioprofile.AudioProfileService$OverrideSystemThread.run(AudioProfileService.java:3363)
I/System.out( 2186): [CDS]close[0]
I/RingtoneManager( 1597): Set actual default ringtone uri= content://media/external/audio/media/54612
W/Bundle  ( 1597): Key 8 expected Integer but value was a java.lang.String.  The default value 0 was returned.
W/Bundle  ( 1597): Attempt to cast generated internal exception:
W/Bundle  ( 1597): java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
W/Bundle  ( 1597):      at android.os.Bundle.getInt(Bundle.java:1000)
W/Bundle  ( 1597):      at android.os.Bundle.getInt(Bundle.java:982)
W/Bundle  ( 1597):      at com.mediatek.audioprofile.AudioProfileService$AudioProfileHandler.handleMessage(AudioProfileService.java:3395)
W/Bundle  ( 1597):      at android.os.Handler.dispatchMessage(Handler.java:110)
W/Bundle  ( 1597):      at android.os.Looper.loop(Looper.java:193)
W/Bundle  ( 1597):      at com.mediatek.audioprofile.AudioProfileService$OverrideSystemThread.run(AudioProfileService.java:3363)
I/RingtoneManager( 1597): Set actual default ringtone uri= content://media/internal/audio/media/106
W/Bundle  ( 1597): Key 16 expected Integer but value was a java.lang.String.  The default value 0 was returned.
W/Bundle  ( 1597): Attempt to cast generated internal exception:
W/Bundle  ( 1597): java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
W/Bundle  ( 1597):      at android.os.Bundle.getInt(Bundle.java:1000)
W/Bundle  ( 1597):      at android.os.Bundle.getInt(Bundle.java:982)
W/Bundle  ( 1597):      at com.mediatek.audioprofile.AudioProfileService$AudioProfileHandler.handleMessage(AudioProfileService.java:3395)
W/Bundle  ( 1597):      at android.os.Handler.dispatchMessage(Handler.java:110)
W/Bundle  ( 1597):      at android.os.Looper.loop(Looper.java:193)
W/Bundle  ( 1597):      at com.mediatek.audioprofile.AudioProfileService$OverrideSystemThread.run(AudioProfileService.java:3363)
I/RingtoneManager( 1597): Set actual default ringtone uri= content://media/internal/audio/media/106
W/Bundle  ( 1597): Key 2 expected Integer but value was a java.lang.String.  The default value 0 was returned.
W/Bundle  ( 1597): Attempt to cast generated internal exception:
W/Bundle  ( 1597): java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
W/Bundle  ( 1597):      at android.os.Bundle.getInt(Bundle.java:1000)
W/Bundle  ( 1597):      at android.os.Bundle.getInt(Bundle.java:982)
W/Bundle  ( 1597):      at com.mediatek.audioprofile.AudioProfileService$AudioProfileHandler.handleMessage(AudioProfileService.java:3395)
W/Bundle  ( 1597):      at android.os.Handler.dispatchMessage(Handler.java:110)
W/Bundle  ( 1597):      at android.os.Looper.loop(Looper.java:193)
W/Bundle  ( 1597):      at com.mediatek.audioprofile.AudioProfileService$OverrideSystemThread.run(AudioProfileService.java:3363)
I/RingtoneManager( 1597): Set actual default ringtone uri= content://media/internal/audio/media/74

This doesn’t impair the usage in any way and they have been there before this ROM, but I don’t think having things crash randomly in the background without anyone noticing is the way to go. :slight_smile:

1 Like

I have the exact same problem. My promity sensor only displays those two values and as a result my screen doesn’t go black when I hold my phone to my ear.
My proximity sensor may be a bit broken (because I had my broken USB port repaired), but it worked enough for the last ROM to detect whether my phone is near my ear or not.

The sensor has never put out any other values than 0 and 1. So SatStat is not displaying any distance, but rather covered and not covered

3 Likes

My OS still feels quite slow. Never had issues before the alpha. But now it might take like 3 secs to load the menu for calling. Since no one reported this yet as it seems, i think it is a individual problem here.

My situation is that I have to wait some seconds after pressing the call button until the call actually starts. It was solved when I switched to Kitkat, but it has returned at some later point…

Yeah this occurs here, too.

Another thing that really annoys me is that the notifications seem to be very broken. Some apps don’t seem to show any notification anymore (like twidere for twitter). Others like ebay kleinanzeigen or signal seem to update only when i turn internet off and on again or switch from wifi to mobile internet.
I don’t know if this might have something to do with but i am playing animation throwdown and whenever i switch from 3G to wifi or back it restarts the app and says that the time of the device changed so it has to restart. Could this be connected to my problem above?

It worked for me without having to re-enter the settings (WPA2-Personal and WPA2-Enterprise).

But there are a few problems:

  • Sometimes I loose connection. This is probably a combination of the building I’m in, using 2.4 GHz and the other people who use it, too. This happens with other devices, too.
  • After a few hours of having connection, loosing it, reconnecting and so on, my phone won’t reconnect. It simple stays on mobile (which mostly isn’t available in the building). The wifi settings say “Disconnected.”. I guess that it gives up after a few times loosing connection. I would count being connected for more than 5 minutes as successful.
  • Sometimes when using memory intensive apps (e.g. Firefox), I’m loosing wifi. The connection goes away and there are no available networks listed in settings, only the known ones. This goes away when I disable and re-enable wifi. I guess that wpa_supplicant is killed when the system runs out of memory.

@NeoXtrim are you using Google Services? If push notifications don’t work, it is probably because GCM’s configuration is defunct.

1 Like

Anybody here, who has the Bose Quietcomfort 35 headphones and can test the microphone quality during calls? We are trying to figure out what’s the problem here.