[GUIDE] Recovering Recovery/Obtaining SKB

Search This thread

cadogan32

Member
Jul 20, 2011
43
1
Northern Cali
Code for tegra 1?

Hi,i was using this code for a phone that has a tegra 1 processor.I have a 32 bit system but tried the 3 different code's and got these:

0x00000012a33080
0x0000FCFE12A33080
0x0000fcfe12a33080

I changed the vid/pid as well to match my device.It seems to be pulling the right code off my phone except for the random zeros which i cant get rid of.Is this code backwards compatible with tegra 1? If not,what could i change to make it work?Thanks
 

cadogan32

Member
Jul 20, 2011
43
1
Northern Cali
code

I tried the "printf("uid: 0x%08X%08X\n", *((uint32_t*)data+1), *((uint32_t*)data+0));" along with the other one but still getting just zeros at the beginning and what looks to be normal after that.I really don't know if its becuase the code is meant for sbkv2 or just cant be for any other tegra devices.to me it sounds like something is working correctly if its pulling a partial code.

Not sure if "eppeP" is the original creator of the coding but i wrote him in hopes he knows what might be going on.
 

cadogan32

Member
Jul 20, 2011
43
1
Northern Cali
ubuntu 12.04 x64

I tried it on my other computer running a live cd version of ubuntu 12.04 x64 and got this:

0x00fcfe12a33080

So the UID should be 15 digits after the 0x?I used the stock code instead of changing it:

printf("uid: %#016lx\n", *(uint64_t*)data);

Not really sure how to fill the missing numbers.
 

tdx3000

Member
Jan 29, 2012
30
0
getting incorrect cpuid

im running a 32 bit ubuntu live

made this change to the apx.c file before compiling

Code:
printf("uid: 0x%08X%08X\n", *((uint32_t*)data+1), *((uint32_t*)data+0));

but it still giving me a 16 digit cpuid which SBCalc didn't like it.

what am i doing wrong ?

Thanks
 

rdozier52

Member
Jan 11, 2011
17
1
Recently I decided to upgrade to ICS. True ICS, new bootloader and stuff from my quazi-ICS install (HC bootloader, ICS rom)
This sounds easy, however, my recovery was too old!
Being used to using my forgiving Samsung SGS2X, I just flashed a NEW recovery while IN recovery - thus REMOVING recovery. (rather than using the problem-free Acer Recovery Installer via google play like smart people do)

Heres where it begins.

symtoms:
-Boots to ACER logo and stops
-Refuses to read update.zip package from microSD/USB (likely, as the recovery was corrupted!)
-I can enter APX mode however.
I have no recovery, no boot, no ADB mode, no way to read internal flash.

I did do a NANDROID backup, which is immensely important and EVERYONE should have at least ONE of these, due to your UID being recorded. This is where my problem came in. The NANDROID backup was on the internal storage!

So, I have a tablet that has no recovery, won't update.zip install, but WILL get to APX mode. I have NO UID, no SKB, no NANDROID backup. Solution is to send to acer? I think not!

Theres some brilliant people on this forum. One post in particular was golden. http://xdaforums.com/showpost.php?p=23783875&postcount=9 by eppeP

"If you can get the device into APX mode it will answer the first read request with the UID."

This is 100% true, and he provided a simple source example but little instructions. I hope I can elaborate and make someone elses life easier.

