Opera Mini on Palm OS 3.5 and 4

Lately I’ve been playing around with my old Sony Clie SJ30 which runs Palm OS 4.1. I managed to tether it to an equally old Motorola i50sx iDEN mobile phone and soon I was browsing the web on the “big” 320×320 px screen during my commute on the train. That was pretty cool. I tried a bunch of different Palm browsers from the ancient (but free) text only Palmscape and Eudora Web to several commercial browsers, the best of which seems to be Xiino 3.4.E.

I was initially quite pleased. Pages actually seemed to load faster in the Palm browsers than with the phone’s own built in browser. Reading long pages was also a breeze as the larger screen meant much less scrolling. Xiino resizes images and does a great job of reformatting full size web pages to fit the PDA screen.

Soon I discovered a major annoyance, all the Palm browsers, even Xiino, were stuck in an HTML 3.1 time warp. They ignored CSS formating and all but Eudora refused to load WAP2 pages sent with mime type “application/xhtml+xml”. But the worst thing about the Palm OS browsers was that they turned utf-8 unicode characters like left and right quotes into an ugly sequence of three characters so – “smartquotes” – became – “smartquotes“ – and – Google’s latest acquisition – became – Google”™s latest acquisition – argh. That wouldn’t have bothered me if it was a rare occurrence. But a lot of the blogs I read were just loaded with these garbage characters. It turns out that WordPress defaults to replacing regular single or double quotes with “smartquotes” which are left and right single and double quotes. Also, if you type two or three dashes in a row WordPress replaces them with the longer single dashes, en dash and em dash in typographic terms. The smartquotes and fancy dashes look great in a modern browser. Unfortunately, they are represented by either double-byte unicode literal characters or some of the newer html entities – neither of which Xiino or any of the other Palm OS 4.1 browsers can display properly. The entities look a little better – showing up as a blank or a little box where the character should be. The literals were what produced the three character mess shown above. I turned off smartquotes etc. on this blog which required installing the TextControl plugin as I want to support all browsers not just modern desktop ones. Of course that didn’t help me when reading other people’s WordPress blogs.
 Image: Opera Mini on POSE
So I though, what about Opera Mini? It’s a throughly modern browser in Java ME. I wonder if it will run in the free Java ME runtime for Palm OS from Sun. Well it doesn’t. At first I couldn’t even get Sun’s Converter tool to create a Palm format .prc from the Opera Mini .jar and .jad A little Googling took me to this thread on Opera’s Mini Forum where I learned that this is due to a bug in Sun’s converter having to do with the order of the files in the jar. If the manifest file (a text file of meta data inside the .jar) happens to be the last file in the jar the Sun converter fails. So I rebuilt the .jar using winzip (a .jar file is just a .zip file with a different extension) adding the manifest to the zip first and then the other files while being careful to maintain the same directory structure within the .zip/.jar. Finally, I was able to create a .prc with the Sun Converter. But the .prc doesn’t work in the Sun runtime on the Clie – it opens for a few milliseconds and then immediately closes. As the converter doesn’t have any switches or options to set and I don’t have the Opera Mini source file or the skills to modify a Java ME app, I concluded that I had reached a dead end with the Sun VM.

More Googling and I found that IBM used to sell a version (5.6) of their Websphere Studio Device Developer (WSDD for short) which included the J9 Java ME virtual machine for Palm OS 3.5 – 4.1. IBM briefly offered the Palm runtime to end users for $6.00 and also created a version for Palm Inc. which was crippled so it would only run on the Tungsten W. There no longer seems to be any way to buy the 5.6 runtime, only the latest 5.7 version which only works with OS 5. The only way to get the J9 runtime for Palm OS 3.5-4.1 anymore is to download a free evaluation copy of the complete WSDD 5.6 development toolkit.

