Monday, September 20, 2010

Installing Froyo on the G1


If you want to install the latest version of Android 2.2 Froyo on a G1, you have to use a cooked ROM. I'm using Cyanogen Mod 6, and it works pretty good.

The Cyanogen team did some incredible work squeezing Froyo onto the G1. Their documentation of how to do it for the new user is fairly complete but very scattered and out of order. The old adage that great programmers don't necessarily make great documenters is true here. 

Since the G1 is an older device, and the specific steps are very complete at the linked websites in this document, I'm only going to give a more sane order of events here for how to put Froyo on your G1. This assumes you are good with computers, and reading documents, but have little previous experience with Android.

If you have data on your phone (besides mail and contacts) that you want to save, then you need to use Nandroid backup to store that data on your SD card and return it to your phone after the update. Despite what I have read, registering your phone on the network after installing CM 6 did not work without data services on my cell account. You can borrow someone else's SIM with data, or sign up yourself for just one day, then cancel and use WiFi only if you don't want an expensive data plan. There may be a way around it by not installing Google Apps until after you first boot your phone and set up WiFi. I didn't think to try that.


Format your SD card. Download the following files on your computer, and put them on your SD card by connecting to the phone by USB, or just putting the card into your computer and copying them over. I don't see why you couldn't download them direct over the phone data connection. Don't put the files in any folders, or put folders on the card.
  • DREAIMG.nbh
  • Amon_RA's recovery image
  • 2.22.23.02 radio image (if you are on T-Mobile USA)
  • DangerSPL
  • Cyanogen Mod 6 ROM
  • Google Apps Tiny ROM
Get into bootloader by turning on your phone while holding the camera button. Write down the Hboot and Radio version numbers, then follow the onscreen directions to downgrade the firmware to DREAIMG.nbh

Reboot the phone, sign into your Google Account, and follow the directions to install telnetd. Then use telnet to install Amon_RA's recovery image. The instructions suggest you call it recovery.img, which is fine, but if you choose another file name when  you put the file on your SD card, use the name you chose instead when typing it into telnet.

Boot into Recovery by turning on your phone while holding the home key. If the radio number didn't start with a 2.xx, do not continue until you update the radio and verify it took. If you continue with a 1, 3, or 4 radio, you will permanently ruin your phone. Follow the onscreen directions in Recovery mode to update the radio to 2.22.23.02 if necessary, and reboot.

After rebooting, it will return to Recovery mode to finish formatting the cache. There will be no indication it is done, it will just take a few seconds then start responding to keypresses. Follow the onscreen directions to turn the phone off and this time reboot into Bootloader mode. Verify the radio update took by looking at the Radio version number.  Turn the phone back off, and return to Recovery mode.


In Recovery mode,  chose "flash zip from SD card" and flash the DangerSPL.zip file. You can remain in Recovery mode and wipe the "data/factory reset," "cache," and "Davlik-cache." 


Still in Recovery mode, you can load the Cyanogen Mod 6 ROM, and even Google Apps Tiny if you have a cellular data plan and don't want to try to register the phone and set up WiFi, before you are forced to sign into your Google Account.

Don't use the full Google Apps package, the install will crash before it finishes because of too little memory in the G1. You can install the few missing apps one at a time by copying installed apps onto your SD card before adding the next one. You must have a class 6 SD card or better for this to work acceptably. Lower class cards are too slow.

Some people feel like CM6 can be slow on the G1, but it seems like as many feel like it is almost as fast as the stock T-Mobile HTC 1.6 and some of the other cooked Android versions out there. Here is a thread with people debating how to speed it up.


Let me know if I messed something up. This was all from my relatively fresh memory of doing it, while being frustrating paging through the docs figuring out what should happen next. Happy Androiding.

Friday, March 05, 2010

Skiing Taos

Went skiing with Dan and Jon in Taos, NM on February 12-13, 2010. Our trip was so short, we didn't get to see much of the town. It was just under 3 hours from Albuquerque. We got into ABQ at 9pm Friday and to the Abominable Snowmansion hostel in Arroyo Seco outside of Taos just after midnight. We skied Saturday, ate dinner, went to sleep, skied Sunday, and went straight to the airport to come home on the last flight. I got in last night at 11pm. We only got into Taos to eat Saturday night, and of course drove thru it twice going to and from. It looks like a cool town though.

As far as the mountain, it is known as being one of the most technically challenging in the US. Most of the green runs are fairly narrow and many with dangerous drop offs. I felt like they were advanced greens or blues. Some of their blues I thought were easier because they were much wider without drop offs, but steeper of course. It isn't a great big mountain, and it was pretty busy due to President's day weekend.

It is the wrong place for a first time skier. For a good beginner skier on to advanced, it is a very good place. For snowboarders, you need to be a solid intermediate or better to have fun there. It is very hard to snowboard on narrow runs especially when there aren't buffers and it is busy. You have to stay on an edge at all times or you will fall, and transitioning to the other edge takes more space than a skier. The mountain also has many more shady parts, and gets darker quicker because of the mountain's positioning to the sun, compared to most of the places I've skied in Colorado and Salt Lake City.

When I was snowboarding I repeatedly fell because skiers flew by and startled me, causing me to catch an edge in the snow and go flying head over heels or face plant. I wasn't getting back up to speed as fast as I hoped, and the distraction of the skiers was making it harder. On the first day in the early afternoon a skier flew by me about 3 feet away when I was going relatively slow. I caught an edge as I tried to quickly turn, flew up in the air, and landed on my head and butt on hard packed snow. I saw stars for several minutes, and had a headache for about 20 minutes. After that I had enough of snowboarding, traded for skis, and had fun the rest of the trip.

