Help needed in scheduling Nvidia Shield reboot (unrooted) - Shield Android TV Q&A, Help & Troubleshooting

Hi
I recently replaced our aging DVR with an NVidia Shield and HDHomerun Tuner and we also use the Shield to host our main PLEX Media Server to record live TV
We leave it running 24/7 and the unit has been pretty solid, but on occasion it'll gets its knickers in a twist and needs a reboot.
So I was looking to schedule a reboot of it every week just to keep things moving along (and to prevent the inevitable phonecall when I'm out of "The TV isn't working... haaalp"), but there doesn't seem to be much around the internet on how to do this - other than buy a plug-in time/adapter and switch it off/on that way.
Rather than buy more stuff, I figured there must be a more elegant way of doing this?
So I sideloaded IFTTT and Tasker but didn't get very far.
IFTTT would only offer me existing recipes rather than let me create my own (limitation of an unsupported device?) and Tasker set up nicely, but when I added the reboot task I got an error:
Code:
Error: Missing Permissions:
android.permission.ACCESS.SUPERUSER
The only other idea I have is to use the manual entry part of Tasker to simulate the remote control taking the shield to the home screen and navigating to the settings, reboot and "are you sure "Yes"".
I've not tried that yet, but I'm thinking this may be the only way to do it.
.... unless anyone has a better idea?

Workaround
Ok, so I think I found a way
It's not ideal, but it works and may be useful to someone else trying this
re: Tasker:
I cleared the permissions errors by using the Android Debug Bridge (ADB)
https://developer.android.com/studio/command-line/adb
Developer Mode was already enabled, but I enabled Network Debugging in it to allow remote connection.
Once enabled I ran the following ADB commands from a CMD prompt to clear the error:
NOTE: When authorising access to the Shield, tell the shield to remember the computer fingerprint. This is important for later
Code:
adb connect [YourShieldIP]:5555 -- The shield will ask you to you confirm remote access
adb devices -- This is just to confirm it's seeing the shield
adb shell pm grant net.dinglisch.android.taskerm android.permission.DUMP
adb shell pm grant net.dinglisch.android.taskerm android.permission.SYSTEM_ALERT_WINDOW
adb shell pm grant net.dinglisch.android.taskerm android.permission.WRITE_SECURE_SETTINGS
Once done you can confirm the settings with the following. In each case they should come back as "=true"
Code:
adb shell dumpsys package net.dinglisch.android.taskerm | find /I "permission" | find /I "=" | find /I "dump"
adb shell dumpsys package net.dinglisch.android.taskerm | find /I "permission" | find /I "=" | find /I "SYSTEM_ALERT_WINDOW"
adb shell dumpsys package net.dinglisch.android.taskerm | find /I "permission" | find /I "=" | find /I "WRITE_SECURE_SETTINGS"
I did this and got no error.... manually ran the Tasker reboot task ... and it failed
Something about "IOException: Cannot run program "su": error=13, Permission denied"
So basically Tasker needs root access to reboot the device
But, I did spot an item in ADB that lets me remote reboot a connected android device.
So I set up a scheduled task on a fileserver PC we use and sometimes leave running late.
The task runs weekly on Mon/Wed/Fri @ wee hours of the morning and calls a simple batch script:
(You need the shield to remember the computer fingerprint for this to work. See ln. 10 above)
Code:
echo off
cls
cd /D "[ADB Install Path]\platform-tools"
cls
echo Clearing any existing connections
adb kill-server
ping -n 5 127.0.0.1 > NUL
cls
echo Connecting to Shield
adb connect [YourShieldIP]:5555
ping -n 5 127.0.0.1 > NUL
cls
echo Rebooting Shield
adb reboot
timeout 60
exit
I'll see how that goes - otherwise I may have to resort to using Tasker Input to simulate using the controller to reboot the shield.

I had a Eureka moment in the shower which led to an update to how the remote reboot is scheduled.
As the "sometimes on" fileserver pc isn't available all the time, it means that it could easily reboot the shield anywhere from 3 times a week up to not at all .
This is too inconsistent for my liking, so I changed the logic on how this will run.
The reboot schedule now runs daily @ wee hours of the morning and the updated reboot script checks a file to see the last date the shield was rebooted.
If it was last recorded > 7 days ago then it'll reboot it and reset the date in the file.
If it was last recorded < 7 days then it'll do nothing and exit the script.
It won't be perfectly 7 days as the machine isn't on all the time, but it'll make the reboot schedule a lot more consistent.
Assuming your ADB install is in "C:\ADB\platform-tools":
Code:
echo off
setlocal
:: Get date parameters
cls
set TRACDAY=0
for /F "usebackq" %%T in (`Powershell $date ^= Get-Date^; $date ^= $date.AddDays^(0^)^; $date.ToString^('dd/MM/MMM/yyyy/HH/mm/ss'^)`) do set TRACDAY=%%T
set nowday=%TRACDAY:~0,2%
set nowmonth=%TRACDAY:~3,2%
set nowmon=%TRACDAY:~6,3%
set nowyear=%TRACDAY:~10,4%
set nowyear2=%TRACDAY:~12,2%
set nowhour=%TRACDAY:~15,2%
set nowmin=%TRACDAY:~18,2%
set nowsec=%TRACDAY:~21,2%
set /A CurrentDay=%nowyear%%nowmonth%%nowday%
set /A CurrentDay7=%CurrentDay% -7
REM echo %nowyear2% %nowyear%/%nowmonth%/%nowmon%/%nowday% %nowhour%:%nowmin%:%nowsec% %CurrentDay% %CurrentDay7%
set ADBROOT=C:\ADB\platform-tools
set ShieldLastBootFile=%ADBROOT%\..\_LastReboot.log
if not exist %ShieldLastBootFile% echo %CurrentDay% > %ShieldLastBootFile% && goto end
:: Get the date from the last reboot
for /F %%F in (%ShieldLastBootFile%) do set /A LastReboot=%%F
:: Check to see if the last reboot time was more than 7 days ago. If no, goto the end
if %LastReboot% GTR %CurrentDay7% goto end
:: If its more than 7 days, lets reboot
cd /D %ADBROOT%
cls
echo Clearing any existing connections
adb kill-server
ping -n 5 127.0.0.1 > NUL
cls
echo Connecting to Shield
adb connect [YourShieldIP]:5555
ping -n 10 127.0.0.1 > NUL
cls
echo Rebooting Shield
adb reboot
timeout 60
:: Record today as the latest reboot time
echo %CurrentDay% > %ShieldLastBootFile%
:end
endlocal
exit

Glad you found a solution, but why not ask in
https://forum.xda-developers.com/shield-tv/help
?
Sent from my perry_f using XDA Labs

sd_shadow said:
Glad you found a solution, but why not ask in
https://forum.xda-developers.com/shield-tv/help
?
Sent from my perry_f using XDA Labs
Click to expand...
Click to collapse
'cos I'm a blind numpty
Could a moderator please move this to the right place?
Ta ... and sorry

callumw said:
'cos I'm a blind numpty
Could a moderator please move this to the right place?
Ta ... and sorry
Click to expand...
Click to collapse
No worries, I was just curious.
XDA can be tricky to navigate, if you have a question about a device, try the search.
I will report the thread, and ask that it be moved.
In future best way to get moderator assistance is to use the report post option.
See
[Using "Report" button] How to Report issues / Moderators assistance by TonyStark
https://forum.xda-developers.com/showthread.php?t=1718423

Related

[REF] Making use of Windows "Send to" menu

Pushing files over adb has never been easy. There are some external tools for sending files over adb, but I like native, Windows-integrated ones.
The trick is extremely easy. It works with adbWireless and similar applications. It could work with USB connection too, but I rarely use it.
HEADS UP: Be sure to check all nice(r) scripts by Daneshm90 down the thread!
Prerequisites:
-adb
-adbMagic or similar for wifi connection, none for USB only.
How to?
For better look you will need two files:
adb_send.cmd;
Code:
adb connect 192.168.1.103
adb push %1 /sdcard/
pause
and a shortcut to it, where you can customize icon and name.
1) create your adb_send.cmd anywhere on disk (I put mine in android-sdk-windows\tools directory),
2) customize the ip address, to point at your device (I have router with static DHCP, so everytime my device connects it leases the same address)
3) then go to:
Windows Vista/7:
Code:
%APPDATA%\Microsoft\Windows\SendTo
(paste it in explorer's address bar, or hit WIN+R and paste there, Enter), and place shortcut to script file created earlier. (drag it with right mouse button)
4) customize the icon and name of the shortcut
Next time you click on any file menu appears:
good idea, btw how did you find the ip address? 192.168.1.103... i am not able to send using the same
When you use adbWireless, under big orange button you will see something like: "adb connect 192.168.1.103:5555"
ravi4chahal said:
good idea, btw how did you find the ip address? 192.168.1.103... i am not able to send using the same
Click to expand...
Click to collapse
I think that you will have to find your own ip adress mate
xan said:
When you use adbWireless, under big orange button you will see something like: "adb connect 192.168.1.103:5555"
Click to expand...
Click to collapse
ok thanks, I installed adbWireless and now it is working ... however is there any way of getting rid of the CMD window that pops up while transfer?
hmm..
I think there is. Right click on the shortcut (this in "%APPDATA%\Microsoft\Windows\SendTo")properities -> run -> minimised
Delete "pause" line from script, and command line is hidden.
//double, sry
How's this :
Code:
@echo off
echo Where to push the file ? eg (/data/1.apk)
SET /P pat=Enter :
echo Pushing...
adb push "%1" /sdcard/%~n1
adb shell su -c "cp /sdcard/%~n1 %pat%" -root
adb shell rm /sdcard/%~n1
echo Done
It works directly for me.
Right click the file, Send to - > Bluetooth Devices.
Select my Phone and press Send.
Very cool tip, made a couple different cmd shortcuts to copy to different part of the sdcard(roms/apps/misc).
peachpuff said:
Very cool tip, made a couple different cmd shortcuts to copy to different part of the sdcard(roms/apps/misc).
Click to expand...
Click to collapse
The script i posted above does just that except you don't need multiple shortcuts.
When you run it'll as you where u want the file to go.
Thanks for the tip.
And Daneshm90 i tried your command, but..is there a way to do it without su? Since when i try ur command i always have to accept the root request, and it dosnt seem to push the file right anyway. So im asking is there a way to do it without su? Cuz if i do the original i dont need to press the root request all the time.
Thanks in advance mate.
borgen92 said:
Thanks for the tip.
And Daneshm90 i tried your command, but..is there a way to do it without su? Since when i try ur command i always have to accept the root request, and it dosnt seem to push the file right anyway. So im asking is there a way to do it without su? Cuz if i do the original i dont need to press the root request all the time.
Thanks in advance mate.
Click to expand...
Click to collapse
It should only ask you to accept once, not everytime.
Well sure i can modify mine where if u say /sdcard/ then it doesn't do that whole root crap and just pushes to sdcard.
Gimme a few.
Daneshm90 said:
It should only ask you to accept once, not everytime.
Well sure i can modify mine where if u say /sdcard/ then it doesn't do that whole root crap and just pushes to sdcard.
Gimme a few.
Click to expand...
Click to collapse
Thanks alot man, you'r awesome
Here try this one
Code:
@echo off
echo Where to push the file ? eg (/data/1.apk)
SET /P pat=Enter :
if not "%pat:sdcard=%"=="%pat%" goto sdcard
echo Pushing...
adb push %1 /sdcard/%~n1
adb shell su -c "cp /sdcard/%~n1 %pat%" -root
adb shell rm /sdcard/%~n1
echo Done
:sdcard
echo Pushing...
adb push %1 %pat%
echo Done
Note, if you have a rom where when you do "adb shell" and ur automatically in "su" mode. Then u can simply change the script to :
Code:
@echo off
echo Where to push the file ? eg (/data/1.apk)
SET /P pat=Enter :
echo Pushing...
adb push %1 %pat%
echo Done
flawless!!!!
Thank you!
Does this require root?
Daneshm90 said:
Here try this one
Code:
@echo off
echo Where to push the file ? eg (/data/1.apk)
SET /P pat=Enter :
if not "%pat:sdcard=%"=="%pat%" goto sdcard
echo Pushing...
adb push %1 /sdcard/%~n1
adb shell su -c "cp /sdcard/%~n1 %pat%" -root
adb shell rm /sdcard/%~n1
echo Done
:sdcard
echo Pushing...
adb push %1 %pat%
echo Done
Note, if you have a rom where when you do "adb shell" and ur automatically in "su" mode. Then u can simply change the script to :
Code:
@echo off
echo Where to push the file ? eg (/data/1.apk)
SET /P pat=Enter :
echo Pushing...
adb push %1 %pat%
echo Done
Click to expand...
Click to collapse
thats awesome, how would one make it crate and copy the folder structure as well? did this with a folder with pics in it and it just put every pic on the root of my sd card.
or how about asking for ip then using what was imputed?
Send To Menu For ADB Install
You can modify the above instructions to use the Send to Menu to install applications over wireless.
Code:
adb connect 192.168.1.46:5555
adb install %1
pause
Substitute your IP address for 192.168.1.46 (may or may not need the port)
Save your Install.cmd or anything.cmd anywhere on your hardisk. Make a shortcut in
Code:
%APPDATA%\Microsoft\Windows\SendTo
to the .cmd.
Right click an .apk and select Send To -> Install.cmd
Works like a dream using my Nexus 1 and adbWireless
nice one @wacckkoo1
this has so much potential.
i found an app on the market called ADB over WIFI widget. it dosent care if your connected to wifi or not, it will just start, making this possable to do while wireless tethering to a laptop
thats why im wanting to know how i can get it to ask for ip address because it wont always be the same.

