Project

General

Profile

Replicant 6.0 for the Samsung Galaxy S3

Added by Wolfgang Wiedmeyer almost 9 years ago

This post contains outdated information and links to outdated images. See the wiki and blog for development updates, up-to-date documentation and current images!
See the archived post for documentation about my initial work and findings
See this post for the Galaxy S2

Changelog of the latest version (replicant-6.0-beta-0001 from 27.1.17)

  • Added support for external WiFi dongles that use the AR9271 chipset
    Makes it possible to use WiFi with only free software as free firmware exists for the chip
  • January security updates for the kernel

Changelog of the sixth alpha release (replicant-6.0-alpha-0006 from 6.1.17)

Only the most relevant changes are listed.

  • Fixed sending of longer SMS messages
  • Fixed entering the SIM lock PIN
    Previously, if the PIN was entered incorrectly once, every subsequent try failed, even if the PIN was correct.
  • Fixed network operator recognition in countries that have MNC codes with three digits (e.g. U.S., Canada, India)
  • Removed the nonfree unrar tool
  • Synced the source code with the latest changes from CyanogenMod, including security fixes from December 2016 and performance improvements for the Galaxy S3
  • Made it possible to update the F-Droid app itself
  • Added the F-Droid privileged extension
    This makes automatic background updates of apps possible (needs to be enabled in the settings).
  • Fixed camera app freezes by restarting the camera and redoing the snapshot if the shutter button is pressed a second time
  • Made barcode scanning (including QR codes) work
    See Tips section below
  • Reduced the camera preview resolution to speed up the preview a little bit
  • Moved the build system from Debian Jessie to Debian Stretch and fixed various build errors
    This allows to use the manifest merger tool and the Eclipse Java compiler from Debian.
  • Added the possibility to enable llvmpipe as software renderer by making it buildable for ARM
    See the Tips section below
  • Applied various performance improvements and fixes for graphics rendering, mostly from the Android-x86 project
  • Ported various security/privacy enhancements from the CopperheadOS project
    This includes the possibility to set an encryption password that is different from the lock screen pin/password.
    The phone will reboot if the PIN was entered incorrectly more than four times.
    Some privacy enhancements for the browser
  • Added a new wallpaper to the Replicant wallpapers

Tips

Enabling llvmpipe as software renderer

llvmpipe has more complete EGL support than the Android software renderer, so more apps work with it, like Firefox-based browser or more recent webviews. Unfortunately, llvmpipe is still too slow to be the default renderer, but I made it possible to switch back and forth between llvmpipe and the Android software renderer. ADB and root over ADB needs to be enabled in the developer settings.

The following commands are necessary to enable llvmpipe:

adb root
adb remount
adb shell "grep -q "ro.libagl=1" /system/build.prop && sed "s/ro.libagl=1/ro.libagl=0/" -i /system/build.prop || sed "s/ro.libagl=0/ro.libagl=1/" -i /system/build.prop" 

If you want to go back to the Android sofware renderer, you will need to run the above commands again. A reboot is always necessary for the changes to be applied.

Barcode scanning

The mostly used barcode scanner app ZXing has a pretty slow preview. This barcode scanner app from F-Droid has a much faster preview.

Using an external wifi dongle

See this post.

Known issues

  • Some SIM cards are not recognized.
  • The camera "locks" sometimes or the error "Can't connect to camera" is displayed.
    Logs might help debugging this, at least the issue with the error message.
    Recent versions have a fix which allows to take a picture if the camera app seems to be unresponsive and you press the shutter button a second time.
  • The camera preview is slow
    See this mail for more info.
  • Only the Galaxy S2 and S3 are supported.
    If you want to help getting other Replicant devices supported: Add the missing device repositories and try to merge the changes from CyanogenMod. If the device is not supported on the CyanogenMod 13.0 branch, you will have to look at forks that took up the development. Merging with an older branch could also be sufficient to get basic functionality working.
  • Newer webviews can't be used because they don't work with the software rendering
    Webview version 43.0.2357.134 is currently in use. It was released in July 2015. This can be fixed by making llvmpipe fast enough so it can be used as the default software renderer. Currently, the Android software renderer is the default.
  • There are still prebuilt binaries in the source tree
    I got rid of a lot of prebuilt binaries to make the build more trustworthy and to ensure that all tools are properly built from source with free software, but there are still a few left. The gcc-arm-linux-androideabi toolchain needs to be bootstrapped with proper 1st and 2nd stage compilers so it doesn't rely on the sysroot from the NDK. In general, there are still some prebuilt binaries from the NDK, SDK and other places in use, but nearly all of them shouldn't run on the host, but only on the Replicant device.

Build instructions

For now, only Debian Stretch is supported as build system. See this blog post on my personal blog for instructions on how to set up a Debian Stretch build environment in a chroot.

You need to install the following dependencies:

sudo apt-get build-dep gcc binutils llvm-defaults
sudo apt-get install gcc-arm-none-eabi cmake python-dev swig ant bc proguard maven-debian-helper libemma-java libasm4-java libguava-java libnb-platform18-java libnb-org-openide-util-java libandroidsdk-ddmlib-java libmaven-source-plugin-java libfreemarker-java libmaven-javadoc-plugin-java repo ca-cacert curl gawk libgmp3-dev libmpfr-dev libmpc-dev git-core gperf libncurses-dev squashfs-tools pngcrush zip zlib1g-dev lzma libc6-dev-i386 g++-multilib lib32z1-dev lib32readline-dev lib32ncurses5-dev zlib1g-dev:i386 xsltproc python-mako schedtool gradle dirmngr libandroidsdk-sdklib-java eclipse-jdt libgradle-android-plugin-java android-sdk-build-tools android-sdk-platform-23 aapt lzop

All my code is hosted at https://code.fossencdi.org. You can get the source code with the following commands:

repo init -u https://code.fossencdi.org/replicant_manifest.git -b replicant-6.0

If you want to contribute or if you simply want the latest and possibly unstable changes, you can also initialize with the development branch:

repo init -u https://code.fossencdi.org/replicant_manifest.git -b replicant-6.0-dev

Please note that the build might even be broken on this branch and there are no git tags on this branch which pin the source code to certain versions.

Then download the source code:

repo sync

The F-Droid binary is downloaded separately. The download script will check if the signature of the F-Droid binary comes from the F-Droid release signing key. You can retrieve the current signing key with the command gpg --recv-key 7A029E54DD5DCE7A. Run the download script to get F-Droid:

./vendor/replicant/get-prebuilts

Before you can build the ROM in the regular way, you need to run a build script that takes care of building the toolchain:

./vendor/replicant/build-toolchain

In order to prevent strange errors, I recommend running the script in a newly opened shell, in which you haven't already run one of the commands like . build/envsetup.sh, lunch or make that change the environment.

Then you can run the regular build commands to create a Replicant 6.0 zip and recovery:

. build/envsetup.sh
lunch replicant_i9300-userdebug
make -j $(nproc) bacon

