Gotta root it first
My biggest problem was the jargon. I've been working with Linux from nearly the beginning so I was not brought up referring to the operating system as a "ROM" and/or "Firmware" the way these phone people do. Not only that, ROM seems to refer to everything: The phone radio code, the boot loader, the recovery system, and other stuff that normal computers don't have, but not the ACTUAL ROM which loads the Radio operating system! Really, they're right calling it a ROM if you don't have root access, and the whole point of gaining root acces is to stop it being a ROM.
I found this site to be very valuable for help understanding the phone, and for me this was most important: The phone has TWO processors, one to run the "radio", i.e make it a phone, and another to provide the user interface to the phone and to make it a "smart" phone, i.e a pocket computer, and game machine. It's the second processor that runs the Android OS. There is a ROM to tell the radio processor how to load its OS (not Android) and that OS knows how to load an OS, Android, on the other processor. If you get a bad radio system (or just "radio") on your phone you've made it into a "brick" because there is no way short of buying specialized hardware and software to get a working radio OS on it in that case. So as long as you haven't messed up your radio, your phone can still be salvaged.
Now that it's no longer a ROM
Googling around I found that CyanogenMod (CM7) includes bash and vim, but I also found that dsixda's Android Kitchen would add bash for me and, besides, the idea of managing my own system was more intriguing to me than just adopting a "mod" including CyanogenMod so I set it up and used it to add bash to my phone. But...
I found that just having bash on my phone wasn't what I was used to. I'm used to having a home directory with a bash initialization script, and I'm used to the current directory being my home directory when my shell starts up, I'm not used to being dumped into / when my shell starts.
I created myself a directory /sdcard/rmk for my home directory
and I created an /etc/profile bash system
start-up script to make it my start-up current directory complete
with the HOME environment variable. To configure "Android Terminal
Emulator" to start bash initialized with /etc/profile you start
Terminal Emulator, press the menu button select "More > Preferences
> Command line" and enter
Now, since there will probably be updates for my phone I decided
to simplify the process of restoring this bash start-up configuration
to my phone after updates so I created a
plugin for dsixda's Android Kitchen. If you want to use the
plugin put the plugin script and the /etc/profile script (without
the /etc/) in the
I combed vim out of the CM7 /system/xbin directory and made a tarball of it
here, and if you put that tarball and this
script in the
The pantout keyboard of the G2 really won't do for working in bash or vim, nor will the softkeyboard, so it's necessary to get a very portable but more functional keyboard working with the G2.
I chose and purchased the Verbatim Bluetooth Mobile Folding Keyboard only to find that it will not hook up to the G2 except with the BlueInput app and even then the Ctrl key is ignored. Not good. For some reason I developed a vague dislike for the developers of BlueInput and their app and decided not to use it. Maybe it's because they didn't go the extra mile for us bash and vim users.
Here's my solution
The android description of how keyboard keys are mapped to characters and functions is not good and it changes from Gingerbread to Ice Cream Sandwich so the current documents don't apply to the G2 and it's difficult if not impossible to ascertain which of the documents you might run across apply to Gingerbread. So my solution is a kludge.
I went here to find out about tools and techniques useful to explore how the Verbatim interacts with my G2. I got hciconfig and hcitool out of the CM7 /system directory. I could not find hidd there so I got it from here. I put these files in /system/xbin.
I didn't use the kitchen to do it because by this time I'd gotten my ASUS Transformer Prime and rooted it, and in the proces of doing that I discovered sysrw, sysrw2, sysro and sysro2 by VIPERBOY so I modified them to work on the G2, put them in /system/bin and did the work right on the G2 instead of using the kitchen. Don't forget to do sysro when you're done mucking around in /system. (I'll probably make a kitchen plugin for this Verbatim keyboard next time I update my phone.)
You can follow the pairing instructions that come with the keyboard
to pair it with your G2, but it will not connect. I found by experimenting
The scanty android keyboard input documentation alerted me to the
The afore-mentioned not-so-good documentation mentions a program makekcharmap to create the *.kcm.bin file from the *.kcm file but I didn't find it after building the complete Gingerbread source tree. I finally stumbled upon this to learn that it's really called kcm (this version built on MAC OS X 10.5.8) and so now I have VerbatimKeyboard.kcm.bin
I read about ways to get android to associate a particular *.kl
and *.kcm.bin set of files with a particular device, but after trying
some that didn't work and trying to learn more about others I just gave up
and wrote scripts to replace qwerty.* with VerbatimKeyboard.*
each time I connect
(btkb and btkb_)
the Verbtim keyboard
and replace VerbatimKeyboard.* with qwerty.* each time I
(stkb and stkb_)
the Verbatim keyboard. (The *kb* files go in /system/xbin.)
If you look at the scripts you'll discover that I've
replaced the address of my keyboard with ##:##:##:##:##:##. You replace that
with the address of your keyboard which you will discover using
Next project: Put chroot Ubuntu on it.