Wednesday, December 31, 2008









Opera Mini is a web browser designed primarily for mobile phones, but also for smartphones and personal digital assistants. It uses the Java ME platform and consequently requires that the mobile device be capable of running Java ME applications. Opera Mini is offered free of charge, supported through a partnership between its developer, the Opera Software company, and the search engine company Google.[2]

Opera Mini was derived from the Opera web browser for personal computers, which has been publicly available since 1996. Opera Mini began as a pilot project in 2005. After limited releases in Europe, it was officially launched worldwide on January 24, 2006.

Opera Mini requests web pages through the Opera Software company's servers, which process and compress them before relaying the pages back to the mobile phone. This compression process makes transfer time about two to three times faster, and the pre-processing smooths compatibility with web pages not designed for mobile phones.

About 40 million mobile phones have shipped with a copy of Opera Mini pre-installed. Opera Mini's overall market share compared with other web browsers, both desktop and mobile, is about 0.06%.[3]

Opera Mini was derived from the Opera web browser for personal computers, which has been publicly available since 1996.[4] Opera Mini was originally designed for mobile phones that would ordinarily be incapable of running a web browser.[5] It was first introduced on August 10, 2005 as a pilot project in cooperation with the Norwegian television station TV 2.[6] At that time, Opera Mini was only available to TV 2 customers.

A beta version was made available in Sweden, Denmark, Norway, and Finland on October 20, 2005.[7] After the final version was launched in Germany on November 10, 2005,[8] and quietly released to all countries through the Opera Mini website in December, the browser was officially launched worldwide on January 24, 2006.[9]

On May 3, 2006 Opera Mini 2.0 was released. It included new features such as the ability to download files, new custom skins, additional search engine options on the built-in search bar, a speed dial feature, and new search engines, and improved navigation.[10]

On November 1, 2006 Opera Mini 3 beta introduced secure browsing, RSS feeds, photo uploading and content folding into its list of features and capabilities.[11] Content folding works by folding long lists such as navigation bars into a single line that can be expanded as needed. A second beta was released on November 22,[12] and on November 28, the final version of Opera Mini 3 was released.[13]

November 7, 2007 saw the release of Opera Mini 4. According to Johan Schön, technical lead of Opera Mini development, "the entire code" was rewritten.[14] Opera Mini 4 includes the ability to view web pages similar to a desktop based browser by introducing Overview and Zoom functions, as well as a landscape view setting. In Overview mode, the user can scroll a zoomed out version of certain web pages.[15] Using a built-in mouse cursor, the user can zoom into a portion of the page to provide a clearer view; this is similar to the functionality of Opera's Nintendo-based web browsers. This version also includes the ability to sync with the personal computer edition of Opera.[16][17]

Prior to Opera Mini 4, the browser was offered in two editions: Opera Mini Advanced for high-memory MIDP 2 phones, and Opera Mini Basic for low-memory MIDP 1 phones.[18] Opera Mini 4 has now taken the place of Opera Mini Advanced.[19] The older Opera Mini 3 Basic is still available for low-memory phones.[20]

Originally, Google was the default search engine on Opera Mini.[21] However, on January 8, 2007, Opera Software and Yahoo! announced that a partnership to make Yahoo! search the default instead.[22] But on February 27, 2008, Opera Software officially announced that Opera Mini's and Opera Mobile's default search engine would return to Google from Yahoo!. This can be seen as a response to complaints from users of these mobile web browsers, that found the Yahoo! OneSearch service confusing and complex to use, contrasting then with the ease of use and simplicity of Google.

It was published in the New York Times on October 27, 2008 that an iPhone client has been developed but that Apple won’t let the company release it because it competes with their own browser Safari[23].

[edit] Functionality

Unlike ordinary web browsers, Opera Mini fetches all content through a proxy server that reformats web pages into a format more suitable for small screens.[24] A page is compressed, then delivered to the phone in a markup language called OBML (Opera Binary Markup Lang

uage).[25] This compression process makes transfer time about two to three times faster[15] and the pre-processing also smooths compatibility with web pages not designed for mobile phones.[26]