Requirements:
-Ubuntu (I used 12.04 LTS)
-microUSB cable
-powered tablet (can't be dead)
-paper clip, tac, needle - something to hit reset with
-patience

Boot Ubuntu, can be from CD/DVD/USB/network or installed copy
Install GCC, lsusb, libusb-1.0.x, libusb-1.0-dev - you NEED these! (hoping these are the only ones required for fresh installs)
Grab the code eppeP posted and save to a text file as apx.c
fire up terminal, browse to where the apx.c file is ('cd /home/<user>/Desktop/APX' for me)
run the following commands

sudo su
gcc apx.c -o apx -lusb-1.0

You should now have a file called apx on your desktop, that is ready to run.
If you get errors, you are likely missing a package. This should be fairly straight-forward, but refer to google and post the results please!

Next, pop your tablet into APX mode - plug in microUSB, hold the RESET button, and press power for around 4 sec. Windows gave me a 'usb detected' noise but Ubuntu just don't care.

Now run the following commands (assuming same root terminal permissions. If not run sudo su beforehand)

./apx

the terminal window should spit back to you a 15 character UID if everythings correct. 0x123456789ABCDEF (yours should be different combos of those hex values)

Proceed to guard this with your life! (although now you know how to retrieve again provided APX works)

now visit http://vache-android.com/v1/index.php?site=sbk
and enter your UID. The website should spit back a series of 4, 8 character keys known as your SKB. Guard that too in case the website ever disappears.

Hard parts over. The tablet will live on now.
Next - choose how to recover!

I used a file called:

V8-UNL-ICS-HC-bootloader-MULTI-cwm.zip 32MB
MD5: 33D6692A997649111995CB690EF73213

I sadly lost the link to this package but im sure if you search google/this forum you will find it.

It uses nvflash. Amazing program. Theres also A500APXflash, based off nvflash. The rest mainly require ADB or USB debugging which you can't set as the tablet won't boot so don't waste your time with proggies like afterota (which won't work if you only have APX) You can also do everything in ubuntu with nvflash and the terminal. just read the commands from the batch, they should be nearly identical commands in either environment.

I booted back to windows, ran the V8.bat file, and followed instructions.
In 30 seconds my iconia was booting recovery again and that ROM I initially tried to install worked perfect!

After it booted, I realized I used 44% of my battery attempting to recover the tablet. This whole process takes maybe 30 minutes first-time through, getting ubuntu packages took the longest. LiveBoot will want to update everything as well, which I never considered, and usually fails (due to live install). Everything should be installed from Terminal if possible if using a live distro. It should be one command-line for the packages, reference exact package names in the package manager maybe.
My nandroid backup was still on the flash though! I knew enough that a 'hard reset' wasn't going to fix anything, so I never erased any userdata ironically, but botched the ROM and recovery.

This is the 100% fool-proof way to get your UID using APX. If its your only method this is your only option.



Is there away to get a video on how this should look. i have tried for two days straight. i feel that it is something that i a missing. even if some one could message me i would appreciate it.
 

sanfo

New member
Jan 10, 2011
1
0
I tried it and it works

hi everyone, the method that gave you was successful for me, knowing that it is a Iconia Tab A100, then I got the CPUID. it has 15 digits after the 0x. but when I use the "EUUs_SBK_Acer_A100_1.008.05_COM_GEN1" he told me that the CPUID is incorrect. please help me ...
 

blackthund3r

Senior Member
Feb 27, 2012
594
493
London
Probably a stupid question but if the filter driver was configured correctly, could this be compiled on Windows 7? If so I can build it straight into the flash tool (or another solution ;D).

I guess a 32-bit and a 64-bit binary would be needed and same goes for installing libusb but I can handle the filter driver with a server bit for managing the latest version and a simple GUI that runs install-filter.exe -i but after that I'm stuck.

I did manage to compile it for windows with MinGW but I get nothing :/

Sent from my Iconia A500 using Tapatalk 2
 
  • Like
Reactions: JdgM3NT4L

eppeP

Senior Member
Nov 29, 2011
127
75
Probably a stupid question but if the filter driver was configured correctly, could this be compiled on Windows 7? If so I can build it straight into the flash tool (or another solution ;D).

I guess a 32-bit and a 64-bit binary would be needed and same goes for installing libusb but I can handle the filter driver with a server bit for managing the latest version and a simple GUI that runs install-filter.exe -i but after that I'm stuck.

I did manage to compile it for windows with MinGW but I get nothing :/

Sent from my Iconia A500 using Tapatalk 2

I made a version that compiles with msvc, someone got it to work with some windows version at least.
http://xdaforums.com/showthread.php?p=26768584#post26768584

I think it would be interesting to investigate the possibillity to use the NVidia driver instead of libusb so you don't have to switch drivers. It looks like they are using winusb so it shouldn't be that hard.
 
Last edited:

blackthund3r

Senior Member
Feb 27, 2012
594
493
London
I made a version that compiles with msvc, someone got it to work with some windows version at least.
http://xdaforums.com/showthread.php?p=26768584#post26768584

I think it would be interesting to investigate the possibillity to use the NVidia driver instead of libusb so you don't have to switch drivers. It looks like they are using winusb so it shouldn't be that hard.

That's what I was thinking (nvidia driver) because otherwise you have to reinstall the drivers each time etc. Nightmare for newbz. I managed to link against libusb for msvc yesterday but couldn't get the driver to work. WIP :)

