You are here


Single Threading, or Why won't my application use more than 12/25/50% CPU?

I get this question a lot.

You're running a graphics program or some other application that is performing a complex operation that is taking several minutes, yes the CPU usage won't surpass one of these values.

If the value changes up and down, your application is probably I/O-bound, meaning the CPU is waiting for the disk or network to catch up before it can do the next step.

However if it is pegged at one of these values, it is because the CPU-bound operation is single-threaded, and you have a multi-code and/or hyperthreading CPU. In my case, I often see a process pegged at 12/13% because I have a 4-core hyperthreaded (8 virtual CPUs) i7-2600K processor, and the application has not or cannot split the operation over multiple threads.

Intermec printer "RFID error"

I have an Intermec PM4i that I've been working on this morning. When I tried to print using the Windows IPL driver, I got the error RFID error, even though the unit doesn't have RFID installed.

The problem is actually due to trying to communicate IPL while the printer is in Fingerprint mode. If IPL mode isn't available, update the firmware to one that supports IPL.

FreeBSD bug i386/176073: Update from 9.0-RELEASE-p3 to 9.1-RELEASE-p0 "breaks" network interface

I discovered this problem while performing a routine binary upgrade from 9.0-RELEASE-p3 to 9.1-RELEASE-p0. I checked UPDATING and there were no warnings about known issues relating to my NIC.

freebsd-update -r 9.1-RELEASE upgrade
freebsd-update install (reboot)
freebsd-update install

After the reboot my primary network interface em0 reported no carrier. To make a long story short, the interface previously known as em1 was now em0 and the interface previously known as em0 was no longer enumerated.

Scrolling back through the console messages showed:

em0: Setup of Shared code failed
device_attach: em0 attach returned 6
pciconf -vl showed that the interface previously enumerated as em0 was now none0

I have read about other similar issues by other people in the forums, but not necessarily with my NIC (Intel Pro/1000). I think the common denominator may be the chipset. As this is a leased server in a datacentre I don't have much to go on except that it is a SuperMicro PDSBM which appears to use the Intel 946GZ
(Lakeport-G). Perhaps something to do with a pci-related driver has changed.

Follow the bug report here.

No xbox partition table found

While attempting to soft mod an old XBox using the cable swap method, XboxHDMaker kept giving me the error:

No xbox partition table found on /dev/hda drive is not locked but locking is enabled dont reboot untill you have build a working xbox hdd since reboot will lock the drive press ant key to abort operation.

The hard drive in question had a valid partition table, but several attempts left me with the same message.

I believe the issue is that I was not restarting the PC. The PC was already booted into the Linux live CD. I shut down the PC and rebooted it to the BIOS setup screen. At this point I swapped cables. It worked!

How to load Google Play onto the Hipstreet Equinox 2

Since my review of the Hipstreet Equinox 2, I've had a lot of questions about how I was able to install Google Play onto the device (which then makes loading tons of other first-tier apps, like Netflix, Google Maps, etc. onto the device quite easy).

Like many of the cheapest Android devices, the Equinox 2 did not go through Google's validation process and therefore is not allowed to be preinstalled on the device. Presumably this accounts for part of why these devices are cheap. Instead it ships with GetJar, which although it gives you access to thousands of apps, does not let you get the most popular ones.

Some apps can be downloaded directly from the publisher, others can be found by searching for torrents, and many are available on Usenet. These can then be sideloaded onto the device using one of many different methods. The problem is that you may be downloading a virus, or accidentally be pirating a commercial app.

The device is already rooted when you get it so you would think you might be able to sideload Play onto the device. Indeed, there are many places you can download all the various versions of Play (or Android Store or whatever it was called) and you can sideload them onto the device. The bad news is that it always crashes. If you are lucky it will get as far as showing its splash screen.

The process I used to sideload the app involves a few steps. If you are not technically inclined, this method isn't for you.

  1. Install the Android SDK on your computer.
  2. Download the Google apps bundle.
  3. Copy files to the filesystem.

Install the Android SDK on your computer

The Android SDK (also known as the Android Developer Tools or ADT bundle) includes everything needed to develop apps for Android devices, and deploy them onto a device. It's the latter part that is important. It is available here for PC, Linux, and Mac

When you plug in your device into your PC, hopefully it will install two drivers. The first is the mass storage driver, which lets your computer use the device like a USB memory stick. The second driver is called Android Device Bridge (ADB). For us, this is the important one.

On a Mac a driver is not required. On a PC it is. Unfortunately Hipstreet/Kobian does not publish an ADB driver for the device, so your Windows Device Manager will probably indicate an unrecognized device. I modified the Google driver to work with this device and you can download from this article.

Once the SDK is installed and the driver is working, you'll need to find the directory where the SDK was installed to find the platform-tools directory.