By default, Opera Mini opens only one connection to the proxy servers, and then keeps that connection open and re-uses it over and over. This improves transfer speed and also enables the servers to quickly synchronize changes to bookmarks stored in Opera Link.[27]

The Opera Software company maintains over 100 proxy servers to handle Opera Mini traffic. They run Linux and "are massively parallel and massively redundant."[28]

[edit] Small-Screen Rendering

For devices with screens 128 pixels wide or smaller, the default rendering mode is Small-Screen Rendering (SSR). In this mode, the page is reformatted into a single vertical column so that it need only be scrolled up and down.[15] Long lists and navigation bars are automatically collapsed (hiding most of the list or bar) by a feature known as "content folding". A plus (+) sign is displayed next to the collapsed content. When clicked, it toggles content folding on that list or bar.[29]

Web developers can turn on Small-Screen Rendering on the desktop edition of Opera to see how their web site will display on mobile editions of Opera.[30]

In Small-Screen Rendering mode, images are scaled down to no more than 70% of the screen size in either direction.[31]

[edit] JavaScript support

Opera Mini has limited support for JavaScript. Before the page is sent to the mobile device, its onLoad events are fired and all scripts are allowed a maximum of two seconds to execute. The interval and setTimeout functions are disabled, so scripts designed to wait a certain amount of time before executing will not execute at all.[32]

After the scripts have finished or the timeout is reached, all scripts are stopped and the page is compressed and sent to the mobile device. Once on the device, only a handful of events are allowed to trigger scripts:[32]

  • onUnload: Fires when the user navigates away from a page[33]
  • onSubmit: Fires when a form is submitted[33]
  • onChange: Fires when the value of an input control is changed[33]
  • onClick: Fires when an element is clicked[33]

When one of these events is triggered, Opera Mini sends a request to the proxy server to process the event. The proxy server then executes the JavaScript and returns the revised page to the mobile device.[32]

Pop-ups, if not blocked by the JavaScript restrictions, replace the web page being viewed.[34]

[edit] Features

Scrolling is achieved with the device's arrow keys, its number keys, or a stylus.[15][35]

Opera Mini may also be set to landscape mode, where it will rotate the page 90 degrees. This is useful for screens that are significantly taller than they are wide. However, this feature is not yet available on BlackBerries and some other devices.[15]

The image quality may be set to "Low", "Medium", or "High".[36] The higher the image quality, the more data is transferred and the longer it will take to load pages.[37]

Opera Mini supports only one font,[31] which can be set to "Small", "Medium", "Large", or "Extra large" size.[36] If a web page uses Courier or a generic monospaced font, the one font is still used, but the characters are spaced out so that each character takes up the same amount of space.[31]

[edit] Browsing tools

Opera Mini features a search bar capable of using several pre-configured search engines,[38] with the user being able to add additional search engines.[36] The default search engine is Google.

Additionally, Opera Mini features shortcut keys,[39] skins,[40] and a web feed aggregator.[41] It can save bookmarks,[42] download files,[43] and it remembers the user's browsing history.[44]

[edit] Privacy and security

When using Opera Mini 4.0 or 3.0 Advanced, the connection between the mobile device and the proxy server is always encrypted for privacy and security. The encryption key is obtained on the first start by requesting that the user press random keys a certain number of times.[45] When using Opera Mini 3.0 Basic, the connection is not encrypted. Opera Mini has received some criticism because it does not offer true, end-to-end security when visiting encrypted sites such as PayPal.com.[46] When visiting an encrypted web page, the Opera Software company's servers decrypt the page, then re-encrypt it themselves, breaking end-to-end security.[47]

[edit] Standards support

As of version 4, Opera Mini uses the same layout engine that is included in Opera 9.5.[48] This means that Opera Mini supports almost all of the web standards supported in Opera 9.5. However, unlike the desktop edition of Opera, Opera Mini includes no support for Web Forms 2.0. Also, frames are flattened because of client limitations, and dotted and dashes borders are displayed as solid borders due to bandwidth and memory issues.[31] And because Opera Mini reformats web pages, it does not pass the Acid2 standards compliance test.[49][50]