I also added a script that signs your build, takes care of generating the necessary keys and puts everything in the out/dist directory. Using this script, it is possible to rely on your own keys and not on the test keys which are not recommended to use because the private test keys are publicly available. Building from source and flashing the default image that is signed with the test keys basically disables all the security measures in Android that are based on signing keys. The script also makes it possible to use password-encrypted private keys. The images below are signed with my keys using this script. You can run the script the following way:

./vendor/replicant/sign-build i9300

And finally you can flash the recovery in the download mode and sideload the zip in recovery mode:

heimdall flash --BOOT out/dist/recovery.img
adb sideload out/dist/replicant-6.0.zip

If you have already built Replicant at some point and now you are getting build errors: Run make clobber and retry in a newly opened shell.
If make fails, it may be necessary that run mka org.cyanogenmod.platform-res.

Compiled images (build date: 18.2.17):

  1. Download the following files:
    https://fossencdi.org/replicant/replicant-6.0-i9300.zip
    https://fossencdi.org/replicant/replicant-6.0-i9300.zip.asc
    https://fossencdi.org/replicant/recovery-i9300.img
    https://fossencdi.org/replicant/recovery-i9300.img.asc
    https://fossencdi.org/replicant/images-i9300.sha256
  2. Add my key to your GPG keyring
    You can retrieve it from the keyserver of your choice (gpg --recv-key 5816A24C10757FC4).
    Alternatively, you can download it from here: https://wiedmeyer.de/keys/ww.asc
    and import it with gpg --armor --import path/to/5816A24C10757FC4.asc
    The key should have the following fingerprint: 0F30 D1A0 2F73 F70A 6FEE 048E 5816 A24C 1075 7FC4
  3. Verify the signatures of the files:
    gpg --armor --verify path/to/replicant-6.0-i9300.zip.asc path/to/replicant-6.0-i9300.zip
    gpg --armor --verify path/to/recovery.img-i9300.asc path/to/recovery-i9300.img
    
  4. Check the checksums (in the folder with all the downloaded files):
     sha256sum -c images-i9300.sha256
    

Only install the images if all of these checks are successful!

You need to flash the new recovery first before you can flash the zip to your device. A full wipe is also necessary. Updating your ADB installation might help if you have problems with ADB.
See the wiki for more details.


Replies (135)

RE: Replicant 6.0, at least for the Samsung Galaxy S3 - Added by robin p almost 9 years ago

Wow, fantastic work Wolfgang. I've noticed the age of replicant 4.2 is causing a few problems (broken/non-compliant webview being the most obvious), so it's excellent to see someone working to liberate a more recent version, particularly for the S3, the device I use. Perhaps Paul et al will assist and release a blessed replicant version 6? Or perhaps you fork and release separately? I can only offer my encouragement, keep it up.

Cheers,

r

RE: Replicant 6.0, at least for the Samsung Galaxy S3 - Added by Paul Kocialkowski almost 9 years ago

Perhaps Paul et al will assist and release a blessed replicant version 6? Or perhaps you fork and release separately? I can only offer my encouragement, keep it up.

Of course, I'm looking forward to integrating this in Replicant!

RE: Replicant 6.0, at least for the Samsung Galaxy S3 - Added by Simon Josefsson almost 9 years ago

I'm having trouble building from your repo, 'repo sync -q' outputs:

jas@replicantbuilder:~/ssd/replicant-6.0$ ../tools/repo sync -q
Fetching projects:  73% (370/506)  fatal: repository 'https://code.fossencdi.org/packages_apps_LockClock.git/' not found
Fetching projects:  85% (431/506)  error: Unable to find 9684271891b21f081d205e2d677a829ba17b5c47 under https://code.fossencdi.org/frameworks_base.git
Cannot obtain needed blob 9684271891b21f081d205e2d677a829ba17b5c47
while processing commit b13a7a07022af4c7332996eefd20d9b8f615f66c.
error: fetch failed.
Fetching projects:  98% (496/506)  error: Unable to find 9684271891b21f081d205e2d677a829ba17b5c47 under https://code.fossencdi.org/frameworks_base.git
Cannot obtain needed blob 9684271891b21f081d205e2d677a829ba17b5c47
while processing commit b13a7a07022af4c7332996eefd20d9b8f615f66c.
error: fetch failed.
fatal: repository 'https://code.fossencdi.org/packages_apps_LockClock.git/' not found
Fetching projects:  99% (501/506)  error: Cannot fetch frameworks_base.git
error: Cannot fetch packages_apps_LockClock.git

Ideas? Thanks!

RE: Replicant 6.0, at least for the Samsung Galaxy S3 - Added by Wolfgang Wiedmeyer almost 9 years ago

I forgot to update my cgit server config for the LockClock app. That part should work now. Could you try again?
I hopefully also fixed the error with the missing object in the frameworks_base repo. I cannot test this right now because I am on a very slow internet connection and a full clone takes forever, but cloning the repo locally on the server works without error.

RE: Replicant 6.0, at least for the Samsung Galaxy S3 - Added by Simon Josefsson almost 9 years ago

Thanks for fixing lockClock. I now only get the frameworks_base error:

jas@replicantbuilder:~/ssd/replicant-6.0$ ../tools/repo sync -q
Fetching projects:  92% (467/507)  error: Unable to find 9684271891b21f081d205e2d677a829ba17b5c47 under https://code.fossencdi.org/frameworks_base.git
Cannot obtain needed blob 9684271891b21f081d205e2d677a829ba17b5c47
while processing commit b13a7a07022af4c7332996eefd20d9b8f615f66c.
error: fetch failed.
Fetching projects:  99% (502/507)  error: Unable to find 9684271891b21f081d205e2d677a829ba17b5c47 under https://code.fossencdi.org/frameworks_base.git
Cannot obtain needed blob 9684271891b21f081d205e2d677a829ba17b5c47
while processing commit b13a7a07022af4c7332996eefd20d9b8f615f66c.
error: fetch failed.

/Simon

RE: Replicant 6.0, at least for the Samsung Galaxy S3 - Added by Wolfgang Wiedmeyer almost 9 years ago

Did a bit more investigation. The server repo is not corrupted. This happens if the connection is interrupted once during a full clone and git is not able to recover from this. I also got this error when I tried it the first time and I also noticed that my connection was reset during the clone. I removed the repo with rm -rf .repo/project-objects/frameworks_base.git.git and did a repo sync frameworks/base again. Then it worked.

RE: Replicant 6.0, at least for the Samsung Galaxy S3 - Added by Simon Josefsson almost 9 years ago

Thank you, now 'repo sync' works fine. I'm now attempting a build. I'm getting some build failures, will post output once a single-processor 'make bacon' finishes...

RE: Replicant 6.0, at least for the Samsung Galaxy S3 - Added by Wolfgang Wiedmeyer almost 9 years ago

qwertyuiop qwertyuiop wrote:

Do you happen to know if Cyanogenmod has the Samsung backdoor fixed in the 13 or 12 versions? They ignored it in earlier releases. It's nice that they use the free drivers from Replicant now though.

Cyanogenmod will not be able to fix the backdoor as long as they choose to use the proprietary software for communicating with the modem. This is actually a perfect example of the superiority of free software over non-free software. Samsung never acknowledged the issue so it is very unlikely that they will provide updated binary blobs. So the users of Cyanogenmod or any other Android ROM that uses these blobs will have to live with this backdoor forever on the affected devices. In contrast, Replicant provides the source code of the radio interface and it will always be possible to fix security issues as long as the issues can be fixed in software.

But Paul can elaborate on this much more as he investigated and disclosed the issue.

RE: Replicant 6.0, at least for the Samsung Galaxy S3 - Added by Simon Josefsson almost 9 years ago

New build failures:

Building with Jack: /home/jas/ssd/replicant-6.0/out/target/common/obj/APPS/SystemUI_intermediates/with-local/classes.dex
Launching background server java -Dfile.encoding=UTF-8 -Xms2560m -XX:+TieredCompilation -jar /home/jas/ssd/replicant-6.0/out/host/linux-x86/framework/jack-launcher.jar -cp /home/jas/ssd/replicant-6.0/out/host/linux-x86/framework/jack.jar com.android.jack.server.JackSimpleServer
ERROR: /home/jas/ssd/replicant-6.0/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java:1185: The type new KeyguardExternalView.KeyguardExternalViewCallbacks(){} must implement the inherited abstract method KeyguardExternalView.KeyguardExternalViewCallbacks.requestDismissAndStartActivity(Intent)
ERROR: /home/jas/ssd/replicant-6.0/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java:1185: The type new KeyguardExternalView.KeyguardExternalViewCallbacks(){} must implement the inherited abstract method KeyguardExternalView.KeyguardExternalViewCallbacks.requestDismiss()
ERROR: /home/jas/ssd/replicant-6.0/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java:1187: The method dismiss() of type new KeyguardExternalView.KeyguardExternalViewCallbacks(){} must override or implement a supertype method
ERROR: /home/jas/ssd/replicant-6.0/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java:1195: The method dismissAndStartActivity(Intent) of type new KeyguardExternalView.KeyguardExternalViewCallbacks(){} must override or implement a supertype method
build/core/java.mk:643: recipe for target '/home/jas/ssd/replicant-6.0/out/target/common/obj/APPS/SystemUI_intermediates/with-local/classes.dex' failed
make: *** [/home/jas/ssd/replicant-6.0/out/target/common/obj/APPS/SystemUI_intermediates/with-local/classes.dex] Error 41

Any ideas?

I'm on a clean VM Debian 8 Jessie amd64 host, following replicant wiki build instructions (i.e., OpenJDK 7).

RE: Replicant 6.0, at least for the Samsung Galaxy S3 - Added by Paul Kocialkowski almost 9 years ago

Wolfgang Wiedmeyer wrote:

Cyanogenmod will not be able to fix the backdoor as long as they choose to use the proprietary software for communicating with the modem. This is actually a perfect example of the superiority of free software over non-free software. Samsung never acknowledged the issue so it is very unlikely that they will provide updated binary blobs. So the users of Cyanogenmod or any other Android ROM that uses these blobs will have to live with this backdoor forever on the affected devices. In contrast, Replicant provides the source code of the radio interface and it will always be possible to fix security issues as long as the issues can be fixed in software.

But Paul can elaborate on this much more as he investigated and disclosed the issue.

Well in that case, there are a couple things they could do. Blocking these RFS messages in the kernel is one, properly sandboxing the RIL or enforcing access rights to only allow that software to access what it needs to are other.

There is a ticket open about it at: https://jira.cyanogenmod.org/browse/CYAN-3700

Replicant 6.0 build-process and testing-images for the i9300 - Added by My Self almost 9 years ago

First of all, sorry for my late involvement and for the big post, this will become...

To be honest, I really freaked out about this news! @Wolfgang: Thanks a lot for saving me from some (more) sleepless nights about Replicant's security situation.
I bought an used I9300 as fast as I could and since this has arrived, I tried to figure out some basics:

build the sources

I had to spend some hours to get the build process to work on my new (Arch based) operating system, I switched to a few days before.
I don't know if this works this way for Parabola, too - but I hope it's a benefit for somebody to read how a regular user (which I am) brought this to fly, exactly.

