A quick test of & some hacks for the PPC version of MS Portrait 2.3


Menneisyys@PDAMania.hu/Firstloox/PPCT/Brighthand/Geekzone etc.


MS Portrait ( http://research.microsoft.com/~jiangli/portrait/ )  is probably the only VoIP client for the Pocket PC that makes it possible to actually use VoIP over the meager bandwidth of GPRS with the fortunate owners of Multislot Class 6/10 GSM/GPRS phone owners.

Memory consumption & DLL hacks


The application installs a handful of DLL's into \Windows in Storage memory. Depending on the camera you use, you may remove most (or, if you don't use any camera, all, freeing up some 0.46 MBytes) of them. They are as follows:


2002.04.23.  11:21            12 288 camdrv.dll

2004.02.04.  18:26            23 040 G1000CamLib.dll

2003.02.14.  08:53           114 688 gd104.dll

2002.07.15.  11:37            68 608 hpcamapi.dll

2002.04.11.  16:36           129 024 hpimglib.dll

2003.09.26.  15:10           118 784 SDIOCam.dll

2003.01.21.  18:28            33 280 veocamapi.dll


Oh no, it doesn't support the Fujitsu-Siemens Pocket Loox 720 camera. (Incidentally, as a quick hack to circumvent the lack of the PL720 support, I've tried to rename all of the only camera-related DLL's I could find in the PL 720 ROM, \Windows\HTCCamera1.dll, to all of these DLL names. None of them worked.)


MSN Messenger integration & tip


It integrates with MSN Messenger well - you can define your MSN Messenger login & pwd to login. If the "official" MS Messenger client is configured to auto-logon upon any kind of connection, Portrait logs it out (during this, the PPC becomes unresponsive for several seconds - this is a problem!) and takes over all its functions. Of course, buddies are also imported & shown - no manual editing is needed.


Actually, on the PPC side, Portrait is much better than MSN Messenger in that that it doesn't automatically close the chat window & delete all of its contents as soon as the connection closes for whatever reason. This is a big problem of the PPC MSN Messenger if you want to save the chat contents after the chat session.


The advantages of the PPC MSN Messenger over Portait are that, unlike in Portrait, Ctrl-A works in MSN Messenger to select all the text, and, starting with WM2003SE, it also allows for styled saving of the chat session in Notes. Another advantage is that you have to explicitly exit Portrait (which is pretty hard) upon reconnection so that it connects to the Net again. MSN Messenger automatically does this, which is far easier for non-tech-savvy people to grasp.


When the desktop Portrait is not an active task (being iconized in the taskbar is not enough), calls placed from the PDA only end up in the desktop Messenger. When the desktop Messenger fires up the dekstop Portrait, it tries to call back the GPRS client, but it won't work because of GPRS clients' generally being behind a firewall. This is a big minus.


Incoming text connection requests over GPRS: they are delivered to the PDA. In this case, MSN Messenger shows a taskbar icon so the request can't be missed; Portrait, on the other hand, only plays the ActiveSync login sound ("infbeg" for PPC hackers) and opens the virtual input area. You need to switch to Portrait to be able to see what has been sent by whom. Fortunately, activating Portrait takes you right to the chatting screen.


Unfortunately, unlike MSN Messenger, you can't explicitly tell the underlying operating system to automatically start Portrait (or any of its sign-in parts) when an Internet-connection is established. This is another serious drawback because, programmatically, it's not very hard to do (registering the sign-in code in the DB_Notify_events database).


Voice chat over GPRS


Another problem with Portrait is that it only supports two of the only low-bandwidth voice codec(s) built-in Windows CE. The problem with this approach is the following. With a GPRS connection, the uplink connection, if not using a Class 6/10 GPRS machine (on the GPRS multislot classification of the GPRS machines, please see  http://www.gsmworld.com/technology/gprs/class.shtml ), can't have more than one slot. This only means some 9-10 kbps effective uplink speed. That is, only the uninterrupted/non-skipped sound of vocoders (voice coders) that require less bandwidth than 9-10 kbps is transferred to the other side of the discussion.


Unfortunately, the once-existing "Mobile Voice (2.4Kbps)" vocoder (along with the lesser-know codecs like TrueSpeech and, although that's not a vocoder, just a standard ADPCM codec, IMA ADPCM) has been removed from PPC2k2 and up. This means you can only use the only one audio codec that would really work (Mobile Voice) on a PPC2k machine, but not on a more recent, PPC2k2 / WM2003(SE) one. The latter only support the GSM codec and, as far as I know, there is no easy way to install other (vo)coders on the PPC, unlike with the desktop Windows.


Unfortunately, most cheaper/older non-Nokia GPRS phones are mostly either Class 4 (e.g., the Ericsson R520) or Class 8 (S-E t68i, t610 etc.). The same stands for, unfortunately, all the RTM-8000-based GSM/GPRS CF cards ( http://www.expansys.com/product.asp?code=RTM8000 ). Only the long-forgotten iPAQ GSM/GPRS Sleeve  ( http://www.automatedhome.co.uk/article634.html ) had support for Multislot Class 10. (For the class classification of some older GSM phones, please see http://www.gsmworld.com/technology/gprs/terminals.shtml ).


Only more expensive (non-Nokia) phone models are Class 6/Class 10; e.g. Sony-Ericsson's k700i/P900/P910, newer Siemens phones (e.g. the S65) or most PDA-Phone combos like the MDA II-III ( http://www.pdagold.com/hardware/detail.asp?DeviceID=154 ; http://www.infosyncworld.com/reviews/n/5530.html ) or the iPAQ 6340). This means the voice of anyone that speaks to the PDA won't be heard without serious problems by its peer. The lack of support for full-duplex mode in any PPC operating system greater than PPC2k is another problem - this is not a limitation of the hardware. (FYI, Skype and most other PPC VoIP apps are full-duplex).


Verdict: unless you have a Nokia GPRS phone or anything new (a cheap, but, for data communication purposes, extremely good t610 won't work!) capable of (at least) 2 upload slots, you won't be able to use the VoIP functionality of the application. Or, of course, if the author of the app doesn't supply some kind of proprietary vocoder with Portrait.


Just a remark: the technically non-savvy users will have serious problems with the program because, under PPC2k2+, it allows for choosing both full-duplex mode and Mobile Voice. It, however, won't work and the only error message presented is "WaveIn: unsupported wave format", instead of something like this: "This codec isn't accessible under PPC2k2+. Please use the GSM codec instead."