Sent from my Iconia A500 using Tapatalk 2
 

eppeP

Senior Member
Nov 29, 2011
127
75
I think it would be interesting to investigate the possibillity to use the NVidia driver instead of libusb so you don't have to switch drivers. It looks like they are using winusb so it shouldn't be that hard.

Using Windows Driver Kit 7.1.0 and largely based on the examples in How to Access a USB Device by Using WinUSB Functions this works with the driver provided in Acer's download.

It should be cleaned up a bit, but I have had enough of windows for today.

Code:
#include "stdafx.h"

#include <windows.h>
#include <stdio.h>
#include <tchar.h>
#include <strsafe.h>

#include <winusb.h>
#include <Usb100.h>
#include <Setupapi.h>

// Linked libraries
#pragma comment (lib , "setupapi.lib" )
#pragma comment (lib , "winusb.lib" )


BOOL GetDeviceHandle (GUID guidDeviceInterface, PHANDLE hDeviceHandle)
{
    if (guidDeviceInterface==GUID_NULL)
    {
        return FALSE;
    }

    BOOL bResult = TRUE;
    HDEVINFO hDeviceInfo;
    SP_DEVINFO_DATA DeviceInfoData;

    SP_DEVICE_INTERFACE_DATA deviceInterfaceData;
    PSP_DEVICE_INTERFACE_DETAIL_DATA pInterfaceDetailData = NULL;

    ULONG requiredLength=0;
    LPTSTR lpDevicePath = NULL;
    DWORD index = 0;

    // Get information about all the installed devices for the specified
    // device interface class.
    hDeviceInfo = SetupDiGetClassDevs(&guidDeviceInterface, NULL, NULL, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);
    if (hDeviceInfo == INVALID_HANDLE_VALUE)
    {
        // ERROR
        printf("Error SetupDiGetClassDevs: %d.\n", GetLastError());
        goto done;
    }

    //Enumerate all the device interfaces in the device information set.
    DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);

    for (index = 0; SetupDiEnumDeviceInfo(hDeviceInfo, index, &DeviceInfoData); index++)
    {
        //Reset for this iteration
        if (lpDevicePath)
        {
            LocalFree(lpDevicePath);
        }
        if (pInterfaceDetailData)
        {
            LocalFree(pInterfaceDetailData);
        }

        deviceInterfaceData.cbSize = sizeof(SP_INTERFACE_DEVICE_DATA);

        //Get information about the device interface.
        bResult = SetupDiEnumDeviceInterfaces(hDeviceInfo, &DeviceInfoData, &guidDeviceInterface, 0, &deviceInterfaceData);

        // Check if last item
        if (GetLastError () == ERROR_NO_MORE_ITEMS)
        {
            break;
        }

        //Check for some other error
        if (!bResult)
        {
            printf("Error SetupDiEnumDeviceInterfaces: %d.\n", GetLastError());
            goto done;
        }

        //Interface data is returned in SP_DEVICE_INTERFACE_DETAIL_DATA
        //which we need to allocate, so we have to call this function twice.
        //First to get the size so that we know how much to allocate
        //Second, the actual call with the allocated buffer

        bResult = SetupDiGetDeviceInterfaceDetail(hDeviceInfo, &deviceInterfaceData, NULL, 0, &requiredLength, NULL);
        //Check for some other error
        if (!bResult)
        {
            if ((ERROR_INSUFFICIENT_BUFFER==GetLastError()) && (requiredLength>0))
            {
                //we got the size, allocate buffer
                pInterfaceDetailData = (PSP_DEVICE_INTERFACE_DETAIL_DATA)LocalAlloc(LPTR, requiredLength);

                if (!pInterfaceDetailData)
                {
                    // ERROR
                    printf("Error allocating memory for the device detail buffer.\n");
                    goto done;
                }
            }
            else
            {
                printf("Error SetupDiEnumDeviceInterfaces: %d.\n", GetLastError());
                goto done;
            }
        }

        //get the interface detailed data
        pInterfaceDetailData->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);

        //Now call it with the correct size and allocated buffer
        bResult = SetupDiGetDeviceInterfaceDetail(
                hDeviceInfo,
                &deviceInterfaceData,
                pInterfaceDetailData,
                requiredLength,
                NULL,
                &DeviceInfoData);

        //Check for some other error
        if (!bResult)
        {
            printf("Error SetupDiGetDeviceInterfaceDetail: %d.\n", GetLastError());
            goto done;
        }

        //copy device path
        size_t nLength = wcslen (pInterfaceDetailData->DevicePath) + 1;
        lpDevicePath = (TCHAR *) LocalAlloc (LPTR, nLength * sizeof(TCHAR));
        StringCchCopy(lpDevicePath, nLength, pInterfaceDetailData->DevicePath);
        lpDevicePath[nLength-1] = 0;

        printf("Device path:  %s\n", lpDevicePath);
    }

    if (!lpDevicePath)
    {
        //Error.
        printf("Error %d.\n", GetLastError());
        goto done;
    }

    //Open the device
    *hDeviceHandle = CreateFile (
        lpDevicePath,
        GENERIC_READ | GENERIC_WRITE,
        FILE_SHARE_READ | FILE_SHARE_WRITE,
        NULL,
        OPEN_EXISTING,
        FILE_FLAG_OVERLAPPED,
        NULL);

    if (*hDeviceHandle == INVALID_HANDLE_VALUE)
    {
        //Error.
        printf("Error %d.\n", GetLastError());
        goto done;
    }