I had the 'packages_apps_LockClock.git not found' error, too. @Wolfgang: Thanks for fixing this.
I also had the 'frameworks_base.git cannot obtain needed blob' error. I don't know, I tried it several times in a row, (round about seven or eight times) before I switched my VPN-connection to an European one, (as you expect, I came from an non-Eurepean country before). After that I was able to fetch everything without errors -> really strange...
For the sake of completeness, I ignores the notices: 'curl: (22) The requested URL returned error: 404 Not Found' and 'Server does not provide clone.bundle; ignoring.' on fetching the sources.

  • Aditionally you need to install the following AUR packages:
    libtinfo
    ncurses5-compat-libs
    lib32-ncurses5-compat-libs
    
  • If you got the error 'ERROR: One or more PGP signatures could not be verified!' here, just import the correct key first:
    gpg --keyserver pgp.mit.edu --recv-keys C52048C0C0748FEE227D47A2702353E0F7E48EDB
    
    (Source: https://aur.archlinux.org/packages/ncurses5-compat-libs/)
  • If you need more dependencies, you could find out by using one of the following commands inside your replicant-6.0 repo:
    ldd prebuilts/clang/linux-x86/host/3.6/bin/clang
    readelf -d prebuilts/clang/linux-x86/host/3.6/bin/clang | grep NEEDED
    
  • By the way, you can safely ignore the following dependencies:
    linux-vdso.so.1
    ld-linux-x86-64.so.2
    
    (Source: http://www.trilithium.com/johan/2005/08/linux-gate/)
  • The python 3 support is still experimental, so I used the latest python2 by linking it as follows:
    sudo ln -s /usr/bin/python2.7 /usr/local/bin/python
    
  • I also had to set Java 7 as default, (because Java 8 was shipped with my distribution already):
    sudo archlinux-java set java-7-openjdk
    
  • Now I fetched the sources as follows:
    mkdir tools
    cd tools
    wget http://commondatastorage.googleapis.com/git-repo-downloads/repo
    chmod a+x repo
    cd ../
    mkdir replicant-6.0
    cd replicant-6.0
    ../tools/repo init -u https://code.fossencdi.org/replicant_manifest.git -b replicant-6.0
    ../tools/repo sync
    

If you want to check the GPG signature of F-Droid apps, which are listed in- and will be fetched by executing:

vendor/replicant/get-prebuilts
You should have added the public key from F-Droid before:
gpg --keyserver pgp.mit.edu --recv-keys 0x41E7044E1DBA2E89
Source: https://f-droid.org/wiki/page/Release_Channels_and_Signing_Keys

If you like to modify the /system/app apps to use them after building / flashing your ROM without copying them around, just touch the two files vendor/replicant/config/common.mk and vendor/replicant/get-prebuilts. If you need an example, I made a patch for my personal use which could show what I mean. The patch is attached to this post as get-prebuilds-adding-Superuser.patch.

  • Then I started the build process:
    source build/envsetup.sh
    lunch replicant_i9300-userdebug
    export ANDROID_JAVA_HOME=$JAVA_HOME
    
  • If you get this 'flex-2.5.39: loadlocale.c:131: _nl_intern_locale_data: Assertion `cnt < (sizeof (_nl_value_type_LC_COLLATE) / sizeof (_nl_value_type_LC_COLLATE0)) failed.' or other flex related errors:
    This link helped me: https://bbs.archlinux.org/viewtopic.php?pid=1560042#p1560042
    You could get the pre-recompiled flex binary from the link, replace it and make it executable:
    chmod +x prebuilts/misc/linux-x86/flex/flex-2.5.39
    
    But of course this isn't recommended, so I made the related patch (http://review.cyanogenmod.org/#/c/108768/) fitting for Replicant 6.0 and attached it to this post as build-allow-using-host-flex-binary.patch.
    So you can use the, (probably system shipped or self-built) flex version, by executing the following command before you built the Replicant sources:
    export USE_HOST_LEX=yes
    
    You can merge this patch by executing the following command inside the 'build/'-path:
    git am < ../../{path to you .patch-file}
    
  • Furthermore I got this warning: '/bin/bash: prebuilts/python/linux-x86/2.7.5//bin/python: No such file or directory', so I just fetched it like this:
    mkdir prebuilts/python/ && mkdir prebuilts/python/linux-x86/
    cd prebuilts/python/linux-x86/
    git clone https://android.googlesource.com/platform/prebuilts/python/linux-x86/2.7.5
    
    Or is it actual intention that this isn't part of the sources?
  • I saw the release of the January 2016 Nexus security patches (https://source.android.com/security/bulletin/2016-01-01.html).
    So I looked what I could bring to Replicant 6.0 from there. I only could merge patches for the following two vulnerabilities to Replicant:
    • CVE-2015-6641 - Elevation of Privilege Vulnerability in Bluetooth
      • 0001-Uncheck-checkbox-for-contact-sharing-by-default-for-.patch
      • 0002-Don-t-allow-contact-sharing-by-default-for-device-no.patch
    • CVE-2015-6643 - Elevation of Privilege Vulnerability in Setup Wizard
      • 0001-Block-developer-settings-during-SUW.patch
      • 0002-Preserve-FRP-lock-if-wiped-during-SUW.patch
        Every other patch was merged already or doesn't exist in AOSP, because it affects binary drivers for Nexus devices only.
        (The four patches are attached to this post).
But one patchset I can't fit into the existing sources. I can't say if Replicant 6.0 is affected to the vulnerability CVE-2015-6636, yet.
Exactly, this two patches:
  • To indicate that the most, (probably all needed) patches from the January 2016 Bulletin are merged already, I updated the 'PLATFORM_SECURITY_PATCH'-level, made a patch from that modification and attached it to this post as: update-PLATFORM_SECURITY_PATCH-to-January-2016.patch.
    You can merge this patch by executing the following command inside the 'build/'-path:
    git am < ../../{path to you .patch-file}
    

To have an idea how long that could take, the build process took round about 2.5 hours on my Notebook with Intel Core i5 2540M CPU and 16GB DDR3 RAM.

Flashing / Recovery

I didn't need to modify or update my existing CWM-Recovery, (which was coming with Replicant 4.2) to flash Replicant 6.0.

But as I wanted to see what happens, when I try to encrypt my phone without setting a PIN/PW first, I broke my /data partition completely.
I can't access, mount or format it after that - even after flashing other custom ROMs incl. several factory resets etc.
So I tried to flash another Recovery by taking a prebuilt one from TWRP for the i9300 from here: https://dl.twrp.me/i9300/
I installed it this way:

sudo pacman -S heimdall
sudo heimdall flash --BOOT twrp-2.8.7.3-i9300.img --RECOVERY twrp-2.8.7.3-i9300.img

After booting into the Recovery -> Wipe -> Format Data -> 'yes' I got a functional /data partition back.

TWRP is open source, you could compile it yourself, (but I didn't tested this, yet):
Source: https://github.com/TeamWin/Team-Win-Recovery-Project/
Guide: http://forum.xda-developers.com/showthread.php?t=1943625

Superuser / Root access management

I realized there is a basic root "management" by setting:
Settings -> Developer options -> Root access -> from Disablet to: Apps only
But I wanted more or less the same root management as I knew it from Replicant 4.2, because I love the benefits like PIN protection or the clearly arranged logging overview.
So I did the following:

  • Getting the sources:
    mkdir Superuser
    cd Superuser
    git clone git://github.com/phhusson/Superuser
    cd Superuser
    git clone git://github.com/phhusson/Widgets
    cd ../../
    
  • Getting the prerequisits
    Then I downloaded the Android NDK from here: https://developer.android.com/ndk/downloads/index.html#download
    chmod a+x ./android-ndk-r10e-linux-x86_64.bin
    ./android-ndk-r10e-linux-x86_64.bin
    
  • Building the su binaries
    cd android-ndk-r10e/
    ./ndk-build -C ../Superuser/Superuser/Superuser
    
    The resulting su binaries could be found here: Superuser/Superuser/libs/armeabi/su
  • Building the Superuser app
    cd ..
    
    Then I downloaded the Android SDK from here: https://developer.android.com/sdk/index.html#Other
    tar -xzvf android-sdk_r24.4.1-linux.tgz
    ./android-sdk-linux/tools/android
    
    Here you should install SDK Platform for API 22 and the Build-tools for 22.0.1, and don't forget to deselect the unneeded preselected packages.
    cd Superuser/Superuser/Superuser/
    export ANDROID_HOME=../../../android-sdk-linux
    ./gradlew assembleDebug
    
    The resulting app could be found here: Superuser/Superuser/Superuser/build/outputs/apk/Superuser-debug.apk

I tried two working methods to implement this su into Replicant 6.0:

1) Injecting it to the boot.img (boot-image)
git clone git://github.com/phhusson/super-bootimg
mkdir super-bootimg/output && mkdir super-bootimg/output/replicant-6.0
Then simply extract the boot.img from the build replicant-6.0-i9300.zip with an archiver of your choice.
Copy this boot.img renamed as 'orig-boot.img' to the created folder super-bootimg/output/replicant-6.0
To ensure your built su binaries are used, just copy your binaries from Superuser/Superuser/libs/armeabi/su to super-bootimg/scripts/bin/ from/to this locations:
  • Superuser/libs/armeabi/su -> super-bootimg/scripts/bin/su-arm
  • Superuser/libs/mips/su -> super-bootimg/scripts/bin/su-mips
  • Superuser/libs/x86/su -> super-bootimg/scripts/bin/su-x86

Finally execute:

cd super-bootimg/
sh build.sh
The resulting boot-images could be found here again: super-bootimg/output/replicant-6.0/
I took the 'boot-output-replicant-6.0-su-eng-r146.img' and put this renamed to boot.img back to my replicant-6.0-i9300.zip with an archiver of your choice.
The differences between the single images are listed here: http://forum.xda-developers.com/android/software-hacking/wip-selinux-capable-superuser-t3216394
After flashing it (incl. factory reset afterwards) the new su binaries where set/used and I just had to install the Superuser app I built before to get the root management I wanted.

2) The lazy but NOT RECOMMENDED way - inject prebuild su binaries into the installed Replicant 6.0 system

Just download the http://superuser.phh.me/superuser.zip
(Source: https://github.com/phhusson/Superuser#prebuilt-images)
and simply install/flash it though the recovery after you flashed Replicant 6.0.
After that you just have to install the Superuser app, which is also available on f-droid, now: https://f-droid.org/repository/browse/?fdid=me.phh.superuser

Proprietary firmwares/drivers/files/...

You could fetch the current CyanogenMod 13 images for the I9300 from this great changelog site: http://www.cmxlog.com/13/i9300/ or directly from here: http://get.cm/?device=i9300
You could install this ROM temporarily to your device and backup the files you need, or - if you have flashed Replicant 6.0 already - you could follow this instructions:
http://forum.xda-developers.com/android/software-hacking/how-to-conver-lollipop-dat-files-to-t2978952
to simply mount the ROM content and get access to the /system partition with its partially proprietary content you may need for Wi-Fi, Bluetooth, ...

To make a long story short, just
  • download this needed file: https://github.com/xpirt/sdat2img/blob/master/sdat2img.py
  • extract the two files "system.transfer.list" and "system.new.dat" from the cm-13.0-XXXXXXXX-NIGHTLY-i9300.zip with an archiver of your choice,
  • and go ahead like this:
    python3 ./sdat2img.py system.transfer.list system.new.dat system.img
    mkdir output
    sudo mount -t ext4 -o loop system.img output/
    

As usual: where you could find the single blobs you probably need, is not a part of this howto.

Look and Feel

  • Terminal
    If you miss a pre-installed Terminal Emulator just go to Settings -> Developer Options -> and activate: Local terminal
    Probably this could be enough for some commands...
  • Themes
    You don't have to use a complete theme. You can get an alternate theme like this Blue Minimal and just use- or combine one or more of the following options:
    • Style
    • Status bar
    • Wallpapers
    • Lock wallpapers
    • Fonts
    • Icons
    • Boot animations
    • Ringtones
    • Notifications
    • Alarm
  • What's next?
    Next I'll create a list of things which won't work correctly in the current release. But this need some more time for investigation(s)...

Ready to flash Replicant-6.0-I9300 Images (if you trust me :-P)

No I don't...
  • want to provide any other Replicant images
  • want to update these images regularly
  • want you to use this images instead of building everything yourself

Also I'm not responsible for any damage on your device or anything else. Please use it at your own risk.

But if you want get a first impression of Replicant 6.0 on your i9300 instantly, feel free to try one of the following images for testing reasons:
  • replicant-6.0-HOMEMADE.zip
    Download link: https://www.dropbox.com/s/35uwywh27lo3b9s/replicant-6.0-i9300-HOMEMADE.zip?dl=0
    MD5: 7fc8ab1b063afd69483a39801b62a37b
    SHA256: ba5b9bdb64aabfdd7a48134b0e432781020ca52e6df05c165b21552b15e8517d
    SHA512: b2b0bd84deb4f21bde495d6e18aa2b9b3b2cf99482a58e93933fb4503c6479954f4f5bd06af68ef051163f5ba8add672683f5e5a66b156e71e24277189917b24
    This is built from the sources provided by Wolfgang Wiedmeyer. I didn't touch the sources in any way.
  • replicant-6.0-HOMEMADE-SuMod.zip
    Download link: https://www.dropbox.com/s/2q1btd39j9pdqiv/replicant-6.0-i9300-HOMEMADE-SuMod.zip?dl=0
    MD5: ef509571fa34a2fcecc3bb60bf0cee17
    SHA256: 07935ca0e674a3cee84b1803a6fd0af2e941cf1f3a9f4b683036d028b267cd4e
    SHA512: ac8f45779b466bb914abb211cbcd0e6b00d1926ffcec18432e4af5a8d081fa4002f4308187c75b1dfd8b19f58183891f529a4c734820db40cc46754f1795aa0e
    This is built from the sources provided by Wolfgang Wiedmeyer.
    • Additionally I've replaced the su-binaries (built by myself - and yes my nick could be better) in the boot-image and
    • added the Superuser app (built by myself) as 'prebuild' system app to get a slightly more secure root management.
    • Also I patched this build with the Nexus January 2016 Bulletin patches, (except the two CVE-2015-6636 patches as you can read above).
    • Furthermore I let the app 'LiveWallpapersPicker' exist, but removed the following system apps (mostly EGL needing- and so crashing live wallpapers) instead:
      • NoiseField
      • PhaseBeam
      • PhotoTable
      • PhotoPhase
      • Screencast (this app opens, but only creates non-working video files in my tests)
        by editing the file vendor/replicant/config/common_full.mk like this:
      • adding:
        • PRODUCT_PACKAGES += \
        • SoundRecorder \
        • LiveWallpapersPicker
      • removing (or commenting out)
        • NoiseField \
        • PhaseBeam \
        • PhotoTable \
        • PhotoPhase \
        • Screencast

Hope that helps シ

RE: Replicant 6.0 build-process and testing-images for the i9300 - Added by robin p almost 9 years ago

My Self wrote:

  • Getting the sources:
    [...]
  • Getting the prerequisits
    Then I downloaded the Android NDK from here: https://developer.android.com/ndk/downloads/index.html#download
    [...]
  • Building the su binaries
    [...] The resulting su binaries could be found here Superuser/Superuser/libs/armeabi/su
  • Building the Superuser app
    [...] Then I downloaded the Android SDK from here: https://developer.android.com/sdk/index.html#Other
    [...] Here you should install SDK Platform for API 22 and the Build-tools for 22.0.1, and don't forget to deselect the unneeded preselected packages.
    [...] The resulting app could be found here Superuser/Superuser/Superuser/build/outputs/apk/Superuser-debug.apk

excellent work, good to see the build steps and patches listed here.

as a side note, has anyone made an attempt to release a free SDK/NDK? or is Google's pre-built option the only choice at the moment?

RE: Replicant 6.0, at least for the Samsung Galaxy S3 - Added by Simon Josefsson almost 9 years ago

FWIW, with MySelf's SysUI-Update-dismiss-callbacks-for-external-keyguard patch, I was also able to complete the build. The resulting image boots and appears to work during limited testing.

Is anyone able to make a comparison between the delta's between cm-10.1.3->replicant-4.2 and cm-13.0->replicant-6.0? Since it works so well, I'm wondering what is missing. :-) Samsung RIL?

/Simon

RE: Replicant 6.0, at least for the Samsung Galaxy S3 - Added by Simon Josefsson almost 9 years ago

Some impressions:

  • Overall feels snappier than replicant-4.2, especially during keyboard input
  • The new CM recovery bootloader can't install ZIP's from sdcard? I'm using the replicant 4.2 recovery
  • I've seen a weird graphics bug a couple of times when after rotating the screen, some horizontal lines are not completely horizontal but have a one-pixel split somewhere on the screen. I can't reproduce it.
  • Previews in Gallery works!
  • App thumbnails still doesn't work. Nor does ZXing QR code scanning.
  • Wifi/Bluetooth/NFC works
  • I can't get GPS to work -- cm13 doesn't seem to contain gpsd anymore?
  • Settings -> "Status bar" crashes the settings app
01-13 21:03:47.560  9125  9125 D SubSettings: Launching fragment com.android.settings.cyanogenmod.StatusBarSettings
01-13 21:03:47.580  2914  3080 E DatabaseUtils: Writing exception to parcel
01-13 21:03:47.580  2914  3080 E DatabaseUtils: java.lang.IllegalArgumentException: Invalid setting: status_bar_quick_qs_pulldown
01-13 21:03:47.580  2914  3080 E DatabaseUtils:     at org.cyanogenmod.cmsettings.CMSettingsProvider.validateSystemSettingNameValue(CMSettingsProvider.java:801)
01-13 21:03:47.580  2914  3080 E DatabaseUtils:     at org.cyanogenmod.cmsettings.CMSettingsProvider.insertForUser(CMSettingsProvider.java:527)
01-13 21:03:47.580  2914  3080 E DatabaseUtils:     at org.cyanogenmod.cmsettings.CMSettingsProvider.call(CMSettingsProvider.java:325)
01-13 21:03:47.580  2914  3080 E DatabaseUtils:     at android.content.ContentProvider$Transport.call(ContentProvider.java:398)
01-13 21:03:47.580  2914  3080 E DatabaseUtils:     at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:283)
01-13 21:03:47.580  2914  3080 E DatabaseUtils:     at android.os.Binder.execTransact(Binder.java:453)
01-13 21:03:47.580  9125  9125 D AndroidRuntime: Shutting down VM
01-13 21:03:47.580  9125  9125 E AndroidRuntime: FATAL EXCEPTION: main
01-13 21:03:47.580  9125  9125 E AndroidRuntime: Process: com.android.settings, PID: 9125
01-13 21:03:47.580  9125  9125 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.settings/com.android.settings.SubSettings}: java.lang.IllegalArgumentException: Invalid setting: status_bar_quick_qs_pulldown
01-13 21:03:47.580  9125  9125 E AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2450)
01-13 21:03:47.580  9125  9125 E AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2520)
01-13 21:03:47.580  9125  9125 E AndroidRuntime:     at android.app.ActivityThread.-wrap11(ActivityThread.java)
01-13 21:03:47.580  9125  9125 E AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
01-13 21:03:47.580  9125  9125 E AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:102)
01-13 21:03:47.580  9125  9125 E AndroidRuntime:     at android.os.Looper.loop(Looper.java:148)
01-13 21:03:47.580  9125  9125 E AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5466)
01-13 21:03:47.580  9125  9125 E AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
01-13 21:03:47.580  9125  9125 E AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
01-13 21:03:47.580  9125  9125 E AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
01-13 21:03:47.580  9125  9125 E AndroidRuntime: Caused by: java.lang.IllegalArgumentException: Invalid setting: status_bar_quick_qs_pulldown
01-13 21:03:47.580  9125  9125 E AndroidRuntime:     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:165)
01-13 21:03:47.580  9125  9125 E AndroidRuntime:     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
01-13 21:03:47.580  9125  9125 E AndroidRuntime:     at android.content.ContentProviderProxy.call(ContentProviderNative.java:646)
  • Video recording crashes replicant (before it just didn't work)
01-13 21:05:12.155  2914  2973 I WindowManager: Input event dispatching timed out sending to com.android.camera/com.android.camera.VideoCamera.  Reason: Waiting to send non-key event because the touched window has not finished processing certain input events that were delivered to it over 500.0ms ago.  Wait queue length: 5.  Wait queue head age: 14663.9ms.
01-13 21:05:12.175  2914  2973 D lights  : set_light_buttons: 1
01-13 21:05:12.190  2914  2930 I Process : Sending signal. PID: 7990 SIG: 3
01-13 21:05:12.195  7990  7997 I art     : Thread[2,tid=7997,WaitingInMainSignalCatcherLoop,Thread*=0x4002b750,peer=0x22c070a0,"Signal Catcher"]: reacting to signal 3
01-13 21:05:12.390  2914  2930 I Process : Sending signal. PID: 2914 SIG: 3
01-13 21:05:12.390  2914  2921 I art     : Thread[2,tid=2921,WaitingInMainSignalCatcherLoop,Thread*=0x43515230,peer=0x12c010a0,"Signal Catcher"]: reacting to signal 3
01-13 21:05:12.465  7990  7997 I art     : Wrote stack traces to '/data/anr/traces.txt'
01-13 21:05:13.030  2914  2960 E SensorService: sensor poll failed (Operation not permitted)
01-13 21:05:13.030  2914  2960 W SensorService: Exiting SensorService::threadLoop => aborting...
01-13 21:05:13.030  2914  2960 F libc    : Fatal signal 6 (SIGABRT), code -6 in tid 2960 (SensorService)
01-13 21:05:13.035  1995  1995 I DEBUG   : property debug.db.uid not set; NOT waiting for gdb.
01-13 21:05:13.035  1995  1995 I DEBUG   : HINT: adb shell setprop debug.db.uid 100000
01-13 21:05:13.035  1995  1995 I DEBUG   : HINT: adb forward tcp:5039 tcp:5039
01-13 21:05:13.140  1995  1995 F DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
01-13 21:05:13.140  1995  1995 F DEBUG   : Build fingerprint: 'samsung/m0xx/m0:4.3/JSS15J/I9300XXUGMJ9:user/release-keys'
01-13 21:05:13.140  1995  1995 F DEBUG   : Revision: '0'
01-13 21:05:13.140  1995  1995 F DEBUG   : ABI: 'arm'
01-13 21:05:13.140  1995  1995 F DEBUG   : pid: 2914, tid: 2960, name: SensorService  >>> system_server <<<
01-13 21:05:13.140  1995  1995 F DEBUG   : signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------

Overall, I don't see any significant reason why I couldn't use this daily. I would like to understand the freedom/privacy/security situation a bit better first though -- is it running replicant's RIL? Why is graphics so fast, is there no non-free acceleration happening?

RE: Replicant 6.0, at least for the Samsung Galaxy S3 - Added by sebastian k almost 9 years ago

Hello guys!

The "replicant-6.0-HOMEMADE-SuMod" works so far pretty good on my S3.
But I got a problem: When (re-)booting my phone, it doesn't ask me for my pin.
In addition to that the OS doesn't recognize my SIM card. It always shows that no SIM is connected. But other ROMs works perfect.
Just Replicant has this problem.

RE: Replicant 6.0, at least for the Samsung Galaxy S3 - Added by My Self almost 9 years ago

Overall, I don't see any significant reason why I couldn't use this daily [...]

I don't know. I'm not finally done with my investigation, but the following things I found for now:

  • I'm missing the following features:
  • Broken, or partially not working things:
    • "No SIM card", while a working SIM card is inserted
      Found 1): http://forum.cyanogenmod.org/topic/119637-cm-13-sim-card-problems-with-nightly-19-and-20/
      Found 2): http://forum.cyanogenmod.org/topic/120076-cm13-no-sim-detected/
      The first link doesn't really help. After reading the second one, it seemed that a broken TWRP version could have been the problem in my case.
      So I flashed the following three version of TWRP on my device:
      • twrp-2.8.7.3-i9300.img
      • twrp-2.8.6.1-i9300.img
        and finally
      • twrp-2.8.5.0-i9300.img
        and reflashed Replicant 6.0 with full wipe after every Recovery-exchange, but this doesn't worked for me to getting my SIM card to work :'(
    • USB-connection is broken and doesn't show any files after mounting the device over MTP.
      Found this source: http://www.ibtimes.co.uk/cyanogenmod-13-beta-rom-moto-x-2nd-gen-brings-android-6-0-marshmallow-1528049 for the following successfully tested workaround:
      "To fix MTP Mount, connect your phone to the PC with the USB cable. Go to Settings -> Developer Options -> Select USB Configuration, then change it to PTP then change it back to MTP. Doing this will show your device storage on your computer."
    • Encryption
      Simply doesn't work for me :'(
      After clicking on [ENCRYPT PHONE] the device reboots and shows the typical 'unlock-encrypted-partition'-Android-Symbol, after that the boot screen, but then, (after a few seconds) I'll be thrown back to the lock screen,
      • without encrypting anything
      • without any errors or other messages,
      • tested with PIN, password and finally without PIN or password again.
        Found nothing for that, yet.
    • Settings -> Sound -> Other sounds
      Crashes casually if you switch back to the Sound menu, (if you have modified settings inside of it, or not). Log created:
      21:16:52.395 W/MessageQueue(9900): Handler (android.media.MediaPlayer$EventHandler) {e957809} sending message to a Handler on a dead thread
      21:16:52.395 W/MessageQueue(9900): java.lang.IllegalStateException: Handler (android.media.MediaPlayer$EventHandler) {e957809} sending message to a Handler on a dead thread
      21:16:52.395 W/MessageQueue(9900):     at android.os.MessageQueue.enqueueMessage(MessageQueue.java:543)
      21:16:52.395 W/MessageQueue(9900):     at android.os.Handler.enqueueMessage(Handler.java:631)
      21:16:52.395 W/MessageQueue(9900):     at android.os.Handler.sendMessageAtTime(Handler.java:600)
      21:16:52.395 W/MessageQueue(9900):     at android.os.Handler.sendMessageDelayed(Handler.java:570)
      21:16:52.395 W/MessageQueue(9900):     at android.os.Handler.sendMessage(Handler.java:507)
      21:16:52.395 W/MessageQueue(9900):     at android.media.MediaPlayer.postEventFromNative(MediaPlayer.java:2988)
      21:16:52.395 D/MediaPlayer(9900): setSubtitleAnchor in MediaPlayer
      21:16:52.395 D/NuPlayerDriver(5440): reset(0x40108e20)
      21:16:52.395 D/NuPlayerDriver(5440): notifyListener_l(0x40108e20), (8, 0, 0)
      21:16:52.395 W/AMessage(5440): failed to post message as target looper for handler 0 is gone.
      21:16:52.395 D/NuPlayerDriver(5440): notifyResetComplete(0x40108e20)
      21:16:52.395 D/NuPlayerDriver(5440): reset(0x40108e20)
      21:16:52.395 D/NuPlayerDriver(5440): notifyListener_l(0x44250ea0), (1, 0, 0)
      21:16:52.395 E/MediaPlayer-JNI(9900): JNIMediaPlayerFactory: bIsQCMediaPlayerPresent 0
      21:16:52.395 E/MediaPlayer-JNI(9900): JNIMediaPlayerFactory: bIsQCMediaPlayerPresent 0
      21:16:52.395 D/MediaPlayer(9900): setSubtitleAnchor in MediaPlayer
      21:16:52.400 D/Ringtone(9900): Successfully created local player
      21:16:52.405 E/AndroidRuntime(9900): FATAL EXCEPTION: SeekBarVolumizer.CallbackHandler
      21:16:52.405 E/AndroidRuntime(9900): Process: com.android.settings, PID: 9900
      21:16:52.405 E/AndroidRuntime(9900): java.lang.IllegalStateException
      21:16:52.405 E/AndroidRuntime(9900):     at android.media.MediaPlayer._setDataSource(Native Method)
      21:16:52.405 E/AndroidRuntime(9900):     at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1128)
      21:16:52.405 E/AndroidRuntime(9900):     at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1113)
      21:16:52.405 E/AndroidRuntime(9900):     at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1010)
      21:16:52.405 E/AndroidRuntime(9900):     at android.media.MediaPlayer.setDataSource(MediaPlayer.java:968)
      21:16:52.405 E/AndroidRuntime(9900):     at android.media.Ringtone.setUri(Ringtone.java:293)
      21:16:52.405 E/AndroidRuntime(9900):     at android.media.Ringtone.setAudioAttributes(Ringtone.java:134)
      21:16:52.405 E/AndroidRuntime(9900):     at android.media.Ringtone.setStreamType(Ringtone.java:105)
      21:16:52.405 E/AndroidRuntime(9900):     at android.preference.SeekBarVolumizer.onInitSample(SeekBarVolumizer.java:193)
      21:16:52.405 E/AndroidRuntime(9900):     at android.preference.SeekBarVolumizer.handleMessage(SeekBarVolumizer.java:182)
      21:16:52.405 E/AndroidRuntime(9900):     at android.os.Handler.dispatchMessage(Handler.java:98)
      21:16:52.405 E/AndroidRuntime(9900):     at android.os.Looper.loop(Looper.java:148)
      21:16:52.405 E/AndroidRuntime(9900):     at android.os.HandlerThread.run(HandlerThread.java:61)
      
      I just found another person which seems to have same issue in a logfile on JIRA, but I can't find the related issue for it: https://jira.cyanogenmod.org/secure/attachment/48936/logcat_fc.log
      Also didn't found any related commit(s) for: https://github.com/CyanogenMod/android_frameworks_base/commits/cm-12.1/core/java/android/preference/SeekBarVolumizer.java
    • Settings -> Status Bar
      Crashes, log created, it's the same as 'Simon Josefsson' attached to this post: http://redmine.replicant.us/boards/21/topics/12057?r=12213#message-12213
      Found nothing for that, yet.
      Also didn't found any related commit(s) for: https://github.com/CyanogenMod/android_frameworks_base/commits/cm-13.0/core/java/android/provider/Settings.java

