Fix for full screen apps not having menu buttons - Nook Color Android Development

-Install Launcher Pro and launch it.
-Press Menu then Preferences.
-Select Behavior Settings
-Change Home Key Action to Show/Hide Status bar.
-Restart Launcher Pro.
Now when you are in a full screen game app like Angry Birds, hit the Nook button and you will see the status bar with the back button, menu button, etc.

Hitting the nook button just takes me back to LauncherPro. It only hides and unhides the status bar when I am IN LauncherPro.

Yeah... seeing that now. Could have sworn it actually brought up the menu when I was still in the game.

Oh well. Lets keep trying to find a fix.

any progress on this yet? i would love this to help with my games.

I have an idea for a workaround fix. I'm not really sure whether this is possible at all or how long it might take someone to program this:
A proxy home application:
1. When you press the nook button and you are not on the home screen (preferably only if you are in fullscreen mode, but I'm not sure if you can get this info easily) you get a popup menu that displays you all the Android buttons, and "settings".
2. In the settings you can set the "real" home's package name. AFAIK the HOME button sends something like a "show launcher" (can't be bothered to look it up at the moment) Intent to the system, so we can't just send it again when we press the virtual "home" button. Unless of course you "always" want to choose what happens when you press the nook button.
3. The other buttons (back & menu) would just forward the keypress event to the currently running Activity (the one on top of the stack). Now there's the thing I'm not sure about: is this possible at all? I believe there are remote control apps that forward input from your PC to your Android device, so I guess it should be possible.
Something like this... I guess if this is possible it should be fairly easy for someone who is familiar with input methods and launcher code to put something like this together.

Powerstrip behaves this way. It is a popup menu I retrieve by double tapping home. Single press of home loads whatever launcher is configured in Powerstrip's settings. Maybe something similar but when you double tap shows the back and menu keys overlayed onscreen. Shouldn't be too hard to program for someone versed in Android development (not me).

I remember early talks of changing the volume keys to act as menu and back. You could always change the volume in the UI.

I've mapped my volume keys to home/back. Works great.

DebauchedSloth said:
I've mapped my volume keys to home/back. Works great.
Click to expand...
Click to collapse
You going to tell us how?

Code:
mkdir /tmp/foo
cd /tmp/foo
adb pull /system/usr/keylayout .
sed -i 's/VOLUME_DOWN/MENU/g' *
sed -i 's/VOLUME_UP/BACK/g' *
adb shell mount -o rw,remount -t ext2 /dev/block/mmcblk0p5 /system
find . -exec adb push {} /system/usr/keylayout/ \;
adb shell mount -o ro,remount -t ext2 /dev/block/mmcblk0p5 /system
adb shell sync
adb reboot
cd
rm -r /tmp/foo

DebauchedSloth said:
Code:
mkdir /tmp/foo
cd /tmp/foo
adb pull /system/usr/keylayout .
sed -i 's/VOLUME_DOWN/MENU/g' *
sed -i 's/VOLUME_UP/BACK/g' *
adb shell mount -o rw,remount -t ext2 /dev/block/mmcblk0p5 /system
find . -exec adb push {} /system/usr/keylayout/ \;
adb shell mount -o ro,remount -t ext2 /dev/block/mmcblk0p5 /system
adb shell sync
adb reboot
cd
rm -r /tmp/foo
Click to expand...
Click to collapse
wouldn't this remove all volume functionality?
Would I still be able to change volume while in a Music app?

gormly said:
wouldn't this remove all volume functionality?
Would I still be able to change volume while in a Music app?
Click to expand...
Click to collapse
It would remove the volume button functionality... I'm not sure if there's a software volume setting somewhere... There's talk over here about porting Cyanogen's Mod or something to enable a Home button-Volume combo that restores volume functionality.
For me, the volume is less of a concern - I'm pretty much always within reach of my EVO - and I use that for music primarily.

DebauchedSloth said:
I've mapped my volume keys to home/back. Works great.
Click to expand...
Click to collapse
Home/back, or menu/back? I mean, we already have a home button ...
(but awesome, btw)

There's a bunch of widgets you can use instead to control audio volume.

DebauchedSloth said:
Code:
mkdir /tmp/foo
cd /tmp/foo
adb pull /system/usr/keylayout .
sed -i 's/VOLUME_DOWN/MENU/g' *
sed -i 's/VOLUME_UP/BACK/g' *
adb shell mount -o rw,remount -t ext2 /dev/block/mmcblk0p5 /system
find . -exec adb push {} /system/usr/keylayout/ \;
adb shell mount -o ro,remount -t ext2 /dev/block/mmcblk0p5 /system
adb shell sync
adb reboot
cd
rm -r /tmp/foo
Click to expand...
Click to collapse
Been a long time since I've used sed, but it's not liking the -i switch...

