Thursday, June 15, 2017

Compiling Device Driver for Android (e.g. new wireless driver)

This is a quick tutorial on compiling a device driver / kernel module for Android. For the purpose of the tutorial, I'll be using a wireless driver (mt7601u) and android-x86 as an example. But the steps should work with the standard/arm version as well. Just make sure to use the correct compiler/gnu tool chain.

I had a USB wifi adapter like the one below which was mediatek's mt7601u based.
Googling around I found that the support for this is present from version 4.2+ (Reference: MediaTek MT7601 USB WIFI on the Raspberry Pi ). I also found multiple drivers for the same like, https://github.com/imZack/mt7601 and https://github.com/kuba-moo/mt7601u . Since the kernel that I was using was 4.0.x, the later worked. We'll be using that going forward.

There are two ways to get the kernel headers to compile the driver. The fool proof way is to compile the kernel that we are going to use with Android either just the kernel or the entire Android. Both methods has its own advantages. Another hackish way is to find the kernel headers closest to the kernel that we'd like to compile against. This should work mostly, but then...

What I did was to get the Android-x86 entirely - in my case I wanted to get an entire custom android build. Follow instructions on Android-x86 - Get Source

Once compiled clone the repo https://github.com/kuba-moo/mt7601u. You could try compiling on native linux for testing. Post that, edit the Makefile to force the path:

KDIR = /home/muthu/android-x86/out/target/product/x86/obj/kernel

run (after making sure you are using the correct gnu tool chain if you are cross compiling for arm)
make clean
make