RE: Replicant 6.0, at least for the Samsung Galaxy S3 - Added by Wolfgang Wiedmeyer almost 9 years ago

Many thanks for testing this and sharing your experiences!
I will soon address everything you all reported back in more detail. For now the following things:

Please just use the recovery image that gets build with the ROM. It's in the out/target/product/i9300/ directory. Flash this first and then the zip.
If this doesn't help and there are still problems with the SIM card: Is the SIM card pin-protected? If yes, could you temporarily remove the protection on a different device and test it again? I will need a logcat in any case if the SIM doesn't get recognized (adb logcat -b all).

Also I encourage everyone to contribute. If you have some patches, just attach them like My Self did it and I will go through them.

Settings -> Status Bar should be fixed with the changes I pushed today.

If you have problems with a functionality that relies on proprietary firmware files: These are the firmware files that I choose to install on the device: https://code.fossencdi.org/i9300_proprietary_firmwares.git/tree/firmware?h=replicant-6.0
Please use these as a reference if you choose to install proprietary firmware files. E.g. video recording should work with these.

RE: Replicant 6.0, at least for the Samsung Galaxy S3 - Added by My Self almost 9 years ago

Please just use the recovery image that gets build with the ROM. It's in the out/target/product/i9300/ directory. Flash this first and then the zip.