Opera Mini supports bi-directional text, meaning that it can display text in right-to-left languages such as Arabic and Hebrew in addition to left-to-right languages like English, French, and Spanish.[14]

[edit] Low-memory device support

For MIDP 1, low-memory devices, the older Opera Mini 3 Basic is still available.[20] Its features include an option to increase the text size, as the default text size is too small for some web sites.[51] Opera Mini 3 Basic uses less advanced compression, does not support full page view, does not include support for favicons, does not scroll as smoothly, does not feature a built-in clock, and does not support encryption.[18] When browsing an encrypted web page with Opera Mini 3 Basic, the page is actually decrypted before being sent to the mobile phone.[47]

[edit] Market adoption

In all, about 40 million mobile phones have shipped with a copy of Opera Mini pre-installed.[52] Opera Mini's overall market share compared with other web browsers, both desktop and mobile, is about 0.02%.[53]

[edit] Network operators

The following mobile network companies preinstall Opera Mini on their mobile phones:[54]

[edit] Devices

The following devices come pre-installed with Opera Mini. Note that some of these devices only include Opera Mini when bought from certain network operators.[54]

  • Motorola KRZR K1, K1, V980, E2, L7, RAZR V3, and RAZR V3i
  • Nokia 2610,3120c, 3500c, 6131, 6233, 6085, 6280, 5500, 5310, 5610, 3110, 7373, 6131, 5300, 6230i, 5070, E65, N70,[59] N95, N71, N73, 6288, 6103, 6080, 6070, and 6300[60]
  • Sony Ericsson W810i, K608i, K610i, K310i, Z610i,[59] Z530i, Z550i, K750i, K550, W200i, K530i and K510i
  • Samsung X160, E570, E420, X510, X650, E900, SGH-E250, U700, ZV60, D900i, D900, and Z400[61]
  • LG K880, KU250, KE970, and KU311
  • SAGEM My411x and P9521
  • BenQ-Siemens EL71 and EF81
  • BenQ E71
  • Spice S9



GPRS

GPRS (General Packet Radio Service) is a non-voice service added to existing TDMA networks, one of the 2.5G technology upgrades. TDMA is the underlying transport mechanism used by GSM networks.

GPRS provides the transmission of IP packets over existing cellular networks.


How does it work?

GPRS is a network overlay to the existing cellular network. It uses the nature of IP transmissions to its advantage. Because IP traffic is made of “packets”, the network does not need to have continuous data transmission. Thus, IP traffic can easily share the channels. A user may be receiving or transmitting data while another one is reading information. The second user does not need to use the channel during this time, and it makes packet networks more efficient than circuit-switched networks (2G), where the channel would be in use, regardless of the user transmitting or not.

Each channel is divided into eight time slots, with a maximum data transmission of 13.4Kbps. One of these time slots is used for control, and normal allocation would reserve two slots for voice traffic as well. Asymmetric traffic (more download than uploads) dictates the distribution of the remaining time slots:

Type Meaning
2+1 two slots for download + 1 for upload
3+1 three slots for download + 1 for upload
4+1 four slots for download + 1 for upload


Also, the GPRS devices have a classification related to their ability to handle GSM voice calls and GPRS connections:

Class Meaning
A devices are capable of simultaneous voice and data transmission
B devices support one type at a time, and switch automatically between data and voice
C devices support one type at a time, and require user intervention to switch between data and voice


In theory the GPRS data rate is 171.2Kbps per channel, but users will experience something lower than this, because of the nature of channel usage explained before.

The maximum rate a user can have using a Type 4+1 device is 53.6Kbps.

The connection to the GPRS network is always on, but the device needs to connect to the data terminal (Pocket PC, notebook, cellular phone). The connection times are of course much lower than dial up. My personal tests show GPRS connection to be ready to use in 7 seconds, while a dial up requires around 35 seconds to be in a ready state.

How to use GPRS

A user can connect to a GPRS enable network in three different ways:

Using a mobile with a microbrowser to access WAP pages A user can connect to the GPRS and browse WAP pages from a GPRS enabled mobile. Of course the impact of reduced content on WML format and using the little phone keypad to type in URLs is tiresome. Examples are mobile phones such as Ericsson T39m and T68i.
Using a handheld with built in GSM/GPRS capabilities Using handhelds with GPRS capabilities a user can connect to the GPRS network. All Internet services will be available, providing the needed ports are not blocked. This includes web, e-mail, newsgroups, VPN, ftp, etc. The connection between the terminal and the GPRS modem can be via infrared, serial cable or bluetooth. Examples are Treo, XDA Pocket PC Phone Edition, and Smartphones.
Using a mobile as a GPRS modem A user can connect a notebook, desktop or handheld to connect to a GPRS enabled mobile, and then connect to the Internet. All Internet services will be available, providing the needed ports are not blocked. This includes web, e-mail, newsgroups, VPN, ftp, etc. The connection between the terminal and the GPRS modem can be via infrared, serial cable or bluetooth. Examples are using a H3970 to link via Bluetooth to a T39m and from there to the Internet.
Using a PCMCIA card as a GPRS modem A PCMCIA card can be used as a GPRS enabled modem, and once inserted a dial up connection can be created. From there the user can connect to the Internet. All Internet services will be available, providing the needed ports are not blocked. This includes web, e-mail, newsgroups, VPN, ftp, etc.


What can I do with GPRS?

Anything available on the Internet, really. Web browsing, email, VPN connections, Instant Messenger (AOL, ICQ, MSN Messenger) are services compatible with GPRS.

The question is really “What performance can I expect from my connection?”

The answer is “It depends”. It really depends on strength of signal, number of users in the channel. But don't expect blazing performance. In my test, with my local GSM provider, I've got results sometimes lower than dial up. But these are non-scientific results.

Using a Vodafone GPRS Connection as a Modem

I find that occasionally I am unable to find any other way of connecting to the Internet than using my P900 phone as a modem. It is very expensive but sometimes neccesary. I used various different sources on the Web to get the right set up and this page summarizes my experience in case it is helpful to others. I will amend the page to fill out details as people as for further details.

My set up is:

  • An AJP M3000N laptop (yes this is a rebadged Asus M3000N but it is still a very good machine) running Ubuntu 06.06 Dapper Drake with a D-Link DBT-120 Bluetooth ariel plugged into one of the USB sockets.
  • Sony Ericsson P900 phone. (NB ensure the phone is connected to mains power, actively using Bluetooth and GPRS connections drains the battery very rapidly.)
  • A Vodafone account with full Internet access (GRPS and Internet APN). You know you have correct account permissions if you can send email successfully from the phone itself – I have always been able to send email from the P900 but have never actually been able to use it as a mail reader. Make sure you terminate the phone's Internet connection once you have tried this, the GPRS connection can only connect the phone directly or use the phone as a modem not both at the same time.

Step 1: Make sure the Bluetooth connection between laptop and phone is set up correctly and works:

  • Run ‘hcitool scan’ on the laptop to ensure the Bluetooth system is up and running – it might be worth checking Bluetooth is enables on the phone :-) This should give you the Bluetooth address of the phone – the address is of the form xx:xx:xx:xx:xx:xx where each xx is a hexadecimak digit pair.
  • If the devices are not already bonded, then bond the phone to the computer. I had already done this at some stage in the past so I didn't have to do it at this time but if the devices are not bonded then they will need to be. The standard Ubuntu set up has the laptop PIN in /etc/bluetooth/pin. If I recollect correctly I bonded the phone to the laptop not vice versa by having Bluetooth up and running on the laptop then doing a search and bond from the phone giving the correct PIN.
  • Run ‘sdptool browse ’ to find out which channels are being used for each of the services. I find that the channel numbers for most services are fixed but that the channel number for the modem service can change from time to time (which is irritating). The important entry for using the phone as modem is the one labelled ‘Service Name: Dial-up Networking’. For me, just now, this is Channel 3.
  • Set up an RFCOMM device. I have decided to use /dev/rfcomm0 as the device to connect to the phone as a modem. So I set up /etc/bluetooth/rfcomm.conf to ensure /dev/rfcomm0 connects to Channel 3.
                rfcomm0 {
    bind yes ;
    device ;
    channel 3 ;
    comment "RLW-P900 Dial-up Networking Service -- for PPP" ;
    }
    As ever, whenever you change a configuration file restart the sub-system, in this case ‘/etc/init.d/bluez-utils restart’.

