ive been trying to connect my stowaway bluetooth keyboard with the nexus one using the following guide:
http://i-miss-erin.blogspot.com/2009/09/connect-bluetooth-keyboard-in-android.html
I can push the files to my phone. when i get to actually using the commands, i get a persmission denied error from adb shell. My phone is rooted, and i have tried this with enomthers 1.51 and cyanogens 5.0 beta 4. interestingly, the permission denied error while using cyanogen's rom only comes about when using the hidd --connect command. im assuming this is because cyanogens rom has hcitool and hciconfig built in, which leads me to believe that im doing something wrong when copying the files over in adb.
Here it is with cyanogens rom. with enomthers, i get permission denied with any of the three commands.
Code:
# hciconfig
hciconfig
hci0: Type: UART
BD Address: 00:23:76:79:14:E0 ACL MTU: 1021:7 SCO MTU: 64
UP RUNNING PSCAN
RX bytes:2325 acl:45 sco:0 events:70 errors:0
TX bytes:2537 acl:11 sco:0 commands:54 errors:0
# hcitool dev
hcitool dev
Devices:
hci0 00:23:76:79:14:E0
# hcitool scan
hcitool scan
Scanning ...
00:19:15:32:31:B2 Think Outside Keyboard=
# hidd --connect 00:19:15:32:31:B2
hidd --connect 00:19:15:32:31:B2
hidd: permission denied
what gives?
same here, except that hciconfig, even after running the terminal as root, gives the same permission denied return. i had this running perfectly on my g1, but my nexus isnt playing along as nicely...
any ideas, people?
thanks!
SOLVED!!!!
googling around, i came across the following:
as root ucan change permissions on any file with chmod, for ex. with chmod 744 'file name' root woulld have read, write, and execute permissions on the file.
so... i mounted the filesystem as rw, then chmod 777, like in that bluetooth keyboard tutorial, then cd'ed into system/xbin, and chmod 744 the three relevant files.
and BOOM!
up and running, no problems!
YAY!!!
and now, to avoid all that pesky command line nonsense each time you want to hook up your keyboard, just install Command Executor from the Market, and, as root, have it run hidd --connect [keyboard address here]. it prefills from the last time you use it, so if you only have the one keyboard, you are set!
just make sure bluetooth is on and your keyboard in in discovery mode before you execute the command...
and if you have more than one bluetooth keyboard, install Inserty, and have the various addresses prefilled as one of the Inserty templates!
grins!
berish said:
and now, to avoid all that pesky command line nonsense each time you want to hook up your keyboard, just install Command Executor from the Market, and, as root, have it run hidd --connect [keyboard address here]. it prefills from the last time you use it, so if you only have the one keyboard, you are set!
just make sure bluetooth is on and your keyboard in in discovery mode before you execute the command...
and if you have more than one bluetooth keyboard, install Inserty, and have the various addresses prefilled as one of the Inserty templates!
grins!
Click to expand...
Click to collapse
Thanks a lot, i figured it out a while ago, forgot to post here. I actually use GScript Lite right now, and make a nice little shortcut on the screen for connecting with the keyboard. it works quite well for something thats not official
cool, i'll check that out.
one thing i was wondering, when using it with my freedom folding keyboard, occasionally a key gets 'stuck'. i have yet to try it with my rocketfish keyboard, but do you see any instances of this?
so i tried the rocketfish, and its terrible. its completely unusable. every fourth key sticks and i end up with four lines of the letter g in the middle of my document. and when i try to backspace to delete all that extraneous letterage, the backspace key gets 'stuck' and erases everything there. needless to say, i didnt use it very long.
i didnt have this problem with my g1, and im using the same three files - any idea whats going on? could it have something to do with the fact that i ran the chmod 744 command on these files?
any ideas would be welcome...
thanks!
I dont know man. my iGo Stowaway works perfectly. as in. everything works. i also noticed that there are button combinations that you can use to, for example, go to the Home screen.
help please!
i'm a noob with a google ion running CM 5
even after i run the "mount -o remount -t yaffs2 /dev/block/mtdblock3 /system" command, every time i try anything to system/xbin ("chmod 744 /system/xbin") i get the error "chmod: /system/xbin: Read-only file system"
i also get the same "hidd: permission denied" error
i also wasnt able to push the 3 files (hciconfig, hcitool, hidd) to system/xbin because of the read only error...
any help would be appreciated!
i'm trying to use my iGo Stowaway with my phone
For me with my Nexus One and a Stowaway ThinkOutside Keyboard it works like a charme.
But...
I have a German keyboard layout printed on my keys, but I get the English keyboard layout when I press a key, for example if I press Z I get a Y. And there are no special chars like ä,ö,ü.
Is there any way to change the keyboard layout using hidd on Android?
Related
ok... so, I've loaded my custom ROM and it contains busybox... I do like the extra functions that busybox offers over the stock Android "toolbox", so I don't really want to disable the commands like ls... I'd just like to turn the colors off.
Here's what I've found in my researches...
1) I can always
Code:
ls --color=never
but that is a lot of extra typing that I'm just not willing to do.
2) I can now SSH into my phone with putty and the colors are nice... but if I'm doing this over the cell modem (even EVDO), it's not too responsive (probably has some to do with currently running applications, syncs, and so forth)
3) I can use Droid Explorer and open a command shell from there, and the colors are nice... but Droid Explorer takes a lot longer to load than adb shell and the nice thing about being at my command prompt is if I need to push, pull, or remount (I understand I can always manually remount,rw and remount,ro from any shell, but adb makes it really easy to do with less typing) quickly... I can exit out of the shell, do the command, and go right back into the shell.
4) I can use Better Terminal Emulator on the phone... again... colors nice (I think you're seeing a theme here) but the typing is excruciating for long commands, and God forbid you make 1 typo... for quick things it's cool and to do a command while not at my computer, it's great.
5) If I were running Windows 95 (or maybe even XP), I could just use ansi.sys and do it. However, I've found that the only way ansi.sys works in a command prompt is to use COMMAND.COM and not CMD... plus you have to set CONFIG.NT to "dosonly" mode and include the driver in there... the biggest problem with all that is that adb will NOT run in DOS only mode. I even tried to adb shell from within a Cygwin command prompt (that already has colors enabled) but all the ansi color codes were lost.
So.... Here's my dilemma... I want colors when I'm not coming in through the Windows command prompt and adb shell. However, I want to disable the colors when I'm coming in through adb shell. I would probably settle for a different way to shell in from Windows 7 than the ones listed above.
I think I remember from my freshman year of college when they tried to teach me Unix, that you can set "default" command line switches for applications. For example, if you always wanted ls to do -l, then someplace you could set that as a default. I read on another post (possibly another forum) that somebody suggested editing .profile to do an alias of a command... something like
Code:
alias dir='ls --color=never'
but the problem with that is there's no .profile and there's no home directory for root or shell.
I even read that the standard ls uses an environment variable LS_OPTIONS, but I don't think that the stock Android ls uses it, and I can't get busybox to use it - plus, it'd be a pain to type that in every time I do an adb shell.
Does anybody have any suggestions or tips or any way to do this? If the alias will work, I'd be happy with that. I could then set dir to no color and keep ls with color. I could maybe even remap a command to do a ls -l all the time.
Thanks in advance.
This was what I ended up doing under Windows 7: http://softkube.com/blog/ansi-command-line-colors-under-windows/
This works for me:
Code:
export LS_COLORS=none
ls
This workshop was held in #android-learning on irc.freenode.net by XDA Member Adrynalyne. All credit to him for this guide, I simply am taking it and turning it into a guide. Here we go!
You can find the raw IRC log here
Good evening folks, and welcome to my ADB workshop. This is by no means a full explanation on the subject, but more of a crash course to help folks get up to speed, and get more from their devices. There may be some things you already know here, so please be patient and respect those who do not.
Reference Files
http://adrynalyne.us/files/How to install adb.pdf
http://adrynalyne.us/files/Using ADB.pdf
So, lets just start with the basics.
What is ADB?
ADB stands for the android debugging bridge and is used for testing and debugging purposes by developers.
However, we like to get more out of our devices, and its a great way to fix things.
Knowing adb can mean the difference between a paperweight and a working phone.
So, to start with, we will look at installing ADB.
Generally speaking, the Sun/Oracle JDK is required to run all SDK functions.
ADB is but one tool in the SDK arsenal.
So, we begin by downloading and installing the JDK. This can be found here:
https://cds.sun.com/is-bin/[email protected]_Developer
Choose your OS, download and install. I recommend that 64 bit users use the regular x86/32 bit version as well.
Moving ahead, we download the Windows sdk from here:
http://dl.google.com/android/installer_r08-windows.exe
Due to already installing JDK, you won't be stopped by the install process.
Now, if you notice, I installed it to:
C:\android-sdk-windows
I did this because it makes things easier when setting up path variables.
I encourage everyone to do the same, but obviously it is not required.
So, this SDK is handy, but is only good up to 2.2. We want the latest and greatest! (Well I do)
So, we navigate to:
C:\android-sdk-windows\
and we run SDK Manager.exe
If you notice in your PDF file for installing adb, you will notice that you can update, and I made a choice not to include earlier sdk versions.
I won't go into full detail on that, but depending on the version of SDK you have, 8 or 9, it WILL make a difference in using adb.
By default, for version 8 adb.exe resides in C:\android-sdk-windows\tools
By default, for version 9 adb.exe resides in C:\android-sdk-windows\platform-tools
We will assume version 9 in this guide
Really, the SDK is installed and adb is usable right now, but in my humble opinion, its not enough
I like the ability to use adb in ANY directory on my machine.
To do this, we edit Windows's environment variables.
Specifically, the system path.
To do this, we click on start, or the orb (depending on OS), and right click on Computer, left clicking on properties in the menu.
If its windows XP, I believe it brings you into advanced system properties immediatly. Vista and 7 need a second step.
On the left hand side, as you notice I have highlighted in the pdf, left click advanced system settings.
Under advanced tab, we left click environment variables...
There are two boxes here.
We are concerned with system variables, however.
So we scroll down the list and highlight path and click edit.
Ignoring all the extra stuff in here, make sure you are at the end of the line, and type
Code:
;C:\android-sdk-windows\platform-tools
The semicolon allows us to separate it
from the previous path statement.
Click ok all the way out.
We now have ADB setup globally. We can use cmd.exe (I use powershell) and no matter what directory we are in, adb is recognized.
If it is not, make certain you entered the path into system variables, and made no typos.
If you installed to a different location, you will need to adjust the path accordingly.
This concludes the section on installing the Android SDK to use ADB.
This next section will be on using ADB, so please open that pdf now.
Now, this applies to any OS, not just Windows.
Well, with the exception of the USB drivers.
I will not go too much into that, but if you take a look at the PDF, it goes through installing usb drivers for the sdk, and how to download them.
Fiarly straightforward, in that rspect.
Now, to setup our phones to use with the SDK and ADB, we must change some settings.
First, we go to menu softkey, then settings.
We scroll down to Applications and tap it.
Under Development, we will check Enable USB Debugging. Please note the SGS phones are different in this respect.
The USB cable must be unplugged before enabling or disabling this setting.
Once this is done, we are now ready to play with adb
One quick note: If you get device not found/conencted, please reboot your phone. DJ05 has a quirk in it where ADBD randomly crashes on boot.
A reboot will fix this
ADBD= ADB Daemon
Ok, continuing on.
Lets look at installing applications. This is also known as sideloading.
Unlike installing from the SD card, it does not require unknown sources to be enabled.
The command for this is
Code:
adb install packagename
This assumes that you are working from the directory where the file is located.
This will install the application to /data/app.
It will also show sometimes useful errors if install fails.
That is not something you will see from the Android GUI.
Now, a lot of us have probably deleted files with apps like Root Explorer. While this isn't really a bad thing, it leaves behind databases and data for the application removed.
This is where the 0kb applicaiton entries come from.
If you take that application entry name, you can uninstall the extra data via adb.
First we go to the adb shell which logs into the phone.
Code:
adb shell
If we end up with a $, we will want admin rights, in many cases. This is not one of them, I don't beleive.
To get admin rights, you want to type
Code:
su
Look at your phone if this is the first time, it may prompt you to allow access. Else you will get permission denied.
If you are not rooted, this will not work either.
Ok, now that we are logged in, we will type
Code:
pm uninstall packagename
where packagename is the name of the 0kb listing.
Now this seems like a pain in the a** and I agree.
HOWEVER
There will be a time where Manage applications crashes when you try to uninstall it from the phone. In this case, a factory reset, or this method is the only effective way to fix the problem.
Moving on.
How many of us have removed system applications or renamed them? Did you know that you can simply disable them from the system?
Code:
adb shell
su
pm disable appllicationname
This will disable it, and the system will ignore it.
This can be seen as safer than deleting or renaming things, but your mileage may vary.
On the other hand, you can also re-enable these applications.
Code:
adb shell
su
pm enable applicationname
Please note: Not all applications will properly re-enable. I believe a factory reset or reinstall of said application will fix the issue.
Also, application names are absolutely case sensitive.
*nix based Operating Systems see the letter 'a' and 'A' as two different things.
when you log into adb shell, you are playing by android rules
Ok, a lot of us tweak and mod our phones and turning off the device to get to clockwork recovery, or battery pulls, or multiple button holds to get into Download mode are troublesome and annoying at best.
ADB can help us here.
Here, we do not need to be logged into the shell
If we want to merely reboot the phone:
Code:
adb reboot
If we want to go to recovery (works well with voodoo5)
Code:
adb reboot recovery
If we want to go to Download Mode because we need Odin, heaven forbid:
Code:
adb reboot download
Its instant. No waiting on animations or anything else.
Its also handy if Android has locked up, but yet still works in adb.
I for one hate taking my case off to battery pull.
So now we move on to pushing and pulling files.
Sometimes, I don't feel like mounting my sd card to copy a file over to my phone.
I can use this command to push a file straight to my sd card:
Code:
adb push filename /pathtodirectoryonphone
So for instance, if I have test.txt that I want to send, I would type:
Code:
adb push test.txt /sdcard/
and there it goes.
Ok moving on
Pushing files can be done to any directory, however, some are protected.
For instance, /system is going to give you a permission denied or a read only filesystem error.
To get around this, the easiest thing to do is push the file to your sdcard, then log into the shell:
Code:
adb shell
Code:
su
We will then mount the system as writable
Code:
mount -o rw,remount /dev/block/stl9 /system
Then we can use something like
Code:
cp /sdcard/test.txt /system/app/test.txt
cp stands for copy
and it requires the path of the file and destination path. The name of the file is optional
When you copy it, you can rename it to whatever you like.
For instance, if we wanted to backup a file
Code:
cp /sdcard/test.txt /sdcard/backuptest.txt
Now, lets assume you do not have busybox installed.
You non rooted users will not.
Then you must use a slightly more complicated command called dd
This is used like this:
Code:
dd if=/sdcard/test.txt of=/system/app/test.txt
if is for inputfile
of= output file
Not every user friendly, but probably one of the safer copy commands.
Ok, moving on to pulling files.
Lets say you want to get a file from your phone, to modify, backup, etc.
To do this, we simply use adb in this manner:
Code:
adb pull /pathtofile/filename destinationname
For instance, if I wanted to backup ADW launcher in system/app
I would do this
Code:
adb pull /system/app/ADWLaucnher.apk ADWLauncher.apk
And it will pull the file from the phone and put it in the current directory.
Like above, you can specifcy where it goes.
pushing files to the sdcard, it seems prudent to talk about changing permissions.
sdcards are typically fat32, which destroys permisisons, and Android is heavily permission based.
So if you push an application to your sd card, then try to copy it to /system/app/ bad things are going to happen, or the app may not even show up.
So in that case, we use something called chmod.
This is used in this manner
Code:
adb shell
su
chmod 755 /pathtoapplication/applicationname
Keep in mind
you dont want to do this while its still on your sd card.
an example
Code:
adb shell
su
chmod 755 /system/app/ADWLauncher.apk
755 is good for applications and script files.
Just a couple more topics to cover.
Lets go over deleting files.
This becomes especially handy for removing rogue applications.
To do this, we must be in the adb shell.
Code:
adb shell
su
rm /system/app/ADWLauncher.apk
You may need to remount system as writable with:
Code:
mount -o rw,remount /dev/block/stl9 /system
That applies when using chmod as well.
So what I did above was delete ADW Launcher from system/app
However, what if I wanted to delete the entire contents of a directory?
Same thing as before, except
Code:
adb shell
rm -f /data/dalvik-cache/*.*
I just cleared my dalvik-cache with that command
very quick, very effective.
If you just tried that, please reboot your phone now
Ok....this leaves us with the final topic: logcat
logcat allows us to log what the OS is doing, and possibly delve information for when things are not working
its quite simple Reading it is another.
To use logcat
Code:
adb shell
logcat
To logcat to a certain file do
Code:
adb shell
logcat > /sdcard/logcat.txt
Now we let the log settle down to a reasonable amount of data coming in and not a wall of scrolling, then start the app in question. When it gives an error, we hit ctrl-C and kill the adb shell session.
This should have captured enough data to see the error. Now, I prepared an example. A user came to me on IRC, and Google Maps was force closing. Clearing data didnt fix it, Clearing dalvik-cache, and fix permissions did not fix it. In this case, the user did not know how to use adb So I had him grab an app called alogcat from the market and email me the log. This is also a very valid method.
this file explains what the problem was, and highlights what to look for as an example.
http://adrynalyne.us/files/logcat.pdf
___________________________________________________________________
This concludes the guide from Adrynalyne, there will be more workshops such as this one in irc.freenode.net #android-learning.
Thanks to everyone in #samsung-fascinate !
Reserved for possible extension of topic
Great, saves a lot of questions/answers & search
Every new user should read this!!
Thread stuck as valuable reference thread
Just to add, if I may, a little about the permissions...
============================================================
File permissions for Unix... which Android is based, just so those who tinker with the file permissions may know what they are getting into.
============================================================
Use the chmod command to set file permissions.
The chmod command uses a three-digit code as an argument.
The three digits of the chmod code set permissions for these groups in this order:
1.Owner (you)
2.Group (a group of other users that you set up)
3.World (anyone else browsing around on the file system)
Each digit of this code sets permissions for one of these groups as follows. Read is 4. Write is 2. Execute is 1.
The sums of these numbers give combinations of these permissions:
0 = no permissions whatsoever; this person cannot read, write, or execute the file
1 = execute only
2 = write only
3 = write and execute (1+2)
4 = read only
5 = read and execute (4+1)
6 = read and write (4+2)
7 = read and write and execute (4+2+1)
Chmod commands on file apple.txt (use wildcards to include more files)
Command Purpose
chmod 700 apple.txt Only you can read, write to, or execute apple.txt
chmod 777 apple.txt Everybody can read, write to, or execute apple.txt
chmod 744 apple.txt Only you can read, write to, or execute apple.txt Everybody can read apple.txt;
chmod 444 apple.txt You can only read apple.txt, as everyone else.
Detecting File Permissions
You can use the ls command with the -l option to show the file permissions set. For example, for apple.txt, I can do this:
$ ls -l apple.txt
-rwxr--r-- 1 december december 81 Feb 12 12:45 apple.txt
$
The sequence -rwxr--r-- tells the permissions set for the file apple.txt. The first - tells that apple.txt is a file. The next three letters, rwx, show that the owner has read, write, and execute permissions. Then the next three symbols, r--, show that the group permissions are read only. The final three symbols, r--, show that the world permissions are read only.
Compliments and full credit from:
http://www.december.com/unix/ref/chmod.html
Amazing thread just what I needed lol thanks!
cooolone2 said:
Just to add, if I may, a little about the permissions...
============================================================
File permissions for Unix... which Android is based, just so those who tinker with the file permissions may know what they are getting into.
============================================================
Use the chmod command to set file permissions.
The chmod command uses a three-digit code as an argument.
The three digits of the chmod code set permissions for these groups in this order:
1.Owner (you)
2.Group (a group of other users that you set up)
3.World (anyone else browsing around on the file system)
Each digit of this code sets permissions for one of these groups as follows. Read is 4. Write is 2. Execute is 1.
The sums of these numbers give combinations of these permissions:
0 = no permissions whatsoever; this person cannot read, write, or execute the file
1 = execute only
2 = write only
3 = write and execute (1+2)
4 = read only
5 = read and execute (4+1)
6 = read and write (4+2)
7 = read and write and execute (4+2+1)
Chmod commands on file apple.txt (use wildcards to include more files)
Command Purpose
chmod 700 apple.txt Only you can read, write to, or execute apple.txt
chmod 777 apple.txt Everybody can read, write to, or execute apple.txt
chmod 744 apple.txt Only you can read, write to, or execute apple.txt Everybody can read apple.txt;
chmod 444 apple.txt You can only read apple.txt, as everyone else.
Detecting File Permissions
You can use the ls command with the -l option to show the file permissions set. For example, for apple.txt, I can do this:
$ ls -l apple.txt
-rwxr--r-- 1 december december 81 Feb 12 12:45 apple.txt
$
The sequence -rwxr--r-- tells the permissions set for the file apple.txt. The first - tells that apple.txt is a file. The next three letters, rwx, show that the owner has read, write, and execute permissions. Then the next three symbols, r--, show that the group permissions are read only. The final three symbols, r--, show that the world permissions are read only.
Compliments and full credit from:
http://www.december.com/unix/ref/chmod.html
Click to expand...
Click to collapse
Thanks! Added
ih4ckback said:
Amazing thread just what I needed lol thanks!
Click to expand...
Click to collapse
Thanks, all goes to Adrynalyne
Thanks for the guide. Helped me pick out the stupid stupid mistakes I was making...so just a problem. I'm able to use fastboot easily but I seem to be unable to use ADB still on my windows 7. It says there are no devices and I'm dang well sure I have USB debugging on. Is it because Windows 7 is missing drivers for the nexus one or something else?
wonderful guide. I would like to add it to the guides thread.
Really awesome work, thumbs up.
But we should also take a guide on installing adb with Ubuntu/Linux, which isn't a very difficult thing...
mm7490 said:
Really awesome work, thumbs up.
But we should also take a guide on installing adb with Ubuntu/Linux, which isn't a very difficult thing...
Click to expand...
Click to collapse
If I got time tomorrow I could do that. I work primarily in Linux also
Sent from my Samsung Fascinate using Tapatalk Pro
This is good but I have a problem, when I try to remove an .apk file from /system/app it fails and says 'rm failed, Directory not empty'
I have followed exact instructions many time but never succeeded :s any help!!
(I am runnging these commands in device mod)
when I am in recovery mod I get this prompt ~ # and I am not able to enter su mod. how to get rid of this??
Well when the $ changes to # it means you have SU access
mustafa.aziz said:
This is good but I have a problem, when I try to remove an .apk file from /system/app it fails and says 'rm failed, Directory not empty'
Click to expand...
Click to collapse
Please give us the exact command(s) you entered
Here are the commands I entered after adb shell;
su
mount -o rw,remount /dev/block/stl9 /system
rm /system/app/mytouchmusic-signed.apk
exact message returned is 'rm failed for mytouchmusic-signed.apk, Directory not empty'
mustafa.aziz said:
Here are the commands I entered after adb shell;
su
mount -o rw,remount /dev/block/stl9 /system
rm /system/app/mytouchmusic-signed.apk
exact message returned is 'rm failed for mytouchmusic-signed.apk, Directory not empty'
Click to expand...
Click to collapse
Ok i think you need to do a recursive force delete which should be rf but i am not too sure! could somebody please confirm/ correct this?
Well, I don't think so ^^ As he doesn't want to erase a whole directory, but only a file.
What surprises me the most is the returned message... You're trying to delete an apk, and it says it's a directory :/
Could you please give us the output of this :
Code:
su
mount -o rw,remount /dev/block/stl9 /system
ls -l /system/app/mytouch*
Perhaps you don't even need the su and mount lines, but I'm not sure about that, and that can't harm your system ^^
Khoral said:
Well, I don't think so ^^ As he doesn't want to erase a whole directory, but only a file.
Click to expand...
Click to collapse
I know he doesn't want to delete a whole directory, but since the apk isn't compressed perhaps android looks at is as a directory and not a file? i don't know since what was returned suggested that it was a directory i presumed it was a directory! :S
mustafa.aziz said:
Here are the commands I entered after adb shell;
su
mount -o rw,remount /dev/block/stl9 /system
rm /system/app/mytouchmusic-signed.apk
exact message returned is 'rm failed for mytouchmusic-signed.apk, Directory not empty'
Click to expand...
Click to collapse
rm -rf /blah/blah
here is your desired output:
sh-3.2# su
su
sh-3.2# mount -o rw,remount /dev/block/stl9 /system
mount -o rw,remount /dev/block/stl9 /system
sh-3.2# ls -l /system/app/mytouch*
ls -l /system/app/mytouch*
-rw-r--r-- root root 299838 2008-08-01 18:00 mytouchmusic-signed.apk
sh-3.2#
Hello,
Thanks for looking at this post! I wanted to post it to the rooting thread, but I'm too much of a noob to have access to developer threads. I searched around (both here and google), but couldn't find any useful info on my problem.
I'll get right to the point. I rooted my Acer A500 (after doing an OTA update to 4.0.3), as per the instructions on this thread:
http://forum.xda-developers.com/showthread.php?t=1546593
Everything seems to have worked well (I have root access, etc), but there is something quirky with Busybox. Every time I type a command in terminal (it doesn't matter which - I use both connectbot and terminal emulator), I get a "precmd: not found" message (even for simple things like directory changes). The odd thing is: the commands work, but I still get the message. For instance, if I ask for a directory listing, I'll get the listing, and at the end, it will say precmd: not found (usually with the name of the command it's referencing, e.g. bash: precmd: not found).
It seems to be looking for it in /system/xbin/bash, but bash is in /data/local; I tried creating a symlink but it didn't work ("link failed Cross-device link"). This is really a nuisance, and I'd like to try installing some linux user-land tools, but I fear the outcome might be disastrous if the busybox tools are misconfigured somehow.
I'd appreciate and help/suggestions. Many thanks.
mdhobbes said:
"precmd: not found" message
Click to expand...
Click to collapse
Connectbot seems to set shell variable 'PS1' to "$(precmd)[email protected]$HOSTNAME:${PWD:-?} $ ".
It means your shell (the busybox's ash applet) will try to use output from 'precmd' as a part of a command prompt.
So when 'precmd' was not provided, error messages will be generated wenever a prompt was to be shown.
Though the messages should be safe to ignore, you may get rid of them by setting something harmless to PS1 like:
PS1="> ", or reset PS1 by:
unset PS1from your (busybox) shell.
# The same method should work for terminal emulator.
precmd is a shell function.
To display it run this from the default shell:
Code:
typeset -f
You will see something like
Code:
function precmd {
typeset e=$?
let " e " && print -n "$e|"
}
If you add that to one of your shell's startup files (".profile", ".bashrc", etc.) you will have a working precmd.
It works (function runs), but shows nothing neither 0 or error code. What is it?
[edit]
Nvm, my fault, figured it out
Okay, my Nexus 4 is fine except for this problem. Wifi, mobile data, nfc... Just wanted to say that.
One day, I noticed that every time I turn on and off the bluetooth, my bluetooth MAC address changes. So I have to pair everything manually again. Such a pain...
So I searched XDA, and found some helpful posts. They said 'make a new folder in /persist, make a file named .bdaddr, type in 6 charactors, give some permissions, and reboot.'
However, I noticed that I didn't have persist folder in my root directory. I've seen it before on my phone, so it looked very strange.
I just went forward and made persist folder on root. It was made successfully. I went inside the folder. Strangly, it was not empty. Three folders(lost+found, sensors, svoperapps) were already there. I ignored them and made bluetooth folder, make a file, bla bla.... and I rebooted.
My bluetooth problem was still there. Mac address keeps changing!
When I went to my phone's root again, the persist folder was nowhere to be seen. I made it again and went inside. There were four folders inside. Three which was mentioned above, and the bluetooth folder that I made was still there. Even the .bdaddr file was still there.
TL;DR : My /persist folder disappers with reboot, but the contents inside it is intact when I make it manually again.
What can I do? Please help me.....
Hi! I had the same issue in december. Actually, my N4 suddenly started to act strange till I get the red light of death problem. Before changing battery, it was not even booting, couldn't use recovery or anything else. So I went to 'debrick' it using LG tools and a tutorial. It worked and I flashed stock again.
Unfortunately, bluetooth and wifi were affected by that procedure. They both work though. Bluetooth keeps changing but wifi didn't start changing before yesterday. Really annoying. Since my router at home stores MAC addresses, I was able to retrieve my original MAC Address.
I've tried this procedure 100 times so I'll tell you what and when you have to pay attention for errors:
- The /persist folder does exist. To reach it, you'll need root access via adb shell. Make sure you use 'su' till you get '[email protected]' in shell (adb shell)
- In my case, both bluetooth and wifi folder were already there, so I just created '.macaddr' in '/persist/wifi'
- In your case, create a '.btaddr' file in '/persist/bluetooth' folder. I used 'touch' to create files while in shell
- Set the bluetooth address as you wish with 'echo': echo -n "address" > .btaddr
- Attention: please notice that you will have to try it out the 'echo' thing. Pretty much all instructions I read stated that I had to use 'echo -en' printing HEX values (\xFF) to the '.macaddr' file. That didn't work at all. Instead, I printed ANSI values. That way it worked. Once you created the file and printed its values you can check it using some sort of explorer with supersu. If you printed HEX values, you should end up with 6 bytes while with ANSI you will get 12 bytes (chars). This is easy to spot after you reboot because if you manage to check the address it will show up with a lot of "00". That means it's incomplete and once you turn bt on it will change to something more bt-like address.
- Now you set the owners and permissions:
- chown root:root /persist/bluetooth
- chmod 755 /persist/bluetooth
- chown bluetooth:bluetooth /persist/bluetooth/.btaddr
- chmod 660 /persist/bluetooth/.btaddr
- Reboot and check if it worked.
MagnoT said:
Hi! I had the same issue in december. Actually, my N4 suddenly started to act strange till I get the red light of death problem. Before changing battery, it was not even booting, couldn't use recovery or anything else. So I went to 'debrick' it using LG tools and a tutorial. It worked and I flashed stock again.
Unfortunately, bluetooth and wifi were affected by that procedure. They both work though. Bluetooth keeps changing but wifi didn't start changing before yesterday. Really annoying. Since my router at home stores MAC addresses, I was able to retrieve my original MAC Address.
I've tried this procedure 100 times so I'll tell you what and when you have to pay attention for errors:
- The /persist folder does exist. To reach it, you'll need root access via adb shell. Make sure you use 'su' till you get '[email protected]' in shell (adb shell)
- In my case, both bluetooth and wifi folder were already there, so I just created '.macaddr' in '/persist/wifi'
- In your case, create a '.btaddr' file in '/persist/bluetooth' folder. I used 'touch' to create files while in shell
- Set the bluetooth address as you wish with 'echo': echo -n "address" > .btaddr
- Attention: please notice that you will have to try it out the 'echo' thing. Pretty much all instructions I read stated that I had to use 'echo -en' printing HEX values (\xFF) to the '.macaddr' file. That didn't work at all. Instead, I printed ANSI values. That way it worked. Once you created the file and printed its values you can check it using some sort of explorer with supersu. If you printed HEX values, you should end up with 6 bytes while with ANSI you will get 12 bytes (chars). This is easy to spot after you reboot because if you manage to check the address it will show up with a lot of "00". That means it's incomplete and once you turn bt on it will change to something more bt-like address.
- Now you set the owners and permissions:
- chown root:root /persist/bluetooth
- chmod 755 /persist/bluetooth
- chown bluetooth:bluetooth /persist/bluetooth/.btaddr
- chmod 660 /persist/bluetooth/.btaddr
- Reboot and check if it worked.
Click to expand...
Click to collapse
First, thank you for helping! I really appriciate it!
However, I have a problem. When I type echo -n "address" > .bdaddr into adb shell, it says "can't create .btaddr: Read-only file system". I've tried mount -o rw,remount /persist but nothing happens.....
Can you help me again please? It's my first time using adb shell....
P.S. can you just give me your .bdaddr file? I made the file in my explorer and gave it permissions, but it is not working. If you can, please send it to my email :
update : I got someone else's .bdaddr file and did everything. However, the problem is still the same. Everytime I turn on bluetooth, last six digits of my bluetooth mac address changes... Any ideas on what happened to my N4? It seems that my N4's damage is different to others
Hi, in my case name of file should be /persist/bluetooth/.bdaddr instead of /persist/bluetooth/.btaddr. With .bdaddr bluetooth is working with .btaddr is not working.
Hi all, I came across this root tutorial in a post from last year and was hoping to get some feedback on it. Risks involved? Potential for brick or boot loop? The tutorial uses supersu and I'm aware that it may now have security risks. This radio will never be online so it's not a concern. The tutorial was posted in a 8227L thread so it was supposedly done on this model but there wasn't much follow up.
According to AIDA64 my device specs are:
Model: alps 8227L demo
4x ARM Cortex A7 @ 1118mhz
32 bit ARMv7
CPU Revision: r0p3
1GB RAM
16GB ROM
Android Version: 6.0 Marshmallow
Kernel: 3.18.22
API Level 23
Android Security Patch Level: 2017-11-05
Build ID: YT9218_00002_V001
##############TUTORIAL###############
ROOT!
Root has to be done through ADB.
Attention! Incorrect actions can lead to a bootloop (endless loading) of the radio. To fix it, you will need a flashing and, as a result, a complete erase of all data; so, proceed at your own risk!
Requirements: P.C. (I prefer my laptop) and your head unit must be able to connect to the same wifi as the PC (I used my mobile phone's hotspot for wifi and connected my laptop and headunit to it)
Download adb (platform-tools-latest-windows.zip) from here
Download SuperSU apk and SuperSU zip files from here
Extract platform-tools-latest-windows.zip to C:\adb
Extract SR5-SuperSU-v2.82-SR5-20171001224502.zip.
Open the armv7 folder
Select all files in the armv7 folder and right click, Copy
Paste the files into the c:\adb directory
In the same folder, create a notepad file and paste in the following text:
Code:
service rooting /system/bin/su --daemon
class main
priority 10
user root
oneshot
seclabel ubject_r:system_file:s0
now save this file as "rooting.rc"
Open command prompt on your PC as administrator (in windows 10, in the "type here search" type "cmd")
type in "cd c:\adb"
Move over to the headunit and download "What is my IP address" from the google play store.
open up what is my ip address and write down your headunit's ip address (should be something like 192.168.3.4)
Go back to the play store and download "Terminal Emulator for Android"
open Terminal Emulator for Android
Go back to your pc and in the command prompt window, execute the following code:
(my adb worked without additional commands, immediately after opening the emulator)
(any sentences to the right of // means NOTE; so, don’t copy that part)
Code:
adb connect <IP devices>: 5555 // For example adb connect 192.168.3.4/10555
adb shell // Go to Shell
su @#zxcvbnmasdfghjklqwertyuiop1234567890,. // In the shell, we switch to superuser mode using the password
remount // Remount so that all further commands are immediately executed from the superuser
adb shell setenforce 0 // Further on the instruction manual from the articles
adb push su /system/xbin/su
adb push su /system/bin/su
adb shell chmod 06755 /system/bin/su
adb shell chmod 06755 /system/xbin/su
adb shell /system/bin/su --install
adb push rooting.rc /system/etc/init/rooting.rc
get back on you headunit,
get the SuperSU apk we downloaded from before and get it installed onto your headunit. (I put mine onto my google drive and downloaded and installed from there)
open it and look for a GRANT command.
Press GRANT to allow superuser access.
NOTE: If you get a request to update the binary file, click reject
go back to your pc. we are going to Reboot your headunit with the reset command
Code:
adb shell reboot
The radio will reboot twice, don't panic.
check with root checker
You should be ROOTED!
EDIT: here is a video:
the text file should contain:
Code:
service rooting /system/bin/su --daemon
class main
priority 10
user root
oneshot
seclabel u:object_r:system_file:s0
nismo2013 said:
the text file should contain:
Code:
service rooting /system/bin/su --daemon
class main
priority 10
user root
oneshot
seclabel u:object_r:system_file:s0
Click to expand...
Click to collapse
it works..no need to find the ip address or use a terminal emulator..you do have to add a extra line of code..
but since your at Android 6, just use KingRoot..much easier
codecxbox said:
but since your at Android 6, just use KingRoot..much easier
Click to expand...
Click to collapse
Thanks for the reply. I used kingroot on an old samsung galaxy s4 I had years ago and it made my device run like garbage. I would prefer the adb method above. In your other comment you sad no ip or terminal emulator is needed. Then you said I do need an extra line of code. Do you mean an extraline of code in order to skip the ip and terminal em? Or the tutorial above needs one more line of code as it is?
nismo2013 said:
Thanks for the reply. I used kingroot on an old samsung galaxy s4 I had years ago and it made my device run like garbage. I would prefer the adb method above. In your other comment you sad no ip or terminal emulator is needed. Then you said I do need an extra line of code. Do you mean an extraline of code in order to skip the ip and terminal em? Or the tutorial above needs one more line of code as it is?
Click to expand...
Click to collapse
you skip the ip add line and the use of the terminal emulator..
you should use these extra lines:
adb push su /vendor/bin
chmod 0677 su /vendor/bin
btw, you have to enable OEM Bootloader unlock at the usb debugging menu..press 4 times the build number and usb debugging will be enabled..after that, connect your cable to your pc, turn off and on your head unit, you should be able to adb devices with a serial number...
I recommend you to do each step copypasting at the adb prompt and pressing enter at each one..as soon you get adb superuser enabled, youre good to go...DONT UPDATE SUPERSU IF IT TELLSVYOU THAT THE BINARY NEEDS TO BE UPDATED!
your build 9816 Im never did that one, but probably you wont need to [email protected], cuz these builds 9*** already have su built in, but there not system wide..test # at adb shell before anything, and then push your su to all partitions..
codecxbox said:
you skip the ip add line and the use of the terminal emulator..
you should use these extra lines:
adb push su /vendor/bin
chmod 0677 su /vendor/bin
btw, you have to enable OEM Bootloader unlock at the usb debugging menu..press 4 times the build number and usb debugging will be enabled..after that, connect your cable to your pc, turn off and on your head unit, you should be able to adb devices with a serial number...
I recommend you to do each step copypasting at the adb prompt and pressing enter at each one..as soon you get adb superuser enabled, youre good to go...DONT UPDATE SUPERSU IF IT TELLSVYOU THAT THE BINARY NEEDS TO BE UPDATED!
Click to expand...
Click to collapse
Thanks for the additional info. I'm still a beginner when it comes to rooting and have never done adb. The reason I wanted to use the network method is the head unit is installed in my car and I only have a desktop pc. I could borrow a laptop but its not readily available. I'd also have to buy a M to M usb cable since the otg usb on the radio is full size.
One of the first things I did was enable developer options and unlock the oem bootloader. But thanks for the heads up! I also read to not undate the super su binary. Random question.. but can magisk manager be installed on top of supersu? On magiskroot.net in the install info it says it can hide supersu root.
Can you please do an edit to the lines I enter into command prompt so I'm sure I get it right? I entered the actual ip address of the head unit. Can you please correct the formatting if it's wrong?I thought I want port 5555 but in the tut above he's using /10555. My current commands are:
Code:
adb connect 192.168.0.3/5555
adb shell
su @#zxcvbnmasdfghjklqwertyuiop1234567890,.
remount
adb shell setenforce 0
adb push su /system/xbin/su
adb push su /system/bin/su
adb shell chmod 06755 /system/bin/su
adb shell chmod 06755 /system/xbin/su
adb shell /system/bin/su --install
adb push rooting.rc /system/etc/init/rooting.rc
*NEXT INSTALL SUPERSU ON HEAD UNIT AND GRANT SUPER USER ACCESS - DO NOT UPDATE BINARY - FOLLOWED BY*
adb shell reboot
First, try to get your firmware, it may be full or update, doesnt matter..just in case your hu bricks..
Second, like I told you, check if superuser is already enabled..
If you only have a desktop pc, download adb lite, and decompress it to c:/adb
Get a usb to usb cable, or cut 2 usb data cables and twist or solder green to green, white to white, red to red and black to black..
I highly reccomend you to download these apks..
busybox.apk from sterikson
CX Explorer.apk or Mixplorer.apk (these you need to obtain system modifications)
Magisk doesnt play well with HU, cuz these android builds contains su watchdogs that turn off any apps that attempt to modify system files..if your goal is to install Viper4Android, then its going to be a battle but it can be done..
I just read that you have the hu installed to your car..in that case you will have to use ADB WIFI, and process everything from your phone..there is a problem, you might need to get a wifi router, cuz these hu units dont do direct wifi..in that case, you need the real ip address of your hu and adb connect hu ip address
If your goal is to install TRWP, its almost impossible..adb fastload doesnt work, its needs access to a keyboard, and as you happen to experience, these units wont recognize a usb keyboard..the way to install TRWP is forcing it through SP Tool, but you need a very specific TRWP image, most likely you never get one..but its not necessary to obtain root, no problem
Kingroot is sounding better by the minute haha. I may just try that and then use a task kill app to stop the ram sucking crap it tries loading into the backgound processes. If kingroot fails to gain access, I hope you don't mind but I'll be back with more questions on the adb wifi process. I already have a wifi router so I'm good there. The tut above does it over wifi and desktop with the files sitting in c:/adb like you said.
A few things I have discovered about this head unit which may apply to other chinese hu.. As I'm sure you know, the bluetooth stack is missing the HID profile and while I was able to pair a gamepad, I couldn't use it. The same went for bluetooth controlled led strips. The work around for a gamepad or keyboard/mouse on these HU is, get a device that is android compatible but uses a 2.4ghz dongle. I plugged it in, drivers loaded and it started working. Check out the Rii RK707 which is an all in one. $23 on gearbest. Gamepad took getting used to but I installed retroarch and the quake 3 arena port and both worked flawlessly with a gamepad. Dead Trigger also worked perfect. I just google searched for the files and then side loaded to the HU. I also put a 3 port usb splitter on the otg and everything works fine together; storage and gamepad.
I also figured out how to gain 8GB free space. If you go to settings, then storage/internal and scroll to other, I saw mine had 8GB of files. I tapped other and then browse and saw 3 folders called amap, amap8 and amapauto or something like that. These are included chinese gps map files. I deleted the folders and my device went up to having 9GB free space and it's been running fine. I was able to install a bunch of games to verify the free space is actually there. I have seen people trying to re-partition their devices and being happy to gain 2GB free. This is the way to do it. The HU also runs less laggy with the extra space.
For external storage like a usb thumbdrive, I think these units claim to supprt 32GB. I can veryify that up to 128GB works fine. I have a 128GB verbatim store n go and keep all of my mp3 and movie files there.
Hope you find some of this helpful.
codecxbox said:
First, try to get your firmware, it may be full or update, doesnt matter..just in case your hu bricks..
Second, like I told you, check if superuser is already enabled..
If you only have a desktop pc, download adb lite, and decompress it to c:/adb
Get a usb to usb cable, or cut 2 usb data cables and twist or solder green to green, white to white, red to red and black to black..
Click to expand...
Click to collapse
Good idea! I have some phone data cables with broken micro usb plugs I can cut and solder together.
How should I check if superuser is enabled? Can I install the supersu apk and try tapping GRANT? I just assumed I didn't have it because AIDA64 came back with "no root" when I ran it.
nismo2013 said:
Kingroot is sounding better by the minute haha. I may just try that and then use a task kill app to stop the ram sucking crap it tries loading into the backgound processes. If kingroot fails to gain access, I hope you don't mind but I'll be back with more questions on the adb wifi process. I already have a wifi router so I'm good there. The tut above does it over wifi and desktop with the files sitting in c:/adb like you said.
A few things I have discovered about this head unit which may apply to other chinese hu.. As I'm sure you know, the bluetooth stack is missing the HID profile and while I was able to pair a gamepad, I couldn't use it. The same went for bluetooth controlled led strips. The work around for a gamepad or keyboard/mouse on these HU is, get a device that is android compatible but uses a 2.4ghz dongle. I plugged it in, drivers loaded and it started working. Check out the Rii RK707 which is an all in one. $23 on gearbest. Gamepad took getting used to but I installed retroarch and the quake 3 arena port and both worked flawlessly with a gamepad. Dead Trigger also worked perfect. I just google searched for the files and then side loaded to the HU. I also put a 3 port usb splitter on the otg and everything works fine together; storage and gamepad.
I also figured out how to gain 8GB free space. If you go to settings, then storage/internal and scroll to other, I saw mine had 8GB of files. I tapped other and then browse and saw 3 folders called amap, amap8 and amapauto or something like that. These are included chinese gps map files. I deleted the folders and my device went up to having 9GB free space and it's been running fine. I was able to install a bunch of games to verify the free space is actually there. I have seen people trying to re-partition their devices and being happy to gain 2GB free. This is the way to do it. The HU also runs less laggy with the extra space.
For external storage like a usb thumbdrive, I think these units claim to supprt 32GB. I can veryify that up to 128GB works fine. I have a 128GB verbatim store n go and keep all of my mp3 and movie files there.
Hope you find some of this helpful.
Click to expand...
Click to collapse
Didnt know about the 2.4 dongle, thanks for the tip! I guess the dongle should translate a usb keyboard, as its supposed to be HID compliant..give it a try!
My HU didnt contain Chinese maps, but there was a load of Baidu crap I deleted, gained some 250mb..Happy with the results!
nismo2013 said:
Good idea! I have some phone data cables with broken micro usb plugs I can cut and solder together.
How should I check if superuser is enabled? Can I install the supersu apk and try tapping GRANT? I just assumed I didn't have it because AIDA64 came back with "no root" when I ran it.
Click to expand...
Click to collapse
SuperSU from Chainfire rides upon su, so if su is not properly working, SuperSu reports that theres no root..
a quick way to know if you could be a superuser is looking at the build.prop at /system..if it says ro.xxxx.userdebug instead of ro.xxxx.user, then chances are that su is installed..but you would need to give permissions to su to modify anything, thats why the chmod command..
get to c:\adb
type adb devices you should see devices and a serial number
type adb shell you should see a $ prompt, means you dont have superuser privileges
if you see a # prompt, then you do have superuser
this is my modified routine:
adb shell
su @#zxcvbnmasdfghjklqwertyuiop1234567890,.
remount
adb shell setenforce 0
adb push su /system/xbin/su
adb push su /system/bin/su
adb push su /vendor/bin/su
adb shell chmod 06755 /system/bin/su
adb shell chmod 06755 /system/xbin/su
adb shell chmod 06755 /vendor/bin/su
adb shell /system/bin/su --install
adb push rooting.rc /system/etc/init/rooting.rc
adb shell reboot system
Reading again, you said that BT devices work, like a dongle..but at the fastboot prompt, neither HID or BT drivers get loaded, its like a safe mode boot..only way to emulate that Key Up, Key Down is opening the HU and search for a test point on the board, usually its works as a Key Down
codecxbox said:
Didnt know about the 2.4 dongle, thanks for the tip! I guess the dongle should translate a usb keyboard, as its supposed to be HID compliant..give it a try!
My HU didnt contain Chinese maps, but there was a load of Baidu crap I deleted, gained some 250mb..Happy with the results!
Click to expand...
Click to collapse
The usb keyboard and mouse also worked! I did quite a bit of research on gamepad and keyboard options once I saw 2.4ghz would work and narrowed it down to these 2. The Rii RK707 which is an all in one. It has a led keyboard and mousepad on one side, and flip it over and its a gamepad. Standard LB and RB plus incremental L and R triggers. Works well but the shape takes time to adjust to. https://www.gearbest.com/keyboards/pp_3002324601977019.html
The other which I'm still waiting to arrive is the EasySMX ESM-9110. Visually it's a copy of an xbox one controller but has nice rgby leds in the ABXY buttons. It also has programmable underside buttons like a scuf. Great reviews. https://www.aliexpress.com/item/4000574045231.html
Each are under $30 if you don't mind waiting for shipping from china. Everything else was either cheap junk or over my budget.