done:
    LocalFree(lpDevicePath);
    LocalFree(pInterfaceDetailData);
    bResult = SetupDiDestroyDeviceInfoList(hDeviceInfo);

    return (*hDeviceHandle != INVALID_HANDLE_VALUE);
}

int _tmain(int argc, _TCHAR* argv[])
{
    HANDLE hDeviceHandle = INVALID_HANDLE_VALUE;
    WINUSB_INTERFACE_HANDLE hWinUSBHandle = INVALID_HANDLE_VALUE;

    //Acer Picasso USB Boot-recovery driver GUID
    static const GUID APX_DRIVER = { 0xEAD8C4F6, 0x6102, 0x45c7, { 0xAA,0x66, 0x36, 0xE6, 0xD7, 0x20, 0x46, 0x00 } };

    if(GetDeviceHandle(APX_DRIVER, &hDeviceHandle))
    {
        printf("Got device handle.\n");
        if(WinUsb_Initialize(hDeviceHandle, &hWinUSBHandle))
        {
            printf("Got WinUSB handle.\n");

            //Set timeout to 1s, default is wait forever...
            ULONG theUsbReadTimeout = 1000;
            WinUsb_SetPipePolicy(hWinUSBHandle, 0x81, PIPE_TRANSFER_TIMEOUT, sizeof(theUsbReadTimeout), &theUsbReadTimeout);

            printf("Attempting to read UID...\n");
            ULONG cbRead = 0;
            UCHAR theUID[8];
            if(WinUsb_ReadPipe(hWinUSBHandle, 0x81, theUID, 8, &cbRead, 0))
            {
                printf("UID: 0x%08X%08X\n", *((int*)theUID+1), *((int*)theUID+0));
            }
            else
            {
                printf("Failed to read UID.\n");
            }
        }
        else
        {
            printf("WinUsb_Initialize Error %d.", GetLastError());
        }
    }
    else
    {
        printf("Failed to get device handle: %d\n", GetLastError());
    }
    if(hDeviceHandle != INVALID_HANDLE_VALUE)
        CloseHandle(hDeviceHandle);
    if(hWinUSBHandle != INVALID_HANDLE_VALUE)
        WinUsb_Free(hWinUSBHandle);
    fgetc(stdin);
    return 0;
}

Edit:
I made it into a dll with a C# GUI, the code is in the apxuid_winusb directory in the apxuid repository.
A snapshot can be found here.
 
Last edited:

robkoehler

Senior Member
Jul 7, 2009
568
42
Seattle
hi everyone, the method that gave you was successful for me, knowing that it is a Iconia Tab A100, then I got the CPUID. it has 15 digits after the 0x. but when I use the "EUUs_SBK_Acer_A100_1.008.05_COM_GEN1" he told me that the CPUID is incorrect. please help me ...

same problem here, but with an A500 (0x...... 16 characters long)
 

robkoehler

Senior Member
Jul 7, 2009
568
42
Seattle
It is supposed to be 16 charachters (18 including 0x), it is a hexadecimal representation of 8 bytes.
I can't really guess at what might be going wrong at which stage without more information.