[HOWTO] Overclock the MotoACTV

Using the amazing overclock module made by Tiago Sousa http://code.google.com/p/milestone-overclock/ , it is possible to modify the frequency tables on the motoACTV.
I'm not responsible for what you do to your device. This is potentially dangerous.
Extract the attached overclock.ko in some folder of your computer and open a command line in that folder. You need to have adb installed.
Issue the following commands:
Code:
adb remount
adb push overclock.ko /system/lib/modules/
adb shell insmod /system/lib/modules/overclock.ko omap2_clk_init_cpufreq_table_addr=0xc0049150
adb shell 'echo "0 1000000" > /proc/overclock/freq_table'
adb shell 'echo "1 800000" > /proc/overclock/freq_table'
adb shell 'echo "2 600000" > /proc/overclock/freq_table'
adb shell 'echo "3 300000" > /proc/overclock/freq_table'
adb shell 'echo "1 300000000 20" > /proc/overclock/mpu_opps'
adb shell 'echo "2 600000000 30" > /proc/overclock/mpu_opps'
adb shell 'echo "3 800000000 45" > /proc/overclock/mpu_opps'
adb shell 'echo "4 1000000000 45" > /proc/overclock/mpu_opps'
adb shell "echo 1000000 > /proc/overclock/max_rate"
adb shell "echo 45 > /proc/overclock/max_vsel"
This will create 4 frequency steps:
300MHz. This is the minimum we can get with the current kernel.
600Mhz. This is the stock highest speed. Now the voltage is lower.
800Mhz.
1Ghz.
Now, you can use a program like setCPU http://forum.xda-developers.com/showthread.php?t=505419 to set the maximum and minimum speeds.
Enjoy
On this command (after copying and pasting your commands above):
Code:
adb shell 'echo "0 1000000" > /proc/overclock/freq_table'
I get a return of:
Code:
The system cannot find the path specified.
I tried next to re-run:
Code:
adb shell insmod /system/lib/modules/overclock.ko omap2_clk_init_cpufreq_table_addr=0xc0049150
but it failed, because it already exists.
EDIT: I believe they should be like this:
Code:
adb shell "echo '0 1000000' > /proc/overclock/freq_table"
adb shell "echo '1 800000' > /proc/overclock/freq_table"
adb shell "echo '2 600000' > /proc/overclock/freq_table"
adb shell "echo '3 300000' > /proc/overclock/freq_table"
adb shell "echo '1 300000000 20' > /proc/overclock/mpu_opps"
adb shell "echo '2 600000000 30' > /proc/overclock/mpu_opps"
adb shell "echo '3 800000000 45' > /proc/overclock/mpu_opps"
adb shell "echo '4 1000000000 45' > /proc/overclock/mpu_opps"
EDIT 2: That didn't work... the frequencies aren't in setcpu, even after re-detecting speeds.
can you try this command?
Code:
adb shell grep omap2_clk_init_cpufreq_table /proc/kallsyms
It should return a number, and this number is the one that has to be used for the insmod.
I haven't updated my MotoActv in a while and maybe the kernels have changed.
Code:
C:\Users\Owner\Desktop\MiniADB>adb shell grep omap2_clk_init_cpufreq_table /proc
/kallsyms
[B]c0049150[/B] T omap2_clk_init_cpufreq_table
There was no error when running the insmod the first time, it went through successfully, just the next several lines, and then no change at the end, even after a reboot and re-checking the frequencies in SetCPU.
You are right about the commands, for windows, you have to use this:
Code:
adb remount
adb push overclock.ko /system/lib/modules/
adb shell insmod /system/lib/modules/overclock.ko omap2_clk_init_cpufreq_table_addr=0xc0049150
adb shell "echo '0 1000000' > /proc/overclock/freq_table"
adb shell "echo '1 800000' > /proc/overclock/freq_table"
adb shell "echo '2 600000' > /proc/overclock/freq_table"
adb shell "echo '3 300000' > /proc/overclock/freq_table"
adb shell "echo '1 300000000 20' > /proc/overclock/mpu_opps"
adb shell "echo '2 600000000 30' > /proc/overclock/mpu_opps"
adb shell "echo '3 800000000 45' > /proc/overclock/mpu_opps"
adb shell "echo '4 1000000000 45' > /proc/overclock/mpu_opps"
adb shell "echo 1000000 > /proc/overclock/max_rate"
adb shell "echo 45 > /proc/overclock/max_vsel"
Do not reboot! This changes are not save anywhere yet. It's a bit dangerous because the system will not boot if you put wrong values in there. I'm leaving this for later.
Good work, however the changes are not persistent to reboots. I put them in init.goldfish.sh but still not persistent. When doing it from shell, the changes are there in SetCPU, just not after a reboot. Maybe we could script it somewhere else to start at reboot...
Regards...
I added init.d to the /system/etc folder and added my script - still nothing
I added the script in other shells but still nothing...
I heard that SManager will boot scripts at logon, maybe this is the way to go?
There are a few scripts that are launched by init directly. One for the keyboard, one for preinstall, etc.
Try adding the insmod and echo commands to one of those. I'll test this later and post about it.
I amended the one for the keyboard, no dice. I am going to try again though... keep you informed.
init_prep_keyboard.sh keeps reverting back to what it was before amendments. I am sure that I verified its permissions prior to reboot, it just went back to what it was before and deleted the .BAK file too, wierd.
Peace
Working Solution...
I've tested the method above and it works perfectly.
But as mentioned, the script has to be executed upon every reboot.
Working Solution !!!
I've tested this and it works 100%
- Dump boot.img from watch.
- Extract and decompile boot.img
- Create overclock.sh and put it in etc folder from boot.img
- Write entire script in overclock.sh
- Open init.rc from boot.img
- Add exec /system/etc/overclock.sh in init.rc
- Save changes to init.rc
- Repack boot.img
- Push modified boot.img to watch via fastboot
- Restart watch.
Consider adding overclock.ko in system.img
Overclock is now permanent !!! Even after reboot :-D
tansoftware said:
I've tested the method above and it works perfectly.
But as mentioned, the script has to be executed upon every reboot.
Working Solution !!!
I've tested this and it works 100%
- Dump boot.img from watch.
- Extract and decompile boot.img
- Create overclock.sh and put it in etc folder from boot.img
- Write entire script in overclock.sh
- Open init.rc from boot.img
- Add exec /system/etc/overclock.sh in init.rc
- Save changes to init.rc
- Repack boot.img
- Push modified boot.img to watch via fastboot
- Restart watch.
Consider adding overclock.ko in system.img
Overclock is now permanent !!! Even after reboot :-D
Click to expand...
Click to collapse
Can you possibly make a patched boot.img for us?
tansoftware: This is no easy task on a windows box... I will try on Fedora...
a detailed walkthrough would be superb! i.e. How-to? Otherwise GIYF
Peace
EDIT: This ain't easy in linux either...
If you could post your modified Boot.img, that would be killer!
What bash shell did you use upon init.rc? Could you at least share that with us?
dproldan: This thing WIZZes at 1Ghz! If there were just an easier way to make it persistent across reboots... but what a difference.
I posted on the other motoactv thread a very easy way to overclock.
You need android overclock and rom toolbox pro (maybe the free version works I have no idea)
1. Open android overclock select advanced/custom.
2. Scroll to bottom and select apply preset. This gives you four slots 350, 500, 800, 1000.
3. Open rom toolbox pro, performance, cpu control.
4. Slide the bar to desired speed. You can also set profiles in this section to clock down to 350 while the screen is off etc.
I was able to apply at boot etc and haven't lost the overclocking settings. With cf-bench my score went from 1504 to 2370. You can probably apply settings beyond the slots listed above but you will need to increase the voltages in android overclock. I haven't had time to try it. Another microsoft certification exam this week.
Updated Method...
Jeff said:
tansoftware: This is no easy task on a windows box... I will try on Fedora...
a detailed walkthrough would be superb! i.e. How-to? Otherwise GIYF
Peace
EDIT: This ain't easy in linux either...
If you could post your modified Boot.img, that would be killer!
What bash shell did you use upon init.rc? Could you at least share that with us?
Click to expand...
Click to collapse
I can't share my boot.img at this time as it is highly experimental and could easily & un-reversibly brick your watch. My boot.img contains a modified bootstrap.bin that flashes upon boot and forces Android to boot from the built-in MMC instead of internal nvram. Extremely buggy at this stage with several crashes but I'm no longer limited by the 256mb ram on the watch. Hopefully after the bugs are ironed out, we can all enjoy full 8/16 gigs of space. This trick was taken from the nook color modified boot code.
As for how to embed the code into your own boot.img, I believe @Prack posted a simpler cleaner method to overclock the watch. If his method does not work as explained, I'll provide a more thorough explanation of my method.
tansoftware said:
Extremely buggy at this stage with several crashes but I'm no longer limited by the 256mb ram on the watch.
Click to expand...
Click to collapse
Uh what?
eXecuter.bin said:
Uh what?
Click to expand...
Click to collapse
My guess is he's talking about a swapper2 or some other swap file. It helps but it by no means replaces having more ram. I was on a droid 1 for years and the biggest issue with that phone was the ram/internal storage space. I used swap and 2nd sdcard partitions to make up for it. I'm guessing he's doing the same thing with the watch. Would be interesting to see if he gets any actual improvement.
any more news on this?
permanent settings for the overclock
Attached is a modified "loadpreinstalls.sh" file that will load the module and apply the settings at boot.
Be careful with this, it can prevent your device from booting, requiring a full system reinstall to bring it back.
so, download the overclock.ko from the first post, download and extract this loadpreinstalls.sh to the same folder in your computer and issue this commands from a terminal:
adb remount
adb push overclock.ko /system/lib/modules/
adb push loadpreinstalls.sh /system/bin/
adb shell chmod 755 /system/bin/loadpreinstalls.sh
adb reboot
Now you can use SetCPU to choose the speeds you like and make its changes permanent.
This is working fine for me with the current MotoACTV system releases, it could be broken for some older versions.
Enjoy
This sounds like an awesome application - any way to make it easier for the lay (er) people that know just enough to be dangerous?
mattyv said:
This sounds like an awesome application - any way to make it easier for the lay (er) people that know just enough to be dangerous?
Click to expand...
Click to collapse
How about this. I just wrote a simple windows install script and included all of dproldan's needed files, so all you have to do is unzip this to your desktop and run "runme.bat".
Pre-requesites:
-ACTV must be rooted
-ACTV must be plugged into computer and turned on normally
Called it "dproldan_overclock".
Even included the ADB drivers.