mhoepfin said:
Been a long time since I've used sed, but it's not liking the -i switch...
Click to expand...
Click to collapse
Make sure you have a space between the g' and the * - I ran in to the same problem myself.

I noticed that when launching Root Explorer and applications like Maps actually have the Back and Menu button located at the bottom, Nook dock bar. However, no Search button was there.
Perhaps it can be switched on somewhere in the settings?

pezhore said:
Make sure you have a space between the g' and the * - I ran in to the same problem myself.
Click to expand...
Click to collapse
Space is there, still not working... Hmm...

You don't have to use sed, you can use any text editor which is faithful to unix file formats (IE, doesn't use CR/LF or CR, just LF). Vi is fine, or on windows, maybe something like crimson editor.
http://forum.xda-developers.com/showthread.php?t=859310

Related

[WIP] [DEV] [HOWTO] Ubuntu on Nook Color! UPDATE 1/5/11

DISCLAIMER: You know the risks, bricking, breaking etc. I'm not, nor is anyone else responsible if something goes wrong with your device, especially should it turn into a cave troll and bludgeon someone to death.
You will have to be rooted for this to work.
Update 1/5/11
Changed the install and loader scripts re-compressed and uploaded, new download link. Stream lined the installation process (removed 5 steps)
Update 1/4/11
reflect changes to ubuntu.sh and bootubuntu scripts and streamlining the process. Added screenshots
_________________________
I was over at nexusonehacks.net and looking at the ubuntu on nexus one hack and was thinking that this could be ported to the nook color. The idea is to run ubuntu from an img on the sd card.
The following is a modified version of the "how to" orginally posted here
http://nexusonehacks.net/nexus-one-hacks/how-to-install-ubuntu-on-your-nexus-oneandroid/
Credits
The guys at NexusOneHacks
xda user munday who has modified the scripts to work for the nook color
Devs at XDA Developer for the Ubuntu ARM image for HTC HD2
Saurik (Jay Freeman) for the Debian G1 script, which was hacked for Ubuntu on Nexus One! and then re-hacked for the Nook Color by munday
Here we go:
1) Go download the ubuntu file here: http://www.megaupload.com/?d=67BU4Y3T
2) Extract the contents using 7zip http://www.7-zip.org/download.html
3) Copy the extracted folder "ubuntu" to the root of your SD card
4) Unmount the nook from your pc, go into the app NookColor Tools (if you don't have it download it here courtesy of Ben 74 and click All Settings->Development then uncheck Auto Mount. This will prevent the SD card from being mounted automatically when plugged into the PC
5) Plug the Nook back into your pc and open a command line then navigate to your android sdk folder ie C:\android-sdk or wherever you have it and type
Code:
adb devices
Hit enter and make sure that the nook color comes up (should be the SN of your Nook)
Note: This can also be done from terminal emulator instead of adb...but it is kind of a pain
6) Now we want to go into the command line on the nook so type
Code:
adb shell
Hit enter and this should bring up a "#" sign.
7) Type
Code:
su
hit enter (I do this just as a force of habit)
8) Now we navigate to the ubuntu folder we just copied to our sd card by entering
Code:
cd /sdcard/ubuntu
hit enter. To confirm you are where you want to be you can type
Code:
ls
and it should list the contents of the ubuntu folder.
9) Run the setup script ubuntu.sh by entering the following:
Code:
sh ./ubuntu.sh
hit enter
10) Now type
Code:
bootubuntu
and hit enter
11) So now we have ubuntu command line up and running which should look like:
Code:
[email protected]:/#
We will need to get some packages to run a gui and then connect to it via VNC client. So we need to update a few things first. Type:
Code:
apt-get update
then
Code:
apt-get install tightvncserver
now we need the gui elements so enter this:
Code:
apt-get install lxde
12) Type the following:
Code:
export USER=root
vncserver -geometry 1024×600
this sets the resolution...you can change it to play around, but the native resolution for the nook is 1024x600. This is also where you will set the password for your vnc server...make sure to remember it
13) Next, we are going to add the following to /root/.vnc/xstartup file using cat command: (hit enter after each line and ignore the fact that it looks like it does it twice)
Code:
cat > /root/.vnc/xstartup
#!/bin/sh
xrdb $HOME/.Xresources
xsetroot -solid grey
icewm &
lxsession
After hitting enter after the last line press "Ctrl+D" twice then press enter
14) We need the vnc server to start every time we start ubuntu, type this:
Code:
cat > front
export USER=root
cd /
rm -r -f tmp
mkdir tmp
cd /
vncserver -geometry 1024×600
Same as before, hit enter after each line then after hitting enter for the last line press "Ctrl+D" twice then press enter.
15) Enter this
Code:
cat front /root/.bashrc > temp
Then
Code:
cp temp /root/.bashrc
16) Now on the nook open up your vnc viewer app (android vnc viewer or PocketCloud...or whatever you use)
Use the following settings:
Host Address: 127.0.0.1 (some don't require this)
Password: the password you set up in step 16
Port: 5901
Save and then click connect and you should be up and running on ubuntu! To leave ubuntu type exit from adb. This should kill ubuntu. Exit adb and then you can disconnect the nook from your pc.
To start ubuntu from the nook open up a terminal emulater and type:
Code:
bootubuntu
Hit enter, this should bring up the [email protected], hhen press "Home" key and open up your vnc app. Now you are ready to rock your Linux tablet!
You could also use gscript lite to automate the process of starting ubuntu so you don't have to type it in the terminal everytime. You can get gscript lite from the market or download the file I have attached.
It does seem a little laggy..just a little...for now anyway
To exit ubuntu: Disconnect the vnc client then hold the "Home" key (I use button savior which brings up a nice little task manager) and click the Terminal emulator when it pops up under running tasks. Once you are back in the terminal you can type:
Code:
exit
to shut down ubuntu.
Enjoy and make sure you thank munday and the guys at nexusonehacks and all the devs who helped make it possible.
-devastator
EDIT:
I noticed that after rebooting the nook would hang at the "Future of reading" screen....if this happens turn the device off remove the sd card the turn the nook back on. It should boot fine. After it's finished you can return the sd card and mount it. This is strange and I'm looking into it. I'm not sure if this is limited to me or if it is universal to all nooks. It also still fails at shutting ubuntu down for some reason. I'm still looking into this.g into this.
I got it going, just needed a few "busybox"-es here and there . It needs some work, right now to get X you have to use VNC.
It's sluggish but a bit more work might just yield something a bit more usable. I'll play more tomorrow night.
Here's my scripts:
ubuntu.sh
Code:
mount -o remount,rw /dev/block/mmcblk0p5 /system
busybox modprobe ext2
rm -f /data/local/bin/fsrw
rm -f /data/local/bin/bootubuntu
rm -f /data/local/bin/unionfs
rm -f /data/local/bin/installer.sh
rm -f /data/local/bin/mountonly
mkdir /data/local/mnt
#busybox clear
rm /system/bin/fsrw
rm /system/bin/bootubuntu
rm /system/bin/unionfs
rm -/system/bin/mountonly
busybox cp -f fsrw /system/bin
busybox cp -f bootubuntu /system/bin
busybox cp -f unionfs /system/bin
busybox cp -f mountonly /system/bin
cd /sdcard/ubuntu
busybox chmod 4777 *
cd /system/bin/
busybox chmod 4777 *
cd /
#busybox clear
echo " "
echo "Ubuntu Chroot Bootloader v0.1"
echo "Ubuntu Bootloader is now installed!"
echo "This process does NOT damage Android OS!"
echo " "
echo "Original Installer by Charan Singh"
echo "Modified for Ubuntu Chroot by Max Lee at NexusOneHacks.net"
echo " "
echo "To enter the Debian Linux console just type 'bootubuntu'"
bootubuntu
Code:
mount -o remount,rw /dev/block/mmcblk0p5 /system
export kit=/sdcard/ubuntu
export bin=/system/bin
export mnt=/data/local/mnt
export PATH=$bin:/usr/bin:/usr/sbin:/bin:$PATH
export TERM=linux
export HOME=/root
busybox mknod /dev/loop2 b 7 0
mount -o loop,noatime -t ext2 $kit/ubuntu.img $mnt
mount -t devpts devpts $mnt/dev/pts
mount -t proc proc $mnt/proc
mount -t sysfs sysfs $mnt/sys
busybox sysctl -w net.ipv4.ip_forward=1
echo "Setting /etc/resolv.conf to Google Open DNS 8.8.8.8 and 8.8.4.4"
echo "nameserver 8.8.8.8" > $mnt/etc/resolv.conf
echo "nameserver 8.8.4.4" >> $mnt/etc/resolv.conf
echo "Setting localhost on /etc/hosts "
echo "127.0.0.1 localhost" > $mnt/etc/hosts
echo "READY TO ROCK AND ROLL BABY! "
echo "Brought to you by NexusOneHacks.net and the open source community! "
echo " "
busybox chroot $mnt /bin/bash
#After exit command is executed clear it all up
echo " "
echo "Shutting down Ubuntu"
umount $mnt/dev/pts
umount $mnt/proc
umount $mnt/sys
umount $mnt
Then just followed the instructions at nexusonehacks.
note: to run bootubuntu i had to use sh and the use the full path:
Code:
# sh /system/bin/bootubuntu
other note: I was using adb not a term app on the nook.
Obligatory video
I can't post links yet so check: youtube.com/watch?v=TnXfZ6aagn8 for a really boring video
EDIT: switched the names, DOH!
I also had to use sh and the full path also. Thanks for the update on the script...gonna try it in the morning (it's 2am here) will also see if I can help to get it running smoother. What class SD card are you using? I imagine a class 4 or higher would yeild better results as far as responsiveness goes.
The sd is a class 2 that came in one of my dev phones. I'll pick up a faster one tomorrow after work and test it out.
It's just about 3am here now, we must be in the same time zone.
I'm going to bed now, but first here's a modded version of the script you had originally posted that also works now.
bootubuntu
Code:
#!/bin/sh
mount -o remount,rw /dev/block/mmcblk0p5 /system
export kit=/sdcard/ubuntu
export bin=/system/bin
busybox [ ! -d /data/local/ubuntu ] && mkdir /data/local/ubuntu
export mnt=/data/local/ubuntu
export PATH=$bin:/usr/bin:/usr/sbin:/bin:$PATH
export TERM=linux
export HOME=/root
busybox mknod /dev/loop1 b 7 0
busybox losetup /dev/block/loop1 /sdcard/ubuntu/ubuntu.img
mount -t ext2 /dev/block/loop1 /data/local/ubuntu
#mount -o loop,noatime -t ext2 $kit/ubuntu.img $mnt
mount -t devpts devpts $mnt/dev/pts
mount -t proc proc $mnt/proc
mount -t sysfs sysfs $mnt/sys
busybox sysctl -w net.ipv4.ip_forward=1
echo "Setting /etc/resolv.conf to Google Open DNS 8.8.8.8 and 8.8.4.4"
echo "nameserver 8.8.8.8" > $mnt/etc/resolv.conf
echo "nameserver 8.8.4.4" >> $mnt/etc/resolv.conf
echo "Setting localhost on /etc/hosts "
echo "127.0.0.1 localhost" > $mnt/etc/hosts
echo "READY TO ROCK AND ROLL BABY! "
echo "Brought to you by NexusOneHacks.net and the open source community! "
echo " "
busybox chroot $mnt /bin/bash
#After exit command is executed clear it all up
echo " "
echo "Shutting down Ubuntu"
umount $mnt/dev/pts
umount $mnt/proc
umount $mnt/sys
umount $mnt
busybox losetup -d /dev/loop1
#unregistering the loopback device just seems to die. need to fix or remove.
I'll look at the N1 formus tomorrow too and see if they have made progress in getting X to run fast or without need for VNC.
Nice work, I am addicted in seeing the crazy crap people are doing everyday.
Couldn't sleep so I'm messing around with it now...I'm using a class 4 and have it up and running. It does seem to be a little laggy, but I don't have a class 2 to compare it to. Let me know what you find out, I'll keep playing with it also to see if I can get it to be more responsive...but we are definately on our way to having a great little linux tablet in addition to android. You should also be able to use this for other builds of linux also by just changing out the .img file to a flavor of your choosing. I'm excited
I have also updated the OP with the how to and credits. Really appreciate your help munday.
I noticed that after rebooting the nook would hang at the "Future of reading" screen....if this happens turn the device off remove the sd card the turn the nook back on. It should boot fine. After it's finished you can return the sd card and mount it. This is strange and I'm looking into it. I'm not sure if this is limited to me or if it is universal to all nooks.
Edit:
Running into some strange occurrences...it appears that when you type exit from the terminal to kill ubuntu, I believe ubuntu stays running...anyway, I'm going to bed and will work on it more tomorrow.
devastatorx said:
You should also be able to use this for other builds of linux also by just changing out the .img file to a flavor of your choosing. I'm excited
Click to expand...
Click to collapse
Are there any increased risks with changing the version you use?
Well, you will want to make sure that the build supports ARM based devices.
munday said:
Then just followed the instructions at nexusonehacks.
note: to run bootubuntu i had to use sh and the use the full path:
Code:
# sh /system/bin/bootubuntu
Click to expand...
Click to collapse
I fixed this, the scripts were backwards, I have updated the OP to reflect the changes and bootubuntu now works
devastatorx said:
I fixed this, the scripts were backwards, I have updated the OP to reflect the changes and bootubuntu now works
Click to expand...
Click to collapse
sweet, i can't wait to get home to play more!!!
I've tried running ubuntu.sh from the terminal emulator (With su) and from ADB, and have not had success with either.
The readout is:
Code:
': File existste '/system/bin
': File existste '/system/bin
': File existste '/system/bin
: not found
: not found
cd: can't cd to /sdcard/ubuntu
: not found
: No such file or directory
: not found
cd: can't cd to /system/bin
: not found
: No such file or directory
: not found
cd: can't cd to /
: not found
: not found
Ubuntu Chroot Bootloader v0.1
Ubuntu Bootloader is now installed!
etc., etc.
Is there a problem with how I copied the script? I assume the first part about the file existing is due to this being the third or fourth time I've tried running the script (Unsuccessfully), but I've no idea how to interpret the rest.
Thanks
munday said:
sweet, i can't wait to get home to play more!!!
Click to expand...
Click to collapse
I sent you a message
Link3737 said:
I've tried running ubuntu.sh from the terminal emulator (With su) and from ADB, and have not had success with either.
The readout is:
Code:
': File existste '/system/bin
': File existste '/system/bin
': File existste '/system/bin
: not found
: not found
cd: can't cd to /sdcard/ubuntu
: not found
: No such file or directory
: not found
cd: can't cd to /system/bin
: not found
: No such file or directory
: not found
cd: can't cd to /
: not found
: not found
Ubuntu Chroot Bootloader v0.1
Ubuntu Bootloader is now installed!
etc., etc.
Is there a problem with how I copied the script? I assume the first part about the file existing is due to this being the third or fourth time I've tried running the script (Unsuccessfully), but I've no idea how to interpret the rest.
Thanks
Click to expand...
Click to collapse
Try using these, just unrar and then copy them in your ubuntu folder, if it asks to overwrite just click yes...also you have autmounting of the sd card turnned off in nook color tools settings right?
Yeah, it must have been an error on my end. Using the updated scripts you posted worked like a charm.
Thanks!
Link3737 said:
Yeah, it must have been an error on my end. Using the updated scripts you posted worked like a charm.
Thanks!
Click to expand...
Click to collapse
Good to hear!
I'm currently working on making this a port to the SD card so that with the sd card in it boots into ubuntu from power off, and with the sd card out it boots to android then you replace the sd and use it for storage like normal. It will also run a lot snappier....well that's the idea anyway.
devastatorx said:
Good to hear!
I'm currently working on making this a port to the SD card so that with the sd card in it boots into android from power off, and with the sd card out it boots to android then you replace the sd and use it for storage like normal. It will also run a lot snappier....well that's the idea anyway.
Click to expand...
Click to collapse
Booting from SD in the same fashion as Nookie Froyo? That sounds like it would give a huge performance boost over the current method, I can't wait to see what you come up with.
This should be acheivable using the method mentioned in this topic:
http://forum.xda-developers.com/showthread.php?t=873243 thanks to clockworx.
Currently looking into this
devastatorx said:
This should be acheivable using the method mentioned in this topic:
http://forum.xda-developers.com/showthread.php?t=873243 thanks to clockworx.
Currently looking into this
Click to expand...
Click to collapse
I was thinking the exact same thing, the nook seems to like booting from sd, so we should be able to set up the partitions like the foryo sd and edit the init.rc and env.txt to boot ubuntu instead of android. Just a theory though. It's my plan for tonight anyway.
munday said:
I was thinking the exact same thing, the nook seems to like booting from sd, so we should be able to set up the partitions like the foryo sd and edit the init.rc and env.txt to boot ubuntu instead of android. Just a theory though. It's my plan for tonight anyway.
Click to expand...
Click to collapse
I also stumbled across this: http://androix.org/ Which talks about a native android xserver which does a way with the vnc aspect altogether. I downloaded and attempted to install but I get the error "There is a problem parsing the package" and I haven't had any luck plus there isn't much documentation.
Let me know how it goes munday, I'll be working on the same thing later (have to take the fiance out for dinner)
question
I was just curious, after installing ubuntu can we install flash as we would had we booted linux from netbook?

[Q] HID Bluetooth keyboard mapping on WB rom.

I want to change the mappings of my Bluetooth keyboard.
As it does not detect that i am using the screen in landscape mode. "annoying for directional keys"
So i tried to edit the system/usr/keylayout/qwerty.kl file
But it seems to knock out the keyboard commands entirely.
It still connects but it does not respond to input.
My question is.
Am i changing the correct file?
How can i make this into a flash-able file?
Please teach me O wise XDA developers.
anyone got any clue?
Bumping for hope..
WOOOO!!! figured it out.
in the folder: /System/usr/keylayout
Code:
adb shell
mkdir /sdcard/keylayout
mkdir /sdcard/keylayoutmodded
cp -f /system/usr/keylayout/* /sdcard/keylayout
2 - We set the memory card, putting the usb mode to "Access to the memory card."
3 - We go to / sdcard / keylayout and we will have to modify all the files there:
qwerty.kl
Important Note:
In these files, the structure is as follows:
Code:
key xxx ACTION EVENT
So ... For example if we change the search button to trigger the dialer instead of the search box, we have to change the lines:
Code:
key 127 SEARCH WAKE_DROPPED
key 217 SEARCH WAKE_DROPPED
For ...
Code:
key 127 CALL WAKE_DROPPED
key 217 CALL WAKE_DROPPED
They will see that beside the keys, or says nothing, or says or WAKE_DROPPED WAKE:
Wake: When the button is pressed while the device is inactive, this key is activated and triggers the application.
WAKE_DROPPED: When the button is pressed while the device is inactive, this is activated and triggers the NO key application.
4 - Once the mod, save the changes to / sdcard / keylayoutmodded (IS IMPORTANT NOT TO TOUCH THE FORMER BACKUP). Through adb (below) or root explorer, then move the files you've modified / system / usr / keylayout again and give the permissions 644 (rwrr), the usual ones, bah.
Code:
adb shell
su
mount -o remount,rw /dev/mtd/mtdblock6 /system
cp -f /sdcard/keylayoutmodded/* /system/usr/keylayout/
chmod 644 /system/usr/keychars/*
chmod 644 /system/usr/keylayout/*
mount -o remount,ro /dev/mtd/mtdblock6 /system
Correct me if this is true or not.
How did you get to connect with the keyboard at all? I cannot get a connection with my bluetooth keyboard. After I pair, it says "paired, but not connected" and from there I cannot connect, only unpair....?!? I'm on WB 4.0.4

RW and RO mount shortcuts.

Okay, I got sick of typing
Code:
mount -o remount,rw /dev/block/mmcblk0p12 /system
or
Code:
busybox mount -o remount,rw /system
to mount the /system partition in RW mode so I created two very simple scripts that you can run through Script Manager to Mount RW and Mount RO.
I do quite a bit from ADB and I just found it more convenient to tap a shortcut on my home screen to mount the /system partition.
With the help of imchairmanm, I have fixed the scripts to be available globally, so all you have to do is type "mountrw" (without the quotation marks) to mount the /system partition in Read/Write mode, and type "mountro" (again, without the quotation marks) to mount the /system partition in Read Only mode.
So, now it can be run both ways!
Installation:
1. You must be rooted. (See my HowTo: Root your Motorola Droid X2 tutorial.)
2. You must have Busybox installed. If you are rooted, you have busybox installed. I've tested the scripts on BB 1.18.2, 1.19.2 and 1.19.3.
3. Download the mounts.zip file and extract it to a folder on your SDCard (internal or external, it doesn't matter). I use /mnt/sdcard/Scripts/Mounts/.
3. Download Script Manager from the market.
4. Open the Script Manager app and navigate to the folder you put the mount scripts in.
5. Tap the first mount script (mountro).
6. Tap the star and the Android superuser icon next to it. This configures the script as a favorite and to run the script as root.
7. Tap SAVE.
8. Repeat steps 5 through 7 for the second mount script (mountrw)
9. Now you can run each script from within Script Manager, or create shortcuts to them on your home screen.
To create the shortcuts, do the following:
1. Long press a blank area on your home screen and select Widget.
2. In the Choose Widget popup, scroll down to Script Manager Ads (if you have the free version) and tap it.
3. In the list, tap the mountro script. This will place the shortcut on your home screen.
4. Repeat steps 1-3 for the mountrw script.
Now, when you need to mount /system as RW all you need to do is tap the mountrw script, then when you are done, either reboot, or tap the mountro script.
The following is the code for each of the scripts:
mountro:
Code:
#!/system/bin/sh
# This mounts the /system file system as Read Only which is the default when
# Android is booted.
echo "Mounting /system in Read Only mode!"
busybox mount -o remount,ro / 2>/dev/null
busybox mount -o remount,ro rootfs 2>/dev/null
busybox mount -o remount,ro /system 2>/dev/null
echo "Done!"
mountrw:
Code:
#!/system/bin/sh
# This mounts the /system file system as Read Write in order to modify or add
# files to the /system file system.
echo "Mounting /system in Write mode!"
busybox mount -o remount,rw / 2>/dev/null
busybox mount -o remount,rw rootfs 2>/dev/null
busybox mount -o remount,rw /system 2>/dev/null
echo "Done!"
It's simple and no frills... The way I like it.
Alternative install:
I didn't realize it, but, I had already made a flashable zip. Just download mount_rw_ro-V1.1.zip and boot into the BSR and flash it from there.
If anyone has any suggestions, I'm open to them! Let me know!
Ciao!
Hm, I was curious since you said you couldn't get your scripts to run globally, so I tried them out by putting them in /system/xbin. After adjusting permissions and making sure owner and group were root, they ran fine and globally as-is. I wonder if the simpler version you started with would have worked or not?
imchairmanm said:
Hm, I was curious since you said you couldn't get your scripts to run globally, so I tried them out by putting them in /system/xbin. After adjusting permissions and making sure owner and group were root, they ran fine and globally as-is. I wonder if the simpler version you started with would have worked or not?
Click to expand...
Click to collapse
did you run them from /system/xbin? I put them in /system/xbin and then cd / to get back to root and tried to run them. They are not found.
Code:
# cd /system/xbin
cd /system/xbin
# pwd
pwd
/system/xbin
# ls -l mount*
ls -l mount*
lrwxrwxrwx root root 2011-12-05 13:08 mount -> /system/xbin/busybox
lrwxrwxrwx root root 2011-12-05 13:08 mountpoint -> /system/xbin/busybox
-rwxrwxrwx root root 316 2011-11-06 19:04 mountro
-rwxrwxrwx root root 328 2011-11-06 19:04 mountrw
# cd /
cd /
# pwd
pwd
/
# mountro
mountro
mountro: not found
# sh mountro
sh mountro
sh: Can't open mountro
#
That was the problem I was running into. I even tried sh mountro. The error "Can't open mountro" essentially means it can't find it.
If this is what you did, and you had different results, I would love to find out why. Thanks!
Ciao!
Yeah, that's what I meant by they are available globally. I can run them from anywhere in the filesystem. I'm not sure what the difference is. Mine have owner and group set to root and the applicable permissions set as well.
It runs through the script correctly, I get all of the echo messages, and if I cd to system afterwards, everything is rw or ro as it should be. I don't know what other information would be helpful for you, but I'll answer whatever other questions you might have. I don't quite understand why it'd ever have a problem with your scripts in the first place. It seems like a strange thing to happen.
Edit: I just ran through and ran the same commands as you did and they were all successful. It sounds like maybe something isn't right in your $PATH? That's the only thing I can think of. What does it say when you type "echo $PATH"? Either that or something with your terminal emulator or rom? Have you tried a different terminal? It shouldn't matter but you never know.
imchairmanm said:
Yeah, that's what I meant by they are available globally. I can run them from anywhere in the filesystem. I'm not sure what the difference is. Mine have owner and group set to root and the applicable permissions set as well.
It runs through the script correctly, I get all of the echo messages, and if I cd to system afterwards, everything is rw or ro as it should be. I don't know what other information would be helpful for you, but I'll answer whatever other questions you might have. I don't quite understand why it'd ever have a problem with your scripts in the first place. It seems like a strange thing to happen.
Edit: I just ran through and ran the same commands as you did and they were all successful. It sounds like maybe something isn't right in your $PATH? That's the only thing I can think of. What does it say when you type "echo $PATH"? Either that or something with your terminal emulator or rom? Have you tried a different terminal? It shouldn't matter but you never know.
Click to expand...
Click to collapse
I dunno what is going on. My path shows /system/xbin. Oh, I'm on Eclipse 1.3 (but that shouldn't matter)... Oh well.
Code:
# echo $PATH
echo $PATH
/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin
It happens from the adb shell and from the terminal program on my DX2.
Hm. My $PATH is the same except it also includes /data/local/bin. That shouldn't matter. I'm on eclipse too and running the commands from the terminal in eclipse parts. I don't know why something in the path wouldn't execute. Does "which mountrw" find it? I had a problem earlier where I thought it wasn't finding a script I wrote, but it actually was failing at the first line because I had the wrong path to sh listed. If which finds your scripts I'd say it's more likely something with the script rather than the system. I'd also try writing a little hello world script and seeing if you can get that to execute globally too.
imchairmanm said:
Hm. My $PATH is the same except it also includes /data/local/bin. That shouldn't matter. I'm on eclipse too and running the commands from the terminal in eclipse parts. I don't know why something in the path wouldn't execute. Does "which mountrw" find it? I had a problem earlier where I thought it wasn't finding a script I wrote, but it actually was failing at the first line because I had the wrong path to sh listed. If which finds your scripts I'd say it's more likely something with the script rather than the system. I'd also try writing a little hello world script and seeing if you can get that to execute globally too.
Click to expand...
Click to collapse
Aw, CRAP! I've run into this problem when I develop on a Windows machine and try to run it on a linux box... ARGH! Thank GOD I use gvim. I was able to change the file format from DOS to UNIX, then save it and push it back out to /system/xbin. chmod'd it to 777 and ran mountrw/mountro and they work now... How can I be so friggin' dense... I know better than that...
Oh, to answer your question on the which command, yes, which finds them both.
What clued me in was you saying that the problem might be with the script. Thanks! It FINALLY works! I've updated the OP with the corrected files.
Also, does anyone want me to make this a flashable zip? Let me know.
Ciao!

[Q] Deleting system file in terminal causes reboot

Hello all,
I'm trying to delete a system file using the Android terminal (as my end goal is to put it in a run shell task in Tasker) and it either reboots my phone or just doesn't delete.
Long story short, I'm using the Weak Sauce root method, but I do not have S-Off as I like how easy it is to undo the Weak Sauce root alone. This means, of course, I don't have immediate RW access to system. So here's what I've done:
Code:
# mount -o rw,remount -t yaffs2 /dev/block/mmcblk0p46 /system
# busybox rm -f /system/media/audio/ui/camera_click.ogg
# mount -o ro,remount -t yaffs2 /dev/block/mmcblk0p46 /system
When I do the first and last commands alone, the system mounts as RW and RO correctly, confirmed with # mount|grep system. But that middle command is the problem. Sometimes nothing will happen, other times my phone will reboot. I've also tried adding the following before the rm command with no success:
Code:
# chmod 777 /system/media/audio/ui/camera_click.ogg
I AM able to delete the file manually through ES File Explorer when mounted RW. But it comes back after I restart my phone, hence why I want this command to be used in Tasker.
What am I doing wrong?
PS: as for the "why" of deleting the shutter sound file, I take screenshots sometimes and the sound drives me nuts. I've tried removing the ogg file from the camera apk, but that didn't work after a reboot. I also tried replacing the ogg file with a silent one, but no success there either as the real one reloads itself when I restart.
Oh, and full disclosure, I also posted this in the M8 forum. I'm putting it here hoping more people see it and can help!

[UPDATED] [FIXED] [TESTED by PoFolk] Azpen A729 G-Sensor problem.

I am aware that there is a problem with updating Busybox and losing your screen rotation/G-Sensor.
I don't have a way to test this, but after extensive reading this is the only thing that makes sense:
Killa said:
"I have fixed this! I went into system/bin and ran the script 'sensors.sh' and poof back to normal! Don't know if I have to run at boot or not but this is a relief."
Click to expand...
Click to collapse
THIS IS AN UNTESTED METHOD. I DON'T KNOW IF IT WILL FIX IT, YET. IF YOU HAVE THIS ISSUE, AND ARE WILLING TO TRY THIS, PLEASE LET ME KNOW BY POST OR PM. HOPE THIS HELPS.
CREDIT: http://www.freaktab.com/
and PoFolk.
Please Follow Instructions on Post #2. Big Thanks to #PoFolk.
Thanks, Mrdownboy. As you say, running the script sh /system/bin/sensor.sh will work to restore auto-rotate on an Azpen A729 whose auto-rotate feature disappeared after installation of busybox. However the effect is not immediate. After runing the sensor script you must then go into the tablet's Settings app, drill down to Accessibility, uncheck Auto-rotate (for the moment), re-check Auto-rotate, and then your screen behaves as before. Unfortunately this work-around does not carry over into reboots.
To carry over into reboots I did the following, assuming that you can ADB shell as root into your A729 and (a belated postscript) you have installed Chainfire's SuperSU Free v2.40:
Code:
# mount -o rw,remount /dev/block/NANDD /system
Confirm that your /system partition is read-write with the following:
Code:
# mount | grep system
You should see rw displayed:
Code:
/dev/block/by-name/system /system ext4 [COLOR="Red"]rw[/COLOR],relatime,data=ordered 0 0
Now the following:
Code:
# touch /system/etc/install-recovery-2.sh
# vi /system/etc/install-recovery-2.sh
You're now in the vi editor for your newly created /system/etc/install-recovery-2.sh script. Tap i once to begin inserting text. Now type the following in the vi editor window:
Code:
#!/system/bin/sh
sh /system/bin/sensors.sh
Now tap Esc key once,
: key once,
w and Enter,
: key once,
q and Enter.
You should now have returned to your command prompt. Now we turn off read-write of the /system directory:
Code:
mount -o ro,remount /dev/block/NANDD /system
Incidentally, if you're intimidated by the vi editor and have a text editor installed on the tablet, use that by all means.
Reboot your Azpen A729 tablet and confirm that auto-rotate has been restored.
-PoFolk
Thanks for the help, I've managed to fix the g-sensor in my cheapo A23 tablet following the info in this thread , but I had to add the remount commands to install-recovery-2.sh and set the correct permissions ( the file didn't exist on my tablet ) so it looks like this :
" #!/system/bin/sh
mount -o remount,rw -t ext4 /dev/block/by-name/system /system
sh /system/bin/sensors.sh
mount -o remount,ro -t ext4 /dev/block/by-name/system /system ".
Thank you again, keep up the good work.
---------- Post added at 10:15 PM ---------- Previous post was at 10:09 PM ----------
P.S. I did everything without adb, using QuickEdit after remounting /system read/write from the terminal.

Categories

Resources