you have the required mt7601u.ko file. Push that to Android (which is rooted), and push also the firmware bin file (e.g. you can get it from https://github.com/imZack/mt7601/blob/master/src/mcu/bin/MT7601.bin) to

/lib/firmware/mt7601u.bin

After which load the drivers (mt7601u depends on mac80211)
modprobe mac80211
insmod mt7601u.ko

Then insert the usb dongle to check if the wifi is working.
ip addr
ifconfig




Sunday, June 4, 2017

Creating a custom data image / userdata.img for Android

This is a small description / tutorial on how to create a custom data image for flashing along with Android files. This is usually done to preload settings (if you created one e.g. from Customizing / Changing Android DPI settings or would like to load other data related files / information)

Get the required tools:


Create an ext4 img file (in the example ~10GB)
dd if=/dev/zero of=data.img bs=1M count=10240
mkfs.ext4 data.img

Populate the data (sudo might be required)
mount -o loop data1.img mnt
// copy files to mnt
umount mnt 

Convert to simg
img2simg data.img userdata.img

You can now use userdata.img to flash with fastboot and other flashers/installers.

Customizing / Changing Android DPI settings

There are multiple ways in which the Android DPI Settings and other window manager settings can be changed.One common method is to use the wm helper, for example:
wm density 160

Another common method is to modify dpi settings using the prop file (/system/build.prop). This is mostly done by adding/modifying the following line
ro.sf.lcd_density=160

in the build.prop file by editing it via fastboot, root, or helper apps.

Both these have limitations, the first method may not work on all platforms and the second method doesn't work in newer android verified boot (verity).

Given that the first method is preferable, because of its 'setting' kind of behavior and doesn't touch unnecessary system files. I am writing about a method of directly modifying the settings database to achieve the same result. There are many such android settings that can be edited / modified similarly. In any case, wm and similar tools help with editing the settings.

The file that we are interested in is:
/data/data/com.android.providers.settings/databases/settings.db

Pull this with various tools like fastboot. If Android is booted, one might need it rooted to access this file. [ Articles like How to Copy Files Over to your Android In a Bootloop with No OS using ADB! and The Most Useful Things You Can Do with ADB and Fastboot on Android might help for this ]

Insert / Update the dpi in settings - for this we'll use sqlite3. 'global' is the table that we are interested there, since this is part of the global settings in android.

sqlite3 settings.db
insert or replace into global values(null, 'display_density_forced', 160);
.quit

Push the file to the same location where we picked it from and we are done.





Sunday, August 28, 2016

Make USB storage as a GRUB bootable device

I normally have multiple operating systems on my machine. I thought I'd remove my old Ubuntu installation and use the partitions for other purposes. I knew I'd have GRUB issues, but thought it'd be relatively easy to find how to make a bootable USB pendrive. But, I was wrong!

Seems like most installers use syslinux based boot loaders and grub kicks in later. So, getting hold off one wasn't easy. After searching and reading, I found some useful information (I'm missing exact links though :( ). But here's the brief steps to get a plain grub bootable device.

(This is assuming you have access to some other Linux/GRUB based system)

Assuming /dev/sdb1 is your usb (FAT32 or otherwise) device - BE CAREFUL TO PICK THE RIGHT DEVICE!

[ Run as root / sudo as required ]

[ Mount the device ]
$ mount /dev/sdb1 /media

[ Create folders ]
$ mkdir -p /media/boot/grub

[ Next copy stage1, stage2 files ]
$ cp /boot/grub/stage* /media/boot/grub/

[ Start grub ]
$ grub

[ Change grub root device - normally hd0 => sda and hd1 => sdb and so on...again be careful! ]
grub> root (hd1, 0)

[ Setup as boot device ]
grub> setup (hd1)

....some messages, statuses, warnings, etc...

[ Quit ]
grub> quit

It should be a bootable device now and should give the grub boot prompt...you can use that to boot Windows e.g.
[ Again, use the correct number - it depends on your boot order ]
rootnoverify (hd1,0)
chainloader +1
boot

Sunday, October 25, 2015

LibreOffice Conference 2015 (Aarhus)

This year's LibreOffice conference was at Aarhus, a growing beautiful city. I presented around the ongoing work (specifically in Impress) and at Ericsson (EGI). Yes, my travel this year to the conference was sponsored by TDF.

Networking

A lot of interesting developers, translators, QA and other contributors to LibreOffice project made it to this year's conference (Credits to Sophie & TDF for making the additional efforts). This was something nicer.

Of course, I was able to network with the new people as well as my friends from the project.

Presentations

There were some interesting presentations around LibreOffice in the cloud and Android - seemed like most were from Collabora.
Missed the PyUNO talk :( just heard the last part, it was supposedly quite good - so waiting for the videos to watch it.
Of course, the talks by RedHat, CIB and the others were really good as well.

Other than the development talks, I enjoyed some talks about efforts around LibreOffice for government and migrations. And the celebrations around success at the LibreItalia (specifically around LibreOffice for the army in Italy) was really nice to know.

I also enjoyed talks about language translations and support for LibreOffice. Though I couldn't attend many of these (because the simultaneous tracks), I'm hoping to catch these up from the video recordings.

Pictures

Some pictures for your enjoyment.

Saturday, October 3, 2015

Solving "Unfortunately the process com.android.phone has stopped" problem (on Android Emulator)

Not sure why, but, suddenly one of my Android Emulators started throwing out the "...com.android.phone has stopped..." message. Unfortunately, it continuously throws that popup over and over again...

While googling around for the solutions - it seemed like there is some problem with the sqlite database of one of the telephony applications.

Logcat shows something like:
E/AndroidRuntime( 1293): android.database.sqlite.SQLiteException: Can't upgrade read-only database from version 327686 to 393222: /data/data/com.android.providers.telephony/databases/telephony.db

To solve this some posts suggested clearing cache, unfortunately navigating to the menu was troublesome (and didn't really work for me), so I instead used:
$ adb shell
$ pm clear com.android.phone
$ rm /data/data/com.android.providers.telephony/databases/telephony.db
(I guess, pm clear com.android.providers.telephony should work as well instead of the last command) 


References:
http://www.redips.net/android/emulator-phone-stopped-unexpectedly/ 
http://stackoverflow.com/questions/16879346/the-process-com-android-phone-has-stopped-unexpectedly-please-try-again

Monday, January 30, 2012

Ultimate PDF Converter (on Cloud)

Introduction

I wrote an android app and related server scripts for converting documents to pdf for viewing on the phone. The app can be downloaded here.
I wrote this for a few reasons including experimenting with AdMob, so caution: the app is an adware.

I have cleaned up the sources and uploaded it to google code.
The server scripts can be found here
and the android application can be found here

Some Technical Details
The flow is normally like the following:
  1. Android Application sends the file to the server using the upload.php script
  2. upload.php generates a unique key for this file and passes on the information to the app as well as updates the database
  3. The python converter polls this database and calls the converters (libreoffice/openoffice) and updates the database with success/failure
  4. The app now queries the getfile.php to get the file or the queue number it is in.
  5. The file (converted pdf file) is then downloaded to /sdcard
TODOs
  1. Change the irritating 'open with' to may be 'share with' rather
  2. Conversion of pdfs into maybe images for directly viewing from the app rather than opening it with another pdf viewer.
  3. Conversion of other files: e.g. audio files into wave screenshots or something (?)
  4. Robustness of the scripts and app needs improvement
Any contributors, please?

Monday, October 10, 2011

GUI Based Builder for LibreOffice

I have always found building LibreOffice to be tricky - especially on cygwin/Windows. I always felt having a GUI based tool for detecting build environment, downloading dependencies, cloning source and building it would reduce the pain in looking for the howto documentations. This will also reduce the barrier for a lot of people to contribute - specifically for the Windows platforms.

This being on my todo list for a long time, I, as a consultant with SUSE, got an opportunity during SUSE's hackweek to work on this. I wanted to make it cross platform and also learn something new in that process. All put together, I picked: Python (I already know python scripting) and pygtk (for the UI) + glade.
Here's the first version: https://github.com/muthusuba/libobuilder

Note that, it requires loads of work before it becomes usable. Right now, default config parameters, cloning and building works. Major part of dependency checking & installing needs to be written, which would depend upon one single word - contributions - in whatever form - code, review, comments....Even just editing the UI XML with Glade and making it better is appreciated.

Monday, July 11, 2011

SMS Based chat (anonymous, free and IRC types)

This is a log of the application that I created as part of the txtweb's App2Fame contest. txtweb is an application platform based on the SMS technology. So, all phones irrespective of whether being smart or not can access all the apps and their features and hence become smart. The only down side being that the features are dependent on what txtweb's applications provide.

For submitting to that contest, I was cracking my brains for some ideas to submit, when I thought of google maps helper app (@gmaps) , which I created in one day and submitted. But, later I endedup finding out that there was a similar app @route which was already submitted and in use for a long time.

Well, then I thought of a chat application, this time I wanted to first search the apps present there (- found out that the search feature of txtweb could have been a lot better, thou). I found a few apps, but they really don't do much. Just dummy apps created with some text and doing really nothing. So, here it goes, another day and submitted it just before the deadline (@sirc).

Key Features:

1. Very similar to an IRC client/server. Only that there is only one server.
2. Supports channels concept.
3. Use nicks rather than phone numbers - makes in anonymous, just like the irc.
4. Chat with multiple people
5. Private chat with a single person (based on nick)
6. Create private channels - these are starting with a '.' (dot) and will not be listed publicly.


So, here's how to use it:
SMS these 'bold' text to +91 92433 42000 (India)
@sirc @join [channel] - E.g. @sirc @join bangalore
Joins a channel (and leave your current channel). This will create a channel if there is none found.

@sirc @nick [nick]
- E.g. @sirc @nick superman
Choose a nick for yourself.

@sirc @leave

Leave a channel - Stops messages from this app as well until you join another channel or someone private messages you.

@sirc @[nick] [msg]
- E.g. @sirc @superman come and help!
Send a private message to @nick

@sirc @listpeople

Lists the people currently your present channel (provides all the nicks).

@sirc @list

Lists all the channels present (Does not list channels starting with a dot (.)
Channels starting with a dot are private channels.

@sirc @help
Shows the help. Mostly the contents here ;)

@sirc
[msg] - E.g. @sirc anybody knows kannada?
Sends a message to everybody on the channel. You need to join one first using @sirc @join

Try it out today!!!

Friday, March 25, 2011

The so called Hidden Features of LibreOffice 3.3

There are quite a few non-noticeable features in LibreOffice 3.3.x. I thought of sharing a few here...

Batch conversion
Especially useful when you want to work with command line or invoke conversion from another program or convert set of files to a given format (batch process).

Equivalent commands: oocalc (and its set), localc (and its set), soffice.bin
Assuming the current working directory is the libreoffice installation directory

The following command would convert all the *.doc files to *.pdf files
./soffice.bin -convert-to pdf:writer_pdf_Export -outdir /home/user/output /inputfiles/*.doc

[PS: wildcards wouldn't work correctly on windows specify the file names (list) instead.]

Forcing input filter while opening via command line
Whenever we open a file using the command line, we wouldn't generally have a choice to select the input file type (e.g. xlsx MSO 2007 or xlsx MSO 2010 or anyother). We would be at the mercy of the program to auto detect correctly. Use the following option to force opening the file with a given filter.
./soffice.bin -infilter="Calc Office Open XML" file.xlsx

Combining the above two
oh well...I guess by now it should be easy ;)

References
./soffice.bin -help
List of output filters: http://opengrok.libreoffice.org/xref/filters/filter/source/config/fragments/fcfg_writer.mk
List of input filters: Search with the above example filter or http://opengrok.libreoffice.org/search?q=PreferredFilter&project=filters

Watch out for more such features...

Tuesday, June 30, 2009

BSD, Linux, OpenSolaris Filesystem Encryption - FSE

Similar to my DVD Catalog project ( :) ), I have been searching for a good (transparent) filesystem encryption for my open source operating system(s).

ZFS is a very good option but the encryption module is currently in beta. (And ofcourse, with the usual license problems)


So, I am planning to write a transparent filesystem encryption module for using with any exisiting filesystems and OSes (Unix-based).

== The Design ==

User view:
The user mounts a harddrive (say, /dev/sda1) as an encrypted drive (say, /dev/esda1). And will use any of the exisiting filesystems to format and mount this /dev/esda1 onto a mount-point.


Developer's view:

The module reads/writes from the actual harddrive (or another loopback FS) by encrypting/decrypting the data. For data I/O the module exports a device, say, /dev/esda1. Which is emulated as a harddisk for the existing filesystem modules.


This would be very similar to a loop-back filesystem with encrpytion.



== But, Before I start ==
Unlike DVD Catalog project, I would like to get options and opinions before starting this project.

1) Are there any exisiting projects like this or very similar to this?
2) Are there any other alternatives/file systems?
3) Are there any other better designs?

Sunday, June 21, 2009

Financial Statements Analysis of MindTree Limited.

Brief on MindTree
MindTree is a global IT Solutions Company specializing in IT Services, Product Engineering, Infrastructure Management and Technical Support (IMTS), Independent Testing and Knowledge Services that was started in 1999. (Source: http://en.wikipedia.org/wiki/MindTree)

MindTree's key development centers are in Bangalore, Chennai and Pune. It has offices in over 15 locations spread around the world. MindTree crossed USD 100 million in revenues in April 2006; the fastest Indian IT company to achieve the target.


Few Strategies (listed in Annual Report),
* New service offerings
* Leveraging existing client relationships
* Targeting large clients & expansion in non-US markets
* Innovations and new technologies
* Leverage both organic and in-organic growth
* Strengthen "MindTree" brand

A long list of good initiatives to defend (or attack) the recession. This could be the 2nd major recession MindTree is facing - the first one being the dotcom burst (~2001).


FSAS
MindTree's stock has been on a rise since the announcement of results. It was volatile till a few days back and has started tracking NSE/BSE index movements very closely recently.

This saturday & sunday I decided to analyze MindTree's Annual Report to know if I should invest now or wait. Here's the report: My website or docstoc or scribd

In brief

Current market price: 425
Target price: ~200
Trade Call: Sell
Investment Risk Level: High Risk
P/E: ~53
Gross margins: 32.54%
Net margins: 3.55%
ROE: 6%


For details refer the report.

Please let me know your opinion, suggestions, advices, ...in the comments section of this post. Thank you.

PS: If you want to re-publish the report contact me :)

Wednesday, June 10, 2009

DVD Catalog - A CD/DVD Management Software

I was looking for an open source CD/DVD Management software for a long time. Didn't really find one - either I was looking at wrong places or searching for wrong key worlds (I guess this should be evident from the way I have named my creation :P).

I also wanted to see how good/bad QT SDK/framework is - heard its like write once and compile/run everywhere types.

So, I combined these two wishes and this summer I finally decided that I would start this project (that would be some 2 or 3 weeks back) and put in a few days of effort on it. Since my initial experiences with SQLite3 were really good, I chose to use it for this project as well. Last weekend I got it working with basic features up and running (like index a directory and search the database).

Try it out @ http://code.google.com/p/dvd-catalog Just extract and run the dvd-catalog.exe file
I only have win32 (Windows 32bit/64bit environments) binaries. I will be adding the Linux binaries in a few days, but I sure need help for adding the OS X binaries - I don't have an Apple MAC to build it on.
You can also download the source code there - I have released them as GPLv3. Don't complain on the code quality - its learning qt types :)
There are, of course, NO 'security-layer' or 'sql sanity checks' done. Hopefully I will do a few data sanity checks, but security layer, I guess is not required - since this is supposed to be a "personal" CD/DVD Management software.

Do comment on the improvements, code, ideas, ...I will sure consider them for implementation/correction/...

I guess, I need a few more features like:
0. Few improvements - like commit() only after all the entries are added to the database. I guess even though I am actually doing this, I see commit happening after ever add of the file. This would be a high priority.
1. Adding a single line entry (will be useful to add DVD Movies) into the database
2. Changing ratings
3. Indexing only directories (i.e directory names and not files)
Further,
4. Viewing reviews from internet (say imdb or wikipedia or software/games reviews) for a particular file/file type.

Also, let me know if you want to contribute to this project - I can add you to the list.


Few Screenshots:

Monday, June 1, 2009

Logical AND & OR confusions

I have seen many people getting confused with logical AND and logical OR - especially when writing programs. This used to happen to me during my initial learning days with C programming.

Debug this:
if(string!=NULL || string != empty)
{
/* Use the string to do some work, say */
print(string);
}

The above condition will always execute - beware it might also cause an application crash.

What most programmers expect to do is:
if(string==NULL || string == empty)
{
/* Skip the operations */
}
else
{
/* Use the string to do some work, say */
print(string);
}

Which actually should have translated to:
if(!(string == NULL || string == empty))
{
/* Use the string to do some work, say */
print(string);
}

Which can be coded as:
if(string != NULL && string != empty)
{
/* Use the string to do some work, say */
print(string);
}

Note the logical AND.

If you think you get confused with AND/OR, don't worry you are not alone.

PS: This is similar to the rule ~(p or q) == (~p and ~q)

Tuesday, May 26, 2009

Linux and GPL...Move to OpenSolaris, FreeBSD and/or OpenBSD?

I know this topic is discussed over and over again. [But clarifications and hence a kind-of detailed reasons listed on (say) kernel.org would be helpful, I think.] Anyways,

I read
http://www.kernel.org/pub/linux/docs/lkml/#s1-19
(note: The link to the message wasn't working - I am guessing its the normal licensing.txt or might be this)
and
http://kerneltrap.org/Linux/NDISwrapper_and_the_GPL


I have a lot of confusions over the reasons for why a GPLONLY API needs to be there. Use of GPLONLY define implies some kind of differentiation between kernel modules which are GPL and "other"licenses.

[Just for the sake of argument, what prevents the same kind
of extension (of differentiation) to GPL programs/applications
and other programs?]

Linus, himself says it is not good to prevent non-GPL driver code in Linux. There is a nice argument here, here and of course here.

I think you really just disagree on what is derived, and what is not.
Richard is very extreme: _anything_ that links is derived, regardless of
what the arguments against it are. I'm less extreme, and I bet you're even
less so (at least you might like to argue so).
I liked this argument of Linus,

The silly thing is, the people who tend to push most for this are the
exact SAME people who say that the RIAA etc should not be able to tell
people what to do with the music copyrights that they own, and that the
DMCA is bad because it puts technical limits over the rights expressly
granted by copyright law.

Doesn't anybody else see that as being hypocritical?

So it's ok when we do it, but bad when other people do it? Somehow I'm not
surprised, but I still think it's sad how you guys are showing a marked
two-facedness about this.

This is exactly what I feel about GPLONLY symbols too.

If Linus was convinced by his fellow-team-mates (so called) to add such a define, why shouldn't some one convince him to make GPLONLY system calls for user space programs as well? The reason given in the FAQ is:

To allow choice for developers who wish, for their own reasons, to contribute code which cannot be used by proprietary modules. Just as a developer has the right to distribute code under a proprietary licence, so too may a developer distribute code under an anti-proprietary licence (i.e. strict GPL).
Choice?


Many people, including me, like freedom without any frills. GPL license adds too many frills to it. GPL (as an extreme example) is like saying: take these seeds (for free) do what ever you want with it, but if you grow a tree using it (with whatever hard work it might take) you need to give it back to others (for whatever reason they might need it for) - for free, as in freedom, of course.


Whatever it (the reasons) might be, what's the guarantee that, the so called exceptions (like the one that allows non-GPL code running in user space) be taken out by our Linux kernel friends? Or for that matter limited to a few legacy APIs only?
What is the guarantee that GPLONLY define will not be put all over the kernel? Maybe that's the idea...

Unless a standardized API (for drivers i.e.) is published and maintained (20yrs of kernel developement and not a hint towards it), there probably is no guarantee...We just have to hope (and pray), Linus is not hijacked!
Note: I am not saying it should never change, but it should be more or less standard across minor version changes. And if it can be done with GPL drivers (not extenstion of the kernel) then it should be possible with non-GPL drivers.

At least wrappers, like the one use by nVidia drivers, will go away.


Because of all the above reasons (and more), I am seriously contemplating on moving to OpenSolaris, FreeBSD and/or OpenBSD.

I have already registered for a free CD of OpenSolaris and will be downloading FreeBSD and OpenBSD. Read on for updates on my experiences with those...

-----

In comparison to GPL, LGPL is far better, BSD licenses are too weak (but in some sense the best), do we have something in between? Can't I ask for both pista as well as strawberry milkshakes? Is that the reason why I like cassata ice creams?


PS: I am not anti-GPL.


Sunday, May 10, 2009

Financial Statements Analysis of Sun Microsystems, Inc.

A long weekend (May 1 to 4) spent on the analysis and report making of the financial statements of Sun - Here's the report.

What I found was, Sun is quiet a good company - except that we cannot say what would happen in the recession! Sun's major weaknesses "not enough R&D" (not that they are not spending enough, but there are no major outcomes) and "many (already established) competitors" (especially in the newer segments in which they have entered).
They do have an "open source" edge and of course the myriad products/services they can offer.

We have to see what would happen in the new Oracle-Sun merger, how many of these open source products would Oracle want to maintain? Does oracle even care about them (even though oracle has its own open source projects)? Lets wait and watch...


[Forgive me for too many brackets :) ]

Tuesday, December 30, 2008

Weatherization

Was reading a news article on weatherization. It talks about how weatherproofing the houses could save a lot of energy costs and also create lot of jobs! I do agree on the part that it would create jobs and save energy, but I am confused on how it will save money.
Think about it, we go and fix our houses for weatherproofing by spending lot of money (finding charges, service charges and fixing charges!) and then how long will it stay 'weatherproofed'? For a day, a week, a month? The article says if you spend $4000 you could save up to $1000 a year on energy costs. It of course does not talk about the rate at which you might want to recheck/re-weatherproof!
I think, as an economics student, it really does not make economic sense to spend money for weatherproofing (- unless you have a very old house in the first place, in which case weatherproofing would actually be cheaper in a way).

BUT, it sure makes an environment sense!

PS: My personal view anyway :)

Thursday, September 18, 2008

Qtopia

I updated 2007.2 version of the openmoko software. But then, I started facing lot of issues with the phone, like:
1. Wasn't displaying incoming call (just rings and vibrates)
2. When it displays the incoming call window - pressing pick-up button would do nothing!
3. No proper suspend, etc...

I then gave FSO (and 2008.8) a try - it was cool to use, except that I still had the problem no. 2! So, I moved to qtopia...in one word, it is just awesome. Many applications in one single package and no problems as of now. I have used it for a couple of days now and it works just great! Media player works off the shelf and I have 3 games now :)