They charged a $10 trade fee, which I have never heard of before. The lift passes were reasonable at $70/day. But I thought the equipment rental was high at the mountain ($40/day) for middle range skis or snowboard. They also didn't rent the snowboard separate from the boots, which almost all other places in the US do. So I didn't save anything by bringing my new snowboard boots.

I knew it was a good idea to wear a helmet snowboarding, and skiing probably. But I figured there was a very low probability of hitting my head hard when going slow. I figured it would probably eventually happen when I was trying to push my skills on a faster or harder run, or some idiot running into me. After that happened, I think I will try to get a helmet before I snowboard again.

The skiers there are very aggressive, to the point of being discourteous, much like snowboarders used to be accused of. Surprisingly they are not good about yielding down mountain, or out of courtesy checking up mountain. They fly by people very fast and very close on even the green runs, where they should know some people are still learning.

Monday, March 01, 2010

The endless abyss of LIRC

I built a home made Tivo out of a computer running MythBuntu (a flavor of MythTV). It installs very easily and quickly if you buy decently supported hardware. If you are using hardware with questionable Linux support, or you want it to do something a little bit custom, it can be an endless time sink to set up. I marginally justify it by thinking I am learning Linux in general along the way.

There are several ways to use a remote control with MythTV, the most common uses LIRC. LIRC is a trashy little pain in the ass program, with outdated and incomplete documentation, that generally can be forced to work if you know what you are doing, or are willing to spend tens of hours trying. I appreciate the author's time in making this program. But honestly if it wasn't free, it wouldn't be worth my time and frustration to use. LIRC needs an IR dongle to receive the remote signals. I use the serial dongle from Iguanaworks.

Set up the receiver
This assumes LIRC is installed and runs by default on your Myth distribution. This is true for most of them. Shut down the computer, plug in the serial dongle, restart the computer.

Test the receiver is working
mode2 can be used to test that the receiver is recognized and passing a remote signals to the computer
sudo mode2 -d /dev/lirc0
Now use any old remote and press some buttons, while pointing it at the receiver. You should get a bunch of pulse/pause gibberish. If you do, all is good, press ctrl+c to break out of it. If you get nothing, you need to figure out why the computer can't see the receiver, or the receiver isn't picking up any signal.

Pick and record the remote codeset
Select a set of codes on the universal remote you want to use. I'd suggest using the highest DVR codeset number, of the same brand as the universal remote, so all keys are likely to be usable. I'm going to use Sony DVR component code 3210 on their RM-VL600 remote.

If lirc is running and you want to reconfigure it, first you have to kill it
sudo killall lircd
Now let's record a new remote control configuration, first change into the recording directory.
cd /etc/lirc
Now start the recorder.
sudo irrecord -n -d /dev/lirc0 lircd.conf.new
Follow the directions onscreen. After you are done, archive your old lircd.conf and make the newly recorded conf current.
sudo mv /etc/lirc/lircd.conf /etc/lirc/lircd.conf.old
sudo mv /etc/lirc/lircd.conf.new /etc/lirc/lircd.conf

Verify the remote is being recognized
Use irw to test Lirc's interpretation of the remote keys. First restart lirc to load the new conf file.
To restart Lirc on Ubuntu 9.10 and up
sudo service lirc start|stop|restart
On older Ubuntu versions
sudo /ect/init.d/lirc start|stop|restart
Now type irw. Press buttons on the remote. You should get the name of the key, and the name of the remote echoed in the terminal. After you are satisfied, press ctrl+c to break out of irw. If you got nothing, lirc can't see the receiver, or wasn't able to load the new configuration file.

Map button names to a lirc event
Open up the lircrc file to see what remote keys are mapped to MythTV keyboard shortcuts.
nano /home/(username)/.lircrc
You should see an include statement for
/home/(username)/.lirc/mythtv
You need to open this file,
sudo nano /home/(username)/.lirc/mythtv
Verify the remote name and button names in lircd.conf are mapped to the correct MythTV keyboard shortcuts in this file. Edit lircrc as necessary. After you get done doing this, you need to restart lirc and restart MythTV frontend. Your remote should work now. MythTV no longer requires irexec or irxevent anymore, contrary to a lot of docs you will find on the intrawebs.


Other random notes
Check /etc/lirc/hardware.conf that DEVICE=/dev/lirc0

To see if lirc or irw is in the process list (ignore grep x in list)
ps aux | grep (lirc or irw)

Saturday, February 27, 2010

My political rants

No more inter-generational theft!

I recently read about this. And I felt like I had to respond to my esteemed Senator. Here's what I sent him...

Dear Senator Cornyn,

I recently read about you supporting Senator Bunning during the debate on extending the unemployment benefit period for families decimated by the lengthy recession.

You were quoted as saying "Somebody has to stand up finally and say, 'No more inter-generational theft!'"

I had to laugh. Where were you when the Bush administration stole from my generation by passing Medicare part D? Where were you when the Bush administration stole from the children of my generation by lowering taxes while prosecuting an extraordinarily expensive and unnecessary war through deficit spending?

I really wish you would stick to your admirable principles on fiscal responsibility when both Democratic and Republican administrations are in power!

Sincerely, Colin.