This guide is for getting your tablet rooted from Linux. It is similar to the guides made by Indirect and t-r-i-c-k for Windows and OS X respectively.
Get ADB working
If you are running a 64 bit system then you will need to have the 32 bit ncurses library installed.
For Arch Linux:
Code:
sudo pacman -S lib32-ncurses
For Ubuntu (can someone check this?):
Code:
sudo apt-get install lib32ncurses5
Now you will need the Android SDK. you can get it from http://developer.android.com/sdk/index.html
Extract the downloaded SDK to a location of your choice. This will give you an android-sdk-linux directory.
Now we need to install the platform tools. Run the android-sdk-linux/tools/android program and install at least the "Android SDK Platform-tools"
Optionally, you can install the Nook Tablet/Color SDKs.
Choose Tools->Manage Addon Sites
Click the "New..." button and add http://su.barnesandnoble.com/nook/sdk/addon.xml
Also add http://su.barnesandnoble.com/nook/sdk/Nook_Tablet_addon.xml
Now install the Nook Color and/or Nook Tablet SDKs.
You will have to manually edit or create the ~/.android/adb_usb.ini file. Make sure it contains the following line:
Code:
0x2080
Now we need to set up the udev rules for your Nook. These instructions work for Arch Linux, let me know if they don't work for your distribution.
create an /etc/udev/rules.d/51-android.rules file and populate it with:
Code:
SUBSYSTEM=="usb", ATTR{idVendor}=="2080", MODE="0666"
SUBSYSTEM=="usb",ATTR{idVendor}=="2080",ATTR{idProduct}=="0004",SYMLINK+="android_adb"
SUBSYSTEM=="usb",ATTR{idVendor}=="2080",ATTR{idProduct}=="0004",SYMLINK+="android_fastboot"
run the following commands:
Code:
$ sudo chmod a+r /etc/udev/rules.d/51-android.rules
$ sudo udevadm control --reload-rules
reference:
https://wiki.archlinux.org/index.php/Android
Enable USB debugging on your Nook
Open up your web browser on your Nook and go to http://comptonsoft.com/test and Download AppMenu.
reference: http://forum.xda-developers.com/showpost.php?p=19421107&postcount=18
After the download completes, open the AppMenu.apk from the notification area (tap on the lower left corner of the nook screen where the three down arrows are)
Choose "Package Installer", when it says "Install blocked" choose "Settings"
Check off "Unknown Sources" and then choose "Development"
Check off both "USB debugging" options and uncheck "Auto Mount"
Bring up the notification window and tap on the AppMenu.apk and install with package installer. This time it should work.
If you ever need to get back to the appmenu you can now access it from the search screen (make sure to show all results). Sometimes the thing likes to reset it's debugging abilities.
Perform a temporary root
Now the fun begins. Let's get the rootkit. Download the zergrush binary from http://forum.xda-developers.com/showthread.php?t=1296916
Extract the zergRush file from the zip and remember where you put it. I put mine in ~/Downloads
Adjust the following instructions according to your location:
Plug in your nook, you should get a beetle icon in the notification area.
Open up a terminal on your computer and change to the android-sdk-linux/platform-tools directory, and do the following commands:
Code:
$ cd ~/android-sdk-linux/platform-tools
$ ./adb kill-server
$ ./adb start-server
$ ./adb push ~/Downloads/zergRush /data/local/
$ ./adb shell
We are now in the nook.
Code:
$ chmod 755 /data/local/zergRush
$ /data/local/zergRush
zerg does it's thing and if all goes well, says it's restarting as root and kicks us out of adb
Code:
$ ./adb remount
It should say "remount succeeded" if the root worked.
Install su to make the root permanent
In order for the root to persist after a reboot we need to install superuser. Get it from http://androidsu.com/superuser/
Make sure to get the gingerbread version. Extract the contents of the zip somewhere, say ~/Downloads/superuser/ and do the following:
Code:
$ ./adb push ~/Downloads/superuser/system/bin/su /system/bin
$ ./adb push ~/Downloads/superuser/system/app/Superuser.apk /system/app
$ ./adb shell
# chmod 6755 /system/bin/su
# ln -s /system/bin/su /system/xbin/su
# chmod 644 /system/app/Superuser.apk
# exit
Install google apps
Of course we are gonna want to get access to the market and what not.
Get google apps from http://goo-inside.me/gapps
Extract somewhere, say ~/Downloads/gapps and do the following:
Code:
$ rm ~/Downloads/gapps/system/app/SetupWizard.apk
$ ./adb push ~/Downloads/gapps/system /system
$ ./adb shell
# chmod 644 /system/app/*
# chmod 644 /system/lib/libvoicesearch.so
# chmod 644 /system/etc/permissions/*
# chmod 644 /system/framework/*
# exit
$ ./adb remount
$ ./adb reboot
When the nook comes up again, choose search, tap the g in the upper left, choose apps, type in market. Choose to add an account, create/sign in.
I had to back out of the market in go back in again a couple times to get the "agree to license screen". If the market just sits there loading for a while, try that.
You can run any apps you install any time by searching for them.
Some tips for getting the most out of your tablet:
I suggest installing a launcher from the market. I use zeam. I think launcher pro and adw launcher are both popular choices also. These will allow you launch apps directly, instead of searching for them.
The Homecatcher app seems to be getting a good reception I haven't had a chance to try it yet, but i plan on it. It allows you to use a different launcher than barnes and noble's by default
Install busybox from here. You'll need to have an sd-card in your tablet for the install to work, but don't need it afterwords (just throw the one from your phone in or something if you don't have one).
To get adbd running as root (to do things like remount or push to system folder) you can run zergRush again as in the temporary root step. I had to su, and then run zergRush, and adb seems a little flakey and kicked me out from time to time when i did it, but it worked. ADB root goes away every time you reboot still.
Happy trails.
Worked great
I'm a noob to both linux and android and your directions worked like a charm, Thanks so much.
flawless
absolutely flawless instructions. thank you!
Works good but now I can't "adb remount" because I get an "operation not permitted", and thus I can't "adb push".
Is this normal behavior after this root?
The only reason I noticed was from attempting to install the newer talk app which is probably possible by other means but I haven't found the right answer out of about a billion search results.
Also the part about installing the color sdk stuff or adding the adb_usb.ini line isn't accurate I don't think. I had to run "android update adb" and then the file was updated, which is the same as editing the file but I think it gets autocreated or updated from something else possibly.
firephoto said:
Works good but now I can't "adb remount" because I get an "operation not permitted", and thus I can't "adb push".
Is this normal behavior after this root?
Click to expand...
Click to collapse
Yeah... :-(
You'll have to su and remount by hand. The following should work:
Code:
$ adb shell
$ su
# mount -o rw,remount /dev/block/platform/mmci-omap-hs.1/by-name/system /system
# exit
$ exit
$ adb push teh_files
Sadly after you reboot the adb deamon doesn't have superuser permissions anymore and can't do things like remounting filesystems.
I'm not sure why this is tbh. maybe because the SUID bit isn't set, or the version of adb in the tablet is gutted?
I'm sure people would be grateful if someone figured it out (hint hint), it's gonna cause all kinds of annoyances like this in the future no doubt :-/
firephoto said:
Also the part about installing the color sdk stuff or adding the adb_usb.ini line isn't accurate I don't think. I had to run "android update adb" and then the file was updated, which is the same as editing the file but I think it gets autocreated or updated from something else possibly.
Click to expand...
Click to collapse
Weird. It definitely wasn't on my system after installing tablet sdk and before installing the color sdk and definitely was after installing the color sdk. i'll change the original post to get rid of that part, since it's kind of unnecessary anyhow.
There's something that seems more locked down (while allowing root) so maybe it's intentional to maintain some security in certain situations. (guessing).
I did mount the filesystem rw but that still doesn't allow the push. Seem like the standard adb shell user doesn't have the permissions to do the normal things and then the root user doesn't have the commands even though the $PATH is correct.
So some permission bit set strange somewhere I guess but I haven't found it yet.
Oh wow, you are right. And it gets even better...
You can push to the /mnt/media/ directory...
And now for the good news...no cp command, and mv doesn't work to move files apparently.
As a temporary work around you can use cat >< I feel so dirty saying this:
Code:
$ adb push teh_file /mnt/media
$ adb shell
$ su
# cat /mnt/media/teh_file > /system/teh_file
Things are getting really hackey now :-/ maybe i will have to look into the adbd issues after all. Not tonight though.
I'll update the guide tomorrow to get busybox installed so we have a cp command. The market app didn't work for me, but I don't have an sd card in mine atm, and i think it wants to download there.
Anyone with an sd card able to just install the (stericson) busybox market app?
I did some research on adbd. Apparently by default it runs as a "shell" user, not root.
This is pretty standard for stock roms apparently. There are a few ways around this.
For more information, see this thread
Honestly, I forgot the step to remove zergRush from /data/local, so the easiest thing in my opinion would be to just run zergRush whenever you need adb running as root.
Also, busybox from the market installs just fine with an sd-card, doesn't have to be a good one or anything, it just needs a place to park the busybox binary that it is copying over
Great work. Was thinking about writing one once I got an NT but knew someone would beat me to it. FYI you can follow link in my signature to install adb in Ubuntu. Will try this as soon as I get my hand on one (next week). Thank you
Sent from my NookColor using xda premium
I used the first half of these instructions to get sideloading working on my non-rooted NT 1.4.1. Windows messed everything up by installing the "correct" drivers automatically and adb wouldn't recognize the NT so had to flip to Linux. Thanks!
Sent from my BNTV250 using Tapatalk
I get the following error after it begins installing the SDK Platform-tools: Stopping ADB server failed (code -1). Is this normal?
This is a clean install of the Android SDK.
Thanks!
Code:
Fetching https://dl-ssl.google.com/android/repository/addons_list-1.xml
Validate XML
Parse XML
Fetched Add-ons List successfully
Fetching URL: https://dl-ssl.google.com/android/repository/repository-5.xml
Validate XML: https://dl-ssl.google.com/android/repository/repository-5.xml
Parse XML: https://dl-ssl.google.com/android/repository/repository-5.xml
Found SDK Platform Android 1.1, API 2, revision 1 (Obsolete)
Found SDK Platform Android 1.5, API 3, revision 4
Found SDK Platform Android 1.6, API 4, revision 3
Found SDK Platform Android 2.0, API 5, revision 1 (Obsolete)
Found SDK Platform Android 2.0.1, API 6, revision 1 (Obsolete)
Found SDK Platform Android 2.1, API 7, revision 3
Found SDK Platform Android 2.2, API 8, revision 3
Found SDK Platform Android 2.3.1, API 9, revision 2 (Obsolete)
Found SDK Platform Android 2.3.3, API 10, revision 2
Found SDK Platform Android 3.0, API 11, revision 2
Found SDK Platform Android 3.1, API 12, revision 3
Found SDK Platform Android 3.2, API 13, revision 1
Found SDK Platform Android 4.0, API 14, revision 3
Found SDK Platform Android 4.0.3, API 15, revision 1
Found ARM EABI v7a System Image, Android API 14, revision 2
Found ARM EABI v7a System Image, Android API 15, revision 1
Found Samples for SDK API 7, revision 1
Found Samples for SDK API 8, revision 1
Found Samples for SDK API 9, revision 1 (Obsolete)
Found Samples for SDK API 10, revision 1
Found Samples for SDK API 11, revision 1
Found Samples for SDK API 12, revision 1
Found Samples for SDK API 13, revision 1
Found Samples for SDK API 14, revision 2
Found Samples for SDK API 15, revision 1
Found Android SDK Platform-tools, revision 10
Found Android SDK Tools, revision 16
Found Documentation for Android SDK, API 15, revision 1
Found Sources for Android SDK, API 14, revision 1
Found Sources for Android SDK, API 15, revision 1
Found Android Support package, revision 6
Fetching URL: https://dl-ssl.google.com/android/repository/addon.xml
Validate XML: https://dl-ssl.google.com/android/repository/addon.xml
Parse XML: https://dl-ssl.google.com/android/repository/addon.xml
Found Google APIs by Google Inc., Android API 3, revision 3
Found Google APIs by Google Inc., Android API 4, revision 2
Found Google APIs by Google Inc., Android API 5, revision 1 (Obsolete)
Found Google APIs by Google Inc., Android API 6, revision 1 (Obsolete)
Found Google APIs by Google Inc., Android API 7, revision 1
Found Google APIs by Google Inc., Android API 8, revision 2
Found Google APIs by Google Inc., Android API 9, revision 2 (Obsolete)
Found Google APIs by Google Inc., Android API 10, revision 2
Found Google APIs by Google Inc., Android API 11, revision 1
Found Google APIs by Google Inc., Android API 12, revision 1
Found Google APIs by Google Inc., Android API 13, revision 1
Found Google APIs by Google Inc., Android API 14, revision 2
Found Google TV Addon by Google Inc., Android API 12, revision 2
Found Google APIs by Google Inc., Android API 15, revision 1
Found Google Market Licensing package, revision 1
Found Google USB Driver package, revision 4
Found Google Market Billing package, revision 1
Found Google Admob Ads Sdk package, revision 4
Found Google Analytics Sdk package, revision 2
Found Google Webdriver package, revision 2
Fetching URL: http://www.echobykyocera.com/download/echo_repository.xml
Validate XML: http://www.echobykyocera.com/download/echo_repository.xml
Parse XML: http://www.echobykyocera.com/download/echo_repository.xml
Found Dual Screen APIs by KYOCERA Corporation, Android API 8, revision 1
Found Dual Screen APIs by KYOCERA Corporation, Android API 10, revision 1
Fetching URL: http://developer.lgmobile.com/sdk/android/repository.xml
Validate XML: http://developer.lgmobile.com/sdk/android/repository.xml
Parse XML: http://developer.lgmobile.com/sdk/android/repository.xml
Found Real3D by LGE, Android API 10, revision 1
Found Real3D by LGE, Android API 8, revision 1
Fetching URL: http://innovator.samsungmobile.com/android/repository/repository.xml
Validate XML: http://innovator.samsungmobile.com/android/repository/repository.xml
Parse XML: http://innovator.samsungmobile.com/android/repository/repository.xml
Found GALAXY Tab by Samsung Electronics., Android API 8, revision 1
Fetching URL: http://developer.sonyericsson.com/edk/android/repository.xml
Validate XML: http://developer.sonyericsson.com/edk/android/repository.xml
Parse XML: http://developer.sonyericsson.com/edk/android/repository.xml
Found EDK 1.2 by Sony Ericsson Mobile Communications AB, Android API 10, revision 1
Fetching URL: http://su.barnesandnoble.com/nook/sdk/addon.xml
Validate XML: http://su.barnesandnoble.com/nook/sdk/addon.xml
Parse XML: http://su.barnesandnoble.com/nook/sdk/addon.xml
Found NOOKcolor by Barnes and Noble, Inc., Android API 8, revision 1
Fetching URL: http://su.barnesandnoble.com/nook/sdk/Nook_Tablet_addon.xml
Validate XML: http://su.barnesandnoble.com/nook/sdk/Nook_Tablet_addon.xml
Parse XML: http://su.barnesandnoble.com/nook/sdk/Nook_Tablet_addon.xml
Found NOOK Tablet by Barnes and Noble, Inc., Android API 10, revision 1
Done loading packages.
Preparing to install archives
Downloading Android SDK Platform-tools, revision 10
Installing Android SDK Platform-tools, revision 10
Stopping ADB server failed (code -1).
Installed Android SDK Platform-tools, revision 10
Downloading SDK Platform Android 2.3.3, API 10, revision 2
Installing SDK Platform Android 2.3.3, API 10, revision 2
Installed SDK Platform Android 2.3.3, API 10, revision 2
Downloading SDK Platform Android 2.2, API 8, revision 3
Installing SDK Platform Android 2.2, API 8, revision 3
Installed SDK Platform Android 2.2, API 8, revision 3
Downloading Samples for SDK API 10, revision 1
Installing Samples for SDK API 10, revision 1
Installed Samples for SDK API 10, revision 1
Downloading Samples for SDK API 8, revision 1
Installing Samples for SDK API 8, revision 1
Installed Samples for SDK API 8, revision 1
Downloading Android Support package, revision 6
Installing Android Support package, revision 6
Installed Android Support package, revision 6
Downloading NOOK Tablet by Barnes and Noble, Inc., Android API 10, revision 1
Installing NOOK Tablet by Barnes and Noble, Inc., Android API 10, revision 1
Installed NOOK Tablet by Barnes and Noble, Inc., Android API 10, revision 1
Downloading Google APIs by Google Inc., Android API 10, revision 2
Installing Google APIs by Google Inc., Android API 10, revision 2
Installed Google APIs by Google Inc., Android API 10, revision 2
Downloading NOOKcolor by Barnes and Noble, Inc., Android API 8, revision 1
Installing NOOKcolor by Barnes and Noble, Inc., Android API 8, revision 1
Installed NOOKcolor by Barnes and Noble, Inc., Android API 8, revision 1
Downloading Google APIs by Google Inc., Android API 8, revision 2
Installing Google APIs by Google Inc., Android API 8, revision 2
Installed Google APIs by Google Inc., Android API 8, revision 2
Updated ADB to support the USB devices declared in the SDK add-ons.
Stopping ADB server succeeded.
Starting ADB server succeeded.
Done. 10 packages installed.
Done loading packages.
Did it work? Can adb see the NT? Can you root? The error may not be normal, but it doesn't really matter unless something doesn't work...
Sent from my Desire HD using Tapatalk
winsettr said:
Did it work? Can adb see the NT? Can you root? The error may not be normal, but it doesn't really matter unless something doesn't work...
Sent from my Desire HD using Tapatalk
Click to expand...
Click to collapse
Running openSUSE 12.1
I've tried different USB ports but something isn't right:
Code:
*******@arena:~/programs/android-sdk-linux/platform-tools> ./adb kill-server
*******@arena:~/programs/android-sdk-linux/platform-tools> ./adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
*******@arena:~/programs/android-sdk-linux/platform-tools> ./adb push zergRush /data/local
error: insufficient permissions for device
*******@arena:~/programs/android-sdk-linux/platform-tools> ./adb devicesList of devices attached
???????????? no permissions
*******@arena:~/programs/android-sdk-linux/platform-tools> ./adb shell
error: insufficient permissions for device
*******@arena:~/programs/android-sdk-linux/platform-tools>
*******@arena:~/programs/android-sdk-linux/platform-tools> ls -l /etc/udev/51-android.rules
-rw-r--r-- 1 root root 234 Jan 2 18:12 /etc/udev/51-android.rules
*******@arena:~/programs/android-sdk-linux/platform-tools>
I have even tried running this with SUDO and as ROOT but then I'm am presented with an empty "List of devices attached" after running "./adb devices" command. I have also rebooted my Linux system and the Nook Tablet but no change.
You shouldn't need special permission to push ZergRush (how else could you get it on the NT to root) so that's a problem. When you stop then start the adb daemon, then list devices (before trying to push ZergRush), is the NT listed?
Sent from my Desire HD using Tapatalk
RegLinUsr said:
...
I have even tried running this with SUDO and as ROOT but then I'm am presented with an empty "List of devices attached" after running "./adb devices" command. I have also rebooted my Linux system and the Nook Tablet but no change.
Click to expand...
Click to collapse
winsettr said:
You shouldn't need special permission to push ZergRush (how else could you get it on the NT to root) so that's a problem. When you stop then start the adb daemon, then list devices (before trying to push ZergRush), is the NT listed?
Sent from my Desire HD using Tapatalk
Click to expand...
Click to collapse
Your question is easily answered with the information from the end of my post...
Fully reading a post before replying is quite the useful trait. It helps to notice that this is not my first time rooting something as well so the obvious isn't the issue here, the problem is something else that is a bit off of the beaten path. Might be something openSUSE specific; missing driver or program but I'm not sure at this point.
Stil remount will not work for me?
ylixir said:
Yeah... :-(
You'll have to su and remount by hand. The following should work:
Code:
$ adb shell
$ su
# mount -o rw,remount /dev/block/platform/mmci-omap-hs.1/by-name/system /system
# exit
$ exit
$ adb push teh_files
Here's my commands:
$ su
su
reloc_library[1311]: 2959 cannot locate '_ZNK7android6Parcel15setDataPositionEj
'...
CANNOT LINK EXECUTABLE
$ su
mount -o rw,remount /dev/block/platform/mmci-omap-hs.1/by-name/system /system
mount: Operation not permitted
Click to expand...
Click to collapse
Works!
Thank you! tried on the mac and had issues with device not being found. This worked perfect, thanks again for the guide!
Ren
I don't see any option to "Manage add-on sites" in the ADK Manager (the "android" app). Where are you getting this from?
Nevermind, I understand it now.