Related
Please rate this thread whether good or bad, I like feedback as this is my first in depth guide I have written. Thanks!
I know there are apps that make it as easy as a download and a button press to install linux on an Android phone, but I had hardly any room on my 8GB SD card, and I wanted to have a safe, reliable, and fast installation (my cards class 4). Also, this creates a lightweight and customisable installation, as all you start off with is the Debian shell, which is a 50MB download.
This guide will take you through downloading the app, to installing Debian in the loop file on your phone, to installing a VNC server and getting a GUI (in this case LXDE) up and running. So, without further ado....
PREREQUISITES
Your phone
Free space on /data/ , I would recommend at least 768MB for this. Unfortunately....
No apps to sd script... I'm not sure on this, prior to setting this up, I installed an a2sd script and my Debian shell would not work. Coincidence? You try it. I don't know.
I would have thought a lightweight ROM would help. This works fine for me, and I'm running Andromadus CM10.1 build 10. I don't know how Sense (which imo is pretty heavy) compares to Android 4.2.1, but I reckon AOSP is a good bet for any version of Android.
Terminal Emulator
Your brain. Of course, don't be afraid to ask questions, I'm sure I'll miss something
The recognition that I take NO RESPONSIBILITY AT ALL for cracked screens, disappearing keyboards, or gravitational collapses of the Vision's awesomeness creating a black hole and / or supernova which obliterates Earth and the Milky Way, although would look spectacular. Please bear in mind that this could genuinely mess up your device pretty bad, although only really badly if you try... yes, you can brick your phone or wipe EVERYTHING. So make a Nandroid. But once again, I'm the one that's laughing.
Click to expand...
Click to collapse
INSTALLING AND SETTING UP THE APP
Download Linux Installer STANDARD from the Play Store, or the ADVANCED version if you wish to contribute to the devs/ although you only need the STANDARD version for this.
I would suggest reading through their own guide first, although be aware this only covers getting a Debian shell up and running. Especially the bit towards the end which tells you how to muck up your device.
Anyway, the bit where you install the shell is here. I'll take you through what I suggest now, though.
Open the app
Menu > Setup
Install in a block device = [TICK]
Use loop file = [TICK]
Preferred distribution = Debian (Ubuntu doesn't work, according to the devs.)
Distribution version = I use Stable, I would've thought any Squeeze variant will do.
CPU architecture = armel by default, Don't change this.
Hostname = This is used for VNC. Default is fine.
Domain name = This is used for VNC. Default is fine.
Chroot point = /data/local/mnt/Linux . DO NOT USE /data/data/ EVER.
Name of chroot launcher script = linuxchroot . This is the command used to start the Debian shell
Server = blank by default. Don't know what this is used for, but is not important to us.
IP Version = IPv4 by default. I don't see any need to change this.
Loop file = /data/local/tmp/Linux.loop . DO NOT USE /data/data/ EVER.
File Size = 768MB . This is what I use, it's enough for VNC server, LXDE, C++ compiler, but not much else. I would not recommend any less.
Maximum loop dev = errrm. I don't know what this does. I've seen people use 32. Default is 8. I've tried both, and can't tell the difference. Stick to 8 to be safe.
Ext version = Default. This is checked automagically
Console refresh latency = Default (10). I don't know what this does.
Choose start panel = Default (Installer). This is just the screen the app starts on. Installer is easier.
Bind Android = [TICK] if needed, [BLANK] for safety. This means you can access your whole phone, that is, all the directories, root, sd card, of your phone, from your Linux installation. Could be useful, but probablyt not worth risking if you won't use it.
Send debug logs = [TICK] Default
Screen always on = [TICK] Default
Use embedded Busybox = [TICK] Default
Allow write to /system = [TICK] I suggest using this, I got problems with this disabled
Allow remount with dev/exec = [TICK] Once again, I'm not sure, I've seen people use it, but it's not essential
Click to expand...
Click to collapse
CREATING AND MOUNTING YOUR LINUX.LOOP, AND INSTALLING DEBIAN INTO IT
I think the original instructions are fine for this. I'll quote them here just in case you can't find them (red text is my input)
click create target loop (takes 2mn to write 500M on class 4 card)
click format target loop (50s)
click mount loop
click install distribution in loop. Installation should take between 15 and 50 mn depending on your Internet connection speed, and phone specifications (Flash and CPU speed). Installation process will temporally disable screen saver so that the phone will stay awake, and Internet connection will not be automatically disabled or put in sleep mode.
click Update launcher script.
You can now connect to your phone using any local console, via ConnectBot or adb shell You won't do this, instead open up Terminal emulator.
type su into the console
type linuxchroot in this console
you are now in a standard GNU/Debian environment, created via debootstrap. Network is already configured; you shall type aptitude update, then you can install any package you want.
Read messages carefully, and read the full tutorial on our website. URL is given in the About pop-up
Well done, you're running Debian shell on your Vision yay!
Click to expand...
Click to collapse
INSTALLING A VNC SERVER, X.ORG AND LXDE
This is the fun bit. We can now get LXDE up and running and access it via VNC (Don't worry, still on the phone... you'll see )
First, install android-vnc-viewer
Open up terminal emulator
Type su to be superuser
Type linuxchroot
This is what got me confused. I couldn't use apt-get, I got all sorts of errors. In order to fix these, WHENEVER YOU WANT TO INSTALL ANYTHING, type the following:
Code:
export PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin
Now you can install your vnc server:
Code:
apt-get install tightvncserver
and now the X Windows System (this is needed for the GUI)
Code:
apt-get install xorg
and now LXDE.
The minimum set of elements, without recommended apps like file manager (this is lightest, but not particularly useful:
Code:
aptitude install --without-recommends lxde-core
The minimum set of elements (I suggest using this):
Code:
apt-get install lxde-core
A complete set of elements:
Code:
apt-get install lxde
A complete Debian LXDE desktop environment (Don't use this, it'll be heavy and you'll use up all your space (unless you had much more than 768MB))
Code:
apt-get install task-lxde-desktop
Unfortunately, you cannot use the LXDE desktop just yet. We need to set up the VNC server.
Code:
vncserver
This will start up an X-Windows session and create a vnc startup file. Type in your password (if you're a n00b, be aware that you won't be able to see stars or anything). You don't need the second password it asks for.
Now kill the VNC session:
Code:
vncserver -kill :1
Now we need to set up the VNC startup file:
Code:
cd /root/.vnc/
nano xstartup
Use the trackpad to navigate, type as normal.
Comment out etc/X11/xsession :
Code:
#etc/X11/xsession
At the bottom, add the lines to start up LXDE:
Code:
startlxde &
lxsession
Now save the file: Hold down vol-down, then y, then o .
Exit nano: Hold down vol-down, then y, then x .
Now we need to edit the .bashrc file:
Code:
cd /root
nano .bashrc
After all the comments, add the following lines:
Code:
export USER=root
cd /
rm -r -f tmp
mkdir tmp
cd /
vncserver -geometry 800x480
If you know how to use VNC on a tablet, just change vncserver -geometry to that resolution:
Code:
vncserver -geometry heightxwidth
Now save the file: Hold down vol-down, then y, then o .
Exit nano: Hold down vol-down, then y, then x .
Type exit to exit the Debian Shell. Close terminal emulator, and reboot.
Click to expand...
Click to collapse
RUNNING OUR NEWLY INSTALLED LXDE GUI
Now we've rebooted, open terminal emulator and run the Debian shell as normal (linuxchroot).
This time, you'll see some text about the X server running. If not, something's gone wrong.
Leave terminal emulator running, and go and open android-vnc-server from your app drawer.
Set up the app as follows:
Nickname = whateveryouwant
Remeber the password you entered before, when we were running the shell? No? D'oh!
Address = localhost
Port = 5901
Click connect... yay ! You should have LXDE up and running, if not, go over this guide, and if you think you've done everything, either hate on me or send me a useful PM outlining your problem.
Click to expand...
Click to collapse
SETTING UP TERMINAL EMULATOR
I've written a really quick script which asks you whether yo want to start linuxchroot upon opening Terminal Emulator. It's really small and quick, I've attached the actual script, here's how you set it up:
Download the attached "startup.txt" script, and put it on the root of your SD card ( /sdcard/startup )
Rename it to "startup" (without the quotes, and no extension, basically just get rid of the ".txt" bit on the end)
Open Terminal Emulator, and type the following:
Code:
su
mount -o rw,remount /system
cp /sdcard/startup /system/xbin/
chmod 700 /system/xbin/startup
chown root.root /system/xbin/startup
Now open Terminal Emulator preferences, scroll down to "Initial command" and set it as follows:
Code:
su
startup
Restart Terminal Emulator
You should be greeted with "Start linuxchroot?" and some options, Yes or No
Type 1 to say yes, this executes linuxchroot, starting the Debian shell
Type 2 to say no, this exits the script and does not mount Debian, allowing you to use Terminal Emulator as normal
I like this arrangement, as it means I don't have to type "linuxchroot" to start it every time or to auto start it and have to exit when I don't want to use it. It's especially quick if you use SuperSU, I find this generally faster than ChainsDD's "normal" Superuser, so su is executed instantly and you can quickly type "1" or "2" and you're off!
Click to expand...
Click to collapse
OTHER IDEAS
compile C++ programs:
Code:
export PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin
apt-get install g++
Write your program, save as program.cc
Code:
g++ -o program program.cc
./program
Click to expand...
Click to collapse
Thanks for reading, I hope this helped !
Very nice. I will be trying this later.
About how much memory is being used (with and without LXDE session started)?
Thanks for your efforts.
pepar0 said:
Very nice. I will be trying this later.
About how much memory is being used (with and without LXDE session started)?
Thanks for your efforts.
Click to expand...
Click to collapse
Hi, sorry for the late reply.
TBH I don't think much memory is used at all really, to put it into perspective I've still got 140MB of RAM free whilst running this.
I haven't actually tested memory usage, but I expect you'd need over 100MB free RAM if you're planning on running LXDE. I have tried this in various situations however, and I would not recommend running zeppelinrox's V6 SUpercharger, or any other memory management script. This is because they meddle with VM heap sizes and minfrees and other RAM stuff, and ideally you should use the default 128MMB VM Heap size. This means you can use up a whole 128MB of RAM just for Linux (I don't know how processes are spread though, so you may be using more).
If you're running Sense, I'd be interested to know which version and how well this runs. If your using AOSP (CyanogenMod, AOKP, anything like that) you should be fine, as this works perfectly on Andromadus CM10.1 build 11, which is JB4.2, and presumably the heaviest version of Android.
Hope this helps, and I'd encourage you to try this, it's really cool once it's set up, even if it's not particularly useful to you
It's stuck for me right after I create the loop file. It asks me to tap the "format loop target" button but it's nowhere to be found. I'm only presented with the create target loop one.
crestofawave said:
It's stuck for me right after I create the loop file. It asks me to tap the "format loop target" button but it's nowhere to be found. I'm only presented with the create target loop one.
Click to expand...
Click to collapse
That sounds odd. Not to sound patronising, but this is all I can think of:
Have you got enough space on /data ?
Did you enable write to /system ?
Perhaps there was a Superuser error?
Have you left it long enough to finish? If it says "please wait" at the top, it's still doing it's thing. I expect this is the most likely cause, as the app doesn't make it very clear when it's finished an operation.
D'you mind sending a screenshot before and after creating the loop file, if the problem persists? Thanks, hope you sort it out
Maybe we should use Lubuntu? It takes 100-120mb at startup and it have pretty good configured LXDE and other *candy's* for touch installable.
And how about E17? it's more lightweight than LXDE. Look to Bodhi Linux *maybe we should use ARM vertion?*. It based on ububntu and It have a touch vertion too.
sergeikaspd said:
Maybe we should use Lubuntu? It takes 100-120mb at startup and it have pretty good configured LXDE and other *candy's* for touch installable.
And how about E17? it's more lightweight than LXDE. Look to Bodhi Linux *maybe we should use ARM vertion?*. It based on ububntu and It have a touch vertion too.
Click to expand...
Click to collapse
I do not know of any apps that allow you to install Lubuntu, although if you knew how you could get the IMG and do it yourself. I wrote this guide because it allows you to start from the ground up, with a simple Debian shell to installing whatever GUI and apps you want, or no GUI at all and just some terminal apps (if you can call them that).
Tat means you could install Gnome if you were so inclined, or any other window manager, desktop suite or anything, really. If you had room you could get the Android SDK. Just cause I used LXDE in my example doesn't mean you have to. Just install E17 or whatever you want and in the vnc startup file just tell it to run that instead of LXDE.
Hi!
I'm trying to install Debian Squeeze using your guide but with "linux.loop" file being on the SD-Card (I have like 100 MB free space on /data). When I clicked "Mount loop", Linux Installer after a few seconds just crashed. Then I turned it on again - I was able to start the installation anyway and now I'm installing it.
Was that crash something that could make Debian not working?
Volvo Sensus Connected Touch (SCT) is a new car audio-navi system based on systems of Parrot. SCT has hardware and software from the Parrot, but is not exactly equal. In general it has some more restrictions build in by Volvo.
The system is based on the Parrot FC6100 (not the Parrot Asteroid Smart as was first believed). Looking at the Installation manual for Sensus Connected Touch (ACU) Accessory, Part Number: 31399165 the form factor is closest to the Parrot Asteroid Tablet (PAT). The only similarity that the SCT has with the PAS is Parrot's custom base of the Android 2.3 branch which is also shared by the PAT. So, if anything is more analogous to the Parrot Asteroid Tablet (PAT) than the Parrot Asteroid Smart. (thanks to Donaldta, see post) (Link to the Volvo V40 (MY14) SCT installation manual, also attached to this post as pdf)
This is how the hardware of the SCT looks if outside of the car (thanks to @AAT):
This thread is research and development on several topics and has already some nice answers:
The starting questions:
How to get ADB working y
How to install .apk files y
How to root y
WARNING!:
The below mentioned method is an experimental way of rooting. Rooting your SCT involves some android knowledge. Me, the developers and anyone in this topic are not responsible for typo's or any damage that may occur when you follow these instructions.
ROOTING means you have complete control over the android system. This also means you can do damage to it.
Security warning:
The SCT has ADB over WIFI enabled by default. Never ever connect your Volvo SCT to an unknown and/or untrusted network! Anyone connected to that same network can harm your Volvo SCT. The same applies for connecting unknown people to a known/trusted network of yours.
Security warning 2:
If your ROOTED your SCT, you are extra vulnerable to above. Anyone with ADB on the same network has complete control over your SCT!
WARNING!
Do NOT attempt to replace the SCT's BUSYBOX executable or the command symlinks to it. Another user in this forum just sent me a private message stating that they tried this on their SCT and can no longer mount USB drives or connect to ADB over WiFi. Apparently, they also do not have a File Explorer or a Terminal Emulator installed so it seems this is going to be nearly impossible to fix and will most likely be required to swap it at the dealer. See message from @donaldta : Message
The below answers are not yet completely reviewed and tested. The answers will be reviewed in the next days. In any case the instructions below are delivered "as is" and have no guaranty. If you follow the instructions below, you are responsible for your own actions. So, before you do so, understand, or at least try to, what you are doing. If you have questions or have recommendations, post them in the topic.
The answers and instructions below are constructed from the work of @gekkekoe123 and @donaldta and the trial and error experiments of the first users of the SCT (see first pages of the topic)
This means everone using these instructions must give BIG THANKS TO @gekkekoe123 and @donaldta
Instructions to root en install apps:
Note: Instructions are tested on specific versions of the Volvo SCT
It is possible that these instructions below are not (yet) working on other versions: Other continents, newer versions etc.
If you tested it on a different continent + version, let me know, so I can put it here.
Available versions:
EU
-1.47.88 - Tested
-1.47.96 - Tested
-1.49.34 Tested
One click script version 4 in attachments cmd-frama-menu-4.zip (4.62 MB)
One-click script with menu provided by @gekkekoe123 and @donaldta
Oneclick , latest version, script is discussed from here
It is rather simple as long as You have the SENSUS CONNECTED TOUCH and a PC (prefer a laptop) which You need to connect to the same network.
How to:
1. Preparing
*Download the: cmd-frama-menu-4.zip from the page 1, first post attachments. LINK: http://forum.xda-developers.com/attachment.php?attachmentid=2636951&d=1395149723
2. Follow the instructions
The instructions are rather simple.
-Connect your SCT to the same Wifi network as your PC. This wifi network can be your home network or your local hotspot from your phone.
-Unzip the (cmd-frama-menu-4.zip) and start menu.bat found in the folder "menu"
- After starting menu.bat on your pc it will ask:
Code:
Input {IP Address of Android Device} or USB:
Type in the IP address of the SCT, can be found when You go to the settings on SCT -> WIFI -> and click on the connected network (starts with 192.-).
After that the menu look list this: (Now just type in: 1 and wait a bit so it will say complete, then type in 2 and wait a bit until complete and so on, until step 6 when the SCT will restart itself)
Code:
1 - Copy Framaroot files and execute.
2 - Install remount.sh into /system/xbin and remount as writeable.
3 - Alter /system/build.prop to ro.parrot.install-all=true
4 - Install Google Framework & Android Market
5 - Install rewhitelist.sh/setpropex/patch init.parrot.capabilities.sh
6 - Reboot Android Device
7 - Install Android Packages from APKs folder.
8 - Android Debug Bridge Shell
9 - Save ADB Bugreport to Disk
R - Input connection information & retry ADB connect.
Q - Quit
Run steps 1 through 6 in order to root the SCT.
Step 7 is optional and will install all APKs you have placed inside the APKs folder in your unzipped menu.zip folder on your pc PC.
Step 8 is for manual commands or troubleshooting.
Step 9 is for troubleshooting.
Step R is only needed when the connection to the SCT seems lost.
3. You should have now a rooted SCT.
4. Installing applications
I noticed that lots of Apps from Google Play Store can not be downloaded directly to the SCT (because the SCT is not in the available list of the apps) so a easy way is to download the Applications as ".apk" files from the PC (You can find the desired app from: http://www.appsapk.com/ or http://www.androiddrawer.com/ for example).
Then copy-paste these .apk files(make sure they do not have any spaces in the filenames) to the folder "APKs" found in the downloaded unzipped folder "cmd-frama-menu-4". To install them, run the menu.bat again and once connected with the SCT again run the step 7 to install the applications You copied to the APK folder.
If you want to install apps using the Google Play Store that are larger than 7MB or so, you need to remap the cache directory to the SD card:
Code:
remount.sh cache-sd
Then after the app installation has finished, but before you start the app, remap the cache directory to the internal SCT memory:
Code:
remount.sh cache-og
5. Enable displaying applications while driving (disable safety feature)
1. Download Android Terminal Emulator from Google Play Store on Your rooted SCT.
2. Once installed, run Android Terminal Emulator under Applications
3. touch the screen - the keyboard pops up
4. Type in "su" press ENTER
5. It should ask wether You allow Superuser or not, choose the "Allow" option.
6. Type in "rewhitelist.sh" press ENTER
7. Type in "reboot" press ENTER
6. Enable Google Maps and Voice Search
First install google.maps.6.14.4.apk by the method explained above. Then copy libvoicesearch.so to /system/lib and install Voice_Search_2.1.4.apk. These files can be found in Voice_Search_2.1.4.zip.
Here is an example of how to do this with adb:
Code:
adb connect [ip of your SCT]
adb push google.maps.6.14.4.apk /mnt/sdcard
adb install /mnt/sdcard/google.maps.6.14.4.apk
adb push libvoicesearch.so /mnt/sdcard
adb shell su -c 'remount.sh system-rw'
adb shell su -c 'cp /mnt/sdcard/libvoicesearch.so /system/lib'
adb shell su -c 'chmod 644 /system/lib/libvoicesearch.so'
adb push Voice_Search_2.1.4.apk /mnt/sdcard
adb install /mnt/sdcard/Voice_Search_2.1.4.apk
Now #reboot# and Google Maps and Voice Search should be working.
Now You should be done. Happy downloading and drive safely.
Older instructions, just for reference here, do not follow anymore.
[*]One-click script with menu provided by @gekkekoe123 and @donaldta
This one-click script with menu options is here
[*]One click script for version 1.49.34: http://forum.xda-developers.com/showthread.php?p=50846498
gekkekoe123 said:
Actually it was fine (since we are in the root folder), but since I was too lazy, I used your file. I had to correct the "true" to 1.
I also changed the menu to do this. I removed the set prop option, it's not needed anymore. Setpropex should also work on older versions.
Btw, I did the upgrade manually using adb shell, and did not used the menu.bat.
So if anyone could test it or double check the menu.bat file, it should be fine. I translated the manual commands back into the menu.bat
My SCT is upgraded and I am able to install apks Let's find out if waze lost of data is fixed. Also adjusting screen dpi is still working. But we now have setpropex so we can override everything
When you finished step 5, you need to reboot in order to be able to install apks.
As allways: no guarantee and at your own risk when using the tools
Click to expand...
Click to collapse
Manual instructions and commands:
Detailed instructions how to get ADB working between your pc and SCT
Download the Android SDK, it contains the nescesary tools like ADB.exe and Monitor.bat (Download page Android SDK)
Install the android SDK
If you are using windows: set the installation path of your SDK\platform-tools\ in your windows environment variables. So, add c:\\SDK\Platform-tools\ to it. (More instructions on this point)
Now connect your SCT to a Wifi network and also connect your laptop/pc to the same wifi network. This network can be your home network, or for example the wifi network you create with your phone wifi-tether function.
Go into the SCT>Settings>Wifi and click on your connection details. Find out the IP adress of your SCT. (example, it would be something like 192.168.43.x if you are using wifi tether from your android phone. )
Now on your pc, open the command line (cmd). Easiest is to click with shift-button hold and with Right-Mouse-Button on the folder where the files reside you want to transfer to the SCT (see instructions further for rooting). After RMB click, choose option: open command line here.
Now type:
Code:
adb connect $IPADDRESS
Replace $IPADRESS with the IP from the previous step.
ADB is now connected and you are ready to type the instructions for rooting.
Code:
D:\sdk\platform-tools>adb connect 192.168.43.5
connected to 192.168.43.5:5555
Detailed instructions how to Root SCT
Download the cmd-frama-working.zip from the attachments
Attachment
Unzip it into a folder (example: d:\sct\ )
Open the commandline in this folder
Connect to adb (see instructions above)
Do the following commands (line by line):
Usage:
Code:
adb push libframalib.so /data/local/.
adb push sploit.jar /data/local/.
adb shell mkdir /data/local/tmp/dalvik-cache
adb shell ANDROID_DATA=/data/local/tmp LD_LIBRARY_PATH=/data/local dalvikvm -cp /data/local/sploit.jar com.alephzain.framaroot.FramaAdbActivity Gimli 0
[or]
adb shell ANDROID_DATA=/data/local/tmp LD_LIBRARY_PATH=/data/local dalvikvm -cp /data/local/sploit.jar com.alephzain.framaroot.FramaActivity Gimli 0
See post here and thank developer!
Now you are rooted:
Code:
cmd line frama root by Gekkekkoe
Credits to alephzain for Framalib
using Exploit: Gimli choice: 0
Executing Check
idx: 0 value: Gimli
idx: 1 value: Aragorn
Executing Check Completed
No such user 'root:root'
No such user 'root:root'
Result: 0
Test root by command:
Code:
adb shell
su
id
On the SCT you will get a screen of SuperSU, asking if shell may have root access privileges. Say yes.
exit the su and shell using
Code:
exit
exit
Reboot the SCT
If you are still within shell, just use
Code:
reboot
If you are on command line again, use
Code:
Adb Reboot
Detailed instructions how to get Google framework and Google Play (market) on the SCT
Download the files for framework and market
Framework
Market
Push them to your SCT
Code:
adb shell su root -c 'mount -o remount,rw ubi0:system /system'
adb push GoogleServicesFramework-2.2.1.apk /data/local/.
adb push Market-3.3.11.apk /data/local/.
adb shell
Now install them
Code:
cp /data/local/*.apk /system/app/.
chmod 644 /system/app/GoogleServicesFramework-2.2.1.apk
chmod 644 /system/app/Market-3.3.11.apk
reboot
After reboot, connect the SCT to internet
Open the google market on your SCT (in the applications drawer)
Log in with your google credentials
Accept terms and conditions
Be sure to stay connected to internet, google market will update itself after some minutes
Connect Adb and force SCT to reboot again.
Open Market/Play and Accept terms and conditions again! (now for the updated versions)
Wait for some time, it will again update itself again.
Open adb, force reboot again
Last time open Play (It should be named Play now, since it is updated, if it is not, wait longer and try previous steps again)
Go into My Apps, update SuperSu
After update, open SuperSu from your app drawer
It will ask to update SuperSu Binary, use Normal Method
Say thanks to Chainfire for the SuperSu
In settings, you can disable the popup that will ask if you want to run an App that is using root. Can be convenient, but also dangerous (apps can use root even without notifying you.)
Detailed instructions how to installation of other apps
We have to enable installing all apps on SCT. Warning, this means editing the build.prop, which is vital to the system. Typing errors can result in a system that will not boot correctly.
More methods apply here, use one which is convenient to you:
Fast method:
Code:
adb shell
mount -o remount,rw ubi0:system /system
sed -i 's/ro.parrot.install.allow-all=false/ro.parrot.install.allow-all=true/' /system/build.prop
Slow method, more control, moderate risk:
Code:
adb pull /system/build.prop
edit content and set to true. Content of the file should look like this
Code:
#TODO Set to false for prod #Package install limitations. Set to false to allow only the install of verified packages
ro.parrot.install.allow-all=true
replace build.prop with proper one.
Code:
adb shell su root -c 'mount -o remount,rw ubi0:system /system'
adb push build.prop /system/build.prop
If above does not work, use method like the google framework.
Third method: install ES file explorer, use the rooting functions of this app to edit build.prop
Instructions in this post and this post
Detailed instructions how to install APK files
Method 1: Use google play
Method 2: If not available on google play, use a Google Play APK downloader on your pc and install using the
Code:
ADB install
or using
ES Fileexplorer mentioned above
Detailed instructions how to make apps available during driving
All apps are behind a security wall of the SCT. When driving >5km/h, all apps not listed in the whitelist.xml will be disabled. To enable your installed apps you have to edit the whitelist.xml
Warning: it is a safety feature you are disabling now, it is your own responsability when using apps during driving
Slow method:
Get the whitelist.xml from your SCT
Code:
adb pull /system/etc/whitelist.xml
Find out which packages are installed and have to be listed there:
Code:
adb shell
pm list packages
Other method, look to the url of google play on your pc, see bold part: https://play.google.com/store/apps/details?id=com.estrongs.android.pop
List the packages by adding new lines with the package names
Edit the whitelist.xml using a smart text editor. Preferably use Notepad++
Copy the whitelist back to SCT
Code:
adb push whitelist.xml /data/local
adb shell
su
mount -o remount,rw ubi0:system /system
cp /data/local/whitelist.xml /system/etc
reboot
Scripted method:
Download script
Instructions in this post
FAQ
Audio is not working when using application X
This is a feature or limitation by design
- TomTom and other navigation apps will break Sound/Audio due to this feature.
If you have more, PM me or react in topic
TIPS
Use a USB keyboard in combination with ES file explorer or a Shell app to edit files on the system.
If you have more, PM me or react in topic
Informational links:
Information about SCT:
http://www.volvocars.com/intl/sales-services/sales/sensus-connected-touch/pages/default.aspx
Official FAQ of SCT:
http://www.volvocars.com/intl/top/support/pages/sensus-connected-touch-faq.aspx
Dutch experiences with SCT:
http://www.volvo-forum.nl/viewtopic.php?t=54935&postdays=0&postorder=asc&start=0
SCT update files:
http://www.parrot.com/nl/support/sensus-connected-touch
Current version: All regions - 1.49.34
How to unpack the update (.plf) files:
Download the plftool
Basically, download, unzip, and go into the command line, the binaries directory and use the command syntax, "plftool -i -o "
And please take the time to thank hoppy_barzed for hosting it for us and for loveshackdave for providing the tool to use it.
Linked topic of Parrot Asteroid Smart:
http://forum.xda-developers.com/showthread.php?t=2118432
Developments of other users (copied from PAS topic)
donaldta said:
Alright, I found an interesting startup script for the SCT. The path inside the archive is "FileSystem\system\etc\set_adb_usb.sh"
Code:
#!/system/bin/sh
#
# Author: Yann Sionneau <[email protected]>
#
# This script is called by a udev rule when a cable is plugged in USB0 port.
# This script sets adb.tcp.port to -1 meaning that ADB will then listen on USB
# instead of TCP/IP.
# Then this script will restart adbd service
export PATH=/system/bin:/system/xbin
if [ -f /tmp/cache/others/adb_usb ]
then
exit 0
fi
touch /tmp/cache/others/adb_usb
setprop
service.adb.tcp.port -1
stop adbd
start adbd
This leads me to believe the Android Debug Bridge (ADB) is running over TCP by default, sort of like on the original Google TV. So, you might be able to download the Android Developer Tools. Unzip it, and then at the command line use "platform-tools\adb connect <IP.address.of.SCT>" to connect to your SCT and install third party apps by either using "platform-tools\adb install <package_name>" or use the GUI, "\tools\monitor.bat" Either than or try and figure out which port on the SCT is USB 0 which turns into a ADB port when something is connected to it.
On a side note, I'm a little tired of having to respond to people about giving access to the SCT software when it is already available. The download is listed above, I fixed the link to make it even easier. All anyone needs to extract the files from the archive is the plftool that loveshackdave created and mentioned in this post.
loveshackdave said:
Okay, I've posted the binaries and source for my .NET plftool project here. I've handled the symlink sections by simply creating a file called [filename].simlink that contains the section data. The should be fine for rebuilding the plf file. I've still got to handle the file permissions byte and figure out what the 2 unknown uint's are in the file_action header. the permissions shouldn't be too much of an issue, I'm thinking of creating a filesystem meta-data file that will hold all this information for rebuilding, unless anyone has any better ideas.
Click to expand...
Click to collapse
Basically, download, unzip, and go into the command line, the binaries directory and use the command syntax, "plftool -i <input_file> -o <output_directory>"
And please take the time to thank hoppy_barzed for hosting it for us and for loveshackdave for providing the tool to use it.
Click to expand...
Click to collapse
johnnie_w said:
I succeeded in connecting to SCT over ADB. ADB is indeed enabled over TCP/IP by default. So I tried to install an apk:
Code:
C:\android\adt-bundle-windows-x86-20130911\sdk\platform-tools>adb install c:\android\apk\Framaroot-1.6.0.apk
285 KB/s (2124410 bytes in 7.265s)
pkg: /data/local/tmp/Framaroot-1.6.0.apk
Failure [INSTALL_FAILED_INVALID_APK]
Hmm, this didn't work. The logcat output:
Code:
D/AndroidRuntime( 2786): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
D/AndroidRuntime( 2786): CheckJNI is OFF
D/dalvikvm( 2786): creating instr width table
D/AndroidRuntime( 2786): Calling main entry com.android.commands.pm.Pm
D/dalvikvm( 2041): GC_EXPLICIT freed 10K, 50% free 2735K/5379K, external 2801K/3132K, paused 44ms
W/ActivityManager( 1366): No content provider found for:
W/ActivityManager( 1366): No content provider found for:
D/PackageParser( 1366): Scanning package: /data/app/vmdl-1074467422.tmp
W/PackageParser( 1366): Signatures files not found.
D/PackageManager( 1366): Scanning package com.alephzain.framaroot
W/PackageParser( 1366): Signatures files not found.
W/PackageManager( 1366): Package couldn't be installed in /data/app/com.alephzain.framaroot-1.apk
It looks like it's searching for a specific file. This is probably because installation from Unknown Sources is disabled, and I can't enable it in the sqlite database because it's not readable without root. Hmm, chicken and egg problem. Any help would be greatly appreciated!
Click to expand...
Click to collapse
donaldta said:
Okay, let's try installing something a little more legitimate than Framaroot first, since that absolutely needs the "unknown sources" to be enabled. We might have to learn how to crawl before we can run.
It seems like it is looking for the package's signature file. Try something like ESFileExplorer_120.apk or another Android Market app which should have the proper signatures inside of it. I tested it myself on the Asteroid Smart by uninstalling ES File Explorer, disabling "Unknown Sources", rebooting it, and then re-installing it via ADB.
Otherwise try other things such as "adb remount" which remounts the rootfs as writeable, "adb push <package_name.apk> /data/app" this attempts to copy the packing into the user's install directory, "adb push <package_name.apk> /data/system" this attempts to copy the package into the system. If you're used to linux command line then play around with "adb shell" to see what opportunities exists. Is this where you tried "sqlite3 /data/data/com.android.providers.settings/databases/settings.db"? If you can't do it directly, maybe copy settings.db to the sdcard and use sqlite3 to edit it then copy the modified version over? Unfortunately, I don't have a SCT so we'll need someone with one that can tinker with linux/android to help find a way.
Click to expand...
Click to collapse
Nice work
How to get ADB working?
ADB is enabled over TCP/IP by default. This means that you only need to get the IP address of the device, and you can connect to it using
Code:
adb connect $IPADDRESS
when connected to the same network. If you want to connect over USB, just plug in a USB cable in USB0 (I don'tknow yet which one this is), and ADB should switch to USB.
What can we do with ADB?
I only tried once, but I was able to get a shell. Busybox is installed, so all regular Linux commands are available. The /data directory is not accessible directly, we need root for that.
Can I just install Framaroot?
No, I wasn't able to install Framaroot directly. It complained about the signature, which is probably caused by the fact that installation from unknown sources is disabled.
So, what is the first step to be done?
I think the first step is to enable installation from unknown sources, and then install a filemanager or root the SCT. This can be done with something like:
Code:
adb pull /data/data/com.android.providers.settings/databases/settings.db settings.db
sqlite3 settings.db "update secure set value=1 where name='install_non_market_apps';"
adb push settings.db /data/data/com.android.providers.settings/databases/settings.db
So let's try and fix this thing!
Thanks for the topic! Of course I'll be following closely!
santu001 said:
Thanks for the topic! Of course I'll be following closely!
Click to expand...
Click to collapse
Same here!
If I can be of any help (although I can't see how )
Since we can't change the setting non_market directly, android central developed a script to install without modify.
Maybe we can try this one?
http://forums.androidcentral.com/an...-central-sideload-wonder-machine-v-1-2-a.html
Only prerequisite is connection over ADB. No root required.
Hmm, looking into the sources it seems just a pair of batch files. I don't see magic inside it, other then a plain ADB install command.
johnnie_w said:
I think the first step is to enable installation from unknown sources, and then install a filemanager or root the SCT. This can be done with something like:
Code:
adb pull /data/data/com.android.providers.settings/databases/settings.db settings.db
sqlite3 settings.db "update secure set value=1 where name='install_non_market_apps';"
adb push settings.db /data/data/com.android.providers.settings/databases/settings.db
So let's try and fix this thing!
Click to expand...
Click to collapse
I think the first step is to test installing packages other than Framaroot, maybe something from the Google Play Store or Asteroid Market via ADB.
getiem said:
Since we can't change the setting non_market directly, android central developed a script to install without modify.
Maybe we can try this one?
http://forums.androidcentral.com/an...-central-sideload-wonder-machine-v-1-2-a.html
Only prerequisite is connection over ADB. No root required.
Hmm, looking into the sources it seems just a pair of batch files. I don't see magic inside it, other then a plain ADB install command.
Click to expand...
Click to collapse
I believe that is because ADB is considered a "trusted source", so you can install software through it. This is how AT&T users were able to install Android Packages a long time ago while the Market app wasn't available and the "allow unknown sources" option was removed from settings. The only caveat is that the packages needs to be signed.
donaldta said:
I think the first step is to test installing packages other than Framaroot, maybe something from the Google Play Store or Asteroid Market via ADB.
Click to expand...
Click to collapse
I agree on that. I have downloaded several APK's to my laptop and will test in a few hours. I'll let you know!
johnnie_w said:
I agree on that. I have downloaded several APK's to my laptop and will test in a few hours. I'll let you know!
Click to expand...
Click to collapse
Btw, I found this topic on Stack Overflow particularly interesting.
Android Known Sources
So I have looked through the Android Open Source Project (AOSP) Source code now to see how that Unknown Sources check is done. It is more complicated than known source = android play.
So first of all for background, that Unknown Sources check and message are generated by INSTALL_NON_MARKET_APP. This flag comes up in few places, but the main place is in PackageInstallerActivity. Infact, this is the only place in AOSP where it comes up and is used to some effective degree. Let's look at that here:
Code:
String callerPackage = getCallingPackage();
if (callerPackage != null && intent.getBooleanExtra(
Intent.EXTRA_NOT_UNKNOWN_SOURCE, false)) {
try {
mSourceInfo = mPm.getApplicationInfo(callerPackage, 0);
if (mSourceInfo != null) {
if ((mSourceInfo.flags&ApplicationInfo.FLAG_SYSTEM) != 0) {
// System apps don't need to be approved.
initiateInstall();
return;
}
}
} catch (NameNotFoundException e) {
}
}
if (!isInstallingUnknownAppsAllowed()) {
//ask user to enable setting first
showDialogInner(DLG_UNKNOWN_APPS);
return;
}
initiateInstall();
So PackageInstaller is a package included with AOSP that understands how to handle the ACTION_VIEW intent for APK files. PackageInstaller checks two things before it allows an app to be installed.
That the app is a system app. If an app is a system app, it doesn't care, it tells the package manager to install your app. This means that if Samsung puts their Samsung market store as a system app on Samsung devices, then it is automatically a trusted source. Infact, it will skip step 2 here.
If that system flag is not set. If that flag is not set, and thus you are not a system app, then therefore you are not a trusted source. That being said, System apps can also skip the package installer and just go straight to calling the hidden function installPackage which can be found in PackageManagerService. This seems to be what the GooglePlayStore does, as when I disable the installation capabilities on PackageInstallerActivity I can still install apks just fine.
So to sum up: Known sources are SYSTEM APPS not just applications downloaded from google play. Google play completely circumvents the INSTALL_NON_MARKET_APP flag because it does not use the PackageInstaller. If you create an app that is not a system app, your only method for installing APKs is to use the PackageInstaller. Since your app is not a system app it will check to see if unknown sources is disabled.
Click to expand...
Click to collapse
donaldta said:
Btw, I found this topic on Stack Overflow particularly interesting.
Click to expand...
Click to collapse
There is also a second system, app verification. Does that come into play here?
http://www.androidos.in/2013/07/google-brings-verify-apps-support-to-android-2-3-or-higher/
https://support.google.com/accounts/answer/2812853?hl=en
getiem said:
There is also a second system, app verification. Does that come into play here?
http://www.androidos.in/2013/07/google-brings-verify-apps-support-to-android-2-3-or-higher/
https://support.google.com/accounts/answer/2812853?hl=en
Click to expand...
Click to collapse
As far as I know that check made during sideloading apps for devices with Android 4.2 and above. Otherwise, it is only checked via Android Market/Google Play for Android 2.3 devices and above. Since none of the Parrot devices have the Google Market it is probably a moot point. I guess Parrot / Volvo could have back ported it into the SCT and Framaroot might be picked up as Malware. But, not every app would be flagged as malware.
---------- Post added at 09:18 AM ---------- Previous post was at 08:47 AM ----------
getiem said:
Volvo Sensus Connected Touch (SCT) is a new car audio-navi system based on the Parrot Asteroid Smart (PAS). SCT differs in hardware and software from the PAS. Software looks about 90% equal, with some more restrictions build in by Volvo
Click to expand...
Click to collapse
Btw, this is a bit misleading, According to the build.prop on the SCT...
# begin build properties
# autogenerated by buildinfo.sh
ro.build.id=V01.47.88_Volvo_EU
ro.build.display.id=V01.47.88_Volvo_EU
ro.build.version.incremental=
ro.build.version.sdk=10
ro.build.version.codename=REL
ro.build.version.release=2.3.7
ro.build.date=mercredi 28 août 2013, 19:05:30 (UTC+0200)
ro.build.date.utc=1377709530
ro.build.type=user
ro.build.user=Parrot
ro.build.host=FR-B-800-0057
ro.build.tags=release-keys
ro.product.model=ACU Volvo
ro.product.brand=AFM
ro.product.name=fc6100_volvo
ro.product.device=fc6100_volvo
ro.product.board=fc6100-android
ro.product.cpu.abi=armeabi-v7a
ro.product.cpu.abi2=armeabi
ro.product.manufacturer=Parrot
ro.product.locale.language=en
ro.product.locale.region=GB
ro.wifi.channels=
ro.board.platform=omap3
# ro.build.product is obsolete; use ro.product.device
ro.build.product=fc6100_volvo
# Do not try to parse ro.build.description or .fingerprint
ro.build.description=fc6100_volvo-user 2.3.7 V01.47.88_Volvo_EU release-keys
ro.build.fingerprint=AFM/fc6100_volvo/fc6100_volvo:2.3.7/V01.47.88_Volvo_EU/:user/release-keys
# end build properties
# system.prop for FC6100 Volvo
# This overrides settings in the products/generic/system.prop file
#
Click to expand...
Click to collapse
The system is based on the Parrot FC6100 not the Parrot Asteroid Smart. And looking at the Installation manual for Sensus Connected Touch (ACU) Accessory, Part Number: 31399165 the form factor is closer to the Parrot Asteroid Tablet (PAT). The only similarity that the SCT has with the PAS is Parrot's custom base of the Android 2.3 branch which is also shared by the PAT. So, if anything is more analogous to the Parrot Asteroid Tablet (PAT) than the Parrot Asteroid Smart.
donaldta said:
As far as I know that check made during sideloading apps for devices with Android 4.2 and above. Otherwise, it is only checked via Android Market/Google Play for Android 2.3 devices and above. Since none of the Parrot devices have the Google Market it is probably a moot point. I guess Parrot / Volvo could have back ported it into the SCT and Framaroot might be picked up as Malware. But, not every app would be flagged as malware.
---------- Post added at 09:18 AM ---------- Previous post was at 08:47 AM ----------
Btw, this is a bit misleading, According to the build.prop on the SCT...
The system is based on the Parrot FC6100 not the Parrot Asteroid Smart. And looking at the Installation manual for Sensus Connected Touch (ACU) Accessory, Part Number: 31399165 the form factor is closer to the Parrot Asteroid Tablet (PAT). The only similarity that the SCT has with the PAS is Parrot's custom base of the Android 2.3 branch which is also shared by the PAT. So, if anything is more analogous to the Parrot Asteroid Tablet (PAT) than the Parrot Asteroid Smart.
Click to expand...
Click to collapse
Well...good info! Another part of the puzzle
THANK YOU
Thank you very much guys for this VERY IMPORTANT thread !!
I'll follow carefully cause the SCT is really unusable at this moment with no apps and a lot bugs.
THANK YOU
@getiem
Maybe updating your opening post with the updated information!
BTW... Great Topic!
We're getting somewhere...
So thanks to all who contribute.
Yesterday I tried to install several APK's, including ES File Explorer. Unfortunately the same error message:
Code:
C:\android\adt-bundle-windows-x86-20130911\sdk\platform-tools>adb install c:\and
roid\apk\ESFileExplorer_120.apk
466 KB/s (3949829 bytes in 8.273s)
pkg: /data/local/tmp/ESFileExplorer_120.apk
Failure [INSTALL_FAILED_INVALID_APK]
I haven't tried pulling or pushing anything yet, will do that tonight.
santu001 said:
@getiem
Maybe updating your opening post with the updated information!
Click to expand...
Click to collapse
Done.
ps, I will be updating regularly the OP, but interval will be weeks, not daily or hourly. Especially weekends, I will be offline.
ps 2. Yesterday i recieved my new car with SCT. I will test the whole car first before hacking into the SCT myself.
Great
Thanks for all the efforts here. I'll be following closely
Maybe the app should be on whitlelist.xml? Try to rename the app?
I was trying to install the SCT launcher to Tablet and the catlog system says: package has no signatures matching those in shared user android.uid.system
Any methods to come over this?
jaanusj said:
Maybe the app should be on whitlelist.xml? Try to rename the app?
Click to expand...
Click to collapse
The /etc/whitelist.xml file is a list of android packages which can be running regardless of the parking brake detection. Each permutation will use the following syntax, <package name="{android.package.name}"/>, where the {android.package.name} uses the full Java-language-style package name for the application. This is listed in the APK's AndroidManifest.xml file as the "manifest package=" definition and will become the filename for the app when installed in either the /system/app or /data/app directories.
Incidentally, the java style package name also how each app is identified through the Google Play store. For example, <package name="com.tomtom.uscanada"/> can be found on Google Play via https://play.google.com/store/apps/details?id=com.tomtom.uscanada
jaanusj said:
I was trying to install the SCT launcher to Tablet and the catlog system says: package has no signatures matching those in shared user android.uid.system
Any methods to come over this?
Click to expand...
Click to collapse
Apparently, there's a way to disable signature checking by decompiling, modifying, and recompiling /system/framework/service.jar. I've never done this, so I'm not exactly comfortable with it but there are plenty of threads on XDA in regards to the topic.
There is also the Lucky Patcher app that apparently can patch core.jar to disable signature verification. It has some other security defeating functions but again, I've never used it myself so you'll have to do your own research.
Btw, when a package is complaining about "shared user", this usually points to the /data/system/packages.xml where the sharedUserId for the respective package are stored. Ultimately, this allows packages with the same sharedUserId to communicate with one another since they will be running in the same virtual machine.
johnnie_w said:
Yesterday I tried to install several APK's, including ES File Explorer. Unfortunately the same error message:
Code:
C:\android\adt-bundle-windows-x86-20130911\sdk\platform-tools>adb install c:\and
roid\apk\ESFileExplorer_120.apk
466 KB/s (3949829 bytes in 8.273s)
pkg: /data/local/tmp/ESFileExplorer_120.apk
Failure [INSTALL_FAILED_INVALID_APK]
I haven't tried pulling or pushing anything yet, will do that tonight.
Click to expand...
Click to collapse
Well, that is disappointing. I take it that you're still getting the "Signatures files not found" syntax errors from "logcat -d' while this is occuring? I'm wondering if the problem is the reverse of what jaanusj is trying to accomplish by installing AcuHome.apk on his Parrot Asteroid Tablet. And by that signatures do exist in the packages but maybe they're not being recognized as valid because the ROM isn't aware of them.
A good test for this is to install a package from the Asteroid Market, download it using "adb pull", uninstall the app, then try a "adb install" or "adb push" to reinstall it.
I tried to pull and push an APK, no luck. Pulling worked but I couldn't push it back to /system/app. We need root rights for this apparently. Also for patching the jar file or using the Lucky Patcher we need root. I'm wondering what the device is looking for. We have to find that out, maybe we can modify APK's so it does accept them. Any other ideas?
EDIT: Skip to the bottom EDIT for the short version..
Preamble: I searched for a fix to this recently and over the past 10 months and haven't seen any real solutions to this. Most people have probably experienced this issue at some time flashing roms, especially those people running gapps-free Android :highfive: such as myself. A band-aid for fixing this is running gapps' SetupWizard and/or CM's CMAccounts, I started adding CMAccounts.apk to /system/app some months ago to fix this. I was never satisfied with this workaround though since it doesn't narrow down the actual problem, and I really like sticking to the AOSP experience, open-source, no Stasi-esque permissions, and without the need to taint my installation just to set it up (setupwizard does a lot more than you might think).
Using some additional skills I didn't have 6 months ago, I finally isolated the issue to the SQL database /data/data/com.android.providers.settings/databases/settings.db, table global, value name device_provisioned. It is set to "0" by default which leads to all these ridiculous problems, and setting it to "1" + a reboot fixes all of these problems for me. Setting it back to "0" + reboot breaks everything again, back to "1" fixes, provision.apk present or removed.. I searched for (sqlite3 dump | grep) lots of other provision and setup value differences... tested this a lot.
!!!BACKUP /data/data/com.android.providers.settings/databases/settings.db before attempting this. Use 'busybox cp -p /data/data/com.android.providers.settings/databases/settings.db Your_Backup_Location' to copy and keep correct permissions on it. I would do a nandroid backup maybe anyway. This should be harmless or very helpful, but it's a su'd command in depths of /data so ya never know.
A couple simple ways to get this set right since you can't reliably grep'n'sed here: Get a nice free sql-frontend app off fdroid or xda -very handy- and go to the settings.db file, 'global' table, and then find or add "device_provisioned" in the name column and "1" in the value column. Root Explorer has this built in I think. The better way though is to pull up the 'adb shell' terminal remotely or use a terminal emulator from the phone with free && adfree Jack Palevich's Terminal Emulator, Spartacus Rex' Terminal IDE (recommended ...for everything!), anything using a jni_exec java execute emulation command. Also Ghisler's Total commander file manager has a built-in command line for convenient executions (or cool shell-script shortcuts you can make --it was actually the first tasker).
# Enter each command line by line (after '>'):
Code:
>su
>$(which sqlite3) /data/data/com.android.providers.settings/databases/settings.db
>update global set value="1" where name="device_provisioned";
>.quit
>exit 0
# One-liner
Code:
su && $(which sqlite3) /data/data/com.android.providers.settings/databases/settings.db 'update global set value="1" where name="device_provisioned";'; exit 0
Then just reboot, enjoy that home softkey that takes you to your launcher home.. your notification bar that displays your notifications. lol such basic s***.
Hope this can help someone else out as much as it did me. You don't have to use gapps/setupwizard to fix it! I also want to make sure there isn't another rogue SQL.db value. (btw if you happen to read this and have a broken back softkey/button, your problem is likely the lib file /system/lib/jni_latinime.so. Thought I'd throw that out there.)
EDIT: Heres an update short version. I added another sqlite value that needs correcting in ROMs without gapps setup bla installed. Run these commands in terminal emulator or via adb. Just copy and paste, they need to be exact.
Check that the values on the right are "1" when you fire off:
Code:
su -c '"$(whence -p sqlite3)" /data/data/com.android.providers.settings/databases/settings.db '\''select * from global where name="device_provisioned"; select * from secure where name="user_setup_complete";'\'
Otherwise or just to be safe, fire off this wicked one liner(Warning: reboots when finished):
Code:
su -c '"$(whence -p sqlite3)" /data/data/com.android.providers.settings/databases/settings.db '\''update global set value="1" where name="device_provisioned"; update secure set value="1" where name="user_setup_complete";'\'' && sync && fsync /data; sleep 3; svc power reboot'
Done, 1-2 steps.
Great write up and worked perfectly. Any more tips tricks advice or links for non-gapps users?
namtombout said:
Great write up and worked perfectly. Any more tips tricks advice or links for non-gapps users?
Click to expand...
Click to collapse
Yeah man, glad it worked. Cheers to your cojones for trying it!
What I usually do for a no gapp solution is:
-grab the libjni_latinime lib from microgapps cause its needed for the aosp keyboard swipe usually
-use "gapps browser" for Google related stuff like gmaps.
-or use rmaps (this and gapps browser need the maps api, so you gotta pull the google maps framework jar or use the "no-gapps project" hack api /system/framework/*google*jar. Make sure to add the corresponding /etc/permissions/*google*xml files too)
-instead of gmail I use the standard email client of k9
-instead of play I use fdroid, aptoide sometimes, nextwap.net, or mobilism forums, or a lucky patcher cracked Google play. (careful with the non-fdroid ones)
Sorry bout this 6 month late reply, Jesus I gotta watch my posts more closely.
So, by going into the settings menu of the FTV and toggling the ADB Debug flag, this allows for installing via a push from ADB.
The text that is displayed when changing this value also says that by enabling the setting, it allows for package installs from unknown sources.
Is this not quite the case though?
Using ES File Manager, when selecting an apk package located in the downloads folder on the device, the message shown in the attached screenshot appears.
Since there's no way to do so from the front-end, I am assuming that we will need root to change the flag to truly allow installing from any source?
Any possible way to do this without root?
mkhopper said:
So, by going into the settings menu of the FTV and toggling the ADB Debug flag, this allows for installing via a push from ADB.
The text that is displayed when changing this value also says that by enabling the setting, it allows for package installs from unknown sources.
Is this not quite the case though?
Using ES File Manager, when selecting an apk package located in the downloads folder on the device, the message shown in the attached screenshot appears.
Since there's no way to do so from the front-end, I am assuming that we will need root to change the flag to truly allow installing from any source?
Any possible way to do this without root?
Click to expand...
Click to collapse
Yeah, this isn't currently possible for the public. There is a root exploit(s) already developed but they have not been released yet. The developer, jcase, said he will release an exploit on the same day the upcoming Fire TV update is pushed (the exploit will not be compatible with the update so if you want it you'll need to follow the instructions in the other thread for blocking OTA updates).
mkhopper said:
Any possible way to do this without root?
Click to expand...
Click to collapse
Are you having issues with ADB? We can probably help you get those resolved.
Chahk said:
Are you having issues with ADB? We can probably help you get those resolved.
Click to expand...
Click to collapse
Thanks, but no. I use the automatic tool to push packages with no problems. I was just looking for other methods of package installation that could be done directly while on the FTV.
mkhopper said:
Thanks, but no. I use the automatic tool to push packages with no problems. I was just looking for other methods of package installation that could be done directly while on the FTV.
Click to expand...
Click to collapse
Not at this time. Amazon disabled side-loading of APKs from the device itself. Root would be the only way to get around that.
mkhopper said:
Thanks, but no. I use the automatic tool to push packages with no problems. I was just looking for other methods of package installation that could be done directly while on the FTV.
Click to expand...
Click to collapse
http://forum.xda-developers.com/showthread.php?t=2715315
Sent from my MZ617 using XDA Premium 4 mobile app
Kramar111 said:
http://forum.xda-developers.com/showthread.php?t=2715315
Click to expand...
Click to collapse
several days ago it occurred to me to alternatively use sshd for terminal access, because:
-a) I feel a little unsafe leaving adb wifi enabled all the time (ok it's only a small thing to turn it on and off, but still) - and for security reasons there is no way to enable/disable it programmatically e.g. from a script/shell/terminal/app (well theoretically this is not exactly true, but practically it is)
-2) some people (i.e. me) would like to do shell/terminal remotely sometimes, rather than on the AFTV (and other people don't have/want a keyboard)
ssh access makes a great alternative to Term.apk, but the problem is:
- Term.apk and/or (pick your favorite android ssh server) don't have permission to run e.g. "pm install foo.apk" - it will fail. (btw 'pm' is a great command, take a look sometime at all the options. it shares a lot of functions as the adb command itself. 'am' is another fun command...)
- so, the hilarious workaround of enabling adb wifi, "adb connect", and then finally "adb shell" or "adb install" etc., is still required. (b/c the adb user is in the 'shell' group, among others - giving it permission to run /system/bin/pm) - oh well.
for random reference:
Code:
127|[email protected]:/ $ id
uid=2000(shell) gid=2000(shell) groups=1004(input),1007(log),1009(mount),1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),3002(net_bt),3003(inet),3006(net_bw_stats)
[email protected]:/ $ exit
[email protected]:/ $ id
uid=10009(app_9) gid=10009(app_9) groups=1015(sdcard_rw),1028,3003(inet),50009(app_40009)
(also note it appears the adb shell user might possibly have 'mount' abilities, but since the /dev/block/sd* nodes permissions' are really locked up, who knows...)
*** New Tool Added: 04-06-2017 ***Warning: 'extremely powerful and dangerous tool'
This tool is designed to execute commands as root + system_server && install_recovery. While this example shows how to disable packages please be aware that a typo will be executed on the system as a command.
General Notice:
This package disabler is Android 6.01 64 bit and it isn't Samsung specific.
This tool is currently limited to only two contexts and therefore may not currently be able to disable "some??" packages.. Please let me know if that is true and I will attempt to find the correct context to disable the problem package.
Please note
This tool is part of a root kit I'm designing but since it's purpose was never a package disabler it isn't likely to receive updates. If you have an issue and you're waiting for a correction it's gonna be some wait unless you pm me. (i'm trying to learn forums, best thing to do is PM me to make me aware of your post here)
Information Updates:
You can disable every AT&T app on the device for a net gain on battery performance for your device. But if you disable some of the security logging and Android proper packages you will start seeing a net loss on batter performance. I was at < 1% over night before I got crazy.. Now I'm back to 6% battery lost in 6 to 8 hours of screen off time.
(obviously a tool that can disable a package can enable it also so keep careful track of your cmd_list.txt files)
Instructions
Don't brick your phone... just kidding see in depth instructions on my github
sources, no binaries
April 12 2017 sources have been majorly overhauled, binaries are beta beta.. however, package disabling power not increased
--Android 5.11 r2 64-bit binary toolbox and applypatch 'till' now added. ubuntu + ndk needed to make run5
https://github.com/droidvoider/CVE-2016-5195_GreyhatRootProject_Root_Console
BINARIES - NO SOURCES -instructions for disabling packages are in the zips
Linux
https://drive.google.com/open?id=0B-fnF5v-xg6OYmdreVNJOGlLWUE
Windows (i didn't test that batch file.. edit the batch file it's just a "batch" of commands)
https://drive.google.com/open?id=0B-fnF5v-xg6OYmdreVNJOGlLWUE
Scope:
dirtycow 5195 is patched November 2016.. If you are running Android 6.01 you may be able to flash the October 2016 kernel to your phone to bypass the patch
1. First make sure you have the AP file from your firmware.. (specifically boot.img and recovery.img which are included in the AP file)
2. Backup your device.
3. Use Odin to flash PJ1 boot.img / recovery.img to your phone
https://drive.google.com/open?id=0B-fnF5v-xg6OR1VWRTItWFVOTVE
4. Constantly check your phone, if it is getting hot or losing a lot of battery fast you need to stop... restore it and forget this
5. as long as it's all good see the instructions included with the tool
OLD PROCESS BELOW
************************************************************ UPDATE: 02/21/2017 ************************************************************************
This exploit is powerful and from what I can tell you don't need to use adb at all to make it work. Create an archive of the app with your tool, I listed what I used below. Install from archive. "app crashes". There are 3 updaters that I kill: com.sec.fwservice + com.sec.android.soagent + com.ws.dm. Any apps I can disable in App Manger I disable normally instead. For example if you begin disabling Google play it will allow you to fully disable it. This was the biggest thing that made my batter life better. You can use the adb commands, script and etc also if you want to do anything and everything to avoid additional updates. Hopefully I'm right because I am done with updating.
**** Warning **** Disabling the wrong thing this way can cause the phone to crash so hard you need to flash firmware to restore it. Make sure you have backed up and that you have your firmware ready. Also be warned that in my experience devices can suddenly crash & need repair from doing this type of stuff!!
tESted on firmware N920AUCS4CPK1 Android 6.01 w/Nov. Sec. Patch
Overview of the process
Our goal is to completely remove most AT&T from the application manager list and have AT&T software show up as a regular app, not a hidden system app. I am unsure if we need to have a fresh flash and how far you need to go in order to achieve our intended goal. I am fairly confident we need only change system settings to off for AT&T + Knox that and then fire this script. If that is not enough please see page two. I would very much appreciate feedback so I can edit this.
===> REMINDER <===
Backup all your contacts, text messages, downloaded files and also individually back any apps there are important to you. Also have a look at your /sdcard/ to see what's there. Do a full backup on the entire phone just in case you forgot anything.
*** Prepare to have to flash/wipe data to get this to work as I've only truly tested this after a recent flash personally!!! ***
This walk through utilizes the following technologies you will need to Google
You need the platform-tools from Android Studio SDK it comes with adb. (You can probably google platform-tools directory and download it)
(path environment needs to be set in the script or just fully qualify the location of adb which is what I do) <change to match your path>
I assume you understand how to download a file, open command prompt, cd to the directory it's download to and edit the path to your platform-tools inside the batch file
I also assume you can figure out the Samsung USB driver for Windows and test that you can adb shell to your device.
I assume you can get into Download mode and flash your firmware with Odin / Windows using a usb cable.
Steps to brick your perfectly good working AT&T Note 5 phone
Denial of permission and general rearrangement of system apps Version .0008 beta
Fresh after a flash please block the signal on your phone if possible. I always block signal!!!
1.) Turn on developer options then confirm that you have OEM unlock on(like it matters), USB Debugging On and default Verify Apps via USB remains off
2) Kill all AT&T running processes DEVELOPER OPTIONS | RUNNING SERVICES (get Smart Limits, Protect app, ATT yahoo mail, anything ATT)
every opportunity)
2A) Package disabler is awesome leave it running if you have it we don't need anything special for adb, besides adb.
3) Plug your phone into your PC via usb and get it connected.. (adb devices "unauthorized means you didn't say ok on phone in time unplug/replug try again")
3a) adb shell should log you into the phone and exit should get you back out (we don't want to be in the shell just testing the connection)
4.)Turn off "can make system changes" for AT&T apps. Application Manger | More | Change System Settings | More | Show System Apps -- Turn off anything AT&T (I also kill anything I can knox, samsung)
5) Fire this script on your phone (obviously you will have it connected to your pc, allowed the connection on your phone screen)
Basic commands I'm using, I prioritize com.ws.dm and then I run the commands on the rest of AT&T:
<This small snippet is a linux bash shell while the attached script is a Windows example>
#NOTE TO LINUX USERS: take the rest of the script from the windows batch and convert it to bash
#!/bin/bash
/opt/Android/Sdk/platform-tools/adb devices
/opt/Android/Sdk/platform-tools/adb wait-for-device
/opt/Android/Sdk/platform-tools/adb shell am kill-all
/opt/Android/Sdk/platform-tools/adb shell pm clear com.ws.dm
/opt/Android/Sdk/platform-tools/adb shell pm reset-permissions com.ws.dm
/opt/Android/Sdk/platform-tools/adb shell am set-inactive com.ws.dm true
/opt/Android/Sdk/platform-tools/adb shell pm revoke com.ws.dm android.permission.CHANGE_CONFIGURATION
/opt/Android/Sdk/platform-tools/adb shell pm revoke com.ws.dm android.permission.WRITE_SECURE_SETTINGS
/opt/Android/Sdk/platform-tools/adb shell pm revoke com.ws.dm android.permission.BATTERY_STATS
/opt/Android/Sdk/platform-tools/adb shell pm revoke com.ws.dm android.permission.INTERACT_ACROSS_USERS
/opt/Android/Sdk/platform-tools/adb shell pm revoke com.ws.dm android.permission.SET_PROCESS_LIMIT
/opt/Android/Sdk/platform-tools/adb shell am kill-all
/opt/Android/Sdk/platform-tools/adb shell am kill com.ws.dm
/opt/Android/Sdk/platform-tools/adb shell pm clear com.ws.dm
Note: I always did this right after a flash so I'm hoping that's not necessary
(I know I misused reset-permissions but it accepts it, laugh)
In the attached photo notice that I can "Show" system apps but AT&T Software Update is already shown (i.e. not a system app) For me I have no other att apps even if I show system apps!, they're installed tho)
**** Warning **** Disabling the wrong thing this way can cause the phone to crash so hard you need to flash firmware to restore it. Make sure you have backed up and that you have your firmware ready. Also be warned that in my experience devices can suddenly crash & need repair from doing this type of stuff!!
Stern Warning: You need your current matching firmware before doing this!! You can make a copy of your own firmware following directions on this forum. The info about your firmware is in SYSTEM | ABOUT
tESted on firmware N920AUCS4CPK1 Android 6.01 w/Nov. Sec. Patch
Overview of the process
We are going to do a various pronged assault using App Archiving / Restoring with a Google Play app as well as attacking a select set of permissions as well as clearing app data through adb using a batch or shell script from your computer. In some case I am able to also install the apk using adb shell pm install -rts which tags it as a test package. But I'm unclear how I achieved that so this is a work in progress.
(For the install -rts trick this is only after freshly flashing so it's been a little hard to remember to test it. Let me know if you stuble upon the process order again)
===> REMINDER <===
Backup all your contacts, text messages, downloaded files and also individually back any apps there are important to you. Also have a look at your /sdcard/ to see what's there. Do a full backup on the entire phone just in case you forgot anything.
*** Prepare to have to flash/wipe data to get this to work as I've only truly tested this after a recent flash personally!!! ***
This walk through utilizes the following technologies you will need to Google
You need the platform-tools from Android Studio SDK it comes with adb. (You can probably google platform-tools directory and download it)
(path environment needs to be set in the script or just fully qualify the location of adb which is what I do) <change to match your path>
I assume you understand how to download a file, open command prompt, cd to the directory it's download to and edit the path to your platform-tools inside the batch file
I also assume you can figure out the Samsung USB driver for Windows and test that you can adb shell to your device.
I assume you can get into Download mode and flash your firmware with Odin / Windows using a usb cable.
Steps to brick your perfectly good working AT&T Note 5 phone
Denial of permission and general rearrangement of system apps Version .0008 beta
Fresh after a flash please block the signal on your phone if possible. I always block signal!!!
1.) Turn on developer options then confirm that you have OEM unlock on(like it matters), USB Debugging On and default Verify Apps via USB remains off
2) Kill all AT&T running processes DEVELOPER OPTIONS | RUNNING SERVICES (get Smart Limits, Protect app, ATT yahoo mail, anything ATT)
every opportunity)
2A) Package disabler is awesome leave it running if you have it we don't need anything special for adb, besides adb.
3) Plug your phone into your PC via usb and get it connected.. (adb devices "unauthorized means you didn't say ok on phone in time unplug/replug try again")
3a) adb shell should log you into the phone and exit should get you back out (we don't want to be in the shell just testing the connection)
4.)Turn off "can make system changes" for AT&T apps. Application Manger | More | Change System Settings | More | Show System Apps -- Turn off anything AT&T (I also kill anything I can knox, samsung)
5) Backup/Restore the AT&T apps from a "backup tool", I used System App 2 let us know if others work "or excel".
Use an app archive tool such as System Panel 2 | apps | Archive to archive the AT&T apps then install them from that archive. You can do this to any you see!
(don't uninstall the app but feel free to install it repeatedly. e.g. install = uninstall as system app but uninstall = reinstall as system app
5 a) --- if doing step 8 you need a the com.ws.dm.apk copied to your computer so you can fire the install -rts on it
6) Repeat step 4
7) Fire the script from the first post on your phone (obviously you will have it connected to your pc, allowed the connection on your phone screen)
Basic commands I'm using, I prioritize com.ws.dm and then I run the commands on the rest of AT&T: (While it's running install/uninstall with the archive tool)
<This small snippet is a linux bash shell while the attached script is a Windows example
#NOTE TO LINUX USERS: take the rest of the script from the windows batch i think if you use linux you don't need step by step
#!/bin/bash
/opt/Android/Sdk/platform-tools/adb devices
/opt/Android/Sdk/platform-tools/adb wait-for-device
/opt/Android/Sdk/platform-tools/adb shell am kill-all
/opt/Android/Sdk/platform-tools/adb shell pm clear com.ws.dm
/opt/Android/Sdk/platform-tools/adb shell pm reset-permissions com.ws.dm
/opt/Android/Sdk/platform-tools/adb shell am set-inactive com.ws.dm true
/opt/Android/Sdk/platform-tools/adb shell pm revoke com.ws.dm android.permission.CHANGE_CONFIGURATION
/opt/Android/Sdk/platform-tools/adb shell pm revoke com.ws.dm android.permission.WRITE_SECURE_SETTINGS
/opt/Android/Sdk/platform-tools/adb shell pm revoke com.ws.dm android.permission.BATTERY_STATS
/opt/Android/Sdk/platform-tools/adb shell pm revoke com.ws.dm android.permission.INTERACT_ACROSS_USERS
/opt/Android/Sdk/platform-tools/adb shell pm revoke com.ws.dm android.permission.SET_PROCESS_LIMIT
/opt/Android/Sdk/platform-tools/adb shell am kill-all
/opt/Android/Sdk/platform-tools/adb shell am kill com.ws.dm
/opt/Android/Sdk/platform-tools/adb shell pm clear com.ws.dm
Note: I always did this right after a flash so I'm hoping that's not necessary
(I know I misused reset-permissions but it accepts it and I like it that way. Don't end process through your app archive tool it wakes up com.ws.dm)
Steps that may not work quite yet:
Note) I need to add to the how to for this to not say Invalid_URI bla bla but the way I do it is by flashing an invalid modem file, that's not acceptable since I don't think it's necessary yet:
8) issue the command adb shell pm install -rts com.ws.dm.apk.
8 a) refire the above snippet that is just an example for linux it is my knock out punch for after, but this step should fail if you make it work let me know please
**** Warning **** Disabling the wrong thing this way can cause the phone to crash so hard you need to flash firmware to restore it. Make sure you have backed up and that you have your firmware ready. Also be warned that in my experience devices can suddenly crash & need repair from doing this type of stuff!!
************************************************************ UPDATE: 02/21/2017 ************************************************************************
This exploit is powerful and from what I can tell you don't need to use adb at all to make it work. Create an archive of the app with your tool, I listed what I used above. Install from archive. "app crashes". There are 3 updaters that I kill: com.sec.fwservice + com.sec.android.soagent + com.ws.dm. Any apps I can disable in App Manger I disable normally instead. For example if you begin disabling Google play it will allow you to fully disable it. This was the biggest thing that made my batter life better. You can use the adb commands, script and etc also if you want to do anything and everything to avoid additional updates. Hopefully I'm right because I am done with updating.
Notice: 02-15-2017
It's reversible if you didn't realize this (tested in PK1 by me and one other). If you used the subtle approach just go into your backup app then uninstall. Only the extra installation is removed then the app will heal itself. If you used harsh method adb shell pm uninstall com.ws.dm = att updater. (do for all apps you miss dearly)
Package Disabler not working? OOPS, KLMSAgent is necessary use the above method to reverse our actions on com.samsung.klmsagent
Attached photos show that the AT&T Software updater is gone. I achieved that with a harsher script if I am going to release this method I want a more assured way then wrong modem file and 8 windows open at once.
I have to ask, if you see a snippet representing an efuse in the code, why not remove it and all references to it? If possible to do so, you'd be the first to crack an AT&T (and this would likely work for Verizon as well) GN5?
Edit - Also, the January sec. patch is beginning to roll out to users. I just got it today and I am usually behind most.
Update 02/21/2017 regarding efuse. I'v studied the binaries and processes hard and it is my belief the efuse will never trip if you aren't altering files on the system. We aren't doing that here and after weeks of testing my bit is still 0x0
**** Warning **** Disabling the wrong thing this way can cause the phone to crash so hard you need to flash firmware to restore it. Make sure you have backed up and that you have your firmware ready. Also be warned that in my experience devices can suddenly crash & need repair from doing this type of stuff!!
ajaxburger said:
I have to ask, if you see a snippet representing an efuse in the code, why not remove it and all references to it? If possible to do so, you'd be the first to crack an AT&T (and this would likely work for Verizon as well) GN5?
Edit - Also, the January sec. patch is beginning to roll out to users. I just got it today and I am usually behind most.
Click to expand...
Click to collapse
It's in the bootloader and they are friggin smart programmers and I am not that smart, yet. Probably ever.
I know you guys are on later firmware than me by now but I had to get off the marry go round at PK1. I had listed a work around to taking updates in Novemember but it was iffy at best. This is the first almost safe way I found, and now it's too late. That's the problem with the Note 5 we can't get back to a common point so we can all work toward freedom together.
edit: removed idea about flashing cm.bin, it's almost killing download mode.. we need to swim away little fishes
There is a new tool for disabling apps I posted on the first post