Privoxy for Android

UPDATE: Version support list

It has been tried several times in the past with limited success, but now confidence is high that there is a broadly compatible release of Privoxy for Android devices.

It is available at Sourceforge or here, the project’s mirror site.

This release statically links all dependencies in order to be as compatible as possible, at the cost of raising the binary’s size from ~600K to ~1.1MB; it was considered well worth the size growth in order to be applicable to the widest range of Android devices and versions.

So far Privoxy for Android has been explicitly tested on point releases of Android 4 through 6 inclusive, and on Samsung and Lenovo tablets, a Samsung Galaxy S4 phone and a Oneplus 2 phone. Feedback from the user community indicates no issues in operation on Android 7.

HTC One proximity sensor failure whilst in phone call

TL;DR – if you’re going to customise your phone, always ensure that the firmware version matches the Android version in the ROM. A mismatch can cause very slight and subtle bugs!

I noticed that my HTC One, customised with the Android Revolution HD ROM (Android 4.3) and the Team7even kernel, had a problem whereby the screen would switch off as soon as I started a phone call (even if I did not bring the phone close to my head) and would not switch back on even after the call completed; I would have to wake it up with the button.

Using a phone tester app from Play Store I worked out that the proximity sensor had stopped responding. I furthermore worked out that it was fine immediately after turning on the phone, but after the first time it entered deep sleep then the problem would express itself.

A lot of digging and testing later I have worked out that it was caused by a mismatch of the phone firmware (Android 4.1-based – v1.29.631.17) and the ROM Android version (4.3). Non-trivial to fix; I had to go back to stock everything (good thing I kept a Nandroid of my stock ROM from when I first got the phone) so as to be able to pick up the OTA upgrade to Android 4.3 (3.22.631.1). This cleanly upgraded the phone firmware, from which I’m now free to install any ROM (just so long as it is based on Android 4.3!).

Roxio Toast mis-reporting DVD DL capacity – how to fix

I wanted to burn a dual-layer DVD the other day, but confusingly Toast quoted the space available as 4.21GB, where of course it ought to be 7.92GB. This was the case regardless of whether a disk was inserted. Much playing around eventually found the cause, and a solution.

It turns out that one of the disks on a spindle of blank DVD DL (DVD+R, though I don’t think that matters) was faulty, and indeed only had 4.21GB available. Unfortunately it seems there’s a bug in Toast such that it then stores indefinitely this incorrect capacity as being what a DVD DL can store, preventing one from using the full capacity of a DVD DL thenceforth.

The solution to this is to delete Toast’s preference plist, that’s found at /Users/<username>/Library/Preferences/com.roxio.toast.plist. Once this is done and Toast it restarted, it’ll take you through the ‘first time launch’ spiel (but won’t lose your serial number registration) and, once you’re done with that, DVD DL capacity will be correctly reported once more.

Privoxy for iPhone

Privoxy is now available for download for jailbroken iPhone, supporting all iPhones and iOS releases. Download from Sourceforge here.

Jailbroken iPhone malware

Not the first, but also probably not the last. This one bills itself as ‘Enable WebGL’ on the ModMyI Cydia repository, and whilst indeed it does use some WebGL, fundamentally it is an off-screen frame that simply reloads every time you change screen on your iPhone and earns the author ad revenue each time it does so. Not too malicious then, but it still steals processor cycles and therefore battery usage and therefore your electricity bill and therefore your money :-P

Full writeup here.

Dropsync deletion bug on Eclair (Android 2.1)?

Dropsync is a must-have Dropbox add-on for Android to sync files with remote folders. Since v2.4.6 though I’ve been tracking an apparent bug on my Barnes & Noble Nook eReader, which runs Android 2.1 (the bug is not reproduced on my Android 4.1 phone). The developer is strangely silent, despite my having supplied reproduction steps and logcat extracts, so I’m beginning to wonder whether it’s just me!

The bug is as follows:

If an eBook is removed from a Dropbox folder on a remote device, whilst Dropsync correctly deletes the local eBook file it does not delete the entry from /data/data/com.android.providers.media/databases/internal.db.

The two tables where eBooks get stored in that database are ‘products’ (for purchased eBooks) and ‘docs’ (for sideloaded eBooks). In my testing I am only using sideloaded content.

Anyone experiencing similar or can offer any suggestions I’m all ears.

Bye bye iPhone

