Curse of the Samsung R330 Firmware Phantom

I spent far too much time trying to fix a cell phone, today.  One of my kin has a Samsung SCH-R330 feature phone with Bell.  A week ago, it began freezing and soft resetting whenever the “1” key was pressed at the beginning of a number.  This meant that dialing long distance or using the hotkey to access voicemail would reset the phone.

The error would go like this:

  1. Open the phone and press the “1” key
  2. The screen goes completely black for about 2 seconds, then the image returns but the phone is unresponsive for 10-15 seconds.  Button presses do nothing, and no button tones are played through the speaker.
  3. The screen will display “Looking for service” or “Home only mode” or some other network-related message.  Phone responds normally to button presses now.

The static image on the screen and the non-responsive buttons looks like a soft reset.  The image would be sitting in the screen buffer and that buffer probably doesn’t get flushed or updated until later in the reset sequence.

There’s some key information here for the troubleshooting process.  The screen buffer is probably just a designated spot in the phone’s RAM.  RAM is volatile, meaning that any information is lost when power is off…

When the button was pressed, the screen went black, and we could presume that a black screen meant power loss.  Superficially, the relationship looks like this: button press => power loss.  A button is just a bit of conductive material that bridges a path in a circuit; you press it, the circuit is closed, current flows.  Ideally it has only two states, On or Off.  But what about a short in the circuit?  If some conductive foreign material gets into the button gap or otherwise causes the button’s conductor to deflect onto another path, a short circuit could be created, bypassing all of the logic circuitry and putting the phone into an error state.  Depending on the location of the short, the phone might power off completely, just like removing the battery while the phone is on, but, if the short only caused a logical fault and not a loss of power, the phone’s processor would just fall back to a reset mode and go through the boot process.

The phone cam back to life by itself, so that seems to rule out a total loss of power.  And, if we recall that the image on the screen reappeared after going black, we have more evidence of a soft reset.  If there had been a total power loss, the screen buffer would be empty, so instead of a nice main screen image, we’d see a blank screen or the default loading screen you see when the phone is first powered on.

So is it a short?  If we presume that it is some mechanical problem with the button or some related structure, then the error should occur regardless of the state of the phone.  That is to say, the error should happen regardless of what app is running, what menu is on the screen, what order I press the buttons, etc.  Simple enough to test: press the “1” button from the main screen, from the main menu screen, in Camera mode, in Text Messaging mode, as the first number, as the middle number, as the last number, and any other way you choose.

What we find is that the error DOES depend on the state of the phone.  If you dial “54321”, everything is fine.  If you dial “12345”, the error happens when you hit the “1” button.  The error happens at the main screen and in the main menu, but does NOT happen in Camera mode or in other sub-menus.  A mechanical fault would not be dependent on the logical state of the phone.  So it cannot be the button itself.

If an error depends on logical conditions, then perhaps the error is rooted in logic.  To be more specific, the logic of the phone’s software.  The phone itself is an electromechanical device, but it needs a set of instructions to tell it how to behave like a phone; communicating with the cellular network, displaying an image on the screen, responding to a button press, etc.  The instructions are called firmware.  Firmware is like software in that both are sets of instructions for operating a logical device, and both can be changed by reprogramming, but one thinks of firmware as being more intimately married to the device than regular software.  Firmware usually lives closer to the device’s “brain” and contains everything that is necessary for the basic functions of the device.  Software is a more general term and, in the context of this post, is something that would add other functionality to a device, like apps on an iPhone, but be an option rather than a standard part.

Barring a curse, demonic possession, or the ghost of LeVar Burton, the problem boils down to the firmware.  As the phone follows its instructions and moves from state to state with button presses and cell signals, the phone is put into a state where a single press of the “1” button gives the processor a value it doesn’t expect or a command it cannot execute, and it panics.  It’s a bug.  Maybe the instructions say “if Button 1 is pressed, go to the instruction at location ABC” but ABC does not exist, or contains something other than a legal instruction.  I don’t know.

“So, Mr. Gilliland.  Should I toss the phone in the garbage?” you ask.

Well, yes.  It’s an old feature phone.  Crawl out of your bunker and join the 21st century.

If you’ve bothered to read this far into the article, you probably want to keep using the phone, so I have good news.  The fix is simple.  Turn on the phone and navigate to the main menu, the one where you see “Tools”, “Camera”, “Messaging”, etc.  Usually you just have to hit the big round button in the center of your keypad to bring it up.  From within the main menu, press the SOFT BUTTON on the TOP RIGHT of your keypad.  It looks like a hyphen or a minus sign and it’s just to the right of the round center button (but it’s not part of the ring).  This should bring up a box with two options:  Menu Style #1, and Menu Style #2.  Use the button ring to select Menu Style #1, then press the round center button.  The main menu’s background colour should be black, now.  If it is, you’re done.

Yes, that’s it.

The error only happens if you have changed your background to Menu Style #2: White.

White background + “1” button = crash.

This is a firmware issue, so technically it can be fixed by flashing a new firmware into your phone.  The firmware is distributed by your carrier, Bell in my case, and the phone has a simple option in the Tools menu to install the latest firmware.  According to the phone I’m working on, it already has the newest firmware, which means that either Samsung doesn’t want to produce a newer firmware, or Bell doesn’t want to bother with updates for an old feature phone.  I asked Samsung Support via Facebook (who responded quite quickly to my initial pleas for help) if they offered a generic, non-carrier-branded firmware to end-users, but I haven’t heard back.  There’s just about zero chance that they would offer such a thing, since the carrier prefers to own any relationship to the end user and decide what features and customizations should be enabled on the user’s device.

If you’ve experienced this weird bug, send me an email or leave a comment on this post.  I looked high and low for a documented case of this bug and found nothing, so I hope this helps someone.

Cheers.