[G1 General] endolith:
Ok, so I got a G1 off eBay. I have T-Mobile ToGo prepaid voice-only service. I've been using this service just fine with my MDA, but I wanted the GPS and better OS of the G1.

But the G1 doesn't let you do anything until you've registered it with a Google account. And it doesn't let you go online to register unless you have a data plan, which I don't have. It took me all night to figure out how to get started without a data plan, so I will summarize here for your benefit.

These instructions describe the basic idea of how to register without the data plan. These require the phone to be rooted first, though. (I could also meet some shady person on Craigslist and borrow a SIM card, but I was going to root it eventually anyway.)

These instructions tell how to root the phone.

When I typed <Enter>reboot<Enter> nothing happens, so I have to downgrade first.

Of course you can't mount your phone's SD card on the computer until you've already registered, so I used an external SD card reader. I formatted the card to FAT32 using GParted (it was originally FAT16. I'm not sure if it really makes a difference, but that's what the instructions say.) I copied the DREAIMG.nbh file to the card, put it back in the phone, and followed the instructions. Now I have RC29! Typing "reboot" anywhere makes it reboot, which is both scary and funny. I then applied the root and HardSPL things according to those instructions.

Now back to the original instructions for turning on Wi-Fi.

I need to download the "adb" (Android Debug Bridge) program from the Android Developer's Kit, which is not very clearly described in those instructions. For Ubuntu, download the Linux .zip file from here:

http://developer.android.com/sdk/1.5_r3/index.html

Then I opened it in File Roller and extracted just the "adb" executable file into my ~/bin directory. Now I can type "adb" at a command line and it works. You don't need to waste your time installing Eclipse or anything.

ADB cannot talk to the phone in Ubuntu until you let it communicate over USB, though. In the future this will be a ACL rule? But for now use the udev rule. The HAL thing didn't work for me. When you do lsusb you should see the phone listed along with its Vendor ID number and Product ID number:

~> lsusb
Bus 001 Device 003: ID 0bb4:0c01 High Tech Computer Corp.

Then you create a file that lets anything with that Vendor ID communicate over USB. Use "gksudo gedit" to create a plain text file, copy and paste this into it (unless your Vendor ID is different):

SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"

Then save it to /etc/udev/rules.d/51-android.rules

(You are supposed to a "udev-acl rule" instead, but I don't know what that is and this works in Jaunty for now.)

It still won't connect, because you have to enable ADB in the phone. So then on your phone you type this:

<Enter>setprop persist.service.adb.enable 1<Enter>

Now if you type "adb shell" at a command line it should connect to the phone and give you a prompt.

~> adb shell
$

Now you type into the prompt am start -a android.intent.action.MAIN -n com.android.settings/.Settings and it will respond:

$ am start -a android.intent.action.MAIN -n com.android.settings/.Settings
Starting: Intent { action=android.intent.action.
MAIN comp={com.android.settings/com.android.settings.Settings} }

On the phone's screen, it now shows the Wireless configuration. You can now enable Wi-Fi and connect to an access point. Then press Home to go back to the registration screen, and you can go normally from there.

(Wow. Android is sooo sooo much better than Windows Mobile.)