well, i can get the EUUS to downgrade to 3.0.1 to take my cpuid - 16 characters - no 0x appended to it, but then it fails when it boots the tablet to download mode. i think the tablet is dead.
 

eppeP

Senior Member
Nov 29, 2011
127
75
well, i can get the EUUS to downgrade to 3.0.1 to take my cpuid - 16 characters - no 0x appended to it, but then it fails when it boots the tablet to download mode. i think the tablet is dead.

Have you tried nvflash manually?
If you generate the SBK and run nvflash the first RCM command will fail if you don't have the correct key.
If you have a dump of the begining of mmcblk0 you could also try to manually decrypt that to verify the key.

I've been considering to extend the tool to make it send an RCM message to verify that the device is actually using an SBK genereated from the UID, but I have been too lazy to implement that. I have the parts to build, encrypt and sign an RCM message so it is mostly a question of putting it together.
 

robkoehler

Senior Member
Jul 7, 2009
568
42
Seattle
Have you tried nvflash manually?
If you generate the SBK and run nvflash the first RCM command will fail if you don't have the correct key.
If you have a dump of the begining of mmcblk0 you could also try to manually decrypt that to verify the key.

I've been considering to extend the tool to make it send an RCM message to verify that the device is actually using an SBK genereated from the UID, but I have been too lazy to implement that. I have the parts to build, encrypt and sign an RCM message so it is mostly a question of putting it together.

I finally got the EUUS to apply. It was a combination of applying the V8 bootloader via the flash tool and the EUUS repeatedly. I started doing the V8 bootloader because at one point I couldn't even get the Acer logo to come up. Once I was back to 3.0.1 stock it would not update via OTA.

So I put the full 3.2 upgrade on the micro sd and applied it with no issues and did a factory reset.

From there, it applied to minor 3.2 updates and I updated the Acer update app in the play store which prompted the ICS update.

My tab hates ICS. I tried to apply it, and it put me back to where I started, soft brick, double Acer logos. A combination of V8 bootloader and EUUS is getting my back to 3.0.1 right now.

Guess I'll stick with 3.2......
 

blackthund3r

Senior Member
Feb 27, 2012
594
493
London
I finally got the EUUS to apply. It was a combination of applying the V8 bootloader via the flash tool and the EUUS repeatedly. I started doing the V8 bootloader because at one point I couldn't even get the Acer logo to come up. Once I was back to 3.0.1 stock it would not update via OTA.

So I put the full 3.2 upgrade on the micro sd and applied it with no issues and did a factory reset.

From there, it applied to minor 3.2 updates and I updated the Acer update app in the play store which prompted the ICS update.

My tab hates ICS. I tried to apply it, and it put me back to where I started, soft brick, double Acer logos. A combination of V8 bootloader and EUUS is getting my back to 3.0.1 right now.

Guess I'll stick with 3.2......

If Acer's stock FW won't stick then it could be faulty flash chip sectors. If the tab has stock FW on it then make use of the warranty service tbh

Sent from my A500 using Tapatalk 2
 

radarbill

Member
Oct 15, 2012
10
1
Not compiling?! Help!!

Recently I decided to upgrade to ICS. True ICS, new bootloader and stuff from my quazi-ICS install (HC bootloader, ICS rom)
This sounds easy, however, my recovery was too old!
Being used to using my forgiving Samsung SGS2X, I just flashed a NEW recovery while IN recovery - thus REMOVING recovery. (rather than using the problem-free Acer Recovery Installer via google play like smart people do)

Heres where it begins.

symtoms:
-Boots to ACER logo and stops
-Refuses to read update.zip package from microSD/USB (likely, as the recovery was corrupted!)
-I can enter APX mode however.
I have no recovery, no boot, no ADB mode, no way to read internal flash.

I did do a NANDROID backup, which is immensely important and EVERYONE should have at least ONE of these, due to your UID being recorded. This is where my problem came in. The NANDROID backup was on the internal storage!

So, I have a tablet that has no recovery, won't update.zip install, but WILL get to APX mode. I have NO UID, no SKB, no NANDROID backup. Solution is to send to acer? I think not!

Theres some brilliant people on this forum. One post in particular was golden. http://xdaforums.com/showpost.php?p=23783875&postcount=9 by eppeP

"If you can get the device into APX mode it will answer the first read request with the UID."

This is 100% true, and he provided a simple source example but little instructions. I hope I can elaborate and make someone elses life easier.

