Massey University
Home > College of Sciences > IIMS > Computer Science

Vogue Linux

In March 2008 I got a new phone, it's an HTC Vogue (branded as OKTA Touch here in New Zealand).

It is a nice piece of hardware (MSM7500) but I'm not very impressed by the OS (Windows Mobile).

I thought I would make a start at getting Linux up and running on it.

Luckily the hardware is very similar to that used by the Google android project and the HTC G1. Update: buttons should work, Volume up/down are the return and menu keys.

Update(9/4/08): Touchscreen works, it's not perfect and can't be calibrated but is usable.

Update(18/4/08): Radio now works for data. The latest zImage and initrd-android should let you use the browser and maps application. You will need to put a username and password in default.txt depending on your provider (the ones there will work for Telecom NZ).

Update(19/5/08): I've written a simple on screen keyboard and got the rest of the buttons working. To try it out, just copy the new kernel (zImage) to your phone. The camera button displays the keyboard and I have changed the back and menu keys to left and right (volume up and down are now left and right if you need them).

Update(23/5/08): You can now make and receive audio calls. The phone should vibrate when a call is received. Press the red button twice to hangup. You can also calibrate the touchscreen by holding the camera button down (so that the keyboard is showing) while tapping the top right and then the bottom left of the screen. Do this while running the pointer location app in dev tools to check that it works. The keyboard now is the same as on the emulator.

Update(29/5/08): SMS text send and receive now works. This was a little more tricky, I had to convert between GSM and CDMA SMS formats. My code doesn't support all encoding formats so it is possible that it won't work for operators other than Telecom New Zealand, let me know. The emulator doesn't include an SMS application so I wrote a very small bit of android code just to test SMS. Start the sms app to send a message, received messages are just displayed for a short time. Remember this app is just for testing, when the final software is released I'm sure it will have a fantastic threaded sms application. I have taken the API Demos out of the initrd and added the world clock and SMS tester.

Update(6/6/08): I've fixed the browser problems, the G icon should appear now and data will work much more reliably. I've also added support for switching off the panel backlight. Click the power button and then tap on "Turn Off Screen", This doesn't put the machine into a very low power state but it does let you use it as a phone. I carried it around yesterday and the battery lasted about 12 hours. Don't select power off, it will disable the buttons.

Update(20/6/08): I've rewritten the touchscreen and keyboard drivers, the keyboard is much more usable now. I've also updated the SMS test app so that you get a notification for each received SMS message, pull down the notification bar to see your messages. Sometimes the runtime crashes if you have too many notifications so be careful. The browser works fine with radio version 3.37 but may not with others. The clock now works, but android doesn't know your timezone so displays GMT. The phone will charge when you plug in the USB but it doesn't know when it's fully charged so don't leave it plugged in for too long. (I can't believe this would be harmful to the phone - it must happen when wince crashes).

Update(14/7/08): The SD driver now works, this means you don't have to run everything from an initrd and your settings will be saved across reboots. It also means that the titan should boot (though I haven't tried it and the keyboard won't work), titan owners let me know. To use the new version, download the file below. In it are 6 files, put system.img(128M) and data.img(128M) onto the sd card in your phone (the "\Storage Card" folder), put zImage, default.txt, haret-0.5.1.exe and initrd.gz anywhere you like and then run haret. The data.img file holds your settings and applications, it's just an ext3 filesystem so on a linux box you can mount it to add applications and import contacts etc..

Update(24/7/08): I've repackaged the files in and updated a few things. Now you don't need to copy 256M to your SD card, just put system.gz and data.gz on the card and the first time it boots they will be extracted to system.img and data.img (thanks to Kevin's initramfs installer for the idea). Keep your data.img if you have saved anything on it and delete system.img to use the new stuff. Audio in calls should be better, vibrate on receiving calls and SMS should work better. When the screen is off only the power button should wake it up. SDHC cards should work better. Volume up and down are not left and right any more because i'm working on audio, they are useful for zooming in the browser too.

Update(24/8/08): New package available using SDK 0.9, calls, browsing and maps should work but there's no working SMS app yet.

Update(17/9/08): Audio is working now, phone will ring and play music, SMS works using my old testing app, now has full screen keyboard. The volume up and down keys are now mapped to back and menu. This is all with the 0.9 SDK, get the latest to try it. There are still problems with suspend, sometimes it doesn't wake up properly when you press the power button. If this happens press the red end call button, wait till the led goes red and try again. Sometimes the phone will reboot after an audio call, I'm looking into this.

Update(24/9/08): Updated to the newest SDK (1.0), Audio should work well now. SMS Works using the Google app.

Update(23/10/08): Android is now open source, latest version includes Email and experimental power management.

Update(28/10/08): Power management enabled by default, DTMF keytones work. Calendar works after you run the Google Login service in Dev Tools.

Update(26/11/08): Camera works.

Update(01/12/08): Switched to cramfs for the system image, just put system.img on the card. Double clicking the cam button now switches from portrait to landscape mode. Camera works better.

Update(16/01/09): Changed to the new 'cupcake' android which has a built in onscreen keyboard (thanks to foobar).

Update(21/01/09): Somebody sent me a phone with the GSM version of the Qualcomm SoC (MSM7200) and I've been porting the kernel to this phone. The latest kernel should also boot on MSM7200 devices (HTC Kaiser, Polaris, Nike and possibly others). There are still lots of things that don't work on MSM7200 but it's a start.

Update(05/02/09): Screen brightness works now.

Update(01/03/09): Implemented display scaling so more apps work. New version based on android 1.1 with working Gmail, Calendar and Market.

Update(17/04/09): USB driver works now, plug the phone into a linux box and it will be recognised as a cdc_subset device. The display refresh now uses a gpio for vertical sync, this makes the interface much smoother

Update(28/04/09): The GPU now works, all the OpenGL apps and games I tried work really well. This is something that WinCE still lacks on MSM7x00 devices.

Update(25/06/09): Android 1.5 now works well, experimental GPS driver (thanks to Steven Walter), adb also works (windows and linux) for copying apps to/from the phone. Also thanks to Jesse Campbell (vilord) for the new initrd.

Update(25/08/09): Bluetooth works. Now all the hardware is working to some extent.


For Android 1.5, use the files from here:

All files, including older releases and test kernels

Development Files:

There is a git repo of my latest development kernel here and all the android libraries here:

Let me know if you have any luck getting this to work for you. Martin

Pia Mckay Blog