Category Archives: Android

An Icon of a keyboard

How to use an Android device as a keyboard and trackpad for a Raspberry Pi

Anyone who has set up a Raspberry Pi Zero W will know it is a bit limited by IO, such is the trade off for such a small form factor. I recently went through a set up that was especially awkward as there was no WiFi available. I tried to use an Android hotspot but unfortunately the Pi could not see the Android device at all. The only option I had was to tether the Pi to the Android via USB. This worked. The Pi had access to the mobile data of the Android device however it seems that the power draw from the Android device meant there was not enough power left to power the wireless USB receiver for the keyboard and mouse combo. So I was left with mutually exclusive options of either access to the internet or the ability to use a keyboard and mouse. Luckily there is always a plan C.


You will need a mouse that can connect to the Pi either by USB or Bluetooth. The OS used was Raspbian but this solution should work with other Distros.


The Raspberry Pi Zero W also comes with Bluetooth built in so there was the option to make the Pi discoverable and connect a Bluetooth keyboard and mouse. I do not have a physical Bluetooth keyboard or mouse but thankfully there is an App for that, multiple ones actually.

The App I used was the “Serverless Bluetooth Keyboard & Mouse for PC/Phone” from Google Play, available here.

It is free (with ads) and very easy to set up. In terms of performance it provided me with a usable keyboard (like Gboard) with half of the device screen acting as a very responsive track pad. I certainly would not want to compose a thesis with this setup but for typing a few words and clicking a few links it is perfectly serviceable.

I experienced what maybe a slight bug during set up however but I resolved the problem in a minute or two.

Problem and Fix:

Firstly you will need to make the Pi discoverable via Bluetooth. This is the only time I needed to make use of a physical mouse. The option to turn on Bluetooth and make the device discoverable is to the top right of the Raspbian Home screen.

When I tried to connect the Android and Pi together through the App it would not work. The Pi was not discoverable by the App despite the functionality to discover devices being built in to the App.

To connect the devices I first had to connect the Android device and Pi together via their respective operating systems. This threw an error on the Pi but the Android device was visible to it. I then removed the Android Bluetooth connection from the Pi and again tried connecting the Pi via the App. This worked.

If you found this post helpful please like/share/subscribe.

How to convert pcm files to wav in Linux

Over the weekend I had to make a recording on my Android phone. I used the app Virtual Recorder  thinking I’d be able to just share the file afterwards but Virtual Recorder creates pcm files not typical mp3 files. I sent the file over to my Linux laptop, running Linux mint, to convert it.

Initially I had some trouble getting the conversion to work. Here are the steps I took.

Open a terminal window and navigate to the where the pcm file is. If you don’t know how to do this use the GUI file explorer to navigate to the directory where the pcm file is and then right click on white space and click on the option to open a terminal window. The terminal will open already set to run against the directory the pcm file is located in.

If you try to run any of the commands below and you don’t have ffmpeg installed you will be notified ffmpeg needs to be installed and it will give you the command to type in and run to install it.

If you want to convert a Virtual Recorder file specially you can use this terminal command below changing the file names to what you need.

ffmpeg -f s16le -ar 11250 -ac 2 -i YouInputFileName.pcm -ar 44100 -ac 2 YouOutputFileName.wav

Converting pcm files created by other applications may have varying results due to the sample rate of the source file. For example if you replace 11250 with 22500 as in the command below your output file pitch and speed will be increased. So you may need to play around with sample rates to get the output right.

ffmpeg -f s16le -ar 22500 -ac 2 -i YouInputFileName.pcm -ar 44100 -ac 2 YouOutputFileName.wav

How to spoof your android device and bypass Google’s unsupported restriction

Here’s a quick tutorial on how to spoof your android device.

Prerequisites to spoofing your device:

Install a file browser that can navigate to the system folders of the device, i.e. Root Browser. (Note: you’ll need root access to get to the necessary folder. You can view the following tutorial for an idea of what’s involved in rooting your device.)

Question: What do you mean by spoofing?

Answer: Spoofing means your device is tricking some app or service into thinking the device is a specific version, brand or model that it is not.

So for instance you’ve bought a Chinese OEM android device, say a CX-919 android TV stick, and you want an app or service to think that it is actually the latest Galaxy note.

Question: Why would you want to spoof your device?

