Forum Nokia FUD

Recently, I and some other people participated in a Forum Nokia Discussions thread on how to reboot the phone gracefully. I pointed out the undocumented SysStartup::ShutdownAndRestart() function with some example code, which was promptly removed. This sparked the following discussion (I’m just reposting my own text with enough context from others to situate it).

[QUOTE=ltomuta]This forum is moderated and every now and then some posts may have to be “removed” at least until they are properly analyzed. The code posted here uses internal APIs which you are not authorized to use and/or distribute.[/QUOTE]

Since this is Nokia’s Forum, they are of course allowed to remove anything they want, with mainly the risk of people not posting anything useful anymore (which is mainly the case anyway). But since they do not have any other authority over the code, it’s futile too: just search google for the relevant terms (although I admit that most of the users on these forums do not seem capable of doing that).

The claim that there can be code that ‘uses internal APIs which you are not authorized to use and/or distribute’ is in its generality pure FUD.

You (I in this case) may be limited in distributing the header by copyright. A partial header from an SDK is with thousands of headers very unlikely to be protected by copyright.

Should the poster have signed some kind of agreement with Nokia where they have agreed to protection beyond copyright, such as an NDA, the poster may not actually have the right to post such information. This is not the case here (I have signed an NDA with Nokia, but it does not cover information I have received through other channels or before the agreement).

If the poster is within their rights to post a header snippet there is no way somebody could not be ‘authorized to use’ the API, unless they have also signed an agreement with Nokia where they expressedly give up any such right. I don’t think anybody has.

The header in question is also trivially generatable from the SYSUTIL.LIB library file, with only the parameter values to be deciphered. These parameter values are (drumroll, please): 100 and any UID. This information is definitely not protectable under copyright.
Reverse engineering for interoperability is expressedly permitted in the EU, and many other legislations.

With 3rd ed, you are of course of at the mercy of Nokia as to whether you can get an app that uses this API signed. That’s the life of a sharecropper.

Regards,
Mika Raento
Forum Nokia Champion

[QUOTE=ltomuta]Thanks for pointing me to that thread Paul. I took the posts out but I have to say that I am quite disappointed seeing who are those demonstrating that advanced knowledge is not always good friend with wisdom.[/QUOTE]