Thanks for that hint. So I flashed the CyanogenMod Recovery by executing:

sudo heimdall flash --BOOT out/target/product/i9300/recovery.img --RECOVERY out/target/product/i9300/recovery.img
and installed a nightly build of CM13 after that for testing reasons.
My PIN would be asked and I got a mobile data connection instantly. So I switched to the recovery again and flashed the unmodified Replicant 6.0 image, followed by a factory reset. After booting into this, my PIN won't be asked and the systems said again: "No SIM card".

If this doesn't help and there are still problems with the SIM card: Is the SIM card pin-protected? If yes, could you temporarily remove the protection on a different device and test it again? I will need a logcat in any case if the SIM doesn't get recognized (adb logcat -b all).

Nope, it was/is not PIN protected. I'll try to make a log ASAP...

Settings -> Status Bar should be fixed with the changes I pushed today.

Thanks for looking into this. (I saw that this menu-point is working in the tested CM13 nightly build (cm-13.0-20160104-NIGHTLY-i9300) some minutes ago, too).
By the way:
  • the Settings -> Sound -> Other sounds menu-point crashes, and
  • the USB-connection shows the same behavior, and need the MTP <> PTP workaround before anything is working on CM13, too.

And finally, after all this, the encryption still doesn't work and shows the same behavior as described before, (after setting a lock screen PIN).
I'll try that on the CM13 build ASAP...