Requirements:
-Ubuntu (I used 12.04 LTS)
-microUSB cable
-powered tablet (can't be dead)
-paper clip, tac, needle - something to hit reset with
-patience

Boot Ubuntu, can be from CD/DVD/USB/network or installed copy
Install GCC, lsusb, libusb-1.0.x, libusb-1.0-dev - you NEED these! (hoping these are the only ones required for fresh installs)
Grab the code eppeP posted and save to a text file as apx.c
fire up terminal, browse to where the apx.c file is ('cd /home/<user>/Desktop/APX' for me)
run the following commands

sudo su
gcc apx.c -o apx -lusb-1.0

You should now have a file called apx on your desktop, that is ready to run.
If you get errors, you are likely missing a package. This should be fairly straight-forward, but refer to google and post the results please!

Next, pop your tablet into APX mode - plug in microUSB, hold the RESET button, and press power for around 4 sec. Windows gave me a 'usb detected' noise but Ubuntu just don't care.

Now run the following commands (assuming same root terminal permissions. If not run sudo su beforehand)

./apx

the terminal window should spit back to you a 15 character UID if everythings correct. 0x123456789ABCDEF (yours should be different combos of those hex values)

Proceed to guard this with your life! (although now you know how to retrieve again provided APX works)

now visit http://vache-android.com/v1/index.php?site=sbk
and enter your UID. The website should spit back a series of 4, 8 character keys known as your SKB. Guard that too in case the website ever disappears.

Hard parts over. The tablet will live on now.
Next - choose how to recover!

I used a file called:

V8-UNL-ICS-HC-bootloader-MULTI-cwm.zip 32MB
MD5: 33D6692A997649111995CB690EF73213

I sadly lost the link to this package but im sure if you search google/this forum you will find it.

It uses nvflash. Amazing program. Theres also A500APXflash, based off nvflash. The rest mainly require ADB or USB debugging which you can't set as the tablet won't boot so don't waste your time with proggies like afterota (which won't work if you only have APX) You can also do everything in ubuntu with nvflash and the terminal. just read the commands from the batch, they should be nearly identical commands in either environment.

I booted back to windows, ran the V8.bat file, and followed instructions.
In 30 seconds my iconia was booting recovery again and that ROM I initially tried to install worked perfect!

After it booted, I realized I used 44% of my battery attempting to recover the tablet. This whole process takes maybe 30 minutes first-time through, getting ubuntu packages took the longest. LiveBoot will want to update everything as well, which I never considered, and usually fails (due to live install). Everything should be installed from Terminal if possible if using a live distro. It should be one command-line for the packages, reference exact package names in the package manager maybe.
My nandroid backup was still on the flash though! I knew enough that a 'hard reset' wasn't going to fix anything, so I never erased any userdata ironically, but botched the ROM and recovery.

This is the 100% fool-proof way to get your UID using APX. If its your only method this is your only option.

I am having trouble with the code from eppeP it isn't wanting to compile.

I did as the quick guide says:
making a file APX and a text apx.c.
I made sure to install all of the packages.
Then I input....

I suppose it would be easier if I just post the terminal so you can see what I might be doing wrong.

monicasuegast@ubuntu:~$ sudo apt-get install gcc
[sudo] password for monicasuegast:
Reading package lists... Done
Building dependency tree
Reading state information... Done
gcc is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
monicasuegast@ubuntu:~$ sudo apt-get install libusb-1.0-0-dev libusb-1.0-0
Reading package lists... Done
Building dependency tree
Reading state information... Done
libusb-1.0-0 is already the newest version.
libusb-1.0-0-dev is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
monicasuegast@ubuntu:~$ sudo su
root@ubuntu:/home/monicasuegast# Desktop/APX
bash: Desktop/APX: Is a directory
root@ubuntu:/home/monicasuegast# sudo su
root@ubuntu:/home/monicasuegast# gcc apx.c -o apx -lusb-1.0
gcc: error: apx.c: No such file or directory
root@ubuntu:/home/monicasuegast#

As you can see I end up with an error showing that there is no such file or directory.

I've even tried copying your compiler part of eppeP code that you had posted. It didn't help.

Are we suppose to check under properties allow executing file as program? I have it checked
and I have tried it unchecked.

I am getting frustrated....Please help!!

Thank you so much!