Answer: Developers can limit what devices can play their apps on Google play. This can be because they want the app to run smoothly on the device so they limit the distribution to only devices which are powerful enough or have been tested. If your device is not a device that has been given permission to install the app you will get a message from google play stating this device is unsupported. This doesn’t necessarily mean your device can’t use the app, it’s just saying the man doesn’t want you to.

Other times developers, * cough Gameloft cough * actually put graphic restrictions within the game so only certain models from certain brands get access to the higher end graphics.

This is not due to the app testing your device and determining the performance capability of the device is too low and protecting from playing a game with awful lag because you set the graphics unrealistically high. It is because your device has a simple text file, called build.prop, which states what version, make and model your device is. Changing this file that identifies your device is usually sufficient to get past google play and internal app restrictions.

Steps to editing the build.prop file:

Step 1: Open root browser.

Step 2: Navigate to the system folder, enter it and scroll down to the build.prop file.

Step 3: Copy the file and paste to an external SD in case anything goes wrong (Or it’s not a bad idea to email yourself a copy if you do not have an external SD card mounted)

Step 4: Open the build.prop file with a text editor.

Once in build.prop you can edit the following things:

  • Edit Android Version by locating and changing the current Build Version.
  • Edit your model # by locating ro.product.model= and changing your model #
  • Edit your product brand by locating ro.product.brand= and changing the value to the desired brand
  • Edit your manufacturer by locating ro.product.manufacturer= and changing the value to the desired manufacturer

Please Note that if you change the product brand, the name MUST be in ALL LOWERCASE LETTERS

In Most cases you can get away with just changing the model, brand and manufacturer to achieve your aims. With this being the case you might as well just change these identifiers to the latest Galaxy Note details. At the time of writing this is:

NOTE: GT-(i)9600 not L or 1




Step 5: Once you are finished editing, Save the file

Step 6: Go into the Settings screen, select Applications, select Manage Applications, tap the All category, and select the Google Play app. Clear its cache and data.

Step 7: Reboot your device and once everything loads again, go to Settings> About Phone/Device and see the changes.

If this doesn’t get you past the unsupported restriction on google play it’s possible the game was developed specifically for Nvidia shield, just change the build.prop values accordingly.

Image of a small firefox facing off against a giant mechanical chrome monster

How to change the folder Android Firefox downloads to by default

NOTE: To set the download location to a folder on an external SD you will need to have a rooted device. See the following tutorial to get an idea of how to root your device.


(1) Open firefox and type about:config into the address bar and tap Go. You will see a page displayed like below.

Image showing the about config page

You may want to bookmark this for easier future access.

(2) In the search bar, type down (for download) and wait for Firefox to filter the list.

(3) Scroll down to and tap it to display the editing controls. Change the value from 1 to 2 (from “default always” to “last used folder”).

(4) Tap the large “+” above the list to add a new setting.

(5) On the right side, you see “Boolean” tap that and change to “String”.

(6) Name the new setting as

(7) Below the name of the setting enter the file path for the folder location you want to use. In my instance I had created the folder Download on the external SD. For example:


(8) Once you have entered the file path tap return and then tap Create.

From this point on when you download something it should go to the folder you have specified.

Featured Image: A picture of a robot painting error over and over again

How to fix a Google Play Error -24


I had previously attempted to install an app but the device shut down mid installation. When I tried to install the app again at a later point in time the installation failed resulting in the Error -24 being shown on the play store.

So chances are you, as I did, are seeing an Error -24 message because remnants of a previous app installation remain.

Prerequisites to solving the problem:

To resolve this error install a file browser that will navigate to the system folders of the device, i.e. Root Browser. (Note: you’ll need root access to get to the necessary folder. You can view the following tutorial for an idea of what’s involved in rooting your device.)

Solution For An Error -24 :

STEP 1: In Root Browser tap the Data folder, then tap the Data folder again (One data folder is inside the other)

STEP 2: Find the remnant of the previous installation e.g. com.your.packagename and delete it. At this point you can try install the app again. If the installation fails repeat steps 1 & 2 and then move onto step 3.

Warning this next step is necessary but may have unwanted consequences as it involves wiping the cache of Google Play Services. The following paragraph is an over view of what google play services is and what it does. After reading the description you will be proceeding at your own risk.

