Monday, May 27, 2013

Extract all files in a Quake PAK archive

This is for Linux, and my variety is Ubuntu

sudo apt-get install unmass
unmass -e pak0.pak '*'

That did not work. I wrote my own pak extractor. Follow the instructions here: https://github.com/mattissf/UnPAK

Install Cyanogenmod 10.1 on HTC One X

My setup
Be warned, this will void your warranty, and could render your phone useless / bricked. Continue at your own peril.

Before you start this procedure, you have to unlock the bootloader. I have described this process in an earlier post.

After you have downloaded the Android SDK, open a shell and navigate to the "platform-tools" directory. It contains an executable called "fastboot" that we will use later on.

First download Clockwork ROM manager from http://clockworkmod.com/rommanager. Put the file (in this case recovery-clockwork-5.8.4.0-endeavoru.img) in the "/tmp" directory.

Then download Cyanogenmod 10.1 and place it in "/tmp". At the time of this writing, the newest build for my HTC One X is a release candidate that I found here: http://wiki.cyanogenmod.org/w/Endeavoru_Info

Open up the Cyanogenmod zip file and extract the file called boot.img to "/tmp".

Now you want to transfer the zip file you downloaded to the internal SD card. This is easier said than done, since the device is not recognized as a mass USB storage device.

This info is specific for Ubuntu 12.04 and may vary on other installations. Start with opening two shells.

Shell #1:

sudo apt-get install golang-go libusb-1.0-0-dev
mkdir /tmp/mtpfs
cd /tmp/mtpfs
export GOPATH=/tmp/mtpfs
go get github.com/hanwen/go-mtpfs

mkdir /tmp/mtpfs/onex
/tmp/mtpfs/bin/go-mtpfs /tmp/mtpfs/onex

Shell #2:

mkdir "/tmp/mtpfs/onex/Internal storage/roms"
cp "/tmp/cm-10.1.0-RC2-endeavoru.zip" "/tmp/mtpfs/onex/Internal storage/roms/"
fusermount -u /tmp/mtpfs/onex

You have now copied Cyanogenmod to the phones internal storage, and you are ready to continue.

First we have to boot the phone into the bootloader. This is done by holding down the power button and the volume up button when the phone is starting.

When you are presented with an old school menu, scroll to "Fastboot" using the volume up/down keys, and select it with the power button.

Alternatively, you can just run "./adb reboot-bootloader" which I find much easier.

First we flash in the new bootloader with "sudo ./fastboot flash boot /tmp/boot.img". Not sure if it is required, but after I did this, I selected the option to reboot the bootloader.

When the bootloader is up again, go into fastboot mode and flash in the recovery image we downloaded earlier:

"sudo ./fastboot flash recovery /tmp/Downloads/recovery-clockwork-5.8.4.0-endeavoru.img"

When that is done, we boot the phone into recovery mode by selecting "HBOOT" in the fastboot options.  You are now presented with multiple choices. Select "RECOVERY" and press the power button.

When you are presented with the ClockworkMod Recovery menu, it is wise to select backup.

Then "Wipe data/factory reset", "Wipe cache partition" and "Advanced/Wipe Dalvik Cache".

We are now ready to install Cyanogenmod. Select "install zip from sdcard" and "choose zip from sdcard." Navigate to the "roms" directory and select the cyanogenmod zip file we transferred earlier.

Installation will now continue. When you are done, go back and select "reboot system now." The phone should now boot up into Cyanogenmod. You are done!

Unlocking the bootloader of my HTC One X

My setup
Be warned, this will void your warranty, and could render your phone useless / bricked. Continue at your own peril.

After you have downloaded the Android SDK, open a shell and navigate to the "platform-tools" directory. It contains an executable called "fastboot" that we will use later on.

First we have to boot the phone into the bootloader. This is done by holding down the power button and the volume up button when the phone is starting.

When you are presented with an old school menu, scroll to "Fastboot" using the volume up/down keys, and select it with the power button.

Your phone is now in fastboot mode.

From your shell, type in "sudo ./fastboot oem get_identifier_token." You should get a long string of text. This is your unique token. Save it for later.

Now go to "http://www.htcdev.com/" and select "Unlock Bootloader." In the dropdown, select "All Other Supported Devices." You can skip all of this until you reach the input box where you should paste in the token you saved in the last step. If you get a failure, read the instructions on the HTC webpage that explains very detailed what the token should look like.

You should receive an email from HTC with an attachment, "Unlock_code.bin" in my case. Download the attachment and put it in the /tmp directory.

In your shell, type in "sudo ./fastboot flash unlocktoken /tmp/Unlock_code.bin" which should prompt you on the phone if you want to unlock the bootloader.

Select "Yes" and press the power button. Your phone will now reboot, and your bootloader is now unlocked.

Tuesday, May 21, 2013

How to enable debugging on Garmin ANT Agent

I had a problem where the Garmin ANT Agent would connect to my Forerunner 910XT and try and sync up with new activities, only to discover that it would fail with "Downloading fitness data failed" error message.

I scourged the internet high and low to find a solution, but most of them involved resetting my watch to factory defaults. Which I did not want.

After a while, I found a recipe for enabling debugging on a Mac here. But this did not help me, as I am using a Windows 7 machine.

So fiddling a bit about, I managed to get debugging up and running by doing these steps:
  1. Click "Start Menu" and type in "regedit.exe"
  2. Go to "HKEY_CURRENT_USER\Software\Garmin\Garmin ANT Agent(tm)\Settings"
  3. Create a new entry of type "Binary Value" with the name "ShowDebug"
  4. Set the value to "01"
It should look something like this:


Now restart your ANT Agent and there should be loads of debug files located in the folder C:\Users\mattis\AppData\Local\Temp\ANTAgent\

"Unfortunately", right after I enabled debugging, the problem fixed itself, so I never had to actually analyze the logs.