Root for Mac

So thecubed made a great tool to root, but the .bat file is intended for PC use. I'm on a Mac.
Could anyone extrapolate the adb commands used in that file? I'm familiar with adb and would have no issues with following the commands, I just can't seem to see exactly what the .bat file does.
tldr: what are the adb commands needed to root using his files? I can take it from there.
I'd love to know as well.
Sent from my VS980 4G using Tapatalk 4
mjdupuis said:
So thecubed made a great tool to root, but the .bat file is intended for PC use. I'm on a Mac.
Could anyone extrapolate the adb commands used in that file? I'm familiar with adb and would have no issues with following the commands, I just can't seem to see exactly what the .bat file does.
tldr: what are the adb commands needed to root using his files? I can take it from there.
Click to expand...
Click to collapse
Here, I put the whole .bat file text, you should be able to figure it out.
@echo off
echo.
echo **************************************
echo Easy root for LG G2
echo Supports ATT, TMO, VZW, and KT Variants
echo Repackaged by IOMonster
echo See http://tinyw.in/mXhw for details
echo **************************************
echo.
echo.
echo Credit to http://optimusforums.com/threads/how-to-root-the-lg-g2-f320.8846/
echo.
echo.
pause
echo Looking for device...
.\adb.exe wait-for-device
echo Determining carrier...
for /f %%i in ('.\adb.exe shell getprop ro.build.target_operator') do set RESULT=%%i
if %RESULT%==ATT GOTO ATTTMORoot
if %RESULT%==TMO GOTO ATTTMORoot
if %RESULT%==VZW GOTO VZWRoot
if %RESULT%==KT GOTO KTRoot
echo.
echo.
echo No matching phone found. Got %RESULT% from ADB.
pause
:ATTTMORoot
echo Found ATT or TMO phone!
echo Pushing g2_security...
echo.
.\adb.exe push g2_security /sdcard/g2_security
GOTO RootStep2
:VZWRoot
echo Found VZW phone!
echo Pushing VZW g2_security...
.\adb.exe push g2_security_vzw /sdcard/g2_security
GOTO RootStep2
:KTRoot
echo Found KT F320k phone!
echo Pushing ytiruces_1a ...
.\adb.exe push ytiruces_1a /sdcard/ytiruces_1a
GOTO RootStep2
:RootStep2
echo.
echo.
echo *******************************************************
echo Now, please unplug usb, go to developer options and
echo disable USB debugging and re-enable it.
echo Once you've done that, re-plug your usb...
echo *******************************************************
pause
echo Waiting for device...
.\adb.exe wait-for-device
echo Now it's time to install su and superuser.
echo.
echo Please note! This will trip LG's rootchecker!
echo.
echo This means your phone will show ROOTED in the settings menu,
echo and in the LG Download mode.
echo.
echo If you do not want to possibly invalidate your warranty
echo press CTRL-C to stop this script.
echo You will have a rooted ADB, but no apps on the phone will be able
echo to access root functions.
echo.
pause
echo.
echo.
echo Mounting system RW and pushing SU, then remounting system RO again
.\adb.exe shell "mount -o remount,rw /system"
.\adb.exe push su /system/xbin/su
.\adb.exe shell "chown 0.0 /system/xbin/su;chmod 06755 /system/xbin/su;sync;mount -o remount,ro /system"
echo Installing superuser
.\adb.exe install superuser.apk
echo.
echo.
echo ***************************************************
echo Done.
echo ***************************************************
echo.
echo Please check the above for any errors and let me know if you run into any issues.
echo Enjoy your phone!
pause
Click to expand...
Click to collapse
wargreymon89 said:
Here, I put the whole .bat file text, you should be able to figure it out.
Click to expand...
Click to collapse
If anyone can't, they don't need to root.
If you know your carrier, skip all the carrier detect crap and go straight to pushing the correct root.
Then wait and push Su and the rest.
It's a pretty simple root via adb manually.
I just want tethering to work before I run out and get one.
Thank you very much!
I'm having trouble getting debug mode on my mac. Any suggestions? SDK Tools are updated and USB Debugging is checked...
Did you select internet and then Ethernet when you connect your USB?
mjdupuis said:
Did you select internet and then Ethernet when you connect your USB?
Click to expand...
Click to collapse
Your a boss!
wargreymon89 said:
Here, I put the whole .bat file text, you should be able to figure it out.
Click to expand...
Click to collapse
By the way, this worked out just fine. I couldn't get it to work the first time around because the original method by thecubed didn't work with the ota. His update worked. Thank you, again.
A Mac root method (not automated)
I posted this in another Q&A thread, just wanted the answer to be available if someone may be following this. The two thread might need to be combined.
WARNING! This is just what worked for me, and it's just the adb commands from thecubed's program. All credit goes to him, I didn't do any of this, just took the info from it.
Here's the thread: http://forum.xda-developers.com/showthread.php?t=2448887
Download it, unzip it, and then take a moment to go back and thank him if you didn't do that.
You are not actually using his program, just the files and commands. Everything is done using Terminal and the Finder. You must have ADB working, look elsewhere for instructions on setting that up.
The files used here are the Verizon versions of the files, which I used for my phone. They are also specific to the OTA'd Verizon software, "11A" so there are different files if you haven't installed the OTA. These commands are correct, but the files being pushed aren't all the same between different carrier models and do not work with any other carrier. All the right stuff for other carriers is contained in thecubed's program.
The bold sections are files you need to send over adb, you can manually enter the file pathway or drag the files from finder into terminal after the adb commands (and before you type the destinations).
One more warning; if this is your first time using adb or terminal, I don't recommend this as your first try. It's super easy to screw something up in terminal.
Your phone must have developer options enabled and usb debugging on. Plug in your phone via usb and select "Internet" and then "Ethernet."
adb push ytiruces_1a_vzw /sdcard/ytiruces_1a
Unplug usb, disable USB debugging and then re-enable it. Plug USB back in.
adb shell "mount -o remount,rw /system"
adb push su /system/xbin/su
adb shell "chown 0.0 /system/xbin/su;chmod 06755 /system/xbin/su;sync;mount -o remount,ro /system"
adb install superuser.apk
exit
I see there are step by step videos for windows but none for Mac yet. I've rooted my last two phones but I followed videos which showed the exact process. I'm hoping someone eventually posts a Mac walk through video for the less confident users such as me.
I'm trying to follow the steps. When I run ./adb devices it lists my phone but says offline next to it. any ideas?
If you're on a Mac there's no "./" just "adb devices". You can't follow the commands in the .bat file without making those adjustments. Did you try following the commands in my post?
black05x5 said:
I'm trying to follow the steps. When I run ./adb devices it lists my phone but says offline next to it. any ideas?
Click to expand...
Click to collapse
You need to be sure USB debugging is on, that you selected Internet>Ethernet when connected to USB, and my phone asked me if I wanted to allow connections from my computer. If all these are set up correctly it should work.
I have usb debugging on. My phone did ask me to confirm connection which I did. Then when I type ./adb devices it lists my phone but still says offline next to it. Being a noob at this I'm really stumped.
mjdupis can you please clarify what you mean when you say I don't need to type ./ before the command? My understanding was I always had to do this on a Mac?
black05x5 said:
mjdupis can you please clarify what you mean when you say I don't need to type ./ before the command? My understanding was I always had to do this on a Mac?
Click to expand...
Click to collapse
The "/" is what you would use to point to a filepath. Like /Home/Library/Root or a file on the phone /System. If you look at the commands I listed there are no ./ before any adb commands, that's a windows thing.
Terminal tells me there's no such directory when I put ./ before adb commands, because it thinks I'm trying to direct it to an adb folder.
I reinstalled everything and now its finally recognizing my phone. Now I just have to figure out how to do this. Sorry to keep asking, but can someone confirm if this is right...
Now that it recognizes my phone
I type adb push then drag the file ytiruces_1a_vzw into terminal and then type /sdcard/ytiruces_1a and hit enter.
Then unplug the cord from phone, turn of debugging and back on then plug the cord back in. then select internet ethernet to activate debugging.
Then type adb shell and hit enter.
Then type mount -o remount,rw /system and hit enter.
Is this correct so far??
thanks for your help!!
---------- Post added at 10:54 PM ---------- Previous post was at 10:15 PM ----------
Actually, looks like I figured it out. Got phone rooted... Thanks again for the help!
Could use your help again! Got my phone rooted and installed TWRP. Everything was working great. Running stock rom. Only mod I had done was the black notification bar. I installed an app from the market called LCD Density. Tried changing my phone from 320 to 300. It then reboots the phone for it to take affect. My phone is now stuck in a bootloop on the LG logo screen with the LED flashing. I can get into TWRP but the problem is I never made a back up or downloaded a rom onto the phone as I hadn't planned to flash any roms. Is there any way I can get a rom onto my phone so I can then flash it in TWRP? I have a Mac.. Thanks for any help...
Got it fixed! Was finally able to connect to my Mac. Then put a rom on the phone using ADB and flashed the rom.