Google Play services is used to update Google apps and apps from Google Play.
This component provides core functionality like authentication to your Google services, synchronized contacts, access to all the latest user privacy settings, and higher quality, lower-powered location based services.
Google Play services also enhances your app experience. It speeds up offline searches, provides more immersive maps, and improves gaming experiences.
Apps may not work if you uninstall Google Play services.

STEP 3: Go to Android Settings > Apps > swipe to All and scroll down to Google Play Services, tap on the app and then tap on clear cache button.

You should now be able to download and install that pesky app.

How to play Quake 3 on your android TV stick using a PS3/4 controllerler.

The following is a tutorial on how to get this awesome FPS (which has aged beautifully and looks fantastic on a big Full HD Screen) onto your android TV stick (ATS), in my case a Tronsmart CX919, but this tutorial will also work for any android device.


Firstly in order to use a PS3/4 controller wirelessly your device will need to be rooted. If you do not have your device rooted please see this tutorial written for a CX919 device. (It will likely work for other devices too) Although you can use a keyboard and mouse if you’re old school or the touch controls on the screen if your device is mobile.

Secondly you will need the sixaxis controller app installed and setup on your device. If you do not have it installed please see this tutorial.

Steps to install Quake 3:

Running Quake 3 on an android device is achieved with the use of the Qiii4A app available on google play.

Step 1. Install this app.

QIII4A is a port of ioquake3 (which is a free software first person shooter engine based on Quake 3) to Android. So installing the app provides you with the engine for Quake 3 but not the game.