Every one having a Neo/Freerunner should give qtopia a try...you will sure love it!

Monday, August 25, 2008

WiFi issue when I updated OpenSuSE 10.3 to OpenSuSE 11:
The NetworkManager used to connect and immediately disconnect the network link, the solution (taken from one of the comments in other blogs) was to replace the dhclient.conf with the updated one (dhclient.conf.rpmnew)! How dumb!

NeoFreerunner:
1. MediaPlayer works fine now - doesn't get locked and the sound works even after standby.
The soultion:
2. New problem, since I had to move to the old version of the neod, neod is not working properly: doesn't allow me to pick up calls sometimes and I end up restarting X.


Friday, August 8, 2008

Neo Freerunner continued...

More experiments with the Neo.

Finally got to know how to increase the volume in the media player (the currently available theme).
The volume control is not-at-all intuitive. (For the benefit of people who don't know: Use you finger on/near the 'speaker' icon to move up(as in repeatedly) to increase and down to decrease). This could have been better if it was horizontal (because the icon looks that way - at least i could have found that out 'accidentally').

GPS is installed - but is still not working (see: http://wiki.openmoko.org/wiki/GPS_Problems). I need to experiment more on it.

The other problem is that the 'ring tone' vanishes when it goes into standy - so the phone just vibrates when there is a new call. To make it clearer: The first time the phone goes into standy - it turns off the ring tone and the screen click sound.

Installed the gallery (photo viewer) - the screen is just too good for a phone. I like it! *grin*

Next: Check if there is a good text editor or viewer. Since file-manager is good enough - why use a editor like 'vi' to view the text/code files? Some gui based text editor would be good to have!

College:
College is going on smooth - with assignments and different kind of people to work with :)
Teachers are just marvelous. But I sure have lot of reading to do...lets see how it goes...