WSDD has a command line tool (jxe2prc) for converting a set of .jad and .jar files to a .prc. I built a .prc using jxe2prc with the default settings and loaded it on my Clie. The Opera Mini splash screen came up and then came the reset. And reset and reset. The PDA was stuck in a reset loop and I had to hard reset to recover. I had just hotsynced so I didn’t lose anything – another hotsynch and I was back in business. WSDD’s jxe2prc tool has many options and very little documentation of what they do. I grabbed a copy of the Palm W emulator off the Palm site and started trying various combinations of options.

After many tries and as many hard resets on the emulator I found a combination that that creates a .prc that works on the emulator without reseting. It actually works pretty well – on the emulator (top image). The only bad part is that it takes about 40 seconds for Opera Mini to start up. If you’ve used Palm devices you know that most apps load almost instantly. For anything on a Palm to have a 40 second startup time is unheard of. The J9/Opera Mini combination is also un-Palm-like in that it doesn’t retain it’s state when you switch to another Palm app or turn the PDA off. Native Palm applications are supposed to always startup in the state you last left them in. This is really cool, in that it gives the Palm the appearance of multi-tasking without actually having the hardware, horsepower and OS needed to effectively multitask. Using Xiino I can copy a snippet of text off a web page, switch to Notepad, paste the text into a note and switch back to Xiino with no delay and still be on the same web page without missing a beat. With Opera Mini, I can’t do this. Not only is copy and paste from Opera Mini’s window disabled but if I switch to Notepad or any other app and then switch back to Mini I have that 40 second wait and then I’m back at Mini’s start screen rather than the page I was on when I left.

At least it runs reliably once Mini finally loads. The menus are quite responsive and pages load about as fast as in Xiino and look much better with no garbage and CSS colors, borders and formatting applied.

 Image: Opera Mini on POSE Unfortunately things aren’t so rosy on the Clie. The J9 VM doesn’t seem really support the Sony’s non-standard hardware and modified version of the Palm OS. There are both display issues and instability. The display looks bad because the background behind text is a different color than the rest of the background and if a link has focus instead of being displayed in reverse video, only the background color is reversed so I get blue text on a blue background – very unreadable. You can see how Mini looks running on the Clie in the bottom image. Their are two stability issues. If I tap the screen or press any of the PDA’s buttons while a web page is loading the app, the Clie lock’s up and requires a soft reset to recover. Also, if I exit Mini or switch to another app after browsing for more than a few minutes, the Clie soft resets with the error “DataMgr.c Line:6317 Invalid uniqueID passed.” So I can only browse the web with Opera Mini if I’m are very careful to wait for a page to fully load before trying to scroll or follow another link and am willing to put up with a soft reset every time I quit Opera Mini. I blame these issues on J9 rather than Mini as even the most vanilla of JavaMe games exhibit the same display problems and other network aware Java ME apps will lock up when if I tap the screen or press a button while the app is talking to the network.

The fact that none of these problems, other than the slow initial load times occur on the emulator gives me hope that Opera Mini can possibly be run reliably on at least some pre Palm OS 5.0 devices. I’ve pretty much given up on trying to run Mini on my Clie but I wanted to write up the process in case any readers want to try it on their own devices.

If you do try this – just be sure that you have hotsynced and backed everything up on your PDA first. Resets, including the dreaded hard reset and even data loss are a definite possibility.

Here are the steps to get Opera Mini running on your Palm OS 3.5 – 4.1 PDA:

Go to here and register as a developer, it’s free and instant (note: the URL doesn’t seem to work in Opera 8.5 (bad IBM). Firefox or IE do work). Once you’re registered go back to the above address and login, you will be able to download several versions of IBM WebSphere Studio Device Developer. (WSDD for short) Version 5.6 is the last one to support PalmOS 3.5-4.1 and that’s the one I’ve been playing with.