(IF YOU JUST WANT SOME FPS MULTIPLAYER ACTION: You have the option to install the game data for OpenArena also. OpenArena is a community-produced deathmatch FPS based on GPL idTech3 technology. There are many game types supported including Free For All, Capture The Flag, Domination, Overload, Harvester, and more.

Just press the button in the launcher app to download and install it.

Happy with just OpenArena?

Job done, you can stop reading now.


You want more, keep reading.

Step 2. Get a copy of the Quake 3 baseq3 folder.

In order to install the Quake 3 game data you need the “baseq3” folder from the Quake 3 game which you can buy on steam In order to complete these steps it’s probably best to swap over to using a PC. You can download the game and pull the baseq3 folder from it.

(If you only have an android device at your disposal, you just need the baseq3 folder, oh I wonder where you could find that, wink wink nudge nudge.)

Step 3. Once you have the baseq3 folder.

Create a folder named qiii4a and paste baseq3 into it.

Step 4. Copy and paste the qiii4a folder to the folder specified in QIII4A launcher app

(example of correct path to “baseq3” folder: “/sdcard/qiii4a” directory in launcher). Note: you can also transfer the qiii4a folder to the external SD card of your android device and point the launch app to that location, example “/external_sd/qiii4a” However I would recommend that you have an external sd that is a class 10 micro sd card for the best performance.

Step 5. Launch the qiii4a app.

On  the controls screen check the following:

  • Smooth joystick
  • Hide onscreen buttons and enable mouse
  • Autodetect mouse
  • Mouse cursor position: Top left

On the graphics screen check the following:

  • 32 bit color
  • Screen resolution: Custom, then set the custom to whatever you have your ATS display set to. In my case it’s 1280 X 720
  • MSAA 16x

Step 6. Start the game and change the following settings

Use the right analogue stick to move the cross hair and R1 to select. (Or navigate with the keyboard)

Go to setup:

System > Graphics:

Basically you can just max out all the settings. Take a moment to appreciate how far technology has come that a little matchstick box sized computer that cost around 30 bucks can take all this classic has to throw at it.

Just be sure to set the video mode close to the custom display setting in the  Qiii4A app so aiming syncs up.

System > Controls:

You’ll have to play around with mouse speed until you find something you’re comfortable with. Chances are straight off the bat the controls won’t feel right.

Set smooth mouse on, free look on and map the right analogue stick button press as zoom view.

That’s pretty much it, you’re ready to go.

My advice is that you step through the single player game until you get your eye in and the controls set up comfortably. Once you’re settled you can move onto the multiplayer and play online. Stay away from excessive though, you’ll be eaten alive.

And now for my final thoughts.

In my opinion quake 3 is the best FPS experience on android. Even the latest Call of Duty games are based on the Quake engine in some shape or form so the value of the gameplay cannot be called into question.

In terms of visuals, no it’s not as pretty as Star Wars Battlefront but five minutes into a match and you’ll be too engrossed in taking revenge on the guy that just fragged you to really critique the less than epic visuals.

It’s a game all about blisteringly fast gameplay and android, with it’s still limited hardware, provides the perfect platform on which to appreciate an old classic again.

Android really needs a great FPS to make it a proper gaming platform, and what better FPS than the greatest FPS ever?


How to connect your android device to a Playstation 3 or 4 controller wirelessly

A list of directly compatible games is at the bottom of this post.


Firstly you will need your device rooted. Rooting the device just means you have administrative privileges on the device, but unlike windows it’s not as simple as just changing a setting. Please see this tutorial on checking if an android device is rooted and this tutorial if you need instruction on rooting your device.

Connecting your PS3/4 controller to your android device:

As with all things android you might have guessed you need an app to connect your device to your Playstation controller. In this case you need the sixaxis controller. Unfortunately the app isn’t free but it is cheap!

However before you go handing over your dosh the guys at dancing pixel studios (strange choice of names considering they don’t seem to make any games) were nice enough to create the sixaxis compatibility checker so you can try before you buy.

Step 1.

Install the compatibility checker from the play store here.

Step 2.

Once installed, open the app and click Start. If you get a connection failed your device is not supported.

Sorry dude.

If not, Yay!


Step 3.

Connect your controller to your device with a mini usb cable.

Step 4.

Click pair. This will write your android’s Bluetooth address to the controller. (Don’t worry about the pad not working on the playstation anymore, they’re a terrible console anyway. JK, to reconnect your controller to your playstation just connect the controller via the usb cable and it will write the playstation address back onto the controller.)

Step 5.

Once paired click start on the app. The device is now listening for controllers. If the controller is not turned on press the power button in the center. Now when you press buttons on the controller you should see them appearing on screen.

Congratulations, your device is compatible you now have the honour of buying the app here.

Some setup advice:

When you first use the app you’ll be asked to tick the box recognising Sixaxis Controller as a Keyboard & Input Method. Do so. It asks because this is a security feature as such devices could be potential recording key strokes etc.

In general settings I always have the box Auto Start ticked, this means the app launches whenever the device is turned. For the idle timeout option I set the timeout for 300, which means if the controller is not interacted with for five minutes the app turns the controller off saving the battery. On the subject of battery you can use your device to charge the controller which is nice.

Not all games are compatible even more so if you’re using an Android box or stick:

Native compatible of a game means that it was programmed to accept inputs from controllers some great examples being BombSquad, Asphalt 8, Dead Trigger however, sadly, a lot of games do not support native compatibility.

This could be for a number of reasons, like the developer just never bothered to code compatibility into the app or the app might compete with a console version of the game and the developer doesn’t want to cannibalize the market. Man I wished Fifa had controller support. . .

However the sixaxis controller app comes with a great feature to map button presses. This is especially useful to the PUBG mobile fans out there.

How to do this though is another post in itself so I suggest you google around, there’s plenty of great tutorials out there and the gentle souls of the internet have even created touch profiles for games available to download saving you the trouble of doing the mapping yourself.

Sadly though mapping on many Android boxes and sticks don’t seem to work to well if at all. This is down to these devices often shipping without the necessary touch drivers because they don’t have screens. Which makes sense, why ship a device with touch drivers that doesn’t have a screen? For PUBG mobile players who want to use a controller of course!

The following is a list of games that you can play using the android sixaxis controller app.

Remapping of keys maybe necessary, the correct mapping is as follows.

  • Cross: A
  • Circle: B
  • Square: X
  • Triangle: Y


I’ll be adding to this list over time so if I’ve missed a game you’ve tested and know to work please comment below.

  1. Dead Trigger (free)
  2. Dead Trigger 2 (free)
  3. Evac
  4. Asphalt 8 (free)
  5. Dead Effect (free)
  6. Beach Buggy Blitz (free)
  7. Beach Buggy Racing (free)
  8. Dream League Soccer (free)
  9. BombSquad (free)
  10. Horizon Chase (free)
  11. PewPew (free)
  12. PewPew 2
  13. Skyriders (free)
  14. ShadowGun
  15. SoulCraft (free)
  16. Real Boxing (free)
  17. Skate Party 2 (free)
  18. GT Racing 2
  19. Manuganu 2 (free)
  20. Shooty Skies (free)
  21. Reckless Racing
  22. Rail Racing
  23. Jet Car Stunts 2
  24. Aces of the Luftwaffe (free)
  25. Tank Riders (free)
  26. Raging Thunder 2 (free)
  27. Annelids (free)
  28. Warlings: Armageddon (free)
  29. Table Top Racing (free)
  30. Sine Mora
  31. Pako – Car Chase Simulator (free)
  32. Sword Of Xolan (free)
  33. Nub’s Adventure (free)
  34. Super Dangerous Dungeons (free)
  35. Only One (free)
  36. Turbo Dismount (free)
  37. Particle Arcade Shooter
  38. Luminescence (free)
  39. Leo’s Fortune
  40. Does Not Commute
  41. Pac-Man (free)
  42. Redline Rush (free)
  43. Radiant (free)
  44. Zenonia
  45. Voxel Rush (free)
  46. Winter Fugitives *
  47. Hopeless *
  48. Tiny Thief *
  49. Smash Hit * (free)

Any other suggestions please feel free to add a comment below.

How do you tell if your Android device is rooted?

So here’s a quick and simple explanation of what a rooted device is.

By default the android OS blocks you and apps from doing the things that could potentially break (brick) the device or pose security concerns. But there are instances were an app legitimately needs access to some of the devices locked out functionality.

For example the sixaxis controller app lets you connect your device to a PS3/4 controller but requires root access to be able to manipulate the device’s bluetooth signal. This is a legitimate reason to require access to bluetooth but a more unscrupulous app might want access to transmit your phone’s data across a short range.

A rooted android device just means you have administrative privileges on the device, so you get to choose what you or an app can use/do, but unlike windows it’s not as simple as just changing a setting.

So how do you tell if an android device is rooted?

It’s simple, as with all things android you just use an app!

Install Root Checker from the play store and you’re good to go.

For a tutorial on how to root your device click here.

How to increase the performance of your Android TV Stick

So basically all android TV sticks (ATS’s), boxes and any other android device you connect to your TV has been somewhat hacked together to deliver a product the Android OS wasn’t explicitly designed for. (Not that it doesn’t do a great job)

The Android OS was designed for mobile devices but what constitutes a mobile device?

Well one can differentiate a mobile device as a mobile device by two distinguishing characteristics, one it has a built-in display and two it’ll be battery powered.

Android mini computers have neither.

As mentioned above ATS’s use a TV for the display and often ATS’s don’t have the drivers needed to recognised touch screen inputs. No touch screen inputs can have its drawbacks but the focus in this article is on the influence of not having a battery.

Android devices are constantly doing a juggling act between making the device run as fast and be as responsive as possible and not burning through the battery.

This balancing is primarily directed by the CPU governor. The Linux kernel has a number of CPU frequency governors, which can be looked on as rules that set the CPU frequency based on the selected governor and usage patterns. The frequency or clock rate is typically used as an indicator of the processor’s speed, i.e. how quickly it processes tasks. It is measured in the SI unit hertz. The higher the speed the better the performance and the worse the power consumption.

The best thing about the governors is that they have pre-sets, when the “performance” governor is active, the CPU frequency will be set to its maximum value, the “powersave” governor sets the CPU to its lowest frequency, the “ondemand” governor sets the CPU frequency depending on the current usage, etc.

But here’s the important part, because an ATS has no battery and it’s being power by the mains, there’s no need to set the governor to go easy on power consumption. So the governor should be set to performance at all times but by default (the device thinking it’s mobile) it’s probably not.

So how do you change the governor?

Well like everything else with android you use an app of course!

Note: You cannot change your CPU governor unless your phone is rooted and you have a ROM or app that lets you make a change. Also, different kernels (the intermediary software between your phone’s hardware and the operating system) offer different sets of governors.

There are several to choose from:

  • CPU tuner
  • No-frills CPU control
  • SetCPU
  • See here for more

I use CPU tuner as pictured below.


Simply install CPU Tuner and set profile to “Performance” and Governor to “Full Speed” and you should be getting a little extra juice from your device.


A picture of a cx919 android tv stick

How to root a CX919 Android 4.4.2 Quad core with a RK31 rockchip

(This Post was last updated 13/02/2015)

Ok so here’s a quick tutorial on how to root this particular type of Android TV Stick (ATS). Specifically this model: See Link. If you’ve ever flashed a custom rom onto an android device before, forget everything about that, it’s nothing like that, it’s much simpler.

NOTE: you will need a windows PC to root the device and before starting make sure you have a good usb micro b cable you know works! USB Micro-B PlugIf you’ve found your way to this page you may have already tried the manual approach which uses the TPSparkyRoot batch script and that hasn’t worked! I’ve been there, you won’t be able to get it working, you were right to continue google searching your way across the net for a method that works, and here it is. . .

But first the obligatory caveat:

I take no responsibility for the welfare of your device. If by following these instructions you should brick your device, that’s your problem buddy. This tutorial will likely work for other devices too though. So if you’ve tried every other tutorial on the net to get your damned device rooted to no avail you might want to follow along. But again I’m not responsible if your ATS explodes.

Back up your device prior to implementing the instructions and you “should” be fine.

And now the tutorial:

STEP 1: Download software

Start by installing the following software:



(Use the direct download link to skip downloading the software)

(The reason you need moborobo is that the software is smart enough to determine what driver the PC needs to be able to communicate with the ATS. Chances are, if you tried an alternative method to root the device, the previous methods you tried to root the device failed because you couldn’t find the right driver.)

STEP 2: Prepare the ATS for communication with the PC

In the ATS go to System settings > Storage and click the 3 vertically stacked dots at the top right of the screen.

Picture showing the icon to clickClick on the window “USB computer connection” and tick the Mass Storage box.

Next within the systems settings, go to the developer options. (If the developer options are not there it is because they have not been enabled. To enable developer options go to the system settings and click on About Device. Next scroll to “Build Number” and tap it 7 times. After tapping 7 times you will see an alert saying “You are now a developer”/”Developer mode has been enabled”.

After navigating to developer options scroll down and tick the usb degugging option.

STEP 3: Connect the PC to the ATS

With the ATS connected to your TV via HDMI and powered by the DC usb port, connect the usb micro b cable to the available port.

Make sure you do not use the DC port to connect to the PC otherwise nothing will happen.

A picture showing which usb port to useNext connect the ATS to your PC via the USB.

Within system settings on the ATS click on “USB ” and tick “Connect to PC”.

STEP 4: Install the correct driver on the PC

Open the Moborobo software on your PC and wait for it to load completely. Moborobo should now create a connection to the ATS and install some apps on it. Once you see your TV screen switch to the Moborobo app you know the PC successfully connected to the device.

(You don’t need these apps once this process is run. The whole point of using moborobo was simply to install the correct driver on your PC. If the device installs the correct drivers on the PC itself you may not need moborobo to connect to the ATS, in which case continue to the next step.)

STEP 5: Rooting the device

Open Kingo on your PC. It will load for a few seconds.

When a screen appears asking if you want to root it has successfully connected to the device.

Uncheck the install APUS boost+. This is an optimization app not necessary for rooting the device.

Click root.

(Kingo may mistakenly think the device is already rooted in which case click on root again)

Kingo on desktopAllow Kingo to run.


Once you see the screens below on your PC and ATS the root was successful.

successPCsuccessATSWithin system settings on the ATS click on “USB ” and tick “Connect to PC”.


You can now uninstall the software on your PC.

And uninstall the following Apps on your device.

  • MoboMarket
  • Mr.Clean
  • Kingo Root

Kingo will install its own SuperUser App which will need to remain but this simply acts as a checker for other apps looking to access system resources which you can either give permission to or deny.


Hopefully that all worked out for you.

If you used this tutorial successfully please comment below and share.

UPDATE 13/02/2015: Kingo superuser can sometimes grow to take up massive amounts of the device’s storage space. In my case over 600mb!!! Uninstalling the app from the google play store will reduce the app in size without actually uninstalling the app. (The app cannot actually be removed within settings, only disabled) In my case the app shrank to just over 5mb, much better!

Quick Caveat: There have be some online accusations that Kingo superuser steals user data. I cannot confirm this, but I’d imagine if it was a serious concern google would have removed the app from the store by now.