And just in case anybody still feels like they shouldn’t be rebooting the phone: the only reason we automatically reboot the phone is that basically all 2nd edition (and according to some other people’s experience, some 3rd ed) phones may reach a state where they are no longer to make TCP/IP connections, and the only cure is a reboot. We only use this in unattended applications (see http://loca-lab.org and http://article.no/exhibition/the-head/).

There are at three separate ways the phone may permanently fail to make TCP/IP connections:
- sometimes the name resolver gets an error when resolving a name, and will never retry the resolution
- sometimes the phone seems able to create a GPRS connection, but will never actually put any data through it
- sometimes the phone totally loses the ability to talk to the NOS/GSM side (unable to make calls, 0 signal strength).

When Nokia starts making phones that don’t require a reboot to work, we will stop rebooting them automatically.

Regards,
Mika Raento
Forum Nokia Champion

This entry was posted in Symbian. Bookmark the permalink.

14 Responses to Forum Nokia FUD

  1. Even though that code example was definitely useful for people and you might have had all the rights to publish it, still when it appears on the Nokia web-site it is perceived at least as semi-approved by Nokia. And definitely they don’t want it to look like they support sharing NDA-covered documents. That’s how I see it from the Nokia point of view.

    From the Symbian developer point of view I however don’t give a cent to how the useful code example comes to me :)
    Fortunately indeed there are sites on the web hosting the Symbian examples including my own site, NewLC and your own site.

  2. Zark says:

    I think the main problem is in the fact that any “unauthorized” API examples are dangerous as non public APIs might potentially get broken in the following S60 releases.

    Sure, you can say that is the application developers problem but if your example has been used by 50 different applications -> huge problem when they all start failing because Nokia hasn’t promised to support the API in the first place.

    “the only reason we automatically reboot the phone is that basically all 2nd edition (and according to some other people‚Äôs experience, some 3rd ed)”

    Hmmm, I haven’t seen this happen in my 3rd ed phone. Care to elaborate?

    Sometimes the Jaiku beta for 3rd editions seems to complain, e.g. when trying to update location, that there is “no network coverage”, though the phone usage information is updating fine to the Jaiku.com (at the same time)

  3. Mika says:

    Yes, we definitely have at least N73s, N80s and E61s get into a state where they don’t make GPRS connections anymore without a reboot. It only happens with extensive GPRS usage. Of course in Jaiku we take care not to try to create more than one connection at a time and not to retry too soon, but if the phone is being used for other data connections as well, it happens more frequently.

    “no network coverage” means that the phone claims “no cellid”. Could you mail me with details on Jaiku version, phone model and firmware version and the operator. We do cache the latest known cell for some time, but not indefinitely (since you may be moving for real).

    (and to be clear: no, Jaiku doesn’t reboot your phone automatically :-). I think we might have a hard time convincing Symbian Signed to give us PowerMgmt for that. I have verified that the API still works with a DevCert though.)

  4. Mika says:

    About “unauthorized”: yes I understand what you (and Nokia) mean, and I appreciate the problem.

    However, my main points were that a) it is _not_ an IP issue (what ltomuta was claiming), and b) the information will be available elsewhere, so censoring will just make people move their discussion somewhere else.

    And I at least feel that Nokia is completely schizophrenic when it comes to backward compatibility. A compatibility layer for RBasicGsmPhone was included in 7.0s, 8.0 and 8.1 although the API was never public. On the other hand things like CFormattedCellListBox, CAknTitlePane, RFileLogger, CIntConnectionInitiator, bluetooth ioctls, are broken between different phone models of the same S60 version, firmware releases or feature packs. I assume they have an internal hierarchy of what apps are important enough not to break, and the rest can go screw themselves, public or non-public APIs.

    Maybe having to maintain compatibility with apps that are actually out there and used by people would be much _more_ useful, than having extremely strong BC guarantees with APIs that they _think_ are important. If developers need an API for an application people want, that should make a strong case for maintaining compatibility (writing wrappers isn’t _that_ hard). And even if there are 50 apps out there that use a non-public API, but nobody cares, then they don’t need to maintain compatibility.

    Remember that Windows is so popular in no small part because they go to such extreme lengths to maintain compatibility with apps people care about, and do tell apps nobody cares enough about to stuff themselves. (e.g, the filesystem semantics on NT broke quite a few DOS Cobol apps).

  5. *Trackbacks not working*

    Hi Mika

    I was trying to submit a couple of trackbacks to this entry it failed. The online trackback tool ( http://www.aylwardfamily.com/content/tbping.asp ) reports the error “Invalid security code. Press your browsers back button and try again”. It looks like your security code plugin doesn’t allow for the trackbacks.

    Anyway, here are the manual trackbacks :)
    http://symbianexample.com/blog/artem/application-compatibility
    http://blogs.forum.nokia.com/view_entry.html?id=431
    ——–
    Symbian operating system and Nokia’s S60 based on Symbian are well known for breaking the binary compatibility here and there, changing constants and interfaces between the minor versions, etc. As Mika Raento puts it it “Nokia is completely schizophrenic when it comes to backward compatibility”. Some interfaces are maintained with the help of various compatibility layers for a long time, while another interfaces sometimes are dropped or heavily re-engineered even within the same S60 version.

    While it is definitely up to Nokia and Symbian when and how to change their interfaces, the big problem for the external developers in that the principles for maintaining or dropping the backwards…
    ——–

  6. Mika says:

    I have to confess I’m not much of a bloggin/RSS/trackbacks guru. I do assume that the tool you are trying to use in effect posts a comment, and I’m not allowing comments without the captcha. Not changing that either, seeing the amount of spam we get to moderate through on the Jaikido blog.

  7. Well, just wanted to let you know. Trackbacks are something I can live without :)

  8. Nothing THAT important, Samuel. I can live without trackbacks :)
    It is just so that when not spamed it is nice for readers to see who reacted to the particular post on their own blogs. Trackbacks are especially interesting in the intranet blog systems, where there is a lot of like-minded blogs and absolutely no spam.

  9. gints says:

    Zark if you have not seen 3rd edition devices hanging then you probably have not 24h service runing on them. As I said in some other thread from 24 phones working 24h one pone hangs per day.
    Do not speak pls if you do not know the case.
    At end.. it is my phone… I am free to do with it what I want. You copyright bastards :)

  10. Nigel says:

    I have certainly seen this condition on all handsets we have tested in anger. We too have a long running background process.
    The frequency had been getting lower as the phones have been getting more memory. Also, we get one or more of an out of memory error, server terminated and connection terminated from RConnection when we make a connection. Also, bluetooth will stop working in this state.
    It looks like a memory leak in ESock. If Nokia want to post me the source I’ll find it for them.
    Regards

  11. PetriP says:

    Great post… it is a relief to hear we are not alone experiencing this madness….

    We are definitely seeing the tcp stack getting hosed on a myriad of devices. Our application is an enterprise communications app (Java, not Symbian code) that keeps a socket connection open all the time. Recently one of our customers started to run the app 24/7 and now we are seeing two out of three symptoms above and a need for a reboot approx every two-three days. Obviously, the customer is not happy with this and it feels foolish to explain that the E in E-series does not stand for Enterprise quality. Obviously, it looks like we are shifting the blame and it only helps a little when we explain that the app runs for weeks in an emulator.

    Trying to create enterprise software for these devices that lack even a robust network stack is one of the hardest challenges I’ve run into during my career.

    Cheers,
    Petri