After you have downloaded and installed WSDD, download the Opera mini lofi jar and jad from here and copy them into WSDD’s ive-2.1\bin directory (C:\Program Files\IBM\DeviceDeveloper5.6\wsdd5.0\ive-2.1\bin if you’ve installed WSDD in the default location.

Then open a command prompt in the same directory. At the command prompt enter:

“C:\Program Files\IBM\DeviceDeveloper5.6\wsdd5.0\ive-2.1\bin\jxe2prc” OPRA
OperaMini -translate -compress -vmOption -Xss32k -vmOption -verify -stacksi
ze:14336 opera-mini-1.2.3214-basic-us.jad mini.prc

Type the command all on one line. The name of the Opera Mini .jad may change, replace “opera-mini-1.2.3214-basic-us.jad” with the actual .jad file name.

The above command should create mini.prc in the same directory. Hotsync mini.prc and the J9 runtime which consists of the files: j9_vm_bundle.prc, midp21.prc and j9pref.prc to your PDA. The runtime files can be found in C:\Program Files\IBM\DeviceDeveloper5.6\wsdd5.0\ive-2.1\runtimes\palmos\68k\ive\bin\ assuming you have installed WSDD to the default locations.

A word about the parameters:
-stacksize can be anywhere in the range from 8KB ( 8192) to 15KB (15360) – they all seem to work the same but too little -stacksize:4096 (4KB) gives a stack overflow error loading Mini and too much -stacksize:16384 (16KB) throws an out of memory error.

-verify which is completely undocumented seems does wonders for Opera Mini’s stability. Without -verify hard resets are common, with it I haven’t had any.

-Xss32k sets the stacksize (apparently a different stack than -stacksize) to 32k. You can try different values here, I haven’t really played with this one much.

You can change all the parameters except -stacksize at runtime in the J9 Preferences panel on the Palm device. That are about a dozen parameters in all. If you want to play around with modifying the parameters, I strongly recommend that you download the Palm OS emulator (POSE) from PalmSource (free registration required.) as you will be doing a lot of resets.

Send me a comment if you try this on your PDA, whether it works or not. I’ll update this post with your experience.

28 thoughts on “Opera Mini on Palm OS 3.5 and 4

  1. my samsung sgh f250 has limited java memory.only 4mb.when i download any game or software in memory card or phone it install in limited memory.is there any software that help me to install jad software and games in memory card or phone?

  2. Tan, the samsung x620 is not a Palm OS device. But it is should work. The best way to install Opera Mini on a supported phone like yours is to go to http://operamini.com using your phone’s built in browser and then just click the download link.

    If that doesn’t work, you should post a message describing the issue to the official Opera Mini support forum at http://my.opera.com/community/forums/forum.dml?id=111 and also file a bug report at https://bugs.opera.com/wizardmini/


  3. I am using samsung x620,when i use to install a software my mobile shows error message invalid jad descriptor. So please help me out of this problem. Please send your reply on my email id.

  4. I am using samsung sgh-x620.while downloading it shows error ‘invalid jad description’.if u have solution pls comment in my mail ID [email address removed] Thanks for your help

  5. I can’t find WSDD 5.6 on IBM website. There is only WSDD 5.7.1 for download (trial). Please help! I have a Tungsten W that is not supported any ore from Palm.

  6. Hi every one. I live in jamaica. I am using a nokia 6101. I downloaded an opera mini 2.0. It was downloaded in my application folder. I tried to use it but it does not work. It keeps saying “proccessing”. What should i do?

  7. yepp! I tried several times with various version, both basic and advance, and found that.

    1. cannot rus advanced version
    2. it shown blackout all font in gray color palm

    I use m125, and it seem not working like Mike reported.

  8. Interesting reads guys. I was wondering if anyone had a download link for the .prc file. I want to install Opera on my Samsung i500 which runs Palm OS 4.1. I just need the palm installer file. Let me know or if someone wants to email it to me that would be great also. [email protected]

  9. Actually. that should have said “Has anyone had any success with changing the jxe2prc command line options to make it run or load faster?”. I’m guessing the answer is no. I tried it again without -compress but there didn’t seem to be any noticeable difference.

  10. Thanks for satisfying my curiosity about Opera Mini on a Tungsten W.

    It’s too slow to be useful as it is and typing in a URL or any other text is truly maddening as you have to wait for each keystroke to appear on the screen before you can type the next. :) It clearly could work well, if it could be compiled to native 68k code.

    The lack of cut/copy/paste is a bit of a shame but I could live with that if it ran a little faster. I have my power off timeout set to one minute and I notice it stops loading the page when the power goes off and won’t load the rest. My first attempt at the BBC 5 day weather forecast for Manchester looked great, but was reduced to a 3 day forecast because it was cut short when the screen switched off. My second attempt only gave me two days.

    It would be nice if the Opera developers did a proper port to generic Palm OS 4…

    Has anyone had any success with changing jxe2prc to make it run or load faster? I guess there’s just no way it’s going to get much quicker.

    I tried both the current basic and advanced versions of Opera Mini. The advanced version just bombed out gracefully after a delay, and went back to the applications menu. The basic did work though. The build I tried successfully was opera-mini-2.0.4509-basic-uk.jad

  11. Andy, my article describes the required runtime and how to download it from IBM. As for the .prc, the one I built is based on an older version of Opera. I’m not actively working with Opera Mini on the Palm anymore as I’ve found that it runs much faster and better on my current phone and my palm serial cable seems to have gone bad as well. Once you downlod IBM’s WSDD it’s five minutes work to create your own .prc from the latest Opera.

  12. Once built, does the .prc run on it’s own, or do you need a runtime there too?

    Could you make a .prc that works with the Tungsten W available to download?

  13. Hello everybody. please tell me how to make opera work on a Palm OS 4.1 device. I have a Sony Clie NR70 and i was hoping that it would be possible to run opera browser on it. Thanks a lot. Denis

  14. Well. Scored a new tungsten W on ebay for a good price. The mini.prc I made of opera mini via these instuctions worked perfectly with no errors, lockups, or problems! Also, it is possible for the xircom wifi sled to work on the Tungsten W. The xircom sled’s driver and software are built into the unit and install wehn atttached to the palm M125 130 and m500’s. But nada with the TW. Solution is to beam the 3 files via IR from a M500 to the TW. The sled works great on the TW then! Gotta use a 3rd party file utility on the M500 ’cause the palm file utility will miss the 3rd file. My TW has the Palm OS update installed. Now if mobivoip can be made to work………

  15. Looks like I’m not going to try this with an actual Tungsten W as the unit I purchased never arrived. Oh well.

  16. I have a problem. I had to use mini-opera 2.0, and when I’am leaving from my Palm(m515) then I get such Fatal Alert

    DataMgr.c Line:6317
    Invalid uniqueID passd.

    Could You get mi some advise?

    Ps. in my email
    Best regards

  17. Interestingly, I managed to have Opera Mini run with Websphere on my Palm T|X. It did crash the first time. I have not used it so much yet for a good review. It starts up pretty quick, I not noticed the slow startup issues. It so far retains some of the configurations I set, so far opera mini theme colors. I have to see if anything else is also retained from one session to the next. On the negative side (it might be the version I have) but opera mini does not use the same user interface. The palm menu does not operate and you have to use the stylus to click your options in the browser. This might be because it was designed mainly for java running on cellphones. But at least it running. I hope eventually we get a native opera for the Palm and a version of Firefox.

  18. Ok,

    I downloaded the the tungsten W emulator with the mini opera prc file made using version 2 of opera and it works without flaw. Nice colorful display. The sony device above uses a 320×320 color display as well as the tungsten w. So I think this is only going to work on these devices and definately not gray scale palms. No idea how a 160×160 color device would fair. I’ll test it on an actual tungsten w.


  19. Ok the problem was not the runtime files. I think grey scale devices have worst diplay issues than color devices. Perhaps this will work on a tungsten w which has display more like the Palm OS 5 devices. I’ll give it a try on a tungsten W.


  20. I’ve tried opera mini version 1 and 2 and both worked on a palm m500 but text blacked out. Did not crash. I used the string for jxe2prc published above. Connected my xircom wifi sled anyway and started stabing blacked out font in the opera mini and it acceses the internet and found web sites. But the font remained blacked out. And did get the datamgr error when exiting opera.

    I think the problem with display is due to my download of WSDD version 5.6. I think something is wrong with the runtimes. Did the exact same thing on the emulator as well. I did not download the runtime and software updates. Will do that and try that sometime in the future as I will not be near a fast internst connection for many days. Limited to dialup right now. Unless someone wants to email me the updated palm os 4.1 runtime files for version 5.6 of WSDD please! rosendalemj at yahoo.com…..yea, yahoo account gets alot of spam ’cause I do stuff like this :)



  21. Hey,

    I’ve found a few instructions for the vm switches. And here they are. Use vmoption with jxe2prc.exe to make them work when the *.prc loads AND/OR installl j9pref.prc to palm to change them from preferences on device.

    Usage: j9 [options] classname [args…]

    Usage: j9 [options] -jxe: [args…] [options]

    -classpath -cp set classpath to .

    -jxe: run the named jxe file.

    -D= set the value of a system property.

    -debug: enable debug, JDWP standard .

    -jcl:[:options] specify which JCL DLL to use (e.g. cdc, cldc, …).

    -verbose[:class,gc,stack,sizes] enable verbose output(default=class).

    -verify enable class file verification.

    -X print help on non-standard options. Refer to the following table for a more detailed description of each of these options: Syntax Description

    Dprop= This command option sets the value of the system property. For example, -Dmy.property=some.value sets the value of my.property to some.value. -Dprop sets the valueto null. You can use multiple instances of this option by repeating the option statement separated with only a space. Example: j9 -Dprop1=val1 -Dprop2=val2 -Dprop3=val3 Note: Spacing is important in this option’s syntax. There is never a space between the initial -D, its property argument, the equals sign, or the value argument.

    -debug: This command enables debug, Java Debug Wire Protocol (JDWP) standard

    -verbose[:class, :gc, :stack, :sizes] This command option turns one of the following: v :class displays each fully-qualified class name as it is loaded (that is, enable verbose class loading). This is the default value. v :gc displays garbage collection information. v :stack displays stack information. v :sizes displays default VM sizes.

    Syntax Description -verify This command option enables CLASS file verification. The -verify option is on by default. To disable bytecode verification specify

    -noverify. -X This command option prints help on non-standard options

    Advanced options The following options are non-standard and subject to change without notice:

    -Xbootclasspath: set bootstrap classpath to

    -Xbootclasspath/p: prepend to bootstrap classpath

    -Xbootclasspath/a: append to bootstrap classpath

    -Xrun[:options] start JUMPI profiling

    -Xint run interpreted only (equivalent to -Xnojit -Xnoaot)

    -Xnojit disable to JIT

    -Xnoaot do not run precompiled code

    -Xfuture enable strictest checks, anticipating future default Arguments to the following options are expressed in bytes. Values suffixed with “k” (kilo) or “m” (mega) will be factored accordingly.

    -Xmca set RAM class segment increment to

    -Xmco set ROM class segment increment to

    -Xmn set new space size to -Xms set old space size to

    -Xms same as -Xms -Xmoi set old space increment to

    -Xmx set memory maximum to

    -Xmr set remembered set size to

    -Xmso set OS thread stack size to

    -Xiss set initial java thread stack size to

    -Xss set maximum java thread stack size to -Xdbg: enable debug, JDWP

  22. Hi Mike,

    Glad to see someone else is playing with Opera Mini on Palm OS 4. I haven’t
    tried using an Opera build since 1.2.3214. You are right about the command, I’ve updated the post.
    The actual command I used was:

    C:\Program Files\IBM\DeviceDeveloper5.6\wsdd5.0\ive-2.1\bin\jxe2prc” OPRA
    OperaMini -translate -compress -vmOption -Xss32k -vmOption -verify -stacksi
    ze:14336 opera-mini-1.2.3214-basic-us.jad mini.prc

    Good luck and let us know with another blog comment if you achieve any success.


  23. You have the mini.prc command too early, move it to the end of the string. I’m using latest opera download and it will not display; all font darkout. Send me your download of opera (earlier). Testing 500 and tungsten w.



Comments are closed.