Over script post update/flash should look like:
Posts
-
RE: How to unlock bootloader?
UBPorts update process needs repeat steps from 8.0.STAGE 2
-
RE: How to unlock bootloader?
@keneda probably yes, but you need to smoke 4pda, and it's not to me.
-
RE: How to unlock bootloader?
In my case I was downgraded twice to 5.1.9.0A from 6.3.0.2A and to 4.2.8.2A from 5.1.9.0A, noting that downgrade from 5.1.9.0A to 4.2.8.2A needs unlock of bootloader. It means, that there is large probability that we do not need (in any cases as mine) downgrade twice, because 5.1.9.0A patching uboot.img well, but lots of instructions saying that we must do it, those, following instruction (which is updated 4pda one) - contains 2 STAGES.
ATTENTION: It is Linux instruction where needed Windows just in steps 3-5, but we can skip them taking uboots from MEIZU_UNLOCK/UNLOCK in case if we are using given by me Flyme firmwares.
Please read full instructions before you start.
Recommended only for experienced users.This was tested ONLY on MX4
Archives: https://drive.google.com/drive/folders/1GR67uSQDOnlCZRjrcMkHvWbFPZaaWQgC
NB. Following "relay race" be good to make mirror of given archives.-
Archive "flymes" contains stock firmwares:
6.3.0.2A (in case if you need nothing what represents Flyme OS)
5.1.9.0A
4.2.8.2A -
Archive "MEIZU_UNLOCK" contains dirs we need to unlock MX4 flashing UBPorts:
arale-ubports-recovery: - MX4 recovery from UBPorts
gscript: - folder with apk terminal emulator and unlocking script
patched-recovery: - patched stock recovery for MX4 (who wants to flash International (index I) firmware to chinese MX4 (index A), or flash stock-customs (deleted chinese soft, game center etc.))
Patcher: - loader patcher -
Extra folders of "MEIZU_UNLOCK" contains:
custom-recovery: - custom recovery philz touch 6 for MX4
TWRP: - TWRP recovery 2.8.7.0
UNLOCK: - patched uboots from 5.1.9.0A and 4.2.8.2A stock Flyme OS firmwares, to skip steps 3-5.
UNLOCKING PROCESS:
-
Flash clean stock firmware (do this ONLY on android version):
STAGE 1: if current MX4 firmware != 4.2.8.2A: flash 5.1.9.0A
STAGE 2: if current MX4 firmware == 5.1.9.0A (with unlocked bootloader): flash 4.2.8.2A -
Get ROOT by standard method (Flyme account). SuperSu NO NEEDED
( if you wish to skip Windows steps 3-5, just take proper uboot.img from UNLOCK directory and rename it, according to current STAGE which based on Flyme firmware number)
-
Unpack on your disc (on PC) archive with firmware which you used to flash on your MX4: STAGE 1 or STAGE 2.
-
Place in a folder with unpacked archive (p.3) file "Meizu_Patch.exe" from folder "patcher" of your downloaded archive and open this with administrator rights.
-Theoretically, antiviruses can alarm to packer which patcher was compilated (but Dr.Web is fine) / but antiviruses recommended to be closed.
-If you are afraid about viruses and trojans, skip this step....and all the following.If all goes well - we see a flashing green "SusseccFully Patched" in the patcher round window - continue.
If no and you see inscription "Patching Failed!", RED - STOP - something goes wrong and if you continue - BRICK!!! -
Delete from this folder 2 files: "Meizu_Patch.exe" and "uboot.img.bak".
-
Create a folder with name "UNLOCK" in phone root directory (SD card) (DCIM folders, Picture, Music, data etc.) and:
- if not skipped steps 3-5: copy in already patched loader file "uboot.img" of current STAGE from firmware folder from PC (where we started our patching (unpacked firmware))
- if skipped steps 3-5: copy and rename from unzippet MEIZU_UNLOCK/UNLOCK/uboot.img.
6.1 if not skipped steps 3-5: Pack this firmware (on PC) back in archive (using 7-zip/winrar) with name "update.zip" (default flyme firmwares) - could be useful.- Copy a folder "gscript" together with content in phone root directory (SD card).
7.1 Install "terminal emulator" on your phone from "gscript" folder.
7.2 run with ROOT privileges "terminal emulator" and type (or call just second one from adb shell):
su
sh /sdcard/gscript/unlock.sh
7.4 Wait a little and reboot your phone. If it succesfully boots - congratulations, all is fine!!
- STAGE 1 steps:
8.0.STAGE 1: Upload to MX4 update.zip of 4.2.8.2A using command on your PC:
adb push /path_to_4.2.8.2A/update.zip /sdcard/update.zip
9.0.STAGE 1: Power off MX4.
9.1.STAGE 1: boot to fastboot by holding volume(-) & power buttons.
9.2.STAGE 1: flash recovery using patched recovery image from MEIZU_UNLOCK/patched-recovery by calling from given recovery path:
fastboot flash recovery patched_recovery.img
9.3.STAGE 1: reboot to recovery by holding Volume(+) & Power button, wipe data and downgrade system to 4.2.8.2A.
- STAGE 2 steps (make all from 1-7 by default for 4.2.8.2A and):
8.0.STAGE 2: run ubports-installer and follow instructions.
8.1.STAGE 2: high probability that ubports-installer returns exception while pushing dowloaded files to device, saying: "no space left on device".
8.2.STAGE 2: Press "Ignore".
9.0.STAGE 2: Two choices:
- Make all by your hands (manual movement);
- Or create file with lines of shell script given below (automation);
Manual movement:
All UBPorts files were downloaded to /pc_user/.cache/ubports/arale/Ubuntu\ Touch/ and they will be pushed to /cache/recovery on device, but there is just 102MB, in case of more than 400MB needs:
ls -lah $HOME/.cache/ubports/arale/Ubuntu\ Touch/
- Practically we need to push to the /cache/recovery just ubuntu_command file which mounts system, mounting sdcard into which we can push everything other from /pc_user/.cache/ubports/arale/Ubuntu\ Touch/
- but, before mount system in ubuntu_command two lines which call couple of tiny files uploaded by ubports-installer and couple of .asc signatures:
- image-master.tar.xz
- image-master.tar.xz.asc
- image-signing.tar.xz
- image-signing.tar.xz.asc9.1.STAGE 2: boot to ubports-recovery, flashing it first if reflashed by Flyme_4.2.8.2A boot:
- noting that MX4 (arale) recovery.img placed in /pc_user/.cache/ubports/arale/ as recovery-arale.img:
fastboot flash recovery /pc_user/.cache/ubports/arale/recovery-arale.img
9.1.STAGE 2: go to /pc_user/.cache/ubports/arale/Ubuntu\ Touch/:
cd $HOME/.cache/ubports/arale/Ubuntu\ Touch/
9.1.1.STAGE 2: remove all in /cache/recovery on device:
adb shell rm -f /cache/recovery/*
9.1.2.STAGE 2: and push all described above files to the /cache/recovery/ by typing:
adb push image-* /cache/recovery/
- remember abount ubuntu_command too:
adb push ubuntu_command /cache/recovery/
9.2.STAGE 2: mount sdcard and create recovery dir in there by typing:
adb shell mount -a
adb shell mkdir /sdcard/recovery
or remove all files from recovery dir on device sdcard (in case of UBPorts system update:adb shell rm -f /sdcard/recovery/*
)9.3.STAGE 2: push all other files from /pc_user/.cache/ubports/arale/Ubuntu\ Touch/ to the created /sdcard/recovery by typing for each:
adb push file_name.extension /sdcard/recovery/
9.4.STAGE 2: create symbol links of all files pushed into /sdcard/recovery/ in /cache/recovery/ by typing for each:
adb shell ln -s /sdcard/recovery/file_name.extension /cache/recovery/
9.5.STAGE 2: checkout number of files in /cache/recovery by typing:
adb shell ls -lah /cache/recovery/
- and compare with PC container:
ls -lah .
10.STAGE 2: rebooting system to the UBPorts recovery, MX4 will launch update process using all uploaded files, flashing latest UBPorts system (in my case):
adb reboot recovery
9.0.STAGE 2 (automation):
#!/bin/sh # # BEFORE USAGE NOTE: # REMOVE CACHE (arale dir) FROM PREVIOUS PROCESSES IN /home/user/.cache/ubports/ # DISCONNECT ALL ADB DEVICES EXCEPT MEIZU MX4 # RUN UBPORTS INSTALLER # FOLLOW INSTRUCTIONS # AND REBOOT TO FASTBOOT ON FAIL (volume down + power btns) # RUN SCRIPT: sh arale.sh # UBP_FILES=$HOME/.cache/ubports/arale REC=recovery RECOVERY_IMG=recovery-arale.img UC=ubuntu_command RF=$UBP_FILES/$REC RED="\033[33;31m" GREEN="\033[33;32m" YELL="\033[33;33m" NOCOLOR="\033[0m" OK="$GREEN OK $NOCOLOR..." DON="$GREEN Done!$NOCOLOR" ERR="$RED Error." STOP="does not exists. Stopping" CHECK="$YELL Verifying" DEV="device" SD="sdcard" echo -e "$CHECK dirs..." if [ -d $RF ] then echo -e "$OK $RF" else echo -e "$ERR $RF $STOP" exit 0 fi if [ -d $UBP_FILES/Ubuntu\ Touch ] then echo -e "$OK $UBP_FILES/Ubuntu\ Touch" else echo -e "$ERR $UBP_FILES/Ubuntu\ Touch $STOP" fi echo -e "$DON" echo -e "\n$CHECK files..." if [ -f $RF/$RECOVERY_IMG ] then echo -e "$OK $RECOVERY_IMG" else echo -e "\n$ERR $RF/$RECOVERY_IMG $STOP" exit 0 fi cd $UBP_FILES/Ubuntu\ Touch # Getting file list from ubuntu_command if [ -f $UC ] then FILES_TO_OPERATE="$UC `cat $UC | sed 's/\<mount\>//g' | sed 's/\<system\>//g' | sed 's/\<format\>//g' | sed 's/\<unmount\>//g' | sed 's/\<update\>//g' | sed 's/\<load_keyring\>//g' | sed 's/ /\n/g' | sed '/^$/d'`" else echo -e "$ERR $UBP_FILES/Ubuntu\ Touch/$UC $STOP" exit 0 fi for I in $FILES_TO_OPERATE do if ls | grep -q $I then echo -e "$OK $I" else echo -e "$ERR $UBP_FILES/Ubuntu\ Touch/$I $STOP" exit 0 fi done echo -e "$DON" echo -e "$YELL" read -p "Is $DEV connected and in fastboot mode (volume down + power btns)? [Y]/n: " CONN CONN=`echo $CONN | tr '[A-Z]' '[a-z]' | cut -c1-1` echo -e "$NOCOLOR" if [ "$CONN" = "n" ] then echo -e "$NOCOLOR Exiting." exit 0 fi if [ "$CONN" = "y" -o -z "$CONN" ] then echo "" > /dev/null else echo -e "$ERR. Unknown character: $CONN" exit 0 fi echo -e "\n$YELL Flashing $REC...$NOCOLOR" if fastboot flash $REC $RF/$RECOVERY_IMG then echo -e "$OK fastboot flash $REC $RF/$RECOVERY_IMG" echo -e "\n$YELL Rebooting to $REC..." else echo -e "$ERR Not in fastboot mode." exit 0 fi echo -e "$GREEN Reboot to $REC (volume up + power btns)" sleep 8 echo -e "\n$NOCOLOR Waiting for adb $DEV..." while [ -z `adb devices | sed -n 2p | cut -f2` ] do sleep 1 done # Check device adb connection if [ `adb devices | sed -n 2p | cut -f2` = "$REC" ] then echo -e "\n$OK Connected!" echo -e "\n$YELL Preparing $SD on $DEV...$NOCOLOR" adb shell mount -a > /dev/null sleep 4 adb shell mkdir /$SD/$REC > /dev/null adb shell rm /$SD/$REC/* echo -e "$DON" echo -e "\n$YELL Preparing cache on $DEV...$NOCOLOR" adb shell rm -f /cache/ echo -e "$DON" else echo -e "\n$RED Unknown error$NOCOLOR" exit 0 fi for I in $FILES_TO_OPERATE do if [ `echo $I | cut -d- -f1` = "image" -o `echo $I | cut -d_ -f1` = "ubuntu" ] then adb push $I /cache/$REC/ echo -e "$OK $PUSH $I" else adb push $I /sdcard/$REC/ adb shell ln -s /sdcard/$REC/$I /cache/$REC/ echo -e "$OK $PUSH $I" fi done echo -e "\n$YELL Rebooting to $REC..." adb reboot $REC echo -e "\n$OK Wait for Ubuntu Touch being flashed" exit 0
PS. UBPorts update process needs repeat steps from 8.0.STAGE 2
-
-
RE: How to unlock bootloader?
Done!. There is couple of issues about internal memory and downgrading to 4.2.8.2A with A version of phone, but works for me. I will prepare packages to upload and some experience of flashing latest version.
100euro beauty in pocket in case of previous 1+1 dying (battery, shell). -
RE: clickable and Python/QML App ImportError: No module named 'encodings'
@hummlbach It is just one time process moving libs into the python-lib/
After that project is compatible for xenial. I don't know how abot previous 15.04, but in xenial case it works. -
RE: clickable and Python/QML App ImportError: No module named 'encodings'
@hummlbach Otherwise xenial returns encodings import error in my device. Xenial has python3.5 on a board and while calling clickable review --xenial before clickable publish --xenial - desktop returns that no python libs on an app board.
In the last case after clickable --xenial we do not need to remove anything at the device side. Everything works from scratch. -
RE: clickable and Python/QML App ImportError: No module named 'encodings'
@neopar I found solution to publish xenial python apps created on clickable.
- We need to remove all *3.4m python libs from local projects lib/ directory and also libpyothersideplugin.so from there;
- Download from device system libs libpython3.5m.so.1.0 and libpython3.5m.so.1;
- Edit python-lib/CMakeLists.txt to replace all 3.4 to 3.5;
After all we may upload apps to the open-store.io
Ubuntu Touch is awesome in case of app development. I've created one simple app. Need test.
-
RE: clickable and Python/QML App ImportError: No module named 'encodings'
So, it is not so comfortable to remove lib/ dir from the project on the phone at each installation. Easier to move python_lib/ dir from the source of project on desktop to somewhere and comment on the CMakeLists.txt file just one line:
#add_subdirectory(python-lib)And it works.
-
RE: clickable and Python/QML App ImportError: No module named 'encodings'
It's did not work for me to. I will try your method. Thanks.
-
RE: clickable and Python/QML App ImportError: No module named 'encodings'
@neopar Thank you. It works. Just removed lib/ directory from project.
-
clickable and Python/QML App ImportError: No module named 'encodings'
Platform: --xenial.
I'm trying to launch simple 'Hello World' app from touch panel, but logs shows that there is:
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'From the console python and app launches very well, but not from click panel. I'm trying to dig into app.apparmor policy groups, but there nothing to add in this case. Also I had seen that in the app directory is lib/arm-linux-gnueabihf which contains libpython3.4m* libraries.
There is also /userdata/systme-data path, but there nothing in this case to import anything for python only etc/:opt/ and var/ system dirs.
So my questions are:
- Which user is launching apps from panel?
- How does apparmor participates in this process?
- Which python package participates in this process and from which directory?
Following from previous questions: - How to permit process which launching apps to read $PATH and $PYTHONPATH variables and to get everything what python needs?