---------- Post added at 02:33 PM ---------- Previous post was at 02:21 PM ----------

You are probably using a 32bit system, while the others have been using a 64bit system.
Try replacing
Code:
printf("uid: %#016lx\n", *(uint64_t*)data);
with
Code:
    printf("uid: 0x%016llx\n", *(uint64_t*)data);
or
Code:
printf("uid: 0x%08X%08X\n", *((uint32_t*)data+1), *((uint32_t*)data+0));

I would expect either to work.

THANK YOU for the information, because my laptop is 32bit system!! :laugh:
 
Last edited:

Top Liked Posts

  • There are no posts matching your filters.
  • 38
    Recently I decided to upgrade to ICS. True ICS, new bootloader and stuff from my quazi-ICS install (HC bootloader, ICS rom)
    This sounds easy, however, my recovery was too old!
    Being used to using my forgiving Samsung SGS2X, I just flashed a NEW recovery while IN recovery - thus REMOVING recovery. (rather than using the problem-free Acer Recovery Installer via google play like smart people do)

    Heres where it begins.

    symtoms:
    -Boots to ACER logo and stops
    -Refuses to read update.zip package from microSD/USB (likely, as the recovery was corrupted!)
    -I can enter APX mode however.
    I have no recovery, no boot, no ADB mode, no way to read internal flash.

    I did do a NANDROID backup, which is immensely important and EVERYONE should have at least ONE of these, due to your UID being recorded. This is where my problem came in. The NANDROID backup was on the internal storage!

    So, I have a tablet that has no recovery, won't update.zip install, but WILL get to APX mode. I have NO UID, no SKB, no NANDROID backup. Solution is to send to acer? I think not!

    Theres some brilliant people on this forum. One post in particular was golden. http://xdaforums.com/showpost.php?p=23783875&postcount=9 by eppeP

    "If you can get the device into APX mode it will answer the first read request with the UID."

    This is 100% true, and he provided a simple source example but little instructions. I hope I can elaborate and make someone elses life easier.

    Requirements:
    -Ubuntu (I used 12.04 LTS)
    -microUSB cable
    -powered tablet (can't be dead)
    -paper clip, tac, needle - something to hit reset with
    -patience

    Boot Ubuntu, can be from CD/DVD/USB/network or installed copy
    Install GCC, lsusb, libusb-1.0.x, libusb-1.0-dev - you NEED these! (hoping these are the only ones required for fresh installs)
    Grab the code eppeP posted and save to a text file as apx.c
    fire up terminal, browse to where the apx.c file is ('cd /home/<user>/Desktop/APX' for me)
    run the following commands

    sudo su
    gcc apx.c -o apx -lusb-1.0

    You should now have a file called apx on your desktop, that is ready to run.
    If you get errors, you are likely missing a package. This should be fairly straight-forward, but refer to google and post the results please!

    Next, pop your tablet into APX mode - plug in microUSB, hold the RESET button, and press power for around 4 sec. Windows gave me a 'usb detected' noise but Ubuntu just don't care.

    Now run the following commands (assuming same root terminal permissions. If not run sudo su beforehand)

    ./apx

    the terminal window should spit back to you a 15 character UID if everythings correct. 0x123456789ABCDEF (yours should be different combos of those hex values)

    Proceed to guard this with your life! (although now you know how to retrieve again provided APX works)

    now visit http://vache-android.com/v1/index.php?site=sbk MOD EDIT: Link no longer valid. SBK generator is available in the forums. Just check @dibb_nz profile signature and there's a link to a downloadable version in the guides.
    and enter your UID. The website should spit back a series of 4, 8 character keys known as your SKB. Guard that too in case the website ever disappears.

    Hard parts over. The tablet will live on now.
    Next - choose how to recover!

    I used a file called:

    V8-UNL-ICS-HC-bootloader-MULTI-cwm.zip 32MB
    MD5: 33D6692A997649111995CB690EF73213

    I sadly lost the link to this package but im sure if you search google/this forum you will find it.

    It uses nvflash. Amazing program. Theres also A500APXflash, based off nvflash. The rest mainly require ADB or USB debugging which you can't set as the tablet won't boot so don't waste your time with proggies like afterota (which won't work if you only have APX) You can also do everything in ubuntu with nvflash and the terminal. just read the commands from the batch, they should be nearly identical commands in either environment.

    I booted back to windows, ran the V8.bat file, and followed instructions.
    In 30 seconds my iconia was booting recovery again and that ROM I initially tried to install worked perfect!

    After it booted, I realized I used 44% of my battery attempting to recover the tablet. This whole process takes maybe 30 minutes first-time through, getting ubuntu packages took the longest. LiveBoot will want to update everything as well, which I never considered, and usually fails (due to live install). Everything should be installed from Terminal if possible if using a live distro. It should be one command-line for the packages, reference exact package names in the package manager maybe.
    My nandroid backup was still on the flash though! I knew enough that a 'hard reset' wasn't going to fix anything, so I never erased any userdata ironically, but botched the ROM and recovery.

    This is the 100% fool-proof way to get your UID using APX. If its your only method this is your only option.
    12
    It doesn't work correctly for me. It gives me only the last 8 digits of my uid. The rest is filled up with zeroes.
    You are probably using a 32bit system, while the others have been using a 64bit system.
    Try replacing
    Code:
    printf("uid: %#016lx\n", *(uint64_t*)data);
    with
    Code:
        printf("uid: 0x%016llx\n", *(uint64_t*)data);
    or
    Code:
    printf("uid: 0x%08X%08X\n", *((uint32_t*)data+1), *((uint32_t*)data+0));

    I would expect either to work.
    4
    Ok. I am uploading the files that you need to my Dropbox. I'll send you a pm with the link. If anyone else would like a copy please pm me rather than post here.

    There are 4 files in there.

    apx.c. Thanks for veryifing that it worked for you.

    Shortcut to blackthund3r_A500_APX-Flash_Tool webpage hosted somewhere else. Thank you blackthund3r.

    HC BL TWRP Recovery.a500apx. This is number one from blackthund3r's APX Tool Bundle Maker Market.
    V8 BL Thor1.73.a500apx. Again, thank you blackthund3r. It is number 17. It would be best if you just use the bundle maker and don't download those 2.

    You can use Acer_AV041_A500_1.031.00_WW_GEN1 found here. Thanks Civato. You can use any rom you like once you get cwm going. It's a pretty good place to start.

    I've also put in a stock rooted HC rom. So if you are want to go back to stock 3.1. The process below will still apply. It is stock 3.1 ACER_A500_4.010.38_COM_GEN1. Thanks Vache.

    I was where you are with your tablet, and this worked fine for me.

    Step 1.
    APXWalkthrough02.jpg
    Step 2.
    APXWalkthrough03.jpg

    Step 3.
    APXWalkthrough04.jpg


    Step 4. I used number 17.
    APXWalkthrough05.jpg
    Step 5.
    APXWalkthrough07.jpg
    Step 6.
    APXWalkthrough08.jpg


    Step 7. I used the default since my tab was fried.
    APXWalkthrough09.jpg
    Step 8.
    APXWalkthrough10.jpg


    Once you are in APX mode and plugged into the pc you should see the message APX device connected. Choose the next arrow, once it runs for a few seconds it will ask you to confirm that the APX download mode has started.
    21_Old_Logo1-568x412.jpg


    Once it has. Confirm and wait for it to finish. Get into CWM, flash the rom and you should be good to go.

    Once you get settled in go visit Skrylax, Civato, srbeen, ezterry, eppeP, Vache, blackthund3r, Thor, MoscowDesire, (hope I didn't forget someone...) and click the thanks button for making this possible.
    3
    I don't know if it will help or not. But I installed every package that came up when I searched for libusb. Well, I didn't download the iPhone stuff...
    But I got the rest of it.

    Use the following command:
    Code:
    sudo apt-get install libusb-1.0-0-dev libusb-1.0-0

    Now you can go ahead and compile apx.c :)
    2
    does anybody know another way to generate the SBK?
    Yes, the algorithm it is quite simple and can without to much trouble be reversed out of known UID/SBK pair.
    A short description http://projects.pappkartong.se/a500/#generatesbk.

    Seriously, what genius decided the only way to flash your tablet was via a magic number you have to get off a website?
    Acer, except for the part where you can actually get it which was most likely not part of the plan.

    when i try to get to where the file is on my desktop in terminal it does nothing else i just get this symbol > and if i keep typing the next steps it does nothing but give me the same symbol again i don't know where i went wrong
    help please
    You will have to be much more specific if you want help.
    Describe exactly what did you did and the results, step by step.