How to update the PRL on your HTC Touch Pro 2

What is this PRL file do? It’s the Preferred Roaming List, and it’s a database that your phone uses to pick which cell phone towers to use, and which towers to consider “Roaming” and “Home”.

With modern cell phone plans in the US, we rarely have to deal with “Roaming” charges, but this term is used just to refer between towers owned and operated by your service provider (Sprint, Verizon, Alltel, US Cellular, etc…) and towers that your service provider doesn’t own but has roaming agreements to.

Updating your PRL updates which towers your phone can access, and can help with signal strength in areas where you have fringe coverage. This is usually due to changing roaming agreements between cell phone service providers, so keeping the PRL updated can improve consistency and coverage if you are in an area that does not have very good coverage.

Here is what you need in order to update your PRL:

  • Your phone
  • A registry editor for your phone
  • A MicroSD card reader/writer, or the USB cable for your phone

Here are the step-by-step instructions on how to update the PRL on your Sprint HTC Touch Pro 2.

  1. Get a .prl file for your provider (Sprint, in my case) – I used this thread [] and save it to your MicroSD card root
  2. If the PRL file you downloaded is zipped, you may need to unzip it to get the .prl file.
  3. You will need your MSL code for this next step, if you don’t have it, here is how to get it:
    1. Get a Windows Mobile registry editor tool like CeRegEditor [free!].
    2. Go to HKLM\Software\HTC\ATDbgLog
    3. Edit item called “Enable” and change from “0” to “1”, and save your changes
    4. Reboot your device
    5. Go back to the registry editor and change the setting back to “0”
    6. Reboot your device
    7. Open File Explorer and go to the folder “\Atlog” in the root directory of your device.
    8. You should see a file called “ATDbg0” (the “0” may be another number like 1).
    9. Open the file and locate a line containing “RMSL”
    10. You should find a line item that includes a 6 digit number, this is your MSL code. Write it down
  4. Open up the phone dialer application and enter this combination: ##775# – you do not need to hit “Send”, it will automatically enter a hidden menu after you enter in that combination.
  5. It will ask you for your MSL code, enter it in now.
  6. Select “Menu” then “Edit”, and find where you have extracted the PRL to. It should be on your MicroSD card.
  7. Select the PRL file and hit “OK” twice
  8. Your phone should now prompt you to reboot. Go ahead. After the phone boots up, you can dial ##778# to verify your new PRL!
Continue Reading

mod_pagespeed and WP Super Cache issues

Dreamhost recently showcased their mod_pagespeed “switch” that was made available for all of their hosting customers, so I took a stab at enabling it. Most of my websites run WordPress which already isn’t exactly the quickest CMS so I figured I could use all the help I could get to make the pages load quicker.

One plugin that many WordPress users, myself included, use is called WP Super Cache, which basically caches your website as HTML instead of PHP to minimize processing delays in displaying your website to your visitors.

One option that the plugin gives you, is to gzip compress the HTML to send to the viewers. At this time, it looks like using mod_pagespeed and enabling the “Compress pages so they’re served more quickly to visitors” option in WP Super Cache will break your website. I’m not sure at the moment why this is, but if I have this enabled, both FireFox and Chrome error out when loading websites with a content encoding error, saying the content encoding on my website is incorrect.

On a side note, once that option is turned off, mod_pagespeed works great!

Anyone else having this problem?

Continue Reading

Fuzzy Dice

You have two standard three-dimensional cubes, each with six sides. On each side, you are allowed to inscribe one number. How do you represent all the ~31 days of the month, if each of two cubes have exactly the same six numbers inscribed on each side?

Edit: if you’re reading this syndicated on facebook, twitter, whatever, please post the answer as a comment on

Continue Reading

cphulkd locked you out of cPanel/WHM?

Here’s a handy set of instructions that you can use if you accidentally got yourself banned or locked out of the cPanel/WHM login interface due to repeated failed login attempts. This assumes that you have access to the server’s command line and root access to the MySQL server, and will clear the IP address blacklist and the locked user accounts list.

First log into your server, and select the cphulkd database:

mysql cphulkd;

Now you want to clear the IP address blacklist:

DELETE FROM `brutes`;

After clearing the IP address blacklist, you might want to also clear the account locks so you can log back in:

DELETE FROM `logins`;

An alternate way of gaining access back to the server is to add YOUR IP address into the whitelist:

INSERT into `whitelist` values (;

Now you can exit the MySQL command line, and it should all be back to normal!


Continue Reading

The road to recovery

Thanks to Rocky and Butch over at Gillman Southwest Subaru, here’s my car on the road to recovery. Good news; after tearing the car down, they concluded there was actually no frame damage at all! Bad news is my rear driver’s side axle boot is torn. The axle itself appears to be fine, but no idea if the grease was contaminated.

Continue Reading

Root Login Notification

When administering a Linux server, especially when several people share root access (with sudo, don’t give out that root password!) – it’s important to know when other root users are logged in. This is also a simple form of intrusion detection, since as soon as someone logs into the root shell an email will be dispatched out.

This only happens when the .bashrc file is executed; just using the “sudo” command will not trigger this, but “sudo su – ” will. I also used “chattr +i” to the .bashrc file to set the immutable bit, so the file cannot be modified or changed, not even by the root user. On my server, it also sends a text message to my phone as soon as someone logs in as root. The message will show the username that executed the sudo command, and the IP address that the user is remotely logged in from.

echo -e “`date`\n`who -m –ips|awk ‘{print $1” “$5}’|sed -e ‘s|(||g’ -e ‘s|)||g’ -e ‘s|-|.|g’|cut -d: -f1`” | mail -s “root login alert”

Here’s what the script outputs in the message that it emails:

Tue May 18 15:22:23 CDT 2010


Continue Reading

Automatic Ksplice updates

Here is a little bit of shell script as a crontab that you can use to automate the checking of Ksplice kernel updates.  This particular one does the following:

  1. Activates at midnight every day, server time
  2. Checks if there are updates
  3. If there are updates available to the kernel, to automatically apply the update
  4. Once the update is applied, email the updates applied to the specified email address “”

This script does not output anything if there are no updates to apply. Happy scripting!

0 0 * * * uptrack=`/usr/sbin/uptrack-upgrade -y`; uptrackCheck=`echo $uptrack | grep -o "Nothing to be done."`; if [[ $uptrackCheck != "Nothing to be done." ]]; then echo "$uptrack" | mail -s "Ksplice kernel upgraded"; fi;

Some things that you can do to make it more interesting:

  • Also have it send you a text message on your phone, by emailing the SMS gateway of your service provider
  • Check more often, by modifying the crontab entry (don’t make it too often that you get blacklisted for abuse!)
Continue Reading
1 5 6 7 8 9 16