@all of you: thanks a lot for all your great work and/or any other support!

RE: Replicant 6.0, at least for the Samsung Galaxy S3 - Added by Simon Josefsson almost 9 years ago

Wrt USB: For me, the device is on the "Charge only" mode until I switch it to MTP manually every time I connect the cable, and then everything works. Chosing MTP under DeveloperSettings>USBConnection does not change that it comes up in "Charge only" mode on next cable connection. I have not needed to switch to PTP and then back to MTP to get anything to work. It seems the DeveloperSetting>USBConnection setting isn't "sticky".

Re SIM: I didn't try a SIM card in the device until now. I do get a PIN query on boot, however my SIM card is not PIN-protected so I did not know what to type. It says "No SIM card" after I cancel the PIN query dialoge. So no success with SIM activities from me either (which qualifies as a show-stopper for me to start to use it daily... nothing else found so far does).

I can confirm the Setting->Sound->Other sound crash (not always, but usually).

RE: Replicant 6.0, at least for the Samsung Galaxy S3 - Added by Simon Josefsson almost 9 years ago

For the record, building today resulted in this failure:

/bin/bash: line 1: /usr/bin/swig: No such file or directory

I'm installing 'swig' and retrying.

RE: Replicant 6.0, at least for the Samsung Galaxy S3 - Added by Simon Josefsson almost 9 years ago