Step 2: Get the PPP (point-to-point protocol) sub-ystem in a fit state:

  • Create a peer specification. This means creating a file in /etc/ppp/peers. I have called mine rlw-p900-bluetooth-modem and gave it the contents:
                hide-password
    noauth
    connect "/usr/sbin/chat -v -f /etc/chatscripts/rlw-p900"
    debug
    /dev/rfcomm0
    460800
    defaultroute
    noipdefault
    remotename rlw-p900
    ipparam rlw-p900
    usepeerdns
    lcp-echo-interval 0
    I can't rmember where I got all the various options from but they work – though some may be redundant.
  • Create the chat script mentioned in the peer specification, in my case /etc/chatscripts/rlw-p900:
                # This chatfile was generated by pppconfig 2.3.10.
    # Please do not delete any of the comments. Pppconfig needs them.
    #
    # ispauth chat
    # abortstring
    ABORT BUSY ABORT 'NO CARRIER' ABORT VOICE ABORT 'NO DIALTONE' ABORT 'NO DIAL TONE' ABORT 'NO ANSWER' ABORT DELAYED
    # modeminit
    '' ATZ
    # ispnumber
    OK-AT-OK "ATDT*99***1#"
    # ispconnect
    CONNECT ''
    # prelogin

    # ispname
    #login: xxxxxx
    # isppassword
    #password: yyyyyy
    # postlogin
    '' \d\c
    # end of pppconfig stuff
    The login details are handled by the account in the phone so there is no need to specify login id and password details in the chat script. More on this below.

Step 3: Try it out! I use the command ‘pon rlw-p900-bluetooth-modem’. It is almost certainly a wise move to monitor /var/log/syslog (I use ‘tail -f /var/log/syslog’ is a separate terminal) to check that all the right things are happening. I also have a network monitor applet on my status bar monitoring ppp0.

Step 4: Do stuff with the Internet connection. I ran a traceroute to ensure that packets actually went where they were supposed to.

Step 5: Terminate the connection using poff. Remember not to get too upset about the amount of money you just paid to Vodafone. They charge by the amunt of data transferred not by the connection time which does ameliorate some of the pain.

The biggest problem I had was getting the right number for the phone to dial. I have *99***1#. The 1 is a critical number as it identifies the account on the phone that is used make the connection – there are a number of different accounts on my phone for GSM or GPRS connections and MMS, WAP or Web activity. For me account number 1 is GPRS Web activity which is the account neded to get access to the Internet. I am told on newer phones this account is called ‘Contract Internet’.

If you use the wrong account or your account is not permitted to use Internet conenctions then you can still connect but all your packets get routed to a black hole rather than out onto the Internet. I had a lot of trouble sorting this problem out. When I first started trying to get this working, back in January 2006, I was originally using *99***3# as the phone number which uses the wrong phone account for Internet access. I was connecting fine but all my packets were routed to a black hole. When I phoned technical support, they were very nice and tried to find things out but couldn't. In the end they decided ‘Linux is not a supported operating system, you should switch to Windows or Mac.’ A totally unacceptable response in my view. I was angry. I seethed for a while (4 months) and then went into my local Vodafone store to have a rant. They told me that Vodafone had changed all its technical support so I should try again. I did. They were right, I got a whole new set of people, with a whole new set of ideas about technical support. They still had a problem with Linux not being officially supported but instead of closing the issue, they gave me the number of the people who write the sofware. This was a break through. The breakthrough is that the position in the list of accounts is not the account number as all the documentation says, the account number is determined by the order in which accounts are entered into the phone. Obvious in hindsight but... So I changed 3 to 1 and everything worked.