[FIX] Google Music streaming (re-write 2011-11-12) - Samsung Epic 4G Touch

If your Google Music (version 3 and 4 are affected the same) will sync, download, but not play the song while downloading (i.e. streaming; sometimes displaying the "Failed to play the requested stream" error), read this for the solution.
UPDATE 2011-11-12: I have re-written this post with simpler instructions for fixing the issue. If you would like more details, scroll down and read my original (in-depth) post.
NOTE: If you installed Google Music and it never asks to associate with your Google account, thus your online "cloud" music does not show up, this is a different issue. You need to move Music2.apk to /system/app/ directory and run Fix Permissions.
The Fix
Go to Google Music Settings and under Manage my devices make sure that you don't have the max 8 devices registered. You can safely De-authorize them all to be sure; they will re-authorize automatically.
Try streaming music again in Google Music.
If this does not fix the issue, then you have a bad /system/etc/hosts file. Don't worry if you don't know what this is.
Download ROM Toolbox if you don't already have it (it is included with StarBurst ROM v1.9). Note that you will need to be rooted to use most functions of this app.
Open ROM Toolbox, scroll down on the Tools page and click on Ad Blocker, select the items you would like to block (what you select does not affect the Google Music fix), and click Download & Install Hosts.
Try streaming music again in Google Music.
For ROM Developers
Please ensure that any hosts file you distribute or software you distribute that modifies the hosts file results in a UNIX-formatted hosts file with proper localhost entries.
Old post:
Background
The Google Music non-streaming occurs when localhost connections do not resolve. I was clued in when a lot of people said that streaming didn't work with ad-blocking "software" (a.k.a. modified hosts files) were installed. You can test this by running 'ping localhost' in adb or a terminal emulator (please google this if you don't know how). If this fails (with 'ping: unknown host localhost'), then you have the problem, and it could potentially cause problems in other apps other than just Google Music.
Problem
The problem occurs when Android cannot read the /system/etc/hosts file, or does not have a proper entry for 'localhost'. This is usually (as in my case on StarBurst 1.9.5) because the file is of the wrong format, such as a Windows text file instead of a Unix text file.
Facts
Google Music will not stream if 'ping localhost' command fails
Android is very picky about reading lines in the /system/etc/hosts file. If there is an invalid character on a line, that line will not be parsed.
Android WILL read a properly formatted /system/etc/hosts file immediately (i.e. no need to reboot or run any command after making changes)
The /system/etc/hosts file should have permissions -rw-r--r--. To fix this, run 'chmod 644 /system/etc/hosts' (this won't actually cause the issue unless the file is not readable, but this is best practice)
The /system/etc/hosts file should begin (the first uncommented line) with the following: 127.0.0.1 localhost
The /system/etc/hosts file should be formatted as UNIX text, not Windows text
Fix
This depends on exactly what ROM you are running, what has modified your hosts file, and thus what the issue is. I recommend you retrieve the /system/etc/hosts file from your device and put it on your computer for examination. Check that it is formatted as Unix text, not Windows text. Google this if you don't know how. I think Notepad++ or something can do this, but don't quote me (I'm a Linux guy).
Speaking of Linux, here are the steps to test & fix the issue on Linux:
Retrieve the file: adb pull /system/etc/hosts hosts
Look at its format: file hosts
If it reports 'ASCII English text', then the format is not your issue. You should then inspect the contents of the file for errors and correct as necessary.
If it reports 'ASCII English text, with CRLF line terminators', then it is incorrectly formatted as Windows text. Fix it with: dos2unix hosts
Ensure that the first non-comment line in the file is exactly the following: 127.0.0.1 localhost
Remount the /system partition for writing: adb remount
Push the fixed file back to your device: adb push hosts /system/etc/hosts
Set the correct permissions: adb shell chmod 644 /system/etc/hosts
Test connectivity is successful: adb shell ping localhost
Stream music successfully
I'm sure someone could write a howto for Windows and Mac as well.
Click to expand...
Click to collapse

Thank you so much for this! I used rom toolbox to download and install new hosts file and my music is back up and streaming!
Sent from my SPH-D710 using xda premium

Wow, that's awesome! I don't have problems with it now because I switched to a different rom, but last I checked some of the Starburst roms have it.

Can we do this via root explorer?
Sent from my SPH-D710 using XDA App

xak944 said:
If your Google Music (version 3 and 4 are affected the same) will sync, download, but not play the song while downloading (i.e. streaming; sometimes displaying the "Failed to play the requested stream" error), read this for the solution.
Background
The Google Music non-streaming occurs when localhost connections do not resolve. I was clued in when a lot of people said that streaming didn't work with ad-blocking "software" (a.k.a. modified hosts files) were installed. You can test this by running 'ping localhost' in adb or a terminal emulator (please google this if you don't know how). If this fails (with 'ping: unknown host localhost'), then you have the problem, and it could potentially cause problems in other apps other than just Google Music.
Problem
The problem occurs when Android cannot read the /system/etc/hosts file, or does not have a proper entry for 'localhost'. This is usually (as in my case on StarBurst 1.9.5) because the file is of the wrong format, such as a Windows text file instead of a Unix text file.
Facts
Google Music will not stream if 'ping localhost' command fails
Android is very picky about reading lines in the /system/etc/hosts file. If there is an invalid character on a line, that line will not be parsed.
Android WILL read a properly formatted /system/etc/hosts file immediately (i.e. no need to reboot or run any command after making changes)
The /system/etc/hosts file should have permissions -rw-r--r--. To fix this, run 'chmod 644 /system/etc/hosts' (this won't actually cause the issue unless the file is not readable, but this is best practice)
The /system/etc/hosts file should begin (the first uncommented line) with the following: 127.0.0.1 localhost
The /system/etc/hosts file should be formatted as UNIX text, not Windows text
Fix
This depends on exactly what ROM you are running, what has modified your hosts file, and thus what the issue is. I recommend you retrieve the /system/etc/hosts file from your device and put it on your computer for examination. Check that it is formatted as Unix text, not Windows text. Google this if you don't know how. I think Notepad++ or something can do this, but don't quote me (I'm a Linux guy).
Speaking of Linux, here are the steps to test & fix the issue on Linux:
Retrieve the file: adb pull /system/etc/hosts hosts
Look at its format: file hosts
If it reports 'ASCII English text', then the format is not your issue. You should then inspect the contents of the file for errors and correct as necessary.
If it reports 'ASCII English text, with CRLF line terminators', then it is incorrectly formatted as Windows text. Fix it with: dos2unix hosts
Ensure that the first non-comment line in the file is exactly the following: 127.0.0.1 localhost
Push the fixed file back to your device: adb push hosts /system/etc/hosts
Set the correct permissions: adb shell chmod 644 /system/etc/hosts
Test connectivity is successful: adb shell ping localhost
Stream music successfully
Click to expand...
Click to collapse
I am on step six and when i try to push the file back I am being told "failed to copy 'hosts' to '/system/etc/hosts': Read-only file system"
EDIT: using romtoolbox to redue my host files was the perfect solution!

penskyc said:
I am on step six and when i try to push the file back I am being told "failed to copy 'hosts' to '/system/etc/hosts': Read-only file system"
EDIT: using romtoolbox to redue my host files was the perfect solution!
Click to expand...
Click to collapse
I'll update the OP to include the 'adb remount' command to allow read-write to the /system partition. Thanks for pointing this out and glad you got it working.

Wow, I thought it was just something I would have to live with. It was really annoying having to wait for the entire song to download before it would play. Thank you!

marcosowns said:
Wow, I thought it was just something I would have to live with. It was really annoying having to wait for the entire song to download before it would play. Thank you!
Click to expand...
Click to collapse
I know, it was a damn near magical experience when I got the song to stream nearly immediately after clicking Play (on 3G nonetheless!) when I finally figured out the solution! I'm sure you're just as happy as I am to have this awesome service back. Cheers!

holy damn, all I can see is a bunch of gibberish, but ya'll make it seem so easy. Thank god for people like you. I have no idea what ya'll are talking about, but hope that this will be pushed through to the roms. Would be nice to stream google music through 3g instead of wifi. Nice job!!!

ffkip911 said:
Would be nice to stream google music through 3g instead of wifi. Nice job!!!
Click to expand...
Click to collapse
Just to be clear, this problem has nothing to do with connection method (3G/wifi). When this problem is present, streaming of songs while they download will not work at all, regardless of connection method.

xak944 said:
Just to be clear, this problem has nothing to do with connection method (3G/wifi). When this problem is present, streaming of songs while they download will not work at all, regardless of connection method.
Click to expand...
Click to collapse
Thanks for the clarification OP

How is everyone getting the ics music to stream, I got it to sync with gmusic on my vibrant but it never comes upwith the option to connect to my account on my e4gt
Sent from my SPH-D710 using Tapatalk

nacron said:
How is everyone getting the ics music to stream, I got it to sync with gmusic on my vibrant but it never comes upwith the option to connect to my account on my e4gt
Click to expand...
Click to collapse
Off topic, but you need to install the .apk to /system/app/. There are other threads with this info.

All is right in the world!

xak944 said:
Off topic, but you need to install the .apk to /system/app/. There are other threads with this info.
Click to expand...
Click to collapse
Thanks for the help!
Sent from my SPH-D710 using Tapatalk

This reminds me of a dormatt I need to get for my front door that says "there is no place like 127.0.0.1"
Sent from my SPH-D710 using XDA App

1 thing worked for me
After trying to reinstall hosts files the only thing that worked is removing all of my authorized devices on google.music.com websites under settings. Thanks a million for the tip

Can anyone help me with figuring this out with Windows?

DizDroid said:
Can anyone help me with figuring this out with Windows?
Click to expand...
Click to collapse
+1, i cant get even 1 song to stream, and my music app is from the market
Sent from my SPH-D710 using xda premium

DizDroid said:
Can anyone help me with figuring this out with Windows?
Click to expand...
Click to collapse
If you're rooted, you can download a new hosts file directly from your phone with ROM Toolbox (on Android Market). This did the trick for me.

Related

[Q] Method to -automate- the upload of a file? [Solved]

I have Tasker set up to periodically record certain data to log files on my phone. Moving these log files to a PC/FTP Server/Etc is done easily enough manually, but I'm looking for an automated solution that works on a schedule without any manual intervention.
Any suggestions? I would prefer a solution that can use the regular data network rather than requiring a cord or wifi.
Thanks
Have you looked at the SL4A plugin for tasker? You might be able to write a Ruby, Perl, etc script to do this and execute it on a schedule using tasker.
Sent from my ADR6300 using XDA App
Hi sl0wd0wn,
I have both the SL4A and Locale Execute plugins, but I am not an experienced coder. I wouldn't know where to start to write a script that uploaded a file somewhere.
My script writing knowledge is limited to little kid stuff: variable manipulation, if/then, etc. If someone can give me a relevant script, there's a good chance I could figure out how to adapt it to my needs, but I don't have the knowledge to start from scratch.
Thanks though
I'm trying the following. It doesn't give me any errors, but it's not actually uploading the file either.
Any thoughts? Or any suggestions on an alternate script?
Code:
#!/bin/sh
# FTP variables
FTP_HOST=ftp.*****.com
FTP_USER=*****
FTP_PASS=*****
FTP_REMOTE_DIR=/
ftp -inv $FTP_HOST <<EOF
user $FTP_USER $FTP_PASS
binary
put *****.log
quit
EOF
exit 0
What you provided is an example of a linux shell script. You can still run it from s4la, but it's different from a perl/ruby script. It will work, but you have to be rooted. If you're rooted, take a look at the ftpput command in your system\xbin directory. Here's some documentation on the command. .
http://www.busybox.net/downloads/BusyBox.html
It looks fairly straightforward. The most difficult part will probably be dealing with file names
Awesome! Thanks so much for the help - perfect.
Of course I seem to have run into another speedbump... I have a working .sh script: it runs perfectly from within the SL4A GUI. But if I use the SL4A plug-in from Tasker to execute it, I get a Force Close from SL4A
Guess I'll have to keep experimenting.
OK - instead of using the SL4A plugin in Tasker, I used the Execute plugin to run the sh file. Same thing, sure, but the latter solution doesn't cause Force Close (for whatever reason)
niiiiice
I don't know if the forum is acting up or my computer is acting up, but I got email notification of a reply that doesn't actually seem to be in this thread. Still, let me give an answer in case anyone else finds it useful...
So you're good to go?
Click to expand...
Click to collapse
Yes, indeed.
Your prediction that file names would be the biggest issue was correct. For some reason (which is probably common knowledge to others, but wasn't to me), commands behaved differently from the adb shell than from the SL4A shell.
From adb, I was able to simply type:
Code:
ftpput -v -u username -p password 11.22.33.44 ./remotedir /sdcard/localdir/file.log
and it worked properly. Running this same exact command from the SL4A shell (and/or script) resulted in complaints of the file/directory not being found. Changing to this format for the sh script worked, however:
Code:
cd sdcard
cd localdir
ftpput -v -u username -p password 11.22.33.44 file.log
Then, running this script worked from SL4A GUI, but caused Force Close issues when I tried to execute through Tasker's SL4A plug-in. Using the Locale Execute, plug-in, however, I was able to execute the sh file by using:
Code:
@! sh /sdcard/sl4a/scripts/MyScriptBlaBla.sh
Now Tasker just executes this on a regular schedule.
Awesome. Glad to hear you were able to figure it out.
Wow thats great! This is exactly what i am looking for a long _Time.
I am a noob in Tasker and programming
Can you please explain how I can set this up?
Thank you very much!
gronph said:
Can you please explain how I can set this up?
Click to expand...
Click to collapse
Sure, gladly. My described method may not be the most efficient, but it has worked perfectly for me.
You will need:
Tasker
SL4A and
Locale Execute
Go into SL4A and click Menu > Add > Shell
This will open a new .sh script for you to edit.
In the top window, type the name of the script (let's call it Synch.sh)
In the bottom part of the window, use the following code:
Code:
cd sdcard
cd localdir
ftpput -v -u username -p password 11.22.33.44 file.log
In case it's not apparent, replace "localdir" with the directory that contains the file, "username" should be the FTP username, "password" should be the FTP password, "11.22.33.44" should be the IP address of your FTP server, and "file.log" is the item you want to upload. Adjust the script as needed.
Now click Menu > Save & Run
Wait a minute or two, then check that your FTP server did indeed get the file. Assuming you typed everything correctly, your script should have worked.
Delete the file from your FTP server (so we can run another test later)
Now go into Tasker and create a new Task
Within the new Task, the action you want to add is under "Plugin" and should say "Execute"
When the Execute action comes up for configuration, hit the Edit button on it.
You will get a free text box in which you will want to type the following:
Code:
@ sh /sdcard/sl4a/scripts/Synch.sh
Now just click the back key to exit the text input box. Click "Done" on the Execute window, returning you to the Task itself. Now click "Test." Wait a minute or two and check your FTP server. The file should be there again.
Assuming everything worked out properly, you can now just choose how Tasker executes the Task. You could make it time based (every x hours, for example), or context based, etc.
It's worth noting that this method will overwrite the file if it already exists on the FTP server... so keep that in mind.
(There is also a SL4A plugin for Tasker that should theoretically be easier as you would just select which script you want it to run. I've encountered bugs and crashes with that plugin, however, which is why I choose to use the described Execute method above)
Thank you!!!
But it is not working here...
When I click "Save and Run" nothing is transfered. Can I activate logging so that I can see what is going wrong? I saw a logfile in the sl4a Folder but it is empty
EDIT: I am still trying... seems to be my Webspace
I'm not sure about logging.
Should have asked before, but are you rooted? And does your device have busybox installed?
Try this:
From SL4A, when you are just looking at the list of scripts that you have, drag your finger from the right side of the screen to the left. This should take you to a screen that says "Interpreters" up top. Click on "shell" which will open a terminal window. Now try typing the commands directly into the terminal (the same commands you put into that script). This should allow you visibility of what is happening. For example, below I've just opened the terminal window and typed "ftpput" without any parameters:
Thank you again! Now it works perfect!
ftpput doesn't want to work for me for some reason, I do exactly as you do and I don't get any errors but the file doesn't upload to the ftp server.
Just to add to the list of possible solutions, the app sync4android (android.kowalczuk.eu/rsync4android)(*) allows you to use the unix rsync command to copy/sync files and/or directories over networks. This doesn't require root, and the developer has provided locale/Tasker support, so it's easy to automate.
Rsync is a very cool protocol for managing backups, since it will compare the source and destination files/directories and only send the differences. I use the above app with Tasker to automatically upload any photos I take with my phone to my home server.
* just a note that I've included the pertinent parts of the URL to the app in those parenthesis since I can't post links here 'till my post count gets higher than some arbitrary number.
Thanks for the heads up on that program, wildland. I'll have to check it out.
zzzooo10 said:
ftpput doesn't want to work for me for some reason, I do exactly as you do and I don't get any errors but the file doesn't upload to the ftp server.
Click to expand...
Click to collapse
What is returned when you run the command in the shell interpreter as described above?
byrong said:
Try this:
From SL4A, when you are just looking at the list of scripts that you have, drag your finger from the right side of the screen to the left. This should take you to a screen that says "Interpreters" up top. Click on "shell" which will open a terminal window. Now try typing the commands directly into the terminal (the same commands you put into that script). This should allow you visibility of what is happening.
Click to expand...
Click to collapse
byrong said:
Sure, gladly. My described method may not be the most efficient, but it has worked perfectly for me....
Click to expand...
Click to collapse
byrong, Just wanted to say thanks a lot for all the info you provided here. Thanks to your posts, I learned about SL4A, finally understood the point of installing BusyBox (had it installed before with Titanium Backup, but didn't really know what it did), learned about the ftpput command and how to configure its parameters to meet my needs, etc.!
My Tasker script is set up so that if the phone receives a txt containing a certain keyword, it takes a photo and uploads it to my website, grabs the date, time, battery level, cell-based (and gps-based, if possible) position and location accuracy and txts all that back to the txt sender. Now I just need to find a good way to use that info to quickly track the coordinates, but that's another matter...
Taking a photo is admittedly not that useful (unless whoever stole my phone happens to be looking at the back of it at that moment), but I have an EVO (which has a front-facing camera), so I mostly just wanted the photo part in place so I can add the front-facing camera stuff if Pent ever adds support for it.
Anyway, thanks again!
anyway to automatically upload camera shots to dropbox?
I do it manually now, but if it could be automated that would be so much easier
illflux said:
Anyway, thanks again!
Click to expand...
Click to collapse
No problem! Glad it helped.
For what it's worth, I have similar "gotcha" type tasks for the same reasons you mention: in case someone gets a hold of my phone. Like you, I have location-reply text functions built.
I also have one that will immediately reboot the phone. I use a pattern lock, but have it set to a 10 minute delay. On the off chance that someone got a hold of my phone while it was unlocked, I could send the reboot command to it, which would at least activate the pattern lock screen.
spangenberg said:
anyway to automatically upload camera shots to dropbox?
Click to expand...
Click to collapse
I don't really use Dropbox, so I'm not sure what kinds of functionality exists. If they offer users an FTP interface of some sort, you can use my described methods. If not, you'd have to research an alternate solution. Perhaps Dropbox has action intents that can be fired by Tasker? I'm not sure.

[Q] How to change Bluetooth MAC Address

Is it possible to change it using root or adb please?
Why would you want to?
Nope. Impossible
NeoTechni said:
Why would you want to?
Click to expand...
Click to collapse
just wanted to clone my wife's one for the hands free in the car to avoid having to switch through the menu in the car.
I was unable to locate /pds as per http://pocketnow.com/tweaks-hacks/motorola-atrix-4g-how-to-change-wi-fi-and-bt-mac from http://forum.xda-developers.com/showthread.php?t=992326. I suspect every phone maker puts Bluetooth address where they wish...
However I was able to locate a zero byte bt_mac_addr file with no extension in /proc folder. It is empty both when bluetooth is on and off.
I hope someone more technically skilled than me can figure out if it can be populated to change the bluetooth address succesfully.
Thanks in advance
I looked at the '/proc/bt_mac_addr' file again using root explorer this time and can see my bluetooth mad address in it and could edit the address and change permissions to it but the modifications don't stay saved even after reboot though the root explorer says changes saved successfully. Can someone help me modifying the file please.
I'm on rooted 2.3.3
/proc is a virtual Filesystem provided by the Linux Kernel. The changes you made there won't persist a reboot cause it only gets saved in Ram.
Thank you. Does it mean I need a script of some type? Is it possible to achieve a change some other way? The pocketnow article seems to do it for the motorola phone but by modifying text file in another folder which I cannot find.
I followed the same process as follows using below commands
C:\Program Files\Android\android-sdk\platform-tools>adb push C:\APK\bt_mac_addr /sdcard/download/bt_mac_addr
1 KB/s (18 bytes in 0.015s)
C:\Program Files\Android\android-sdk\platform-tools>adb shell
$ su
su
# cp /sdcard/download/bt_mac_addr /proc/bt_mac_addr
cp /sdcard/download/bt_mac_addr /proc/bt_mac_addr
cp: can't create '/proc/bt_mac_addr': File exists
Is there another file I can change for it maybe?
Thanks again for all the help.
If you really want to do it then you can (On stock rom) use the same trick that is used for adb remount (Put an echo whatever into into /etc/install-recovery.sh)
You need to make sure it runs as root as well
Have a play around.
Installing the insecure adb apk (From Paul Modaco).
and
adding to the end.
/system/xbin/echo 8D:64:22:01:E2:A9 > /proc/bt_mac_addr
looks like it should work.
(If you have an unlocked bootloader then you can just do it from init.semc.rc in the initramfs)
Or you can look at the method (I posted the manual method in the rooting/insecure adb thread).
This presumes that this is actually working (Its possible you might have to restart a service to actually change it).
just make a simple init.d script
Thank you both. I Will look at it when i'm at the pc. A bit scared having never done anything similar. I Appreciate your guidance very much
Sent from my R800i
Thanks again for your previous replies. I tried "/system/xbin/echo 00:01:02:03:04:05 > /proc/bt_mac_addr" using script manager with superuser permissions granted and running in root mode but it gives the following error: "echo: write error: Input/output error". Same problem in gscript unfortunately.
Would you please tell me what this means and kindly suggest what I should do. I have not figured out yet how to do adb insecure or init.d but hope you could suggest the best way after seeing the above error.
Thanks in advance
ps3taker said:
Thanks again for your previous replies. I tried "/system/xbin/echo 00:01:02:03:04:05 > /proc/bt_mac_addr" using script manager with superuser permissions granted and running in root mode but it gives the following error: "echo: write error: Input/output error". Same problem in gscript unfortunately.
Would you please tell me what this means and kindly suggest what I should do.
Thanks in advance
Click to expand...
Click to collapse
You probably have to remount /system writable
Atarii said:
You probably have to remount /system writable
Click to expand...
Click to collapse
Thank you - I tried this but still same error
ps3taker said:
Thank you - I tried this but still same error
Click to expand...
Click to collapse
try this:
Code:
echo "00:01:02:03:04:05" > /proc/bt_mac_addr
DooMLoRD said:
try this:
Code:
echo "00:01:02:03:04:05" > /proc/bt_mac_addr
Click to expand...
Click to collapse
Thanks - I tried this but it still gives the same input/output error unfortunatelly
Besides mounting system as rw via script manager option I also enabled run at boot, run on network change, run as root but still no change before and after reboot.
I hope you could think of something please. Maybe /proc folder needs to be mounted rw but i'm not sure how or if it is not rw already - root explorer has no problem openning it rw straight away...
Thanks again for everybody's help in advance
ps3taker said:
Thanks - I tried this but it still gives the same input/output error unfortunatelly
Besides mounting system as rw via script manager option I also enabled run at boot, run on network change, run as root but still no change before and after reboot.
I hope you could think of something please. Maybe /proc folder needs to be mounted rw but i'm not sure how or if it is not rw already - root explorer has no problem openning it rw straight away...
Thanks again for everybody's help in advance
Click to expand...
Click to collapse
It won't work as that interface is read only
Sent from my R800i using XDA App
Thanks for trying to help.
I wonder if there is another file somewhere. Any idea what Play's equivalent of Motorola's Atrix 4G folder called "/pds" is - as it it seems to work for them: http://pocketnow.com/tweaks-hacks/motorola-atrix-4g-how-to-change-wi-fi-and-bt-mac
Thanks again for all the help - it was exiting to try scripts and other things you pointed me to.

[MOD] HULU Flash Hack - Flashex 2.05(5/2/12) Auto Hex-edit libflashplayer.so

FLASHEX 2.05 (unified release 4)(Release Date: 5/2/2012)
Description
Flashex is designed to allow people using an Android device to watch hulu and some other restricted sites with Adobe Flash Player and a properly configured web browser as if it was a Windows PC. Dolphin HD Stock Browser(choose "request desktop site" in menu each time) is a good choice but any browser that allows you to act as Desktop via settings should work.
Note: Dolphin HD has some issues with full screen video at the moment so I have switched over to useing the stock browser and selecting "request desktop site" from the upper right-hand menu for now this works and has good full screen performance on FlexReaper and Stock ICS 4.0.3.
How it works
The script will look for libflashplayer.so then attempt to create a copy, edit the copy, and copy the edited version back. It stores the edited copy, and writes it over the default file each time it's run. It will check the version of the current libflashplayer.so file each time before it copies the edited version over. If libflashplayer.so's version has been upgraded or downgraded it will make a new copy, edit, write it back and store the new one to use each time. I suggest using Script Manager to run the script at boot once you run it the first time manually to make the first edited copy.
What's New in Version 2.05?
-Added a few more checks for libflashplayer.so to help improve troubleshooting and configuring on different ROMs and to eliminate the possibility of a hang if libflashplayer.so is not readable.
(Still waiting on feed back and/or -x mode debug output reports. feel free post them or better yet PM them to me)
What's New in Version 2.04?
-Added support for Custom BusyBox from CynogenMod (BusyBox 1.19.4-cm9) when testing the Busybox version
What's New in Version 2.03?
-Added checks to verify Busybox location, permisssions, and version to verify compatability and inform the user if they need to update/reinstall busybox or make a configuration change.
-Various minor refinements.
-Can now safely be test run on ANY device since it will verify the location of all required elements prior to performing any task.
NOTE: This doesnt mean it will enable hulu on an old 500mhz 2.2 device, just that it should be safe to use to modify Adobe Flash on any device capable of properly running it.(If your Adobe Flash is installed in a diffrent location you will need to configure the script to point it's install directory, or put a copy of your libflashplayer.so file into the Flashex2 directory and name it AND_libflashplayer.so and copy the resulting WIN_libflashplayer.so back by hand if you prefer.)
What was new in Version 2.02?
-Fixed various typoes in output messages
-Added a fix for people having issues with strings, grep etc returning as not found when /system/xbin is either not in the users default $PATH or is too low in the list to get used.
What was new in Version 2.01?
-Many minor bug fixes
-Scripts have been unified into a single script.
-Made some changes to how version checking is done
-Script is safer, more reliable, and easier to use over all.(at least IMO hehe)
-Automatic re-edit of edited source file, when either an upgrade or downgrade is detected. This allows the script to be run at boot via Script Manager, or other while still leaving, Adobe Flash to auto update.
-Script is now a single executable file that will both hex edit Adobe Flash(each update), and copy the edited file over to /data when needed.
-Improved version detection
-Improved output messages
Some notes on running during bootup
Once you have decompressed the Flashex2 folder and flashex.sh script to /mnt/sdcard/Flashex2 you will be able to run it automatically at boot via Script Manager if you wish. I currently have been using it this way. I have tested it performing the hexedit during a boot up. It works fine.
Known Limitation
Note: This only applies to auto-running the script via Script Manager, Cron, what ever It takes about 2 minutes with a Tegra 2 to complete the hexedit of the file.
Because of this when booting after an update to libflashplayer.so it will be editing the file for a min or two after your home screen shows. You will want to wait 3 min or so to be safe before you try to use Adobe Flash. This will ONLY happen when the version changes. Since Adobe Flash isn't changed that often it's not a big deal.
The rest of the time, it will be the same version so it will just take a few seconds to copy the file over. This allows you to just watch when you like even right after a system boot.
Install Instructions
Quick Directions:
Download file, unzip/extract the Flashex2 folder and it's contents, copy it to the sdcard to end up with /mnt/sdcard/Flashex2/flashex.sh. Run flashex.sh as root. Set web browser to Desktop. Enjoy watching hulu.
Full Directions:
When using Flashex205.zip via a File Manager like Astro for example.
1) Either download Flashex204b.zip directly to your tablet, or copy it to a micro SD card via PC.(note: you could unzip the contents in Windows if you prefer)
2) Save, Copy or Move Flashex205.zip to /mnt/sdcard/ It has a folder inside already of the correct name.
3) Open Flashex205.zip, then copy/paste the whole folder to /mnt/sdcard/
Note: After you do this you should have a folder named Flashex2 on your internal sdcard example: /mnt/sdcard/Flashex2
4) Inside the Flashex2 folder from the zipfile is flashex.sh
5) run flashex.sh either via terminal emulator or with an app like Script Manager.
The script "can" be run without root, BUT it will only make the hexedited file. It MUST be run as root if you also want the script to install the edited file so you can watch hulu. You can also copy the file by hand.
When using flashex205.tar.gz via a terminal emulator do the following.
1) Either download the file directly to your tablet, or copy it to a micro SD card.
2) Copy or Move the file to /mnt/sdcard/
example(copy): cp /mnt/external_sd/flashex205.tar.gz /mnt/sdcard/
example(move): mv /mnt/external_sd/flashex205.tar.gz /mnt/sdcard/
3) unzip and untar the Flashex folder and flashex.sh script from flashex205.tar.gz
gzip -d /mnt/sdcard/flashex205.tar.gz
tar -xvf /mnt/sdcard/flashex205.tar
Note: If you get an error saying not found. Your trying to install it in a diffrent location then it's currently configured you can probably figure out how to make it work easy enough. Just remember to set the path to the script inside the script it's self so it knows where make/read the edited file.
4) Now change working directories and run the script.
cd /mnt/sdcard/Flashex2
5) Run the script(su is optional, but running as root it wont copy the edited file over)
su
sh flashex.sh
Note: I suggest using sh before the script name though it's not nessesary if the path to sh at the top of the script matches yours.
Confirmed Compatable Device List(Make sure you are rooted if you want to use the script to install the modified file)
Acer Iconia A100, A200, A500 HC or ICS, FlexReaper ------ Use Latest Version
Samsung Galaxy S 4G rooted modified Gingerbread 2.3 --- Use Latest Version
Samsung Galaxy Nexus LTE ----------------------------------- Use Latest Version
Asus Eepad Transformer Prime ------------------------------- Use Version 2.2 or Latest Version
Motorola Droid Razr ------------------------------------------- Use Latest Version
HTC EVO 3D --------------------------------------------------- Use Latest Version
HTC EVO 4G running mikg v11 ------------------------------- Use Latest Version
Note: Any Device that is compatable with Adobe Flash and capable of playing hulu videos(500 Mhz or better ARM7 CPU 256 MB ram, Android 2.2 or better) that has been rooted and has busybox installed should be compatable
If you are attempting to use a Busybox older then v1.18.1 You will have to change a value at the top of the script before attempting to run it since I'm not sure how old of versions are 100% compatible.
===============================================
ATTN: SUPPORT, QUESTIONS, COMMENTS
If you need help getting it to work for your device and cant post in this section you can follow this
->SUPPORT LINK HERE
You can PM me or you can also try me on Twitter
Legal Info
Flashex205.sh was made by NoSudo for personal use
anyone may use it or change it but I retain creative
licence for my work. You should only take credit for your
changes.
I take no reponsablility for anyone elses actions. If you break
something or violate any rules it's on you.
If you wish to try and make money on it or use it for any comercial
venture I expect to be contacted and informed so I may negociate
an acceptable for profit licence with compensation.
This software is FREE and yours to enjoy, give away, edit, use for Non-Profit purposes ONLY.
A NOTE ON VERSIONS!
I recommend the use of the latest version Flashex204.sh. If you have old versions installed. MAKE SURE YOU RUN THE RIGHT ONE. It's up you to reconfigure Script Manager etc. so don't forget or it will keep running the old one.
ALSO Please remember to hit that Thanks button if you find my script useful.
I have been doing a little version testing.
I can confirm that flashex v2.01 does edit other versions so far I have tested it with. I just tested with 11.1.115.7 and it works fine via xxd. Im going to test on Android with Busybox's hexdump next.
I can also confirm that it works on 11.1.111.8 since my tablet just auto-updated. I simply ran the script and updated my hexed version from 11.1.111.7 to 11.1.111.8 as designed.
Just tried the new version and still a no go. See the pic for the full error.
Ran with terminal emulator, gscript, and root explorer. Same error for all.
And you have the .so file from the old version thread.
.so path: /data/data/com.adobe.flashplayer/lib/libflashplayer.so
ICS Leak .012.
busybox 1.19.3
Joecascio2000 said:
Just tried the new version and still a no go. See the pic for the full error.
Ran with terminal emulator, gscript, and root explorer. Same error for all.
And you have the .so file from the old version thread.
.so path: /data/data/com.adobe.flashplayer/lib/libflashplayer.so
ICS Leak .012.
busybox 1.19.3
Click to expand...
Click to collapse
Weard here is the output I got running a test edit. I used the same 2.01 script just modified so it doesn't write to my adobe flash. Kind of sandbox I guess. As you can see it reads and edits it fine. I'll look some more.
Command: '/mnt/sdcard/FLASHEX2_vtest/flashex_vtest.sh'
-------------
Out: $ exec sh '/mnt/sdcard/FLASHEX2_vtest/flashex_vtest.sh'
=================================================
Source Files Doesn't Exist
Destination File: /mnt/sdcard/FLASHEX2_vtest/DST/libflashplayer.so
Destination Ver: Adobe Flash says AND(Androiud) v1111157
Detected READ access for /mnt/sdcard/FLASHEX2_vtest/DST/libflashplayer.so
Created /mnt/sdcard/FLASHEX2_vtest/cache Sucessfully... Checking...
/mnt/sdcard/FLASHEX2_vtest/DST/libflashplayer.so preparing to copy and edit file........
Copy: /mnt/sdcard/FLASHEX2_vtest/cache/libflashplayer_PREMOD looks good =================================================
Preparing to create a hexdump.........
Dont panic...This could take over a minute on a Tegra 2..
Its Converting an 8MB or so Binary on a little tablet...Just wait its fine Created a hexdump of /mnt/sdcard/FLASHEX2_vtest/cache/libflashplayer_PREMOD
=================================================
Preparing to edit /mnt/sdcard/FLASHEX2_vtest/cache/libflashplayer_HEXDUMP..
This might take a minute too.... /mnt/sdcard/FLASHEX2_vtest/cache/libflashplayer_HEXDUMP has been edited... =================================================
Converting /mnt/sdcard/FLASHEX2_vtest/cache/libflashplayer_EDITED to binary...
Binary File: /mnt/sdcard/FLASHEX2_vtest/WIN_libflashplayer.so created...
Checking Binary file /mnt/sdcard/FLASHEX2_vtest/WIN_libflashplayer.so... =================================================
HEXEDIT SUCCESSFUL File: /mnt/sdcard/FLASHEX2_vtest/WIN_libflashplayer.so now reads as Version: WIN 11,1,115,7
Sent from my A100 using XDA
I'm at a bit of a loss as to why it's not working for you Joecascio2000. I'm still looking into it.
I can confirm if I copy your libflashplayer.so v 11.1.115.7 to my device and run the script on it. I AM able to edit the file and get a good binary at the end. I was able to run it via Terminal IDE, Terminal Emulator, and Script Manager.
Going by the error your getting I would say the issue could be related to Busybox. I know you say you have 1.19.3(same as mine)
what happens if you try this from a Terminal
strings /data/data/com.adobe.flashplayer/lib/libflashplayer.so | grep "AND 1[0-2],[0-9]*"
You should get back a list of strings out of the binary, and one of them should say something like "AND 11,1,115,7"
If that doesnt return the correct line, what does this return
strings /data/data/com.adobe.flashplayer/lib/libflashplayer.so | grep "AND 1"
This should return "AND 11,1,115,7" if it doesn't then I would take a closer look at your strings, and grep binaries which would indicate a possible issue with your copy of Busybox or maybe your $PATH as it could effect what version gets used when running a shell command.
I still feel very confused by it working on my device and not on yours with the same file. However I also feel confident that since it works on my A100 we can get it working on yours too without much hassle. We just need to figure out what the deal is.
NoSudo said:
Sent from my A100 using XDA
Click to expand...
Click to collapse
Yeah so weird. I just tried it again after uninstalling flash and re-installing it. Same error. Maybe I'm executing it wrong. This is what I put:
su
sh /mnt/sdcard/Flashex2/flashex201.sh
It does seem to work, just give me an error with the .so file.
EDIT: and both string lines return "no such file or director". I just copy and pasted them in, maybe I did something wrong?...maybe its busybox...?
I just copy and pasted them in, maybe I did something wrong?
Click to expand...
Click to collapse
copy and past of the strings command above should work yes. You can even just run the following
strings /data/data/com.adobe.flashplayer/lib/libflashplayer.so
If that give you bad command or something then you have an issue with either Busybox or your $PATH
$PATH is a special variable that unix/linux/android uses to store the locations of programs like grep, strings, etc. It specifies various directories commands are stored in. If the directory strings is stored in IS NOT in your path the script will not be able to access the command, so I can't say at this point which issue it in fact is, but I'm 99% sure it's one of those two things at this point.
That error is kinda old and can be erroneous. I'll look at that area a little closer later and see.
If you rerun the script after a successful edit it will tell you if it was successful BTW. If /data/data/com.adobe.flashplayer/lib/libflashplayer.so is already edited and is the same version as the WIN_libflashplayer.so Source file it will just print out a message that displays the actual version string from inside both files. The output will look somthing like this
Source File: /2.01FLASHEX_Dev/Lib_Version_Testing/WIN_libflashplayer.so
Source Ver: Adobe Flash says WIN(Windows) v1111157
Destination File: /2.01FLASHEX_Dev/Lib_Version_Testing/DST/libflashplayer.so
Destination Ver: Adobe Flash says WIN(Windows) v1111157
=================================================
It looks like you dont need make any further changes at this time.
Make sure you have set your browser to Desktop in settings(try Dolphin HD)
a
Joecascio2000 said:
Yeah so weird. I just tried it again after uninstalling flash and re-installing it. Same error. Maybe I'm executing it wrong. This is what I put:
su
sh /mnt/sdcard/Flashex2/flashex201.sh
It does seem to work, just give me an error with the .so file.
EDIT: and both string lines return "no such file or director". I just copy and pasted them in, maybe I did something wrong?...maybe its busybox...?
Click to expand...
Click to collapse
It could be. If you don't have a "strings" command the script wont work for you in it's current state. I made extensive use of strings to read info out of the binary files for version checking and to confirm the edit.
The error you got is something you could get from no strings command. It could also just be that the location "strings" is installed if it IS NOT in your $PATH for your ENV this would be a simple fix, in fact I'm tempted to add a PATH="" export PATH line back into the script just in case of stuff like this. I had removed it thinking it overkill.
Two diffrent folks seem to have a Busybox installer available via play.google.com. I use the one from J Rummy because it's only 1.99 for the Pro version instead of 4.99 and so far it has all the features I want and even has 1.19.4 available currently. It sounds like you may just need to figure out the location of the strings command and make sure that directory is exported as part of your $PATH. Let me know if would like assistance figuring this out.
NoSudo said:
It could be. If you don't have a "strings" command the script wont work for you in it's current state. I made extensive use of strings to read info out of the binary files for version checking and to confirm the edit.
The error you got is something you could get from no strings command. It could also just be that the location "strings" is installed if it IS NOT in your $PATH for your ENV this would be a simple fix, in fact I'm tempted to add a PATH="" export PATH line back into the script just in case of stuff like this. I had removed it thinking it overkill.
Two diffrent folks seem to have a Busybox installer available via play.google.com. I use the one from J Rummy because it's only 1.99 for the Pro version instead of 4.99 and so far it has all the features I want and even has 1.19.4 available currently. It sounds like you may just need to figure out the location of the strings command and make sure that directory is exported as part of your $PATH. Let me know if would like assistance figuring this out.
Click to expand...
Click to collapse
When I open terminal emulator the first line reads:
[email protected]:/ $ export PATH=/data/local/bin: $PATH
Also, I can't update busybox because for my current root method 1.19.3 is required.
Joecascio2000 said:
When I open terminal emulator the first line reads:
[email protected]:/ $ export PATH=/data/local/bin: $PATH
Also, I can't update busybox because for my current root method 1.19.3 is required.
Click to expand...
Click to collapse
You don't need a newer version of Busybox I'm running the same version.
it's your $PATH I will post an updated version that includes an Export PATH line to resolve after I eat some dinner.
for now you can copy/paste this into a terminal before running the script. Im guessing if you run that, then the script it will work
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/system/sbin:/system/xbin:/system/bin:/data/local/bin:/vendor/bin; export PATH
Darn...still isn't working. Lol my tab hates me. See the pic I think its a little different.
here's a link the one below is a little low res: http://i.imgur.com/uP9ZR.png
Joecascio2000 said:
Darn...still isn't working. Lol my tab hates me. See the pic I think its a little different.
here's a link the one below is a little low res: http://i.imgur.com/uP9ZR.png
Click to expand...
Click to collapse
It looks like you might still be missing the strings command. Because it doesnt look like anything is getting passed to grep. It looks like strings didnt run, so grep tried to look for the search expression as a file name.
what do you get if you type
ls -la /system/xbin/strings
or even just
ls -la /system/xbin
I show a symbolic link for /system/xbin/strings that points to Busybox. If it's in another location with your version of Busybox you just need to make sure the strings command is located in the path you use.
If you dont have a strings command at all for some reason since you have the same version of Busybox 1.19.3 you should be able to just make a Symbolic Link in /system/xbin(or what ever space you are configured to use) called strings that points to busybox. All those buxybox commands are symlinks to the same binary file in reality.
NoSudo said:
It looks like you might still be missing the strings command. Because it doesnt look like anything is getting passed to grep. It looks like strings didnt run, so grep tried to look for the search expression as a file name.
what do you get if you type
ls -la /system/xbin/strings
or even just
ls -la /system/xbin
I show a symbolic link for /system/xbin/strings that points to Busybox. If it's in another location with your version of Busybox you just need to make sure the strings command is located in the path you use.
If you dont have a strings command at all for some reason since you have the same version of Busybox 1.19.3 you should be able to just make a Symbolic Link in /system/xbin(or what ever space you are configured to use) called strings that points to busybox. All those buxybox commands are symlinks to the same binary file in reality.
Click to expand...
Click to collapse
Both commands showed: not found, however, I looked in /system/xbin/ and busybox and strings are in that folder. Also, right under strings is ( -> busybox )
Joecascio2000 said:
Both commands showed: not found, however, I looked in /system/xbin/ and busybox and strings are in that folder. Also, right under strings is ( -> busybox )
Click to expand...
Click to collapse
Yep the
strings --> busybox
is the way strings and the other Busybox commands look the
"--> Busybox" is to show what it links to, but the name is still strings. It's sorta like a shortcut in windows in a way.
Anyway that means you should be able to use strings try copy/paste this before you run the script in the same terminal.
PATH=$PATH:/system/xbin; export PATH
that take what ever you currently have for a $PATH and add /system/xbin to it
you can view your $PATH by typing
echo $PATH
Either way if your Busybox is properly installed into /system/xbin this should return a few lines out the binary. Just to confirm it's a working command on your system.
/system/xbin/strings /data/data/com.adobe.flashplayer/lib/libflashplayer.so | grep "AND"
I will come up with an up date to check for the location of Busybox and use hard paths for the commands, later in the week. That should avoid this issue coming up in the future.
First off thank you for helping with my pain-in-the-you-know-what tablet.
But sadly still a no go. I did get some more info though: http://i.imgur.com/oVxBz.png
It showed AND 11,1,115,7.
I think it's either the way I'm putting in the commands or the way my tab is rooted.
Joecascio2000 said:
First off thank you for helping with my pain-in-the-you-know-what tablet.
But sadly still a no go. I did get some more info though: http://i.imgur.com/oVxBz.png
It showed AND 11,1,115,7.
I think it's either the way I'm putting in the commands or the way my tab is rooted.
Click to expand...
Click to collapse
First off, Your very welcome. I actually enjoy this kinda stuff as long as I have time.
Next, Since it DID respond with AND 11,1,115,7 I am sure you CAN use the script, once updated. I will be working on an update this weekend. I may have a revised version made today, if I get an extra hour to dedicate to make the changes.
The issue seems to be, for what ever reason your device is having an issue with /system/xbin not being in your PATH or PATH and ENV not working as it should, BUT since /system/xbin/busybox and the symlink /system/xbin/strings both work when you type the full path, it's not a big deal.
I'm also going to try to write in a feature to test the location and version of Busybox and make sure it lists "strings" as a defined function, so the script can identify and resolve the issue when possible.
Updated Version should resolve any issues with the script not being able to use strings, grep etc on some systems.
Also check here for information on configuring Terminal Emulator to work correctly with Busybox. This I belive would get the old script working for those that had issues also for what it's worth.
NoSudo said:
Updated Version should resolve any issues with the script not being able to use strings, grep etc on some systems.
Also check here for information on configuring Terminal Emulator to work correctly with Busybox. This I belive would get the old script working for those that had issues also for what it's worth.
Click to expand...
Click to collapse
This is with the new version 2.02 and after configuring Terminal Emulator:
http://i.imgur.com/Rb458.png
Joecascio2000 said:
This is with the new version 2.02 and after configuring Terminal Emulator:
http://i.imgur.com/Rb458.png
Click to expand...
Click to collapse
Man I am at a total loss as to what your system is doing. That just doesn't make any sense at all. Are you running the script or Copy/Pasting lines into Terminal? What Busybox are you running anyway, not the version where did you get it? It seems totally defective honestly.
The script should work fine for you at this point TBH. Heck it works for me on my Linux PC too when I change the paths, and swap out xxd for hexdump and change the pattern format.
At this point I can only conclude that either you have a bad version of Busybox or you are doing something wrong.
Here is an example of what I mean
BUSYBOXPATH="/system/xbin"
if [ -e "$BUSYBOXPATH/busybox" ]&&[ -e "$BUSYBOXPATH/grep" ]; then
echo "Found BusyBox in $BUSYBOXPATH"
BSYBX_VER=`$BUSYBOXPATH/busybox | $BUSYBOXPATH/grep "BusyBox v"`
echo "Version: $BSYBX_VER"
else
echo "Unable to confirm location of BusyBox, please configure the script"
exit 3
fi
This statement says if /system/xbin/busybox and /system/xbin/busybox exist to echo "Found" etc.
Your output has those lines, so those commands HAVE to exist in those locations or it would respond with
Unable to confirm location of BusyBox, please configure the script.
However the script is unable to read the Version line off busybox because busybox isnt spitting out anything or maybe it's been modified and no longder displays the correct response. Again even a Desktop PC with Linux on it get's this response from Busybox.
What happens when you just type
/system/xbin/busybox
Do you get anything?
You should get something like;
$ busybox
BusyBox v1.19.3 (2011-11-22 01:37:10 MST) multi-call binary
Copyright (C) 1998-2011 Erik Andersen, Rob Landley, Denys Vlasenko
and others. Licensed under GPLv2.
See source distribution for full notice.
Usage: busybox [function] [arguments]...
or: function [arguments]...
BusyBox is a multi-call binary that combines many common Unix
utilities into a single executable. Most people will create a
link to busybox for each function they wish to use and BusyBox
will act like whatever it was invoked as!
Currently defined functions:
[, [[, addgroup, adduser, adjtimex, ar, arping, ash, awk,
basename, brctl, bunzip2, bzcat, bzip2, cal, cat, chgrp,
chmod, chown, chroot, chvt, clear, cmp, cp, cpio, crond,
crontab, cut, date, dc, dd, deallocvt, delgroup, deluser,
df, dirname, dmesg, dos2unix, dpkg, dpkg-deb, du, dumpkmap,
echo, ed, egrep, eject, env, expand, expr, false, fbset,
fdflush, fdisk, fgrep, find, fold, free, freeramdisk, fsck.minix,
ftpget, ftpput, getopt, getty, grep, gunzip, gzip, halt,
head, hexdump, hostid, hostname, httpd, hwclock, id, ifconfig,
ifdown, ifup, init, ip, ipcalc, kill, killall, klogd, last,
length, less, linuxrc, ln, loadfont, loadkmap, logger, login,
logname, logread, losetup, ls, lzmacat, makedevs, md5sum,
mdev, mesg, microcom, mkdir, mkfifo, mkfs.minix, mknod,
mkswap, mktemp, more, mount, mt, mv, nameif, nc, netstat,
nslookup, od, openvt, passwd, patch, pidof, ping, ping6,
pivot_root, poweroff, printf, ps, pwd, rdate, readlink,
realpath, reboot, renice, reset, rm, rmdir, route, rpm,
rpm2cpio, run-parts, sed, setkeycodes, sh, sha1sum, sleep,
sort, start-stop-daemon, static-sh, strings, stty, su, sulogin,
swapoff, swapon, sync, syslogd, tac, tail, tar, tee, telnet,
telnetd, test, tftp, time, top, touch, tr, traceroute, true,
tty, udhcpc, umount, uname, uncompress, unexpand, uniq,
unix2dos, unlzma, unzip, uptime, usleep, uudecode, uuencode,
vconfig, vi, vlock, watch, watchdog, wc, wget, which, who,
whoami, xargs, yes, zcat
Note: Busybox in Android will have a slightly diffrent list of functions but the version line etc is the same.
NoSudo said:
Man I am at a total loss as to what your system is doing. That just doesn't make any sense at all. Are you running the script or Copy/Pasting lines into Terminal? What Busybox are you running anyway, not the version where did you get it? It seems totally defective honestly.
The script should work fine for you at this point TBH. Heck it works for me on my Linux PC too when I change the paths, and swap out xxd for hexdump and change the pattern format.
At this point I can only conclude that either you have a bad version of Busybox or you are doing something wrong.
Click to expand...
Click to collapse
The command I'm using is
Su
Sh /mnt/sdcard/flashex2/flashex202.sh
I think it might be my version of busybox. I think its a modified version because rooting ICS on the a100 was a difficult process. It also says not to update busybox because root will be broken.
Sent from my A100 using XDA Premium HD app

[VOLVO SCT] Volvo Sensus Connected Touch (car - navi - audio)

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?

[Q] Mounting network folder as a local directory

Hello all.
I'm running my FireTV as an entertainment system. It's rooted with Kodi, Mobdro, RetroArch, ePSXe w/ Sixaxis PS3 as controller etc.
Since the FTV only has 8GB of local storage, I was wondering if there's a way to mount a samba share into a local directory so I can load emulator games without transferring them. Majority of the emulators only scan ROMs / ISOs etc on local directories.
Unfortunately, apps like cifsmanager and mount manager are broken since android 4.3 I think.
Thanks in advance.
Maybe this might be helpful:
http://forum.xda-developers.com/fire-tv/general/run-script-firetv-boot-t2986158
This works for me:
Code:
busybox mount -t cifs //my.ip.address/my.share /sdcard/somedir -o username=guest
jocala said:
This works for me:
Code:
busybox mount -t cifs //my.ip.address/my.share /sdcard/somedir -o username=guest
Click to expand...
Click to collapse
Hello there.
Thanks for the help. But do you mind answering a couple of Qs because I'm a filthy nub when it comes to this.
1. Where do I run this command? Do I connect to my FTV using adb and just type this in?
2. How would this work if my Samba share has spaces on it?
3. Do I run this everytime I reboot my FTV?
Thanks again
Squalll13 said:
Hello there.
Thanks for the help. But do you mind answering a couple of Qs because I'm a filthy nub when it comes to this.
1. Where do I run this command? Do I connect to my FTV using adb and just type this in?
2. How would this work if my Samba share has spaces on it?
3. Do I run this everytime I reboot my FTV?
Thanks again
Click to expand...
Click to collapse
1. As posted, it would be run from the command line, from a root prompt. I use busybox, so you need that as well for my method.
2. I stay away from directories with spaces, but it may work with quotes, idk, haven't tested. It works with embedded spaces if they are inclosed in quotes: e.g:
Code:
busybox mount -t cifs "//192.168.1.200/media/my folder" /sdcard/cifs -o username=guest
3. Easiest thing to do would be to put it into a script that runs at boot. That's the approach I'm taking with my program adbFire. I'm testing this functionality now.
oops.... guess that was already answered. Anyhow, can't leave text field blank so; Yeah this works great. I got mine all set up with Advanced Launcher kodi addon. Tested with a few emulators and ISOs load near instantly
Thanks for the replies. Though I noticed something peculiar and I would like some insight.
I noticed that after I haven't used the FireTV for a while. Maybe 24 hours. The mounted folder kinda "disappears" for a bit but come back. For example, I use ES File Explorer and go to /mnt/obb/ and it will just keep "Loading" until I just press back. Same thing when I used adb shell, cd to /mnt/obb/ and use ls. It just stays there until I force exit. But after a waiting around a bit like 10 mins or so, the mounted folder shows up no problem.
It kinda feels like you need to ping /access it or something, fail, wait a bit then it shows up.
I hope what I said isn't too confusing. If it was I apologize.

Categories

Resources