By Werner Ruotsalainen on Sat, 07/16/2011
Unfortunately, Apple's official support for Bluetooth devices is pretty weak. Keyboard support is limited (not all otherwise, with third-party "hacks", usable models are supported) and there's no true game controller / mouse / external GPS support at all.
Fortunately, there are a lot of utilities in Cydia (accessible from any jailbroken iDevice) that provide help in using these devices.
Generally, they're easy to use: get the apps from Cydia. The mouse handler (BTstack Mouse) and Zeemote iOS Driver are free; BTstack Keyboard and BTstack GPS are commercial. The latter two both have a trial version not letting to use the peripheral in another app (just showing they do connect and send data); make sure you check them before the purchase to be absolutely sure your particular hardware is compatible.
All these apps put an icon on the SpringBoard. Whenever you want to connect and use the hardware, you tap the icon, initiate connection by selecting the device from the list and that's all.
Let me present you an example of such a list. This is the main device selector list of BTstack Keyboard (as usual, click the thumbnail image for the original, large, high-quality version!):
BTstack GPS 1.5-25900
Tested with an external Bluetooth unit and a 2nd generation iPod touch. Worked great with external map apps!
This has nothing to do with the well-known GPSed service (additional user explanation of why it might be useful HERE) or similar AppStore-based (no Jailbreak needed) apps/services, which is great for tracking. These use the built-in GPS unit for tracking / logging.
Note that there is another GPS hack for making use external GPS units, RoqyBT4 (another page HERE; the version, RoqyBT, without the trailing '4' is meant for pre-iOS4 devices only and is a completely separate product). The advantage of it is that it uses the stock, official BT unit of the iDevice and, therefore, works with them together. (For example, you can listen to some music via A2DP while navigating with an external GPS unit.) It's, however, more expensive. Some people stated it's not compatible with 4.3.x, while the developer stated it definitely is – I, after having found the cheaper BTstack GPS fulfilling my needs, haven't tested this either.
Also, there is GPSSerial, but, according to the comments HERE (and in several other places), it has long been abandoned. (I haven't tested it either.)
Also note that there aren't apps that would make a iPad (2) 3G or non-first-gen iPhone (these models are all GPS-enabled) a real Bluetooth GPS source. THIS page lists some of the currently available, GPS-related Cydia apps; in addition, THIS one doesn't act as a real GPS. That is, you'll need to purchase a real GPS unit. They aren't particularly expensive – see e.g. THIS (US$ 36 with free shipping to anywhere in the world) or, if you want something smaller, THIS ($60; it hasn't received user reviews yet so I'm not sure about the quality of this particular item). (Note that I provide DealExtreme links purely because 1.) so far, I've received all their packets [except for one] and 2.) the prices of these two models are considerably lower than those of eBay sellers or stores. For example, the SJ-5283DJ costs $95 HERE. Nevertheless, HERE seem to be an exception, if you don't mind the lack of logging – the GLOBALSAT BT-359CS is currently offered for $30.)
Finally, note that xGPS is also available in Cydia. It's the poor man's Navigon / iGo Primo / Sygic / you-name-it. It, among other things, allows for downloading the full Google maps of an area for strictly offline (no roaming data fees etc., unlike with the built-in Google Maps) navigation. It's, however, incomparably worse than any of the above-mentioned titles (no POI's, crashes easily, no Retina support with maps etc.) Better wait for a price drop of the “real” maps – in general, once a year or two years this does happen. (Actually, it was during such price drops than I purchased mine; for example, both Navigon's and Sygic titles were heavily (50% off) discounted in Aug 2010 (e.g., 45 / 20 euros for the full European / US maps, respectively) and April 2011 (13 euros for the Central-European maps), respectively.) It, however, can log your track, which, later, can be used to tag your photos taken with a separate, non-GPS-enabled stills camera. I may elaborate on this in a later article, with particular attention to dynamically(!) geotagging videos, which may not be supported by recent desktop software titles, unlike, say, the Panasonic pocket superzooms TZ-10/20 (aka ZS-7/10).
I don't recommend xGPS. The cheap(!), (as opposed to xGPS) reliable(!) and constantly upgraded/not abandoned(!) AppStore(!) MotionX-GPS (HD) also supports map downloading (albeit using OpenStreetMap as opposed to Gmaps) at a higher resolution. Note that some sources with outdated info (e.g., about.com) state it doesn't have offline mapping capabilities. It certainly has.
A dedicated, highly recommended article is HERE.
BTstack Keyboard by Matthias Ringwald 1.0-25570
While most Bluetooth keyboards (e.g., Apple's own Wireless Keyboards starting with the second model released in 2007 – but not the first one released in 2003!) are compatible with the current iOS models, some are not. For example, the just-mentioned first-generation Apple Wireless Keyboard isn't and, therefore, can't be connected in the standard way.
Interestingly, under OS5, the operating system message has changed a bit. This is how it looks under iOS versions prior to iOS5:
And this is the message under iOS5 (beta3):
Needless to say, the message used in iOS versions prior to iOS5 is more straightforward as casual iOS users will know right away their hardware isn't supported. The new error message is pretty confusing and will result in a lot of poor users' trying to reconnect, re-power their keyboards. Apple might want to re-introduce the old message to avoid user confusion.
The Keyboard app does wonders and works just great together with my first-gen Apple keyboard. Of course, it isn't as seamless as using a standard one, but I've decided not to upgrade my (otherwise, really rarely-used) keyboard until Apple releases one with backlighting.
BTstack Mouse by Matthias Ringwald
Games where no multiple touches are needed can also be played: tested with Battle Squadron 1, Angry Birds HD, Tiny Wings and Orions2 (the latter two in iPhone emulation mode); all worked and played just great.
I've tested this all with the Mogo PCMCIA-shaped mouse; it worked just fine. Note that it's stated to be incompatible with the Apple Magic Mouse (I haven't tested this). With previous-generation Apple mice like the one-button Wireless Mouse it does work for about 30 seconds and, then, in the majority of cases, it just shuts down. I've tested this; the same mouse works with OS X just fine; that is, it's working with the desktop flawlessly.
No automatic reconnection!
Using a “hacked” BT stack also means there's no automatic reconnection. This is a major problem (you need to manually connect your mouse) and also means you will need to make your mouse discoverable again and again. For example, on the MoGo mouse, you need to press a small button to make it discoverable. You'll need to do this every time(!) you connect it to your iPad. (Fortunately, if you suspend the iDevice [or it's auto-suspended], it'll still maintain the connection and it doesn't need to be initiated again.)
If the mouse is auto-discoverable (the case of, among others, the above-mentioned, albeit incompatible [see the disconnection after half a minute] Apple Wireless Mouse), at least making it is not necessary.
Using both the mouse and keyboard at the same time
If you connect your mouse first and try to connect the keyboard after this, it won't work. Fortunately, you don't need to wait much to find it out: if, instead of the keyboard icon (or, for that matter, mouse icon when trying to connect your mouse), all you see is a blue, generic Bluetooth icon on the left, connecting just won't succeed. A screenshot of this:
Fortunately, simply closing the keyboard connection and shutting down both apps seem to work (or, sometimes, with an additional respring) – no full restart is needed.
I, on the other hand, had no problems with connecting the keyboard first and, then, the mouse. You may also want to go this way.
Please also see the third (and longest) video on the parallel usage of the keyboard and the mouse and the order they need to be connected.
Gamepad: Zeemote iOS Driver 0.9.0-2
Remember my article “Zeemote - right now, the best Bluetooth game controller - on WinMo / iPhone soon?”? Well, unfortunately, Apple still hasn't officially allowed the Zeemote to be used by the platform but there already is a free driver for that. (It's an iPhone-only app but works just fine on the iPads too.)
Remember to press and hold the D button (the one just below the joystick) for 3 seconds to turn on your JS1 until the indicator light begins to flash; it's only then will the iDevice find it (as with other clients).
It's nearly not as good to play as a BT mouse in, say, Battle Squadron 1 and can't be used with any game with a D-pad as it's, essentially, a joystick-based emulation of a mouse cursor. If you've ever done it on any platform (e.g., moving the mouse cursor on the PC's keyboard), you know how hard it is. As there's not any iDevice app in the appstore to take advantage of the Zeemote, currently I don't see much point in using it. Unless you absolutely don't have access to a Bluetooth mouse but do have a Zeemote and want to move the pointer around / remotely suspend/resume the device / start and exit apps.
The driver doesn't work together with the other human input drivers (so that, for example, you can “press” the Home / Power buttons from afar). If you start it with the other two active, it won't connect. If you connect it first to your Zeemote controller and only after that to your mouse, the Zeemote connection won't live long.
Other gamepads / controllers
Unfortunately, there is absolutely no support for BGP100, not even a mouse emulator like the previous one for Zeemote, unlike under Windows Mobile (see the excellent console emulator SmartGear) or, particularly, Android, where also the BGP100 is supported (see e.g. THIS)
ZodTTD's emulators don't support the pad either, and it's highly unlikely they ever will as ZodTTD (as with the developers / porters of the PSX emulator, FPSce) seem to have completely switched to Android because of its far more game console emulator developer-friendly approach.
None of these apps BTstack Mouse / Keyboard or Zeemote iOS Driver) work under iOS5 at the time of writing (tested this under the current, version 3 beta running on the iPad 1. Needless to say, all them runs just great on the same hardware, with the same test peripherals, under iOS 4.3.3.). The first two titles do list the available devices but a connection attempt will result in an immediate crash and app exit.
I've prepared three videos showing BTstack Mouse / Keyboard and Zeemote iOS Driver with the Apple Wireless Keyboard, the Apple Wireless Mouse, the MoGo BT mouse and the Zeemote JS1 v3.
Let's start with the latter, the Zeemote controller. The (first) video below shows it emulating the mouse pointer. In the video, I demonstrate how it can be used for playing in the current (and, as no games or emulators support it directly, only) mode, that is, mouse emulation. As you can see, it's totally useless for gaming. (Compare the easiness of controlling the ship with the mouse! Unfortunately, mouse emulation with a, more or less, digital joystick is pretty much futile an attempt. Even if you do take into account that the Zeemote iOS Driver does handle how much you turned the joystick to a direction, as it should, and moves the cursor far slower when the volume of the turn is small. However, it still doesn't help much.)
The video (original HERE):
Note that there is another, more than two-year-old Zeemote + iPhone video HERE. The developer of the game shown in the video, mringwal, stated in a post five months ago, that there are no plans of releasing the game and/or making a driver more game-friendly.
Let's take a look at the second video, which demonstrates the disconnection problems of the Apple Wireless Mouse. These problems surface at 0:48 and 1:46; in both cases about 30 seconds after establishing the connection. As you can see, the mouse, in this state, is useless. (Albeit, for some reason, sometimes it doesn't disconnect...)
The video (original HERE):
Now, the third video shows a lot more; for example,
a.) connecting the Mogo mouse and playing Battle Squadron 1 with it a little so that you can have an idea how much lag it has (this is what the entire video starts with). As you can see, as opposed to the Apple Wireless Mouse, it doesn't suffer from disconnection problem. However, upon each and every connection attempt, you must make it discoverable – unlike Apple's mouse.
b.) using the Mogo mouse and the Apple Wireless Keyboard at the same time, including the right order of connecting (remember: keyboard first, mouse second). I also show how you can quickly notice you've used the wrong order (or there's another problem) as, after finishing playing, I don't disconnect the mouse but try to connect the keyboard right away. (This happens from 3:33; it's at 3:49 that I switch on the keyboard; in a second or two, it becomes visible to the iPad too.) Notice the blue, generic Bluetooth icons on the left! This means it won't connect. This is why I first respring the device and when I, at 4:13, realize keyboards will still not work, I respring again. This time, I also shut down the “Keyboard” app (at 4:19) so that it can re-discover the Bluetooth devices.
After the second respringing, the Keyboard app started working (it's impossible to tell how many resprings you're going to need) and I could enter some stuff to Notes (at around 5:10). After this, in order to show both the correct order of co-using the mouse and the keyboard, I start connecting to the mouse with the mouse app. (Note that, again, I had to make the mouse discoverable so that BTstack Mouse sees it at around 5:22.) After this, at around 5:40, I show how the two input peripherals can be used together.
The video (direct link):