[Shield Android TV Q&A, Help & Troubleshooting] slammertime:
**TLDR** - If your shield keeps rebooting after the 2.1.0 update, unplug your ethernet cable and/or disable your wifi as a temporary fix.

I recently got a 16GB model. After the latest firmware update (to 2.1.0) I started to get constant rebooting. My first thought was to use fastboot to get back to 2.0.0 - I believe you can do this without wiping your user data, as the official images are signed with the nvidia key and I believe their bootloader would allow you to downgrade - can anyone confirm this? See https: // developer .nvidia. com/ gameworksdownload (sorry, can't link with <10 posts...) for nvidia 2.0.0 image.

However I wanted to see what was happening first. Running

$ adb logcat
...lots of output
...the system just rebooted, so let's watch the logs!
D/AndroidRuntime( 4318): Shutting down VM
E/AndroidRuntime( 4318): *** FATAL EXCEPTION IN SYSTEM PROCESS: main
E/AndroidRuntime( 4318): java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
E/AndroidRuntime( 4318):	at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
E/AndroidRuntime( 4318):	at java.util.ArrayList.get(ArrayList.java:308)
E/AndroidRuntime( 4318):	at com.android.server.pm.PackageManagerService$PMLocationListener.getCountryFromLocation(PackageManagerService.java:14375)
E/AndroidRuntime( 4318):	at com.android.server.pm.PackageManagerService$PMLocationListener.onLocationChanged(PackageManagerService.java:14282)
E/AndroidRuntime( 4318):	at android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.java:281)
E/AndroidRuntime( 4318):	at android.location.LocationManager$ListenerTransport.access$000(LocationManager.java:210)
E/AndroidRuntime( 4318):	at android.location.LocationManager$ListenerTransport$1.handleMessage(LocationManager.java:226)
E/AndroidRuntime( 4318):	at android.os.Handler.dispatchMessage(Handler.java:104)
E/AndroidRuntime( 4318):	at android.os.Looper.loop(Looper.java:135)
E/AndroidRuntime( 4318):	at com.android.server.SystemServer.run(SystemServer.java:276)
E/AndroidRuntime( 4318):	at com.android.server.SystemServer.main(SystemServer.java:177)
E/AndroidRuntime( 4318):	at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime( 4318):	at java.lang.reflect.Method.invoke(Method.java:372)
E/AndroidRuntime( 4318):	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
E/AndroidRuntime( 4318):	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
I/Process ( 4318): Sending signal. PID: 4318 SIG: 9
E/installd( 226): eof
E/installd( 226): failed to read size
I/installd( 226): closing connection

For those of you that don't speak stacktrace or android internals, what happened here is that something (presumably, my network state tracker noticed either an IP change or something else from my ethernet) sent a message to the internal LocationManager saying "something happened, update your location estimate". In the process of doing this LocationManager crashes, and then the entire android framework crashes in response to this critical component (system_server) crash. Then the init binary helpfully restarts everything, and in a few minutes it crashes again.

Unplugging the ethernet cable has resulted in a stable system. I haven't experienced the crash while on WiFi, but I wouldn't rule it out yet.

While I have not looked in extreme detail, my suspicion is that something about the firmware update broke google mobile services - I see an error trying to mount the data for GMS in the logs, and noticed the stacktrace above seems to be failing when the LocationManager uses the PackageManager which uses installd which then fails with some kind of file read.

E/Vold ( 206): Failed to find mounted volume for /storage/sdcard1/Android/data/com.google.android.gms/files/
W/Vold ( 206): Returning OperationFailed - no handler for errno 0
W/ContextImpl( 6163): Failed to ensure directory: /storage/sdcard1/Android/data/com.google.android.gms/files