Google Play says your username and password don’t match?

UX designers and coders take note: nothing will frustrate your users more than being asked for login credentials and being told that they’re wrong.

This is especially true when the user (me) is trying to enter a long alphanumeric password on a tablet with a stylus.  Every time the user sees “username and password don’t match”, they will naturally assume that they’ve hit an extra key or capitalized something accidentally, and will grumble to themselves as they try again.  Things get even more fun when the password field is masked with stars to prevent shoulder surfing.

It’s pretty easy to humble your user this way.  So easy, in fact, that you should spend time analyzing the user’s task to see if you’re asking them the right questions and giving them enough help…

Case in point: Google Play Store.  I have a very low cost (cheap) tablet on which I managed to load the Google Play packages.  When asked to login to my Google account, I received the very helpful response “username and password do not match”.  I attempted to login several times with my normal credentials and failed every time.  There were any number of reasons for this to have failed (including the fact that my tablet was unsupported, ahem), but the real reason was ridiculous:

I use Google’s two-factor authentication.

Logging in to Google from a new computer usually means entering my username, password, and then a 6-digit number that is sent to my cellphone over SMS.  If I enter the user/pass incorrectly, the error would be “username and password do not match.”  If I enter the 6-digit number incorrectly, the error would be something like “incorrect PIN.”  This is straightforward proposition: enter your Google username, your Google password, the PIN that Google sends to you; if you get something wrong, you entered the user/pass incorrectly, or you mistyped the PIN.

Google Play’s device login, however, doesn’t mention anything about PINs or two-factor authentication.  A naive user, like myself, assumes that he must enter his normal Google username and his normal Google password.  But that’s wrong.  Normal username, yes, but you must enter your “application specific password”.

What’s that?  Rather than implementing the SMS PIN step, Google lets you create a sort of special password that you only use on mobile devices or desktop apps.  There are many good reasons for doing this; it’s extra security against rogue apps or compromised devices (not exposing your main Google credentials), it saves developers using Google APIs from having to rework their products, and the application specific password is only made of lower-case letters so that mobile users won’t have to fiddle with entering special characters.

Good reasons, all of them.  But it all falls apart at the user interface.  Users are dependent on the UX designer to give them the information they need for the task.  Failing to mention mention that “password” could mean “application-specific password” is a big omission.  Google’s support site does mention the issue, and users of 2-factor authentication are told in advance to expect this behaviour, but that doesn’t cut mustard.

Now, back to my under-powered plastic tablet and its slight violations of terms of service…

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.

How to stop HP printers from grabbing drive letters

A few months ago, I purchased a used HP Officejet Pro L7780 for my parents.  It was quite an upgrade from the little Epson all-in-one that they had been using for the past few years.  But there was a problem…

The software and drivers are painful to use.

I don’t know what kind of UX work went into this stuff, but it wasn’t enough.  The drivers aren’t easy to install (especially for the scanner function), errors are cryptic and have a morbid finality to them, and a lot of the software’s behaviour isn’t user-customizable.

My biggest gripe, outside of the installation problems, is with the network mapping feature. The printer has a set of media card slots (SD, compact flash, etc.) that can be mapped to a drive letter on the user’s computer.  For some reason, known only to HP, the mapping isn’t persistent and it isn’t controlled by the user; that is to say, the mapping has to be re-established each time the system boots, and the user can’t tell it which drive letter to use.

HP’s kludgy solution to the persistence issue (which is odd since persistent mapping is a feature in many operating systems) is to run a service at boot time.  The service checks for available drive letters starting at Z and working backwards.  When it finds one, it assigns it to the printer’s card slots.  This means that no matter how you arrange your drives, the printer’s card slots will always show up somewhere in your drive list.  It also means that the card slots can bounce around the drive listing with no fixed address.

For most of us, this isn’t a practical problem, just an annoyance.  I can see that this behaviour would be beneficial in some situations.  For instance, a novice user won’t be able to accidentally block access to the card slots by assigning their preferred drive letter to another device.

Personally, I want to be asked for my preference and I want to be able to change the software’s behaviour.

There is no way to use HP’s software to assign a preferred drive letter.  It will always do the search from Z to A.

Stop the HP mapping service

The network drive mapping is done by a service called “HP Network Devices Support”.  By default, the service launches when Windows boots.  The easiest thing to do is to disable the service completely.

Open up the Services management console.  In Windows 7, click on the Start button, type services.msc then press the Enter key.

Scroll through the list until you find HP Network Devices Support.

You can see that the “Startup Type” is set to Automatic (Delayed).

Right-click on “HP Network Devices Support” and left-click on Properties.

Left-click on the Startup Type drop-down box and select Disabled.  Click Apply.  Now turn off the service by clicking on Stop.  Now click OK.

When you’re done, the Services console should look like this:

Okay, you’re done!  The HP software will no longer try to map your printer’s card slots.  Please note that you will still get pop-ups from HP software telling you that your printer is disconnected.  If you want to stop those notifications completely, go back to the Services console, then Stop and Disable the following services:

  • HP Cue DeviceDiscovery Service
  • HP Service
  • hpqcxs08
If you still want access to the media slots, read on.

Making a permanent mapping

Under Windows 7, setting this up is quite easy.

Click the Start button, then click on Computer in the menu that appears.  You should see a list of drives.

There will be a set of links near the top of the window which say Organize, System properties, etc.  Click on the one that says Map network drive.

Choose your preferred drive letter from the list.

For this next part, you need to know the IP address or the network name of your printer.  The network name is best, since the printer’s IP may change if your router uses DHCP to assign addresses.  The network name will stay the same.

If you’re unsure of the IP or the network name, check your router’s setup.  It should have a list of connected devices.

Click in the text field next to Folder, then type two backslashes, followed by the IP or the network name of the printer.  Now click the Browse button.  A dialog window should open with a list of network devices.  If your printer appears in the list, click on the triangle next to it to reveal a folder named “memory_card“.  Click on “memory_card“, then OK.

To make this mapping permanent, click the checkbox next to “Reconnect at logon”.

The printer should now be listed in Computer with the drive letter you chose.

Some User Experience Mistakes

  • Unexpected behaviour:  the printer’s card slots are storage devices, but they are behaving unlike other storage devices.  When the user adds a new USB stick or other memory device, Windows either asks for a preferred drive letter or it assigns the next available drive letter sorted from A to Z.  The HP software doesn’t ask the user for a preferred letter and chooses the next available letter sorted from Z to A.
  • No choice / lack of choice:  there is no way for a user to change the drive mapping behaviour by using the printer’s software.  The user is forced to either live with it or disable the mapping service entirely.  The card slots can be manually mapped to a specific drive letter, but this is an advanced procedure that most users couldn’t do.