Building worked fine after installing 'swig', and resolved the build failure in frameworks/base/. I've now flashed recovery.img from replicant-6.0. I'm using Apply Update => Choose from sdcard1 and then Wipe data/factory reset.

Settings -> Status Bar doesn't crash any more, thanks for that! Android Security patch level is 'December 1, 2015'. SIM still doesn't work, but I'm having trouble getting it to work with CM13 too...

RE: Replicant 6.0, at least for the Samsung Galaxy S3 - Added by My Self almost 9 years ago

Building worked fine after installing 'swig'[...]

The need of swig is linked to this commit: https://code.fossencdi.org/external_parameter-framework.git/commit/?h=replicant-6.0&id=ef8dcd670c2c5450362b36e01bd7213497930067
On Arch this means, that I can't compile Replicant 6.0 anymore.
I installed swig and tried to compile the clean current Replicant code over:

../tools/repo sync --force-sync
The error is:
external/parameter-framework/bindings/python/Android.mk:93: recipe for target '/home/USERNAME/.../replicant-6.0/out/host/linux-x86/gen/SHARED_LIBRARIES/_PyPfw_intermediates/pfw_wrap.cxx' failed
make: *** [/home/USERNAME/.../replicant-6.0/out/host/linux-x86/gen/SHARED_LIBRARIES/_PyPfw_intermediates/pfw_wrap.cxx] Error 1
make: *** Deleting file '/home/USERNAME/.../replicant-6.0/out/host/linux-x86/gen/SHARED_LIBRARIES/_PyPfw_intermediates/pfw_wrap.cxx'
My program versions are:
python-2.7.11
swig-3.0.8
So I researched a bit. It seems, that I have to install the package 'lib32-python2' from AUR. The final problem is, that I can't build one dependency from that package, which is 'lib32-tk'. It breaks with:
[...]
Makefile:585: recipe for target 'libtk8.6.so' failed
[...]
I've tried several ways to get this to work, but I'm giving up now. Of course this is not a Replicant related problem. But I would share this experience anyway.

Does somebody else using an Arch (x64) based build environment and got the current Replicant 6.0 build process to work?

RE: Replicant 6.0, at least for the Samsung Galaxy S3 - Added by Simon Josefsson almost 9 years ago

I'm using swig 2.0.12 and python 2.7.9 (python3 3.4.2 also installed) from Debian jessie. Maybe you can downgrade swig? The prebuilt swig is 2.0.11, so maybe 3.x is too new.

(1-25/135)