self-contained sideloading, adb stupid tricks version. no PC required.

(as dhayman11 pointed out, "unknown sources" is in security settings, not developer options. but no luck anyway, like most of the settings app, it also crashes if you try to set it.)
instead, here is an extremely stupid idea that just came to me.
1. turn on adb wifi debugging
2. sideload your favorite terminal, e.g.
http://jackpal.github.com/Android-Terminal-Emulator/downloads/Term.apk
(ok I lied. you will need your desktop/laptop/phone/whatever, exactly 1 time. step 2 will be skipped forever after that 1 time.)
3. fire up said terminal from the settings->applications menu.
4. (LOL!)
$ adb devices
4a. if the above command shows no devices,
$ adb connect localhost
and proceed to step 5.
4b. if the command shows exactly 1 device, e.g. "emulator-5554", proceed to step 5.
4c. if the command shows more than 1 device (wtf?!) then you will need to specify a device of your choice ("-s somedevice") in every subsequent adb command, e.g.
$ adb -s emulator-5554 <whatever>
$ adb -s localhost:5555 <whatever>
etc.
5. e.g.
$ adb install /sdcard/Download/foobar.apk
$ adb shell
$ adb uninstall -k com.something.somethingelse
etc. etc.
6. profit? profit!
ok here is a slightly-less incoherent form of the senior-moment-reply I posted earlier
several days ago it occurred to me to alternatively use sshd for terminal access, because:
-a) I feel a little unsafe leaving adb wifi enabled all the time (ok it's only a small thing to turn it on and off, but still) - and for security reasons there is no way to enable/disable it programmatically e.g. from a script/shell/terminal/app (well theoretically this is not exactly true, but practically it is)
-2) some people (i.e. me) would like to do shell/terminal remotely sometimes, rather than on the AFTV (and other people don't have/want a keyboard)
ssh access makes a great alternative to Term.apk, but the problem is:
- Term.apk and/or (pick your favorite android ssh server) don't have permission to run e.g. "pm install foo.apk" - it will fail. (btw 'pm' is a great command, take a look sometime at all the options. it shares a lot of functions as the adb command itself. 'am' is another fun command...)
- so, the hilarious workaround of enabling adb wifi, "adb connect", and then finally "adb shell" or "adb install" etc., is still required. (b/c the adb user is in the 'shell' group, among others - giving it permission to run /system/bin/pm) - oh well.
for random reference:
Code:
127|[email protected]:/ $ id
uid=2000(shell) gid=2000(shell) groups=1004(input),1007(log),1009(mount),1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),3002(net_bt),3003(inet),3006(net_bw_stats)
[email protected]:/ $ exit
[email protected]:/ $ id
uid=10009(app_9) gid=10009(app_9) groups=1015(sdcard_rw),1028,3003(inet),50009(app_40009)
(also note it appears the adb shell user might possibly have 'mount' abilities, but since the /dev/block/sd* nodes permissions' are really locked up, who knows...)

Workaround to remap home key

Hello! So I gave up a lot of time ago on having a custom launcher that was opened automatically instead of the stock launcher, but a while ago I thought about a way of using adb logcat to catch the events that launch the stock launcher and replace it with Wolf Launcher (or any other app, actually).
Disclaimer: this method requires a home server where you can run a docker instance or a bash script. It does not work directly inside FireTV.
I have not noticed any performance degradation in the firetv itself, and the latency is almost unnoticeable, to the point I can't even see a frame of the stock launcher (check video below).
I have put together a little script that will run a docker ubuntu instance, in which I then run this command:
./adb logcat '*:I' | grep --line-buffered "ActivityManager: START u0 {act=android.intent.action.MAIN cat=\[android.intent.category.HOME\] flg=0x10[0-9]00000 cmp=com.amazon.tv.launcher/.ui.HomeActivity_vNext" | xargs -I {} ./adb shell am start -n com.wolf.firelauncher/.screens.launcher.LauncherActivity
It will look for lines in the logcat that start the activity "com.amazon.tv.launcher/.ui.HomeActivity_vNext", which happens whenever you tap the home button or choose a firetv profile.
Then it sends a command to open the Wolf Launcher (am start -n com.wolf.firelauncher/.screens.launcher.LauncherActivity).
It can be modified to either listen to other action, or to launch any other app instead of the Wolf Launcher. Hope it's useful
The wallpaper goes to Amazon, for blocking every nice thing we find with updates
Hello @daavm , can you explain how to run that script? I mean, do i need to boot from Ubuntu and open a command window or can I run it on Windows 10?
I have a Fire Tv 4k Stick with wolf launcher, but there is no way i can delete the stock launcher and my son is always pressing the home button to find some videogames i dont want him to. The problem is that Amazon doesnt allow me to hide the recommendations so my only hope is to set the home button to launch the wolf launcher so the kid wont be able to find the %%%%% videogames.
Thank you
but there is no way i can delete the stock launcher a
Click to expand...
Click to collapse
I opened the remote and affixed cello tape on the place where home button is pressed.
Viola -- I also used KODI as default launch after boot using this https[://]f-droid[.]org/packages/news.androidtv.launchonboot/
Queaven said:
Hello @daavm , can you explain how to run that script? I mean, do i need to boot from Ubuntu and open a command window or can I run it on Windows 10?
I have a Fire Tv 4k Stick with wolf launcher, but there is no way i can delete the stock launcher and my son is always pressing the home button to find some videogames i dont want him to. The problem is that Amazon doesnt allow me to hide the recommendations so my only hope is to set the home button to launch the wolf launcher so the kid wont be able to find the %%%%% videogames.
Thank you
Click to expand...
Click to collapse
I guess you could adapt it for Windows, but this makes use of grep, which is a linux module, so you would need to rewrite the script... You can try Ubuntu WSL (https://ubuntu.com/wsl) and run it there I guess
alpenmmilch said:
I opened the remote and affixed cello tape on the place where home button is pressed.
Viola -- I also used KODI as default launch after boot using this https[://]f-droid[.]org/packages/news.androidtv.launchonboot/
Click to expand...
Click to collapse
Hey any idea if firestick supports external control protocols? I stumbled on a Siri shortcut that allows me to control my tcl tv with siri and I’m wondering if I can do the same with the firestick, there has to be a way tho because how else would the firestick app work?
Thanks for sharing!
From your video it looks very good.
I did something with Tasker, when I click on home it shows the Amazon launcher and jumps into Wolf Launcher, but you can clearly see the delay. Takes 1-2 seconds till Wolf Launcher is on.
Why do I need a Linux server with a Docker container?
The command is an ADB command?
Can I just run Remote ADB Shell on my smartphone and connect to my FireTV and copy & paste your code?
Falcon_X said:
Thanks for sharing!
From your video it looks very good.
I did something with Tasker, when I click on home it shows the Amazon launcher and jumps into Wolf Launcher, but you can clearly see the delay. Takes 1-2 seconds till Wolf Launcher is on.
Why do I need a Linux server with a Docker container?
The command is an ADB command?
Can I just run Remote ADB Shell on my smartphone and connect to my FireTV and copy & paste your code?
Click to expand...
Click to collapse
The docker container is just what I decided to use because I use Unraid on my home server. You can just do it on a linux machine without docker. It's just adb, yes.
Not sure how Tasker does it so can't help you with the delay. Haven't used Remote ADB Shell either, so I don't know. Sounds like it would work, but not sure how you would keep it in the background.
daavm said:
The docker container is just what I decided to use because I use Unraid on my home server. You can just do it on a linux machine without docker. It's just adb, yes.
Not sure how Tasker does it so can't help you with the delay. Haven't used Remote ADB Shell either, so I don't know. Sounds like it would work, but not sure how you would keep it in the background.
Click to expand...
Click to collapse
doesn't work. Sadly.
With your command, I got the error, that ./adb doesn't exist. Is adb a file or a folder?
I've tried to create this folder, but as I don't have root access I can't create a folder inside root.
I changed the paths in your command to /storage/emulated/0/adb but I get the error:
/storage/emulated/0/adb: can't execute: Is a directory
/storage/emulated/0/adb: Permission denied
Tried the same with creating a file called adb inside the adb folder - but the same Permission denied
Falcon_X said:
doesn't work. Sadly.
With your command, I got the error, that ./adb doesn't exist. Is adb a file or a folder?
I've tried to create this folder, but as I don't have root access I can't create a folder inside root.
I changed the paths in your command to /storage/emulated/0/adb but I get the error:
/storage/emulated/0/adb: can't execute: Is a directory
/storage/emulated/0/adb: Permission denied
Tried the same with creating a file called adb inside the adb folder - but the same Permission denied
Click to expand...
Click to collapse
? you are trying to run this in the fire tv directly, you have to run it from a linux machine. Download the platform-tools.zip for Android, unzip it, and you will have the adb file there. Again, run this in a linux machine, not inside the fire tv.
I have created a Docker container using the following command on my Synology nas:
sudo docker run -i -t --network=host ubuntu:latest /bin/bash -c "apt-get update && apt-get install -y android-tools-adb && /bin/bash"
With adb connect x.x.x.x:5555 I create a connection to the device and with adb shell I open a command line.
I have removed the ./ before the adb in the script.
But I don't know if it will work like this, I will get my Fire Cube tomorrow.
@daavm
I believe you have connected the device to the docker container via usb and are not running the script remotely.
I would have to find a way to build a Docker container that would automate this and run it remotely if it worked that way.
poyo1975 said:
I have created a Docker container using the following command on my Synology nas:
sudo docker run -i -t --network=host ubuntu:latest /bin/bash -c "apt-get update && apt-get install -y android-tools-adb && /bin/bash"
With adb connect x.x.x.x:5555 I create a connection to the device and with adb shell I open a command line.
I have removed the ./ before the adb in the script.
But I don't know if it will work like this, I will get my Fire Cube tomorrow.
@daavm
I believe you have connected the device to the docker container via usb and are not running the script remotely.
I would have to find a way to build a Docker container that would automate this and run it remotely if it worked that way.
Click to expand...
Click to collapse
No, I haven't connected the device via usb. I do the 'adb connect x.x.x.x:5555' as well. But that doesn't change anything.
You don't have to open the shell. Just run the script in the container.
I've created a Docker aswell, the same way poyo1975 did. Container is running.
I can connect via ADB to my FireTV in the shell from my server, but you said the script needs to run in the container and we don't have to open the shell.
I use Portainer for my Docker containers, I copied and pasted your command in the "command field" and clicked on "deploy container".
I get the error:
failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "./adb": stat ./adb: no such file or directory: unknown
Still to dumb to understand the whole thing, for me it's more like a trial and error. Hope to get another hint from you daavm
Hi Falcon_X,
I also use portainer, you can build yourself an image.
I have attached my dockerfile and 2 script files.
Just click in Portainer under image build new image and then in the web editor paste the content of the dockerfile.Under upload paste the two script files and click on build.You have to give the image a name for example ubuntu-adb.The adb-connect script file you have to edit with an editor and change the ip address of your firetv.After the image is built you can under the tab container create a new container with the name you gave when creating the image.
At every container restart a connection to the firetv is established and the script of daavm is started.
Should work, but I can only test it tomorrow.
Many thanks to daavm for his script
Falcon_X said:
I've created a Docker aswell, the same way poyo1975 did. Container is running.
I can connect via ADB to my FireTV in the shell from my server, but you said the script needs to run in the container and we don't have to open the shell.
I use Portainer for my Docker containers, I copied and pasted your command in the "command field" and clicked on "deploy container".
I get the error:
failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "./adb": stat ./adb: no such file or directory: unknown
Still to dumb to understand the whole thing, for me it's more like a trial and error. Hope to get another hint from you daavm
Click to expand...
Click to collapse
Again, ./adb will only work if you have downloaded platform-tools zip and unzipped it (which has adb inside). Alternatively, you can do apt install adb, and replace "./adb" by just "adb"
As an update, I now use the following script as a custom script in a linuxserver/webtop container (check linuxserver docs on how to use custom scripts):
Bash:
#!/bin/bash
echo "**** Installing ADB ****"
apt update && apt install -y adb
adb connect 192.168.0.97:5555
while true; do adb logcat | grep -G --line-buffered "ActivityManager: START u0 {act=\(com\.amazon\.tv\.action\.LAUNCH_PROFILE_PICKER\|android\.intent\.action\.MAIN cat=\[android\.intent\.category\.HOME\]\) flg=0x10\(0\|1\|2\)00000 cmp=com\.amazon\.\(tv\.launcher/\.ui\.HomeActivity_vNext\|ftv\.profilepicker/\.ui\.PickerActivity\)" | xargs -I {} adb shell am start -n com.wolf.firelauncher/.screens.launcher.LauncherActivity; done
I included the profile picker listener because I didn't want to have to select the profile every single time.
Awesome. Works flawlessly. Thank you!
Running on a old debian based raspberry pi zero.
Thanks again to daavm and poyo1875. Works!
Update: Only works until you shutdown the FireTV :-(
thanks
daavm said:
As an update, I now use the following script as a custom script in a linuxserver/webtop container (check linuxserver docs on how to use custom scripts):
Bash:
#!/bin/bash
echo "**** Installing ADB ****"
apt update && apt install -y adb
adb connect 192.168.0.97:5555
while true; do adb logcat | grep -G --line-buffered "ActivityManager: START u0 {act=\(com\.amazon\.tv\.action\.LAUNCH_PROFILE_PICKER\|android\.intent\.action\.MAIN cat=\[android\.intent\.category\.HOME\]\) flg=0x10\(0\|1\|2\)00000 cmp=com\.amazon\.\(tv\.launcher/\.ui\.HomeActivity_vNext\|ftv\.profilepicker/\.ui\.PickerActivity\)" | xargs -I {} adb shell am start -n com.wolf.firelauncher/.screens.launcher.LauncherActivity; done
I included the profile picker listener because I didn't want to have to select the profile every single time.
Click to expand...
Click to collapse
thanks! it's looks worked!
i have 2 questions
1. The adb log looks like this, is it normal?
2. Oops, when i press home, I can still see the Amazon home page, it will start after about 1 second.
Code:
Starting: Intent { cmp=com.wolf.firelauncher/.screens.launcher.LauncherActivity }
Warning: Activity not started, its current task has been brought to the front
Starting: Intent { cmp=com.wolf.firelauncher/.screens.launcher.LauncherActivity }
Warning: Activity not started, its current task has been brought to the front
Starting: Intent { cmp=com.wolf.firelauncher/.screens.launcher.LauncherActivity }
Warning: Activity not started, its current task has been brought to the front
...
SevenFXD said:
thanks
thanks! it's looks worked!
i have 2 questions
1. The adb log looks like this, is it normal?
2. Oops, when i press home, I can still see the Amazon home page, it will start after about 1 second.
Code:
Starting: Intent { cmp=com.wolf.firelauncher/.screens.launcher.LauncherActivity }
Warning: Activity not started, its current task has been brought to the front
Starting: Intent { cmp=com.wolf.firelauncher/.screens.launcher.LauncherActivity }
Warning: Activity not started, its current task has been brought to the front
Starting: Intent { cmp=com.wolf.firelauncher/.screens.launcher.LauncherActivity }
Warning: Activity not started, its current task has been brought to the front
...
Click to expand...
Click to collapse
The Adb log looks the same for me, too.
When I press home, I don't see the Amazon Launcher.
But when I shutdown the FireTV and my container is still running, it just shows: -- waiting for device --
When I turn the FireTV back on, it's still not recognized (IP is still the same).
Looks like I have to connect via ABD and re-run the script every time again, when I turn on the FireTV after a shutdown.
Can someone confirm this or is it just me?

Resources