So the time came to upgrade from my ageing iPhone 3GS (just too slow with only around 100MB RAM available to the user on iOS6); here are my reasons for leaving the Apple fold and getting an Android handset.

  1. The future is always-connected-cloud-fluffiness and Apple suck so, so badly at online services. iDisk, .Mac, Mobile Me, iCloud, iMessage – all have been beset by problems. 10 years after first dipping their toe, Apple continue to embarrass themselves with connected offerings.
  2. No matter how much Apple go on about ergonomics, their devices are too damn small. I have average size fingers and yet I make too many mistakes typing on their keyboard.
  3. The iOS feature set is severely lacking when compared with the latest iterations of Android, and even jailbreaking doesn’t get you everything any more (e.g. profiles – hello Apple? Nokia were doing this 10 years ago!!!).
  4. I’m sick of having to go through more and more hoops to jailbreak my phone and then retain that jailbroken state. As I’ve said before, it’s safer to be jailbroken than not, and Android manufacturers are open to the ideas that folk who pay for one of their devices actually own that device and have the right to do with it whatever they so choose.
  5. iOS7 looks like a child’s toy.

I’m sure I could come up with more. I’m sad to have to move elsewhere (I’m sticking with OS X so syncing is not gonna be nearly so simple) but I cannot in good conscience stay in the iOS playpen ecosystem.

For those interested in which device I’m replacing the 3GS with, I bought an HTC One. The software seems sane and the hardware looks like Apple made it!

Bug in Google search autocomplete when using Google Chrome browser

Well well well. In Chrome (Version 27.0.1453.110) just go to google.com and type “fouad el ” into the search field with autocomplete enabled (the default). You’ll find you cannot type anything further nor can you delete and in Chrome’s Activity Monitor window you’ll find that tab taking ~98% CPU. Only route forward is to kill the tab. Strange!

fuse-ext2 write support flaw on ext3 journaled partitions

So I have a 1TB drive with four partitions, only two of which are ext (both ext3 journaled) and the other two are ‘not recognised’ (the drive was from a Western Digital MyBook World Edition NAS drive). Using the pre-requisite 32 bit kernel, MacFUSE 2.0.3 and fuse-ext2 0.0.7, I found the following behaviour.

On connection to USB, I’d see a warning message that the drive was not readable and an offer to Initialise or Ignore. This seems reasonable given that no partition on the drive is supported by OS X out of the box. I chose Ignore, then issued the following fuse-ext2 command to mount the partition of interest:

fuse-ext2 /dev/disk1s1 /Volumes/nas -o force

The drive mounted normally and I could edit files. I could unmount, remount and find my changes still present.

However upon reattachment to a linux system (the WD NAS drive running busybox) I would find that my changes had been mysteriously reverted or, on a couple of occasions, the edited file would be truncated.

I am assuming that the cause of this behaviour is the stil-buggy read-write support in fuse-ext2. I found the exact same behaviour if I used the rw+ option instead of force.

The workaround I found was to mount the drive, unmount it and remount it; all changes made during the second mount session would then persist.

Hope this helps someone else out – what disquiets me is that despite a fair amount of searching out there on the interwebs I didn’t find any other posts or comments from anyone experiencing similar change-reversion issues on writing; surely its not just me!

OS X 10.6 versus Lexmark MX310dn printer (or, why Apple will never build world-class online services)

TL;DR Go here to download the correct driver that Apple refuses to auto-install, preferring instead to supply an outdated, non-working one.

So I recently bought this printer and set it up on my LAN. As one would expect, it was trivial to add in OS X and worked immediately.

The following day however (after the printer had gone to sleep) the Mac could no longer print, complaining that the printer was ‘offline’ (this was patently untrue). After blaming the printer for too long, putzing at it’s settings and gnashing my teeth, I started looking at the driver software on the Mac and in the Console logs. It became clear immediately that that was where the problem lay. Fixing it however was not as easy as it should have been..

I visited Apple’s long-standing printer info article and learnt that the Lexmark software had recently been updated with respect to the MX310dn, but thought “I just installed this printer – I don’t believe the software got updated in the last 24 hours”. So I got googling; the results amused me. One result gave me the results of searching for printer drivers at Apple’s support downloads page, which stated that the most recent download for Lexmark was V2.4. The next result however was for V3.0 Lexmark drivers for OS X, also from Apple’s Support site!

So then, Google was able to find me the Apple’s latest Lexmark printer drivers when Apple’s own site search could not. I think this is a perfect illustration of how Apple repeatedly fail in the online services space (iDisk, Mobile Me, iCloud); it’s just not in their genes.