On my PC this is located not in Program Files, but your user directory, e.g. C:UsersYvanAppDataLocalAndroidandroid-sdkplatform-tools.

On the Mac it depends where you unpack it.

Now familiarize yourself with the adb tool.

Download the Google apps bundle

Although it is free software, I'm not what the rules are about redistribution so you're on your own to find this. The one I used is called gapps-ics-20120429-signed (Google Apps for Ice Cream Sandwich). It includes pretty much all the Google stuff that would normally preload on a device, about 25 programs.

Copy files to the filesystem

Use the adb tool to copy files to the appropriate directories on the device. You need to use this tool, because these system directories are not accessible from the GUI, even on a rooted device. If you find an app that lets you copy files to the system directories, you can skip step 1 and use that tool.

Equinox2 ADB Driver

I couldn't find an Android debugging driver for this unit, so I had to roll my own, based on the Google driver.

Package icon equinox2_usb_driver.zip8.27 MB

Hipstreet Equinox 2 10.1" Android Tablet Unboxing and Review

I needed an Android device for a current project for testing.

Currently surrounded by 5 screens, adding another wasn't something that particularly excited me. I'm not a huge fan of my iPhone, so another phone was an option, but I can't afford a new one, and I'm not knowledgeable enough about older models to choose one that would be a good fit.

A tablet could be useful, and the Nexus 10 is tempting, but it's not available just yet and if I am going to spend more than $400 on a tablet, it is probably going to be a new Windows tablet. I want something cheap.

I briefly considered a Blackberry Playbook, not because I really want one, but because they're practically giving them away at $150 – great value if you can use it. Unfortunately, although the Playbook can execute Android apps, they must first go through some kind of conversion process. I'm not looking for more complications, and I almost certainly wouldn't be able to debug my app remotely in Visual Studio via USB with a Playbook.

I settled on the Hipstreet Equinox 2, a recently-released second-generation 10.1" tablet. Like most people I'm pretty hesistant about the Hipstreet name, a name associated with cheapest-of-the-cheap MP3 players available at Walmart. At $199 however, this model boasts many features that its competitors in the $150-250 don't, and reviews of the prevous Equinox generation indicate that it wasn't too bad. The truth is, I couldn't find a single review of this product, so I hope this article, and maybe a review to follow, is useful to someone.

I ordered the tablet from and it arrived at my door 40 hours later. It came in a shrink-wrapped solid "board game"-style box. Sorry about the quality of the photos, the only camera I have on me is my iPhone.

Included in the box:

  • DC charger
  • Male mini-USB to female USB (17cm)
  • Male mni-USB to male USB (100cm)

The battery is fully discharged. The screen film instructs the user to charge the unit for a full 6 hours before use.


  • Micro-SDHC (up to 32GB)
  • Power/charge
  • Micro-B USB for connection to host (cable included)
  • Micro-B USB for accessory (converter cable to full-side USB included)
  • Mini HDMI (type C)
  • Headphone


  • Power
  • Volume up
  • Volume down
  • Back 


  • Forward-facing camera 


  • Mass: 600g
  • Screen diagonal: 256mm (10.1")
  • Dimensions: 262 x 185 x 10mm

The construction is sturdier than I expected. It is very solid and doesn't budge in the twist test.


Once powered up, a swipe of the finger results in the home screen. A welcome video is placed on this screen. It explains (in English) how to turn on the unit (?), set up WiFi, configure your e-mail, and so on. At maximum volume, the video would definitely not be audible in a noisy environment.

The home screen icons are:

  • Camera
  • Dolphin Browser
  • Music
  • GetJar (app store)
  • Email
  • Super HD Play (video player)
  • Settings

First Experiences

These are first experiences with the Android operating system, not necessarily this unit.

Although I will let it charge for 6 hours, I need to get some work done, so I go about setting it up.

As I configure my e-mail I realize I have no idea how to make the screen-keyboard go away. On the 7th guess, I enter the correct password.

Although the unit doesn't include a GPS, it does use WiFi geolocation when possible to guess your location +/- 100m.

There are many ways to unlock the device, including facial recognition.

A speech-to-text icon is prominent throughout the UI. It uses Google speech-to-text. I look forward to checking this out.

The settings imply that use of a USB mouse will work. So will USB Ethernet and GSM/3G modem.

Oooh, a developer settings screen. There are some very useful options here, like showing all touches, flashing screen areas that update, CPU usage stats, Activity purging. I've never had a device cater to my needs like this before!

The device seems to neither be charging nor losing charge while I'm using it when plugged in.

Installing Apps

One of the main complaints people seem to bitch about in online reviews of cheap Android devices is that they don't include the Google Play store. Instead they have something called GetJar. Personally, I'm not sure what all the fuss is about. Supposedly it offers more than 600,000 available downloads. As long as I can get Angry Birds and a few other necessities, I don't really need to find a new way to give people my money. For what it's worth, I've heard of people successfully installing Google Play and the Amazon App store on cheap tablets.

Update: I actually came across many apps that I want that were not easily available from sources other than Google Play. It took many hours, but eventually I devised a way to load up all of the most up-to-date Ice Cream Sandwich stock apps, including Google Play.

Note: The tablet is already rooted when shipped.

Installation of apps from GetJar is very fast. Download and installation of the Twitter app took less than seconds, something that would take about a minute on my iPhone.

Oh good, Angry Birds and Angry Birds Seasons are in the top 20 list. This is going to be easier than I thought. They're free too.

Hmm.. no Netflix app in Getjar.

Dolphin Browser

When I fire it up it asks if I want to enable Flash support never, always or on demand. I like that. It also asks me if I want to emulate a desktop, iPhone, iPad, or Android phone. Then it crashes. Hmm.

All my fingerprints are getting pretty noticeable now.

The most important sites, Red Cell Innovation Inc., and CodeProject work fine, so that's all that matters.

Follow-up: 45 days later

  • Dell put these on sale 30 days after I bought this one, so I called them up and got a price protection credit for $50.
  • I'm glad I put the Play Store and the Google apps on it. The Play Store experience is much better than any other repositories, and it auto-updates downloaded apps without intervention. It makes the whole experience much closer to that of a Nexus device.
  • Physically the device is holding up well. There are some fine scratches on the screen, which isn't surprising, as I've done nothing to prevent them.
  • The screen could definitely be more sensitive. It's fine for a game of Angry Birds or tapping out a short e-mail, but it's not as sensitive as my old iPhone.
  • The mini-HDMI connector seems a little flaky, but it could be my cable's fault.
  • With regular use, the battery needs charging every other day. One could go a lot longer with occasional use.
  • The speaker is way too quiet. To listen to a podcast in bed I need to listen at maximum, or close to it. It isn't suitable for anything except a quiet room without headphones. To make things worse, the speaker is on the back, so if you put it down on its back most of the sound is muffled.
  • If you like other browsers, Opera Mini, FireFox, and Chrome all run well. I find Chrome a bit slow and my preference is probably Opera Mini.
  • Video play from a file or Netflix is pretty smooth, even when connected to an external display.
  • The hardware volume and back buttons only work when the unit is turned on and unlocked.
  • I have never had to cold boot the device, though I have inadvertently done so by letting the battery drain completely a few times.
  • Overall for its price I think this unit gives good value. I have not seen any other 10" tablets for $150.
  • The built-in e-mail app is nice but its one shortcoming is that is has to poll IMAP servers every x  minutes (minimum 5), instead of keeping a socket open.

When your iPhone has hiccups…


My softball team thought it would be fun to play intro music for each person as they went up to bat, like some major-league teams. I welded together a portable sound system complete with pneumatic wheels, second-hand shelf speakers, an AGM battery, and a 40W head unit.

I recently purchased a refurbished iPhone 3GS from an online retailer. I needed one for testing an application that I've been hired to build. Since I had the iPhone anyway, I figured the touch interface would work well for our team's sound box.

The Problem

The first problem, I learned, is that the iPhone cannot play a single song, then stop. It always continues on to the next song unless it is the only song in a playlist. Luckily I wasn't the only person who found this extremely stupid, and before reaching for my compiler I checked the App Store and found Benjamin Pung's One track Mind app.

The next problem was that when I plugged in the cord from the headphone jack of the iPhone to the Line In jack of the head unit, there was an annoying beat, beat, beat sound.

For the benefit of those searching, it could also sound like: click, click click; thump, thump, thump; pop, pop, pop; beat, beat beat.

I considered loose connections, impediance mismatch, and EM interference, but I was able to rule those out. Oddly, rebooting the device would make it work normally until I fiddled with the jack (I still haven't figured this out).

It is noteworthy that this symptom is not present when listening with headphones (this is where, I believe, impediance plays a role).

The Solution

Many internet searches informed me that this was a very common problem without a solution.

I notice that pushing the plug into the jack forcefully and holding made the noise stop. I also noticed that when I did so, there was just a little end-play; maybe 0.2mm. I had a hunch.

I grabbed a toothpick and went digging. I scraped the tip of the toothpick against the bottom of the jack repeatedly, and was able to pull out several small pieces of what I'll call lint – probably a mixture of dust, fibres and oil.

I plugged it in to the stereo and ta da! No more noises. No more end-play.


Once again, the simplest solution (though not necessarily the most obvious one) usually is the correct one.

I'm posting this tip because many people have this problem, and most keywords like click, beat, and pop result in pages of results completely unrelated information (thanks Dr. Dre).


Simple Copyright Policy: If you want to reproduce anything on this site, get my permission first.