Category Archives: Android

Weird problem solved: I cannot activate “Debug USB”

update with latest cm10 ROM from Kalimochoaz (cm-10-FEATURED-crespo.v1.10.zip), the problem is solved. You can download all here
“Android debugging” is crashing

I’m testing Android Jelly Bean on my Nexus S running CyanogenMod 10.

The exact ROM is “cm-10-20120715-FEATURED-crespo.v0.6.zip”.

I’m getting this weird problem: if I disable USB debug, I cannot re-enable it.

I’m talking about the feature of Android which allows you to use adb from your pc.

The exact menu entry can be found under Settings -> Developer options -> Android debugging.

I managed to re-enable Android debugging with Tasker and the Secure Settings plugin.

Step by step procedure

I’m assuming you own a copy of Tasker, you have successfully installed Secure Settings and enabled the relative Helper. To do so you must have a rooted ROM like CyanogenMod.

I’m reporting here the steps I did:

  1. Open Tasker
  2. Go to “Tasks” tab
  3. Create a new task with the green “+” button
  4. Give the task a name (i.e. “Enable Debug”)
  5. Add a new action
  6. Choose “Plugin”
  7. Choose “Secure Settings”
  8. Choose “Edit”
  9. Pick “USB Debugging” from the list
  10. Activate the “On” state
  11. Save with the floppy icon on the bottom
  12.  Now run your task in Tasker (you can use the “play” button)
  13. Verify the state of the checkbox in the Android’s Settings menu
Nexus One boot before Blackrose install

How to install Blackrose on Nexus One using GNU/Linux

Introduction

Blackrose is a powerful software. It can do a lot of things, but its most useful ability is to resize internal storage. On Nexus One you have to do so in order to install ROMs with greater size as… Ice Cream Sandwich (I’m preparing a guide).

Disclaimer

I AM NOT RESPONSIBLE IF YOU BRICK / RUIN YOUR PHONE IN ANY WAY.
BASIC COMPUTER SKILLS REQUIRED.
PROCEED WITH CAUTION.

Installing is safe, but using Blackrose can wipe out all your data. Proceed at your own risk. Make sure you backup all your data before proceeding.

Prerequisites (my situation)

  • pc with Ubuntu Linux 12.04 64bit
  • adb installed and working
  • USB cable
  • Nexus One data:
    • rooted device (probably not necessary)
    • ClockworkMod recovery installed (probably not necessary)
    • unlocked bootloader
    • HBOOT-0.35.0017 (other hboot are supported, see documentation)
    • RADIO-5.08.00.04
    • S-ON

Needed software

Configure udev

If you get this output, you can skip this section:
$ fastboot devices
HT9CWP81XXXX fastboot

In an Ubuntu environment you cannot access these devices without root user.

If you think it’s annoying (as I do), you can configure udev daemon in order to set appropriate permissions on these device files.

It’s sufficient to create a new udev rule file in /etc/udev/rules.d path:

# cat /etc/udev/rules.d/65-n1.rules
# Nexus One
SUBSYSTEM=="usb", ACTION=="add", \
ENV{ID_MODEL}=="Android_1.0", \
ENV{ID_MODEL_ID}=="0fff", \
ENV{ID_VENDOR}=="htc__Inc", \
MODE="0666"

There is no need to reload any daemon because the rules get reloaded any time a change in rule files occurs.

Step by step guide

  1. phone must be on
  2. phone debug mode must be enabled (check Settings -> Applications -> Development -> USB Debugging)
  3. connect phone to pc with USB cable
  4. unpack archive
    unzip -d blackrose_120421 blackrose_120421.zip
  5. run Blackrose (package contains an executable binary for GNU/Linux)
    cd blackrose_120421
    chmod +x Blackrose
    ./Blackrose

Example output

First use (installation)
-------------------------------
| Nexus One BlackRose 120421 |
| Made by Lecahel(XDA-dla5244) |
| Dok-Do belongs to KOREA |
-------------------------------
Do at your own risk
Don't flash any unsigned radio image
Don't flash eclair rom(eg.EPF30), if you are SLCD Nexus One user
If you are using sense rom, please install HTC Sync and turn off that now
Your N1(USB Debugging ON) should be connected to PC
If your device has already installed latest BlackRose, it will enter into BlackRose menu
Otherwise, BlackRose will be installed or updated automatically
* Waiting for device...
* daemon not running. starting it now *
* daemon started successfully *
* Getting device information...
0 KB/s (2 bytes in 0.040s)
0 KB/s (6 bytes in 0.039s)
0 KB/s (10 bytes in 0.040s)
0 KB/s (1 bytes in 0.040s)
* Installing BlackRose
1707 KB/s (4194304 bytes in 2.399s)
566 KB/s (26172 bytes in 0.045s)
970 KB/s (131072 bytes in 0.131s)
< waiting for device >
sending 'recovery' (4096 KB)... OKAY
writing 'recovery'... OKAY
sending 'hboot' (512 KB)... OKAY
writing 'hboot'... OKAY
rebooting into bootloader... OKAY
* BlackRose has been successfully installed if your HBOOT changed to 7.35.5017

Then your next execution will be as this:
./Blackrose
-------------------------------
| Nexus One BlackRose 120421 |
| Made by Lecahel(XDA-dla5244) |
| Dok-Do belongs to KOREA |
-------------------------------
1 Apply stock/custom BlackRose
2 Disable HBOOT flashing protect
3 Uninstall BlackRose
4 More information
5 Exit
Please make a decision:

References

Best way to restore Xperia X10 Mini Pro stock ROM

I found that the only reliable way to restore a stock ROM on this phone is SEUS.

SEUS stands for Sony Ericsson Update Service:

Update your phone for optimal performance and get the latest enhancements. Regardless if you have the latest software, it is a good routine to run Update Service to improve software stability. Also, if you experience problems with your phone this may be solved by a software update.

In the real world this piece of software can be used to restore the stock ROM. It takes care to download everything you need from Sony servers.

It’s a Windows software that was easily accessible from sony site, but now it’s quite hidden in their pages.

The official page is accessible from here.

The direct url I found to download the software is this.

I hope it’s useful to you as it was to me.

Android tip: Launch app through adb shell

Please note than I’m using CyanogenMod 7.

First of all you have to know the Intent and Activity of your interest.

The best way to find them I found is to use logcat.

Open a shell

adb shell

Start logcat filtering the needed rows:

logcat | grep 'Starting:'

Start the app you want to launch later in the standard way (use your phone launcher icon).

Take a look to the lines which come from logcat (i.e. launching Shazam):

I/ActivityManager( 205): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=com.shazam.encore.androidd cmp=com.shazam.encore.android/com.shazam.android.Splash bnds=[365,244][475,362] } from pid 305 I/ActivityManager( 205): Starting: Intent { act=android.intent.action.VIEW flg=0x4000000 cmp=com.shazam.encore.android/com.shazam.android.Home (has extras) } from pid 8096

Now start the app via am:

localhost / # am start -a android.intent.action.MAIN -n com.shazam.encore.android/com.shazam.android.Splash

Look at your phone.

Now you can combine all in one single command:

adb shell 'am start -a android.intent.action.MAIN -n com.shazam.encore.android/com.